AI Craftapalooza Machines

From The Perfect Tower II
Revision as of 16:55, 21 January 2021 by Troylaurin (talk | contribs) (Created page with "{| class="wikitable" !Output !Machine !Scripts |- |1 |oven (pic) | {| class="wikitable" !Name !Lines !Code |- |craft 2:1 |16 | {| class="wikitable mw-collapsible mw-collapsed"...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Output Machine Scripts
1 oven

(pic)

Name Lines Code
craft 2:1 16
; Oven
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double blocks
:local double cables

tier = global.int.get("craft_tier:2.1")
count = global.double.get("craft_count:2.1")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:1:in")
gotoif(99, global.int.get("craft_status") > 199)

plates = count * floor((88888888641.0 / (10.0 ^ i2d(tier))) % 10.0)
blocks = count * floor((22222000001.0 / (10.0 ^ i2d(tier))) % 10.0)
cables = count * floor((44444333221.0 / (10.0 ^ i2d(tier))) % 10.0)

global.int.set("craft_status:3.9", 1)
execute("craft 2:1:plates")

global.int.set("craft_tier:3.6", tier)
global.double.set("craft_count:3.6", cables - craft_inventory * count("cable.insulated", tier))
executesync("craft 3:6")
gotoif(99, global.int.get("craft_status") > 199)

waituntil(global.int.get("craft_status:3.9") >= 3 & count("plate", tier) >= plates & count("block", tier) >= blocks & count("cable.insulated", tier) >= cables)
craft("machine.oven", tier, count)
CWNyYWZ0IDI6MQAAAAAAAAAAEAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4xDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjoxOmluDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFy
aXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghj
b25zdGFudALHAAAAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBnBsYXRlcxFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxv
b3IRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABBzTCyNEIIY29u
c3RhbnQEAS8RYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNp
MmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAA
ACRAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBmJsb2NrcxFhcml0aG1ldGljLmRvdWJsZRBsb2Nh
bC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxvb3IRYXJpdGht
ZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAEPiOyFEIIY29uc3RhbnQEAS8R
YXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRAEGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBmNhYmxlcxFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5kb3Vi
bGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABKaS2yJEIIY29uc3RhbnQEAS8RYXJpdGhtZXRp
Yy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwuaW50LmdldAhj
b25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRADmdsb2JhbC5pbnQuc2V0
CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45CGNvbnN0YW50AgEAAAAPZ2VuZXJpYy5leGVjdXRlCGNv
bnN0YW50BBBjcmFmdCAyOjE6cGxhdGVzDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuNg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjYRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQGY2FibGVzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25z
dGFudAQPY2FibGUuaW5zdWxhdGVkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5l
eGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo2DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAO
Y29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFu
dAQBPghjb25zdGFudALHAAAAEWdlbmVyaWMud2FpdHVudGlsD2NvbXBhcmlzb24uYm9vbA9jb21wYXJp
c29uLmJvb2wPY29tcGFyaXNvbi5ib29sDmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0
YW50BBBjcmFmdF9zdGF0dXM6My45CGNvbnN0YW50BAI+PQhjb25zdGFudAIDAAAACGNvbnN0YW50BAEm
EWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQIY29uc3Rh
bnQEBnBsYXRlcwhjb25zdGFudAQBJhFjb21wYXJpc29uLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50
CGNvbnN0YW50BAVibG9jaw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAI+PRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZibG9ja3MIY29uc3RhbnQEASYRY29tcGFyaXNvbi5kb3Vi
bGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQPY2FibGUuaW5zdWxhdGVkDWxvY2FsLmludC5n
ZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBmNh
Ymxlcw1mYWN0b3J5LmNyYWZ0CGNvbnN0YW50BAxtYWNoaW5lLm92ZW4NbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
craft 2:1:in 18
; Oven
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double blocks
:local double cables
:local double ingots

tier = global.int.get("craft_tier:2.1")
count = global.double.get("craft_count:2.1")


; Verify ingots
;plates = count * round((88888888640.0 / (10.0 ^ i2d(tier))) % 10.0)
;blocks = count * round((22222000000.0 / (10.0 ^ i2d(tier))) % 10.0)
;cables = count * round((44444333220.0 / (10.0 ^ i2d(tier))) % 10.0)

ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.1", tier - 1)
global.double.set("craft_count:2.1", count - craft_inventory * count("machine.oven", tier - 1))
executesync("craft 2:1")
gotoif(99, global.int.get("craft_status") > 199)

; Craft ingots
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.1", tier)
global.double.set("craft_count:2.1", count)
DGNyYWZ0IDI6MTppbgAAAAAAAAAAEgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4xEGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcg5nbG9iYWwuaW50
LnNldAhjb25zdGFudAQSY3JhZnRfdmVyaWZ5OmluZ290CGNvbnN0YW50AgEAAAATZ2VuZXJpYy5leGVj
dXRlc3luYwhjb25zdGFudAQLY3JhZnQgaW5nb3QOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5j
b21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50
BAE+CGNvbnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6Mi4xDmFy
aXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29uc3Rh
bnQCAQAAABFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4xEWFyaXRobWV0
aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEtEWFyaXRo
bWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29u
c3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQMbWFjaGluZS5vdmVuDmFyaXRobWV0
aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29uc3RhbnQCAQAA
ABNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAyOjEOZ2VuZXJpYy5nb3RvaWYIY29u
c3RhbnQCYwAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3Rh
dHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEEGNyYWZ0
X3RpZXI6aW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhj
b25zdGFudAQRY3JhZnRfY291bnQ6aW5nb3QRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdl
dAhjb25zdGFudAQGaW5nb3RzCGNvbnN0YW50BAEtE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQE
BWluZ290DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25z
dGFudAQLY3JhZnQgaW5nb3QOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29uLmlu
dA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50
AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6Mi4xDWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
craft 2:1:plates 11
:global double craft_inventory
:local int tier
:local double count
:local double blocks
:local double plates

tier = global.int.get("craft_tier:2.1")
count = global.double.get("craft_count:2.1")

blocks = count * floor((22222000001.0 / (10.0 ^ i2d(tier))) % 10.0)
plates = count * floor((88888888641.0 / (10.0 ^ i2d(tier))) % 10.0)

global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", blocks - craft_inventory * count("block", tier))
executesync("craft 3:4")

plates: gotoif(end, plates < craft_inventory * count("plate", tier))
  waitwhile(active("presser"))
  produce("ingot", tier, plates - craft_inventory * count("plate", tier), "presser")

end: global.int.set("craft_status:3.9", global.int.get("craft_status:3.9") + 2)
EGNyYWZ0IDI6MTpwbGF0ZXMAAAAAAAAAAAsAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjEQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMRBsb2Nh
bC5kb3VibGUuc2V0CGNvbnN0YW50BAZibG9ja3MRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91Ymxl
LmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91
YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAABD4jshRCCGNvbnN0YW50BAEvEWFyaXRobWV0
aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQBBsb2NhbC5kb3VibGUu
c2V0CGNvbnN0YW50BAZwbGF0ZXMRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25z
dGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRo
bWV0aWMuZG91YmxlCGNvbnN0YW50AwAAQc0wsjRCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91Ymxl
CGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwuaW50LnNldAhjb25zdGFu
dAQOY3JhZnRfdGllcjozLjQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91Ymxl
LnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My40EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJs
ZS5nZXQIY29uc3RhbnQEBmJsb2Nrcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwu
ZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRl
bXMuY291bnQIY29uc3RhbnQEBWJsb2NrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJp
Yy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo0DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AgsA
AAARY29tcGFyaXNvbi5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQGcGxhdGVzCGNvbnN0
YW50BAE8EWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9p
bnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5Lm1hY2hpbmUu
YWN0aXZlCGNvbnN0YW50BAdwcmVzc2VyD2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQFaW5nb3QNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BAZwbGF0ZXMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJs
ZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNv
dW50CGNvbnN0YW50BAVwbGF0ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAdw
cmVzc2VyDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45DmFyaXRobWV0aWMu
aW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45CGNvbnN0YW50BAErCGNv
bnN0YW50AgIAAAA=
2 assembler

(pic)

Name Lines Code
craft 2:2 17
; Assembler
:global double craft_inventory
:local int tier
:local double count
:local double motors
:local double chips
:local int chiptier

tier = global.int.get("craft_tier:2.2")
count = global.double.get("craft_count:2.2")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:2:in")
gotoif(99, global.int.get("craft_status") > 199)

motors = count * ceil(i2d(tier) / 8.0)
chips = count * ceil(i2d(tier) / 9.0)
chiptier = d2i(floor((44332221111.0 / (10.0 ^ i2d(tier))) % 10.0))

global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", chips - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", motors - craft_inventory * count("motor", tier))
executesync("craft 3:8")
gotoif(99, global.int.get("craft_status") > 199)

executesync("craft 2:2:plates")
craft("machine.oven", tier, count)
CWNyYWZ0IDI6MgAAAAAAAAAAEQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4yDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjoyOmluDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFy
aXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghj
b25zdGFudALHAAAAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBm1vdG9ycxFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgtkb3VibGUuY2Vp
bBFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFu
dAQBLwhjb25zdGFudAMAAAAAAAAgQBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVjaGlwcxFhcml0
aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgtk
b3VibGUuY2VpbBFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGll
cghjb25zdGFudAQBLwhjb25zdGFudAMAAAAAAAAiQA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAhjaGlw
dGllcgNkMmkMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNv
bnN0YW50AwAAbgXQpCRCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAA
ACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQE
A21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoz
LjENbG9jYWwuaW50LmdldAhjb25zdGFudAQIY2hpcHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3Rh
bnQED2NyYWZ0X2NvdW50OjMuMRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BAVjaGlwcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEBGNoaXANbG9jYWwuaW50LmdldAhjb25zdGFudAQIY2hpcHRpZXITZ2VuZXJpYy5leGVjdXRl
c3luYwhjb25zdGFudAQJY3JhZnQgMzoxDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuOA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjgRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQGbW90b3JzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25z
dGFudAQFbW90b3INbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4ZWN1dGVzeW5j
CGNvbnN0YW50BAljcmFmdCAzOjgOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29u
LmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0
YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQQY3JhZnQgMjoyOnBsYXRlcw1mYWN0
b3J5LmNyYWZ0CGNvbnN0YW50BAxtYWNoaW5lLm92ZW4NbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGll
chBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
craft 2:2:in 13
; Oven
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double blocks
:local double cables
:local double ingots

tier = global.int.get("craft_tier:2.2")
count = global.double.get("craft_count:2.2")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.2", tier - 1)
global.double.set("craft_count:2.2", count - craft_inventory * count("machine.assembler", tier - 1))
executesync("craft 2:2")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.2", tier)
global.double.set("craft_count:2.2", count)
DGNyYWZ0IDI6MjppbgAAAAAAAAAADQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4yEGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjIO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjIRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BBFtYWNoaW5lLmFzc2VtYmxlcg5h
cml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEtCGNvbnN0
YW50AgEAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMjoyDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNy
YWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50
BA5jcmFmdF90aWVyOjIuMg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUu
c2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291
bnQ=
craft 2:2:plates 20
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double pipes
:local double rawplates

tier = global.int.get("craft_tier:2.2")
count = global.double.get("craft_count:2.2")

plates = count * 2.0 * floor((66555444331.0 / (10.0 ^ i2d(tier))) % 10.0)
gotoif(x, tier != 2) ; only 5 plates for T2
plates = plates - 1.0
x: pipes = count * ceil(i2d(tier) / 5.0)

rawplates = max(0.0, plates * 9.0 - craft_inventory * (count("plate.dense", tier) + count("plate.stack", tier))) + max(0.0, pipes - craft_inventory * count("pipe", tier))
gotoif(plates, rawplates <= craft_inventory * count("plate", tier))
  waitwhile(active("presser"))
  produce("ingot", tier, rawplates - craft_inventory * count("plate", tier), "presser")
  waitwhile(active("presser"))

plates: gotoif(pipes, plates <= craft_inventory * count("plate.dense", tier))
  craft("plate.stack", tier, plates - craft_inventory * (count("plate.stack", tier) + count("plate.dense", tier)))
  waitwhile(active("presser"))
  produce("plate.stack", tier, plates - craft_inventory * count("plate.dense", tier), "presser")
  
pipes: gotoif(end, pipes <= craft_inventory * count("pipe", tier))
  waitwhile(active("shaper"))
  produce("plate", tier, pipes - craft_inventory * count("pipe", tier), "shaper")

end: waituntil(count("plate.dense", tier) >= plates & count("pipe", tier) >= pipes)
wait(0.0)
EGNyYWZ0IDI6MjpwbGF0ZXMAAAAAAAAAABQAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjIQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMhBsb2Nh
bC5kb3VibGUuc2V0CGNvbnN0YW50BAZwbGF0ZXMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5k
b3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoIY29uc3RhbnQD
AAAAAAAAAEAIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0
aWMuZG91YmxlCGNvbnN0YW50AwAA1vgG/i5CCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNv
bnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nZW5lcmljLmdvdG9pZghjb25zdGFudAIG
AAAADmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAiE9
CGNvbnN0YW50AgIAAAAQbG9jYWwuZG91YmxlLnNldAhjb25zdGFudAQGcGxhdGVzEWFyaXRobWV0aWMu
ZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQBLQhjb25zdGFu
dAMAAAAAAADwPxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVwaXBlcxFhcml0aG1ldGljLmRvdWJs
ZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgtkb3VibGUuY2VpbBFh
cml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
Lwhjb25zdGFudAMAAAAAAAAUQBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAlyYXdwbGF0ZXMRYXJp
dGhtZXRpYy5kb3VibGUKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJs
ZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZwbGF0ZXMIY29uc3Rh
bnQEASoIY29uc3RhbnQDAAAAAAAAIkAIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFs
LmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhFhcml0aG1ldGlj
LmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5zZQ1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQE
C3BsYXRlLnN0YWNrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASsKZG91Ymxl
Lm1heAhjb25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BAVwaXBlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdl
dAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQI
Y29uc3RhbnQEBHBpcGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcg5nZW5lcmljLmdvdG9pZghj
b25zdGFudAIMAAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECXJh
d3BsYXRlcwhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29u
c3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0
YW50BAVwbGF0ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZh
Y3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0
YW50BAVpbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRobWV0aWMuZG91YmxlEGxv
Y2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECXJhd3BsYXRlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRv
dWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEq
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEB3ByZXNzZXIRZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFj
dGl2ZQhjb25zdGFudAQHcHJlc3Nlcg5nZW5lcmljLmdvdG9pZghjb25zdGFudAIQAAAAEWNvbXBhcmlz
b24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQCPD0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5zZQ1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyDWZhY3RvcnkuY3JhZnQIY29uc3RhbnQEC3BsYXRlLnN0YWNrDWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdl
dAhjb25zdGFudAQGcGxhdGVzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3Vi
bGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3Vi
bGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQLcGxhdGUuc3RhY2sNbG9jYWwuaW50LmdldAhj
b25zdGFudAQEdGllcghjb25zdGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0
ZS5kZW5zZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3Rv
cnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50
BAtwbGF0ZS5zdGFjaw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRobWV0aWMuZG91Ymxl
EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRv
dWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEq
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRlbnNlDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEB3ByZXNzZXIOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCEwAAABFj
b21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVwaXBlcwhjb25zdGFudAQC
PD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVu
dG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARwaXBlDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIRZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2
ZQhjb25zdGFudAQGc2hhcGVyD2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQFcGxhdGUNbG9jYWwuaW50
LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BAVwaXBlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEBHBpcGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQGc2hhcGVyEWdl
bmVyaWMud2FpdHVudGlsD2NvbXBhcmlzb24uYm9vbBFjb21wYXJpc29uLmRvdWJsZRNmYWN0b3J5Lml0
ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5zZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZwbGF0ZXMIY29uc3RhbnQEASYR
Y29tcGFyaXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEcGlwZQ1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BAVwaXBlcwxnZW5lcmljLndhaXQIY29uc3RhbnQDAAAAAAAAAAA=
3 refiner

(pic)

Name Lines Code
craft 2:3
x
x
4 crusher

(pic)

5 cutter

(pic)

6 presser

(pic)

7 mixer

(pic)

8 belt

(pic)

9 shaper

(pic)

10 boiler

(pic)