@shipload/sdk 2.0.0-rc2 → 2.0.0-rc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/shipload.d.ts +271 -137
- package/lib/shipload.js +1375 -1022
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +780 -342
- package/lib/shipload.m.js.map +1 -1
- package/package.json +1 -1
- package/src/capabilities/extraction.ts +14 -21
- package/src/capabilities/storage.ts +2 -2
- package/src/contracts/server.ts +239 -120
- package/src/data/items.json +16 -0
- package/src/derivation/index.ts +25 -0
- package/src/derivation/location-size.ts +15 -0
- package/src/derivation/resources.ts +141 -0
- package/src/derivation/stratum.ts +116 -0
- package/src/entities/cargo-utils.ts +8 -8
- package/src/entities/entity-inventory.ts +13 -9
- package/src/entities/inventory-accessor.ts +2 -2
- package/src/entities/location.ts +10 -10
- package/src/entities/ship.ts +10 -6
- package/src/entities/warehouse.ts +2 -2
- package/src/errors.ts +4 -4
- package/src/index-module.ts +31 -6
- package/src/managers/actions.ts +21 -9
- package/src/managers/locations.ts +7 -7
- package/src/managers/trades.ts +5 -5
- package/src/market/items.ts +31 -0
- package/src/market/market.ts +9 -9
- package/src/scheduling/projection.ts +7 -7
- package/src/trading/collect.ts +25 -25
- package/src/trading/deal.ts +8 -8
- package/src/trading/trade.ts +9 -9
- package/src/travel/travel.ts +6 -6
- package/src/types.ts +17 -7
- package/src/utils/system.ts +7 -42
- package/src/data/goods.json +0 -23
- package/src/market/goods.ts +0 -31
package/lib/shipload.m.js
CHANGED
|
@@ -205,7 +205,7 @@ var platform = /*#__PURE__*/Object.freeze({
|
|
|
205
205
|
Contract: Contract$1
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhQB2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgxidXljb250YWluZXIAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcIYnV5Z29vZHMABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIHYnV5c2hpcAACB2FjY291bnQEbmFtZQRuYW1lBnN0cmluZwxidXl3YXJlaG91c2UAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcGY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NAdtaXh0dXJlDW1peHR1cmVfaW5mbz8JY2FyZ29fcm93AAUCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CXVuaXRfY29zdAZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ng1jb250YWluZXJfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MGdWludDMyCGNhcGFjaXR5BnVpbnQzMgljYXJnb21hc3MGdWludDMyCHNjaGVkdWxlCXNjaGVkdWxlPwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8GZW5hYmxlAAEHZW5hYmxlZARib29sDGVuZXJneV9zdGF0cwACCGNhcGFjaXR5BnVpbnQxNghyZWNoYXJnZQZ1aW50MTYUZW50aXR5X2N1cnJlbnRfc3RhdGUAAgtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kGdWludDE2C2VudGl0eV9pbmZvABUEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQdsb2FkZXJzDWxvYWRlcl9zdGF0cz8GZW5lcmd5B3VpbnQxNj8IaHVsbG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/CmVudGl0eV9yZWYAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludA9lbnRpdHlncm91cF9yb3cAAgJpZAZ1aW50NjQMcGFydGljaXBhbnRzDGVudGl0eV9yZWZbXQdleHRyYWN0AAEHc2hpcF9pZAZ1aW50NjQPZXh0cmFjdG9yX3N0YXRzAAMEcmF0ZQZ1aW50MTYFZHJhaW4GdWludDE2CmVmZmljaWVuY3kGdWludDE2C2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIZ2V0Z29vZHMAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0CWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCWdldHBsYXllcgABB2FjY291bnQEbmFtZQpnZXRzdGFydGVyAAAMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwRnb29kAAMCaWQGdWludDE2CmJhc2VfcHJpY2UGdWludDMyBG1hc3MGdWludDMyCmdvb2RzX2luZm8AAQVnb29kcwZnb29kW10LZ3JvdXB0cmF2ZWwABAhlbnRpdGllcwxlbnRpdHlfcmVmW10BeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nBGluaXQAAQRzZWVkC2NoZWNrc3VtMjU2BGpvaW4AAQdhY2NvdW50BG5hbWUMbG9hZGVyX3N0YXRzAAMEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNghxdWFudGl0eQV1aW50OBBsb2NhdGlvbl9kZXJpdmVkAAIMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwtlcG9jaF9wcm9wcw5sb2NhdGlvbl9lcG9jaA5sb2NhdGlvbl9lcG9jaAADBmFjdGl2ZQRib29sBXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DWxvY2F0aW9uX2dvb2QABQJpZAZ1aW50MTYFcHJpY2UGdWludDMyBnN1cHBseQZ1aW50MTYRcmFyaXR5X211bHRpcGxpZXIGdWludDMyE2xvY2F0aW9uX211bHRpcGxpZXIGdWludDMyDWxvY2F0aW9uX2luZm8AAwZjb29yZHMLY29vcmRpbmF0ZXMJaXNfc3lzdGVtBGJvb2wFZ29vZHMPbG9jYXRpb25fZ29vZFtdDGxvY2F0aW9uX3JvdwAGAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29faXRlbVtdCHNjaGVkdWxlCXNjaGVkdWxlPw9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgRbWl4dHVyZV9jb21wb25lbnQAAgdnb29kX2lkBnVpbnQxNgZwdXJpdHkGdWludDE2DG1peHR1cmVfaW5mbwABCmNvbXBvbmVudHMTbWl4dHVyZV9jb21wb25lbnRbXQ5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQHcGF5bG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0C3BsYXllcl9pbmZvAA0Fb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0DmF2YWlsYWJsZV9sb2FuBnVpbnQ2NA9uZXh0X3NoaXBfcHJpY2UGdWludDY0FG5leHRfd2FyZWhvdXNlX3ByaWNlBnVpbnQ2NBRuZXh0X2NvbnRhaW5lcl9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NA9jb250YWluZXJfY291bnQGdWludDY0CnBsYXllcl9yb3cABAVvd25lcgRuYW1lB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0C3B1cmdlc3VwcGx5AAEIbWF4X3Jvd3MHdWludDY0PwhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B3Jlc29sdmUAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAVjb3VudAd1aW50NjQ/D3Jlc29sdmVfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ5yZXNvbHZlZF9jb3VudAV1aW50OBRuZXdfc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwRzYWx0AAEEc2FsdAZ1aW50NjQIc2NoZWR1bGUAAgdzdGFydGVkCnRpbWVfcG9pbnQFdGFza3MGdGFza1tdCXNlbGxnb29kcwAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQIc2hpcF9yb3cADgJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwZ1aW50MzIIY2FwYWNpdHkGdWludDMyBmVuZXJneQZ1aW50MTYJY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzDm1vdmVtZW50X3N0YXRzCWdlbmVyYXRvcgxlbmVyZ3lfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMFdHJhZGUMdHJhZGVfc3RhdHM/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/CHNjaGVkdWxlCXNjaGVkdWxlPwxzdGFydGVyX2luZm8AAwdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQ2NARzaGlwC2VudGl0eV9pbmZvCXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50MzIEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2CnN1cHBseV9yb3cABQJpZAZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMFZXBvY2gGdWludDY0B2dvb2RfaWQGdWludDE2BnN1cHBseQZ1aW50MTYIdGFrZWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAR0YXNrAAkEdHlwZQV1aW50OAhkdXJhdGlvbgZ1aW50MzIKY2FuY2VsYWJsZQV1aW50OAtjb29yZGluYXRlcwxjb29yZGluYXRlcz8FY2FyZ28MY2FyZ29faXRlbVtdDGVudGl0eXRhcmdldAtlbnRpdHlfcmVmPwtlbnRpdHlncm91cAd1aW50NjQ/B2NyZWRpdHMGaW50NjQ/C2VuZXJneV9jb3N0B3VpbnQxNj8KdGFza19ldmVudAAOCmV2ZW50X3R5cGUFdWludDgFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/D25ld19jb29yZGluYXRlcwxjb29yZGluYXRlcz8PY2FyZ29tYXNzX2RlbHRhBWludDY0C2NhcmdvX2FkZGVkDGNhcmdvX2l0ZW1bXQ1jYXJnb19yZW1vdmVkDGNhcmdvX2l0ZW1bXQdjcmVkaXRzBmludDY0Pwx0YXNrX3Jlc3VsdHMAAQhlbnRpdGllcxJlbnRpdHlfdGFza19pbmZvW10LdHJhZGVfc3RhdHMAAQZtYXJnaW4GdWludDE2CHRyYW5zZmVyAAYLc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cAAwJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRFzdGFydGVyX2luZm9fdHlwZQxzdGFydGVyX2luZm8MdXBkYXRlY3JlZGl0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NAp1cGRhdGVkZWJ0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NA13YXJlaG91c2Vfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIY2FwYWNpdHkGdWludDMyCWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACYAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4ucNV0Jk+KvD4MYnV5Y29udGFpbmVyygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5Y29udGFpbmVyCnN1bW1hcnk6ICdCdXkgYSBuZXcgY29udGFpbmVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBjb250YWluZXIgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gQ29udGFpbmVycyBwcm92aWRlIGNhcmdvIHN0b3JhZ2UgYnV0IGhhdmUgbm8gbG9hZGVycyBhbmQgY2Fubm90IG1vdmUgaW5kZXBlbmRlbnRseS4AAAA4Ucq8PghidXlnb29kc90BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eWdvb2RzCnN1bW1hcnk6ICdCdXkgZ29vZHMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGdvb2RzIGFuZCBhZGQgdGhlbSB0byBhIHNoaXAncyBjYXJnby4AAACguoa9PgdidXlzaGlwxgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5c2hpcApzdW1tYXJ5OiAnQnV5IGEgbmV3IHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHNoaXCgsKZNXcO9PgxidXl3YXJlaG91c2XMAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXl3YXJlaG91c2UKc3VtbWFyeTogJ0J1eSBhIG5ldyB3YXJlaG91c2UnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHdhcmVob3VzZSBhdCB0aGUgbG9jYXRpb24gb2YgYW4gaWRsZSBzaGlwLiBXYXJlaG91c2VzIHByb3ZpZGUgY2FyZ28gc3RvcmFnZSB3aXRoIGxvYWRpbmcvdW5sb2FkaW5nIGNhcGFiaWxpdGllcyBidXQgY2Fubm90IG1vdmUuAAAAAESFpkEGY2FuY2VsxwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuCgotLS0AgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl08QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgoKLS0tAAAAAKh4zFQGZW5hYmxl4gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdTZXQgZW5hYmxlZCBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBnYW1lIG9mIFNoaXBsb2FkLgoKLS0tAAAAICNzc1cHZXh0cmFjdKADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGV4dHJhY3QKc3VtbWFyeTogJ0V4dHJhY3QgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFeHRyYWN0IHJlc291cmNlcyBhdCB0aGUgc2hpcCdzIGN1cnJlbnQgbG9jYXRpb24uIE9ubHkgd29ya3MgYXQgZXh0cmFjdGFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhbiBleHRyYWN0aW9uIHRhc2sgdGhhdCBjb25zdW1lcyBlbmVyZ3kgYW5kIHlpZWxkcyBjYXJnbyBiYXNlZCBvbiB0aGUgc2hpcCdzIGV4dHJhY3RvciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgbWl4dHVyZSBjb21wb3NpdGlvbi4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4AAAA4UcqyYghnZXRnb29kc6oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGdvb2RzCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRyYWRlYWJsZSBnb29kcyBpbiB0aGUgZ2FtZSBpbmNsdWRpbmcgdGhlaXIgaWQsIG5hbWUsIGJhc2UgcHJpY2UsIGFuZCBtYXNzLgAmddkgGrNiC2dldGxvY2F0aW9u4gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jYXRpb24Kc3VtbWFyeTogJ0dldCBsb2NhdGlvbiBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2F0aW9uIGluY2x1ZGluZyB3aGV0aGVyIGEgc3lzdGVtIGV4aXN0cywgYW5kIGZvciBlYWNoIGdvb2Q6IHByaWNlLCBzdXBwbHksIHJhcml0eSBtdWx0aXBsaWVyLCBhbmQgbG9jYXRpb24gbXVsdGlwbGllci4AgMkmIRqzYgpnZXRsb2NkYXRh/gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jZGF0YQpzdW1tYXJ5OiAnR2V0IGRlcml2ZWQgbG9jYXRpb24gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBkZXJpdmVkIGxvY2F0aW9uIGRhdGEgaW5jbHVkaW5nIHN0YXRpYyBwcm9wZXJ0aWVzICh0eXBlLCBkaWZmaWN1bHR5LCBzZWVkcykgZnJvbSB0aGUgZ2FtZSBzZWVkIGFuZCBlcG9jaC1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY3RpdmUsIHNlZWRzKSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoIHNlZWQuAADw5xo1s2IJZ2V0bmVhcmJ53gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmVhcmJ5CnN1bW1hcnk6ICdHZXQgbmVhcmJ5IHJlYWNoYWJsZSBzeXN0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIG5lYXJieSBzeXN0ZW1zIHJlYWNoYWJsZSBieSBhbiBlbnRpdHkgZnJvbSBpdHMgcHJvamVjdGVkIGxvY2F0aW9uLiBSZXR1cm5zIGN1cnJlbnQgc3RhdGUgKHdpdGggY29tcGxldGVkIHRhc2tzIHJlc29sdmVkKSwgcHJvamVjdGVkIHN0YXRlIChhZnRlciBhbGwgc2NoZWR1bGVkIHRhc2tzKSwgYW5kIGEgbGlzdCBvZiByZWFjaGFibGUgc3lzdGVtcyB3aXRoIGRpc3RhbmNlLCBlbmVyZ3kgY29zdCwgZmxpZ2h0IHRpbWUsIGFuZCBtYXJrZXQgaW5mb3JtYXRpb24uAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AwFX5moyzYgpnZXRzdGFydGVyhQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3RhcnRlcgpzdW1tYXJ5OiAnR2V0IHN0YXJ0ZXIgc2hpcCBhbmQgYmFsYW5jZSBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgc3RhcnRlciBzaGlwIHN0YXRzIGFuZCBpbml0aWFsIGJhbGFuY2UgYSBuZXcgcGxheWVyIHdvdWxkIHJlY2VpdmUgdXBvbiBqb2luaW5nLiBVc2VkIGZvciBvbmJvYXJkaW5nIFVJIHRvIGRpc3BsYXkgd2hhdCBwbGF5ZXJzIHdpbGwgZ2V0IGJlZm9yZSB0aGV5IHJlZ2lzdGVyLoCVu0ZKjbNiDGdldHN1bW1hcmllc+gCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN1bW1hcmllcwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdW1tYXJpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGxpZ2h0d2VpZ2h0IHN1bW1hcmllcyBvZiBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIgaW5jbHVkaW5nIHR5cGUsIGlkLCBvd25lciwgbmFtZSwgbG9jYXRpb24sIGFuZCBpZGxlIHN0YXR1cy4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXVAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuCgotLS0AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwIlSFqPCCXNlbGxnb29kc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxnb29kcwpzdW1tYXJ5OiAnU2VsbCBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBnb29kcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAA09CooMkIdGFrZWxvYW7qAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0YWtlbG9hbgpzdW1tYXJ5OiAnQ3JlZGl0IExvYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJvcnJvdyBjcmVkaXRzIGZyb20gdGhlIGJhbmsgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVwYWlkLgAAAFctPM3NCHRyYW5zZmVyyAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhbnNmZXIKc3VtbWFyeTogJ1RyYW5zZmVyIGNhcmdvIGJldHdlZW4gZW50aXRpZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZmVyIGNhcmdvIGJldHdlZW4gdHdvIGVudGl0aWVzIGF0IHRoZSBzYW1lIGxvY2F0aW9uLiBCb3RoIGVudGl0aWVzIG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlciBhbmQgYXQgbGVhc3Qgb25lIG11c3QgaGF2ZSBsb2FkZXJzLiBDcmVhdGVzIGxvYWQgYW5kIHVubG9hZCB0YXNrcyBvbiBib3RoIGVudGl0aWVzIHdpdGggZHVyYXRpb24gYmFzZWQgb24gY29tYmluZWQgbG9hZGVyIGNhcGFjaXR5IGFuZCBaLWRpc3RhbmNlIGJldHdlZW4gdGhlbS4AAAAARLXNzQZ0cmF2ZWzLAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgYSBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSB0cmF2ZWwgb2YgYW4gZW50aXR5IGZyb20gaXRzIGN1cnJlbnQgbG9jYXRpb24gdG8gYSBuZXcgZGVzdGluYXRpb24uCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgYSBnaXZlbiBsb2NhdGlvbi6QXVIXqWxS1Qx1cGRhdGVjcmVkaXTCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVjcmVkaXQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVjcmVkaXQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAEA+KqlsUtUKdXBkYXRlZGVidL4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWRlYnQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVkZWJ0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCwAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAuGo6kydFA2k2NAAADWNvbnRhaW5lcl9yb3cAqqaX+ezyVANpNjQAAA9lbnRpdHlncm91cF9yb3cAAACTumwQjQNpNjQAAAxsb2NhdGlvbl9yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAACk2lrcIDaTY0AAAMc2VxdWVuY2Vfcm93AAAAAABQXcMDaTY0AAAIc2hpcF9yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAAAAA+FirxgNpNjQAAApzdXBwbHlfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAUAAAAOFHKvD4MdGFza19yZXN1bHRzAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAgI3NzVwx0YXNrX3Jlc3VsdHMAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm8AAAA4UcqyYgpnb29kc19pbmZvACZ12SAas2INbG9jYXRpb25faW5mbwCAySYhGrNiEGxvY2F0aW9uX2Rlcml2ZWQAAPDnGjWzYgtuZWFyYnlfaW5mbwAAuMqbWLNiC3BsYXllcl9pbmZvAMBV+ZqMs2IMc3RhcnRlcl9pbmZvgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXQCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAAMCJUhajwgx0YXNrX3Jlc3VsdHMAAABXLTzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHM=');
|
|
208
|
+
const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhUB2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgxidXljb250YWluZXIAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcIYnV5aXRlbXMABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIHYnV5c2hpcAACB2FjY291bnQEbmFtZQRuYW1lBnN0cmluZwxidXl3YXJlaG91c2UAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcGY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NARzZWVkB3VpbnQ2ND8JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CXVuaXRfY29zdAZ1aW50NjQEc2VlZAZ1aW50NjQJY2xlYW5yc3ZwAAIFZXBvY2gGdWludDY0CG1heF9yb3dzBnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2CWNvbmZpZ2xvZwABBmNvbmZpZwtnYW1lX2NvbmZpZw1jb250YWluZXJfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MGdWludDMyCGNhcGFjaXR5BnVpbnQzMgljYXJnb21hc3MGdWludDMyCHNjaGVkdWxlCXNjaGVkdWxlPwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8GZW5hYmxlAAEHZW5hYmxlZARib29sDGVuZXJneV9zdGF0cwACCGNhcGFjaXR5BnVpbnQxNghyZWNoYXJnZQZ1aW50MTYUZW50aXR5X2N1cnJlbnRfc3RhdGUAAgtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kGdWludDE2D2VudGl0eV9kZWZhdWx0cwAPDXNoaXBfaHVsbG1hc3MGdWludDMyDXNoaXBfY2FwYWNpdHkGdWludDMyC3NoaXBfZW5lcmd5BnVpbnQxNgZzaGlwX3oGdWludDE2DHNoaXBfZW5naW5lcw5tb3ZlbWVudF9zdGF0cw5zaGlwX2dlbmVyYXRvcgxlbmVyZ3lfc3RhdHMMc2hpcF9sb2FkZXJzDGxvYWRlcl9zdGF0cwpzaGlwX3RyYWRlC3RyYWRlX3N0YXRzDnNoaXBfZXh0cmFjdG9yD2V4dHJhY3Rvcl9zdGF0cxJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhF3YXJlaG91c2VfbG9hZGVycwxsb2FkZXJfc3RhdHMSY29udGFpbmVyX2h1bGxtYXNzBnVpbnQzMhJjb250YWluZXJfY2FwYWNpdHkGdWludDMyC2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAVBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/CGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8IY2FwYWNpdHkHdWludDMyPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwdpc19pZGxlBGJvb2wMY3VycmVudF90YXNrBXRhc2s/FGN1cnJlbnRfdGFza19lbGFwc2VkBnVpbnQzMhZjdXJyZW50X3Rhc2tfcmVtYWluaW5nBnVpbnQzMg1wZW5kaW5nX3Rhc2tzBnRhc2tbXQdpZGxlX2F0C3RpbWVfcG9pbnQ/CHNjaGVkdWxlCXNjaGVkdWxlPwplbnRpdHlfcmVmAAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkCnRpbWVfcG9pbnQPZW50aXR5Z3JvdXBfcm93AAICaWQGdWludDY0DHBhcnRpY2lwYW50cwxlbnRpdHlfcmVmW10HZXh0cmFjdAAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B3N0cmF0dW0GdWludDE2CHF1YW50aXR5BnVpbnQzMg9leHRyYWN0b3Jfc3RhdHMABQRyYXRlBnVpbnQxNgVkcmFpbgZ1aW50MTYKZWZmaWNpZW5jeQZ1aW50MTYFZGVwdGgGdWludDE2BWRyaWxsBnVpbnQxNgtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdCWdldGNvbmZpZwAAC2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIZ2V0aXRlbXMAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0CWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCWdldHBsYXllcgABB2FjY291bnQEbmFtZQpnZXRzdGFydGVyAAAMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwtncm91cHRyYXZlbAAECGVudGl0aWVzDGVudGl0eV9yZWZbXQF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbARoYXNoAAEFdmFsdWUGc3RyaW5nB2hhc2g1MTIAAQV2YWx1ZQZzdHJpbmcEaW5pdAABBHNlZWQLY2hlY2tzdW0yNTYIaXRlbV9kZWYAAwJpZAZ1aW50MTYKYmFzZV9wcmljZQZ1aW50MzIEbWFzcwZ1aW50MzIKaXRlbXNfaW5mbwABBWl0ZW1zCml0ZW1fZGVmW10Eam9pbgABB2FjY291bnQEbmFtZQxsb2FkZXJfc3RhdHMAAwRtYXNzBnVpbnQzMgZ0aHJ1c3QGdWludDE2CHF1YW50aXR5BXVpbnQ4EGxvY2F0aW9uX2Rlcml2ZWQAAgxzdGF0aWNfcHJvcHMPbG9jYXRpb25fc3RhdGljC2Vwb2NoX3Byb3BzDmxvY2F0aW9uX2Vwb2NoDmxvY2F0aW9uX2Vwb2NoAAMGYWN0aXZlBGJvb2wFc2VlZDAFdWludDgFc2VlZDEFdWludDgNbG9jYXRpb25faW5mbwADBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAVpdGVtcw9sb2NhdGlvbl9pdGVtW10NbG9jYXRpb25faXRlbQAFAmlkBnVpbnQxNgVwcmljZQZ1aW50MzIGc3VwcGx5BnVpbnQxNhFyYXJpdHlfbXVsdGlwbGllcgZ1aW50MzITbG9jYXRpb25fbXVsdGlwbGllcgZ1aW50MzIMbG9jYXRpb25fcm93AAYCaWQGdWludDY0BW93bmVyBG5hbWULY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10Ic2NoZWR1bGUJc2NoZWR1bGU/D2xvY2F0aW9uX3N0YXRpYwAFBmNvb3Jkcwtjb29yZGluYXRlcwR0eXBlDWxvY2F0aW9uX3R5cGUHc3VidHlwZQV1aW50OAVzZWVkMAV1aW50OAVzZWVkMQV1aW50OA5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQHcGF5bG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0C3BsYXllcl9pbmZvAA0Fb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0DmF2YWlsYWJsZV9sb2FuBnVpbnQ2NA9uZXh0X3NoaXBfcHJpY2UGdWludDY0FG5leHRfd2FyZWhvdXNlX3ByaWNlBnVpbnQ2NBRuZXh0X2NvbnRhaW5lcl9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NA9jb250YWluZXJfY291bnQGdWludDY0CnBsYXllcl9yb3cABAVvd25lcgRuYW1lB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0C3B1cmdlc3VwcGx5AAEIbWF4X3Jvd3MHdWludDY0PwhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0C3Jlc2VydmVfcm93AAICaWQGdWludDY0CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/BHNhbHQAAQRzYWx0BnVpbnQ2NAhzY2hlZHVsZQACB3N0YXJ0ZWQKdGltZV9wb2ludAV0YXNrcwZ0YXNrW10Jc2VsbGl0ZW1zAAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyDHNlcXVlbmNlX3JvdwACA2tleQRuYW1lBXZhbHVlBnVpbnQ2NAhzaGlwX3JvdwAOAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIGZW5lcmd5BnVpbnQxNgljYXJnb21hc3MGdWludDMyB2VuZ2luZXMObW92ZW1lbnRfc3RhdHMJZ2VuZXJhdG9yDGVuZXJneV9zdGF0cwdsb2FkZXJzDGxvYWRlcl9zdGF0cwV0cmFkZQx0cmFkZV9zdGF0cz8JZXh0cmFjdG9yEGV4dHJhY3Rvcl9zdGF0cz8Ic2NoZWR1bGUJc2NoZWR1bGU/DHN0YXJ0ZXJfaW5mbwADB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDY0BHNoaXALZW50aXR5X2luZm8Jc3RhdGVfcm93AAYHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzYWx0BnVpbnQ2NAVzaGlwcwZ1aW50MzIEc2VlZAtjaGVja3N1bTI1NgZjb21taXQLY2hlY2tzdW0yNTYKc3VwcGx5X3JvdwAFAmlkBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwVlcG9jaAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYGc3VwcGx5BnVpbnQxNgh0YWtlbG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0BHRhc2sACQR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4C2Nvb3JkaW5hdGVzDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10MZW50aXR5dGFyZ2V0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8HY3JlZGl0cwZpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDE2Pwp0YXNrX2V2ZW50AAkKZXZlbnRfdHlwZQV1aW50OAVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludApuZXdfZW5lcmd5B3VpbnQxNj8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdC3RyYWRlX3N0YXRzAAEGbWFyZ2luBnVpbnQxNgh0cmFuc2ZlcgAGC3NvdXJjZV90eXBlBG5hbWUJc291cmNlX2lkBnVpbnQ2NAlkZXN0X3R5cGUEbmFtZQdkZXN0X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGdHJhdmVsAAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93AAQCaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkRc3RhcnRlcl9pbmZvX3R5cGUMc3RhcnRlcl9pbmZvEGdhbWVfY29uZmlnX3R5cGULZ2FtZV9jb25maWcMdXBkYXRlY3JlZGl0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NAp1cGRhdGVkZWJ0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NA13YXJlaG91c2Vfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIY2FwYWNpdHkGdWludDMyCWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACkAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4ucNV0Jk+KvD4MYnV5Y29udGFpbmVyygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5Y29udGFpbmVyCnN1bW1hcnk6ICdCdXkgYSBuZXcgY29udGFpbmVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBjb250YWluZXIgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gQ29udGFpbmVycyBwcm92aWRlIGNhcmdvIHN0b3JhZ2UgYnV0IGhhdmUgbm8gbG9hZGVycyBhbmQgY2Fubm90IG1vdmUgaW5kZXBlbmRlbnRseS4AAABYquy8PghidXlpdGVtc90BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eWl0ZW1zCnN1bW1hcnk6ICdCdXkgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGl0ZW1zIGFuZCBhZGQgdGhlbSB0byBhIHNoaXAncyBjYXJnby4AAACguoa9PgdidXlzaGlwxgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5c2hpcApzdW1tYXJ5OiAnQnV5IGEgbmV3IHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHNoaXCgsKZNXcO9PgxidXl3YXJlaG91c2XMAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXl3YXJlaG91c2UKc3VtbWFyeTogJ0J1eSBhIG5ldyB3YXJlaG91c2UnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHdhcmVob3VzZSBhdCB0aGUgbG9jYXRpb24gb2YgYW4gaWRsZSBzaGlwLiBXYXJlaG91c2VzIHByb3ZpZGUgY2FyZ28gc3RvcmFnZSB3aXRoIGxvYWRpbmcvdW5sb2FkaW5nIGNhcGFiaWxpdGllcyBidXQgY2Fubm90IG1vdmUuAAAAAESFpkEGY2FuY2VsxwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuCgotLS0AAKgb32lURAljbGVhbnJzdnAAAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAYDQytyZFCWNvbmZpZ2xvZwAAAAAAqHjMVAZlbmFibGXiAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQuCgotLS0AAAAgI3NzVwdleHRyYWN0oQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZXh0cmFjdApzdW1tYXJ5OiAnRXh0cmFjdCByZXNvdXJjZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkV4dHJhY3QgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBleHRyYWN0YWJsZSBsb2NhdGlvbiB0eXBlcy4gU2NoZWR1bGVzIGFuIGV4dHJhY3Rpb24gdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZXh0cmFjdG9yIHN0YXRzIGFuZCB0aGUgbG9jYXRpb24ncyByZXNvdXJjZSBjb21wb3NpdGlvbi4AAGBuTYqyYglnZXRjb25maWcAALBy2eWpsmILZ2V0ZW50aXRpZXOkAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdGllcwpzdW1tYXJ5OiAnR2V0IGFsbCBlbnRpdGllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgZnVsbCBlbnRpdHkgaW5mbyBmb3IgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAPDZ5amyYglnZXRlbnRpdHmiAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdHkKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYW4gZW50aXR5IGluY2x1ZGluZyBpZGVudGl0eSwgY2FyZ28sIHNjaGVkdWxlIHN0YXRlLCBhbmQgdHlwZS1zcGVjaWZpYyBmaWVsZHMuAAAAWKrssmIIZ2V0aXRlbXOaAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtcwpzdW1tYXJ5OiAnR2V0IGFsbCBhdmFpbGFibGUgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCBpdGVtcyBpbiB0aGUgZ2FtZSBpbmNsdWRpbmcgdGhlaXIgaWQsIGJhc2UgcHJpY2UsIGFuZCBtYXNzLgAmddkgGrNiC2dldGxvY2F0aW9u4gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jYXRpb24Kc3VtbWFyeTogJ0dldCBsb2NhdGlvbiBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2F0aW9uIGluY2x1ZGluZyB3aGV0aGVyIGEgc3lzdGVtIGV4aXN0cywgYW5kIGZvciBlYWNoIGl0ZW06IHByaWNlLCBzdXBwbHksIHJhcml0eSBtdWx0aXBsaWVyLCBhbmQgbG9jYXRpb24gbXVsdGlwbGllci4AgMkmIRqzYgpnZXRsb2NkYXRh/gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jZGF0YQpzdW1tYXJ5OiAnR2V0IGRlcml2ZWQgbG9jYXRpb24gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBkZXJpdmVkIGxvY2F0aW9uIGRhdGEgaW5jbHVkaW5nIHN0YXRpYyBwcm9wZXJ0aWVzICh0eXBlLCBkaWZmaWN1bHR5LCBzZWVkcykgZnJvbSB0aGUgZ2FtZSBzZWVkIGFuZCBlcG9jaC1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY3RpdmUsIHNlZWRzKSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoIHNlZWQuAADw5xo1s2IJZ2V0bmVhcmJ53gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmVhcmJ5CnN1bW1hcnk6ICdHZXQgbmVhcmJ5IHJlYWNoYWJsZSBzeXN0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIG5lYXJieSBzeXN0ZW1zIHJlYWNoYWJsZSBieSBhbiBlbnRpdHkgZnJvbSBpdHMgcHJvamVjdGVkIGxvY2F0aW9uLiBSZXR1cm5zIGN1cnJlbnQgc3RhdGUgKHdpdGggY29tcGxldGVkIHRhc2tzIHJlc29sdmVkKSwgcHJvamVjdGVkIHN0YXRlIChhZnRlciBhbGwgc2NoZWR1bGVkIHRhc2tzKSwgYW5kIGEgbGlzdCBvZiByZWFjaGFibGUgc3lzdGVtcyB3aXRoIGRpc3RhbmNlLCBlbmVyZ3kgY29zdCwgZmxpZ2h0IHRpbWUsIGFuZCBtYXJrZXQgaW5mb3JtYXRpb24uAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AwFX5moyzYgpnZXRzdGFydGVyhQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3RhcnRlcgpzdW1tYXJ5OiAnR2V0IHN0YXJ0ZXIgc2hpcCBhbmQgYmFsYW5jZSBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgc3RhcnRlciBzaGlwIHN0YXRzIGFuZCBpbml0aWFsIGJhbGFuY2UgYSBuZXcgcGxheWVyIHdvdWxkIHJlY2VpdmUgdXBvbiBqb2luaW5nLiBVc2VkIGZvciBvbmJvYXJkaW5nIFVJIHRvIGRpc3BsYXkgd2hhdCBwbGF5ZXJzIHdpbGwgZ2V0IGJlZm9yZSB0aGV5IHJlZ2lzdGVyLoCVu0ZKjbNiDGdldHN1bW1hcmllc+gCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN1bW1hcmllcwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdW1tYXJpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGxpZ2h0d2VpZ2h0IHN1bW1hcmllcyBvZiBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIgaW5jbHVkaW5nIHR5cGUsIGlkLCBvd25lciwgbmFtZSwgbG9jYXRpb24sIGFuZCBpZGxlIHN0YXR1cy4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXVAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuCgotLS0AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwFJlF6PCCXNlbGxpdGVtc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxpdGVtcwpzdW1tYXJ5OiAnU2VsbCBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBpdGVtcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAA09CooMkIdGFrZWxvYW7qAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0YWtlbG9hbgpzdW1tYXJ5OiAnQ3JlZGl0IExvYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJvcnJvdyBjcmVkaXRzIGZyb20gdGhlIGJhbmsgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVwYWlkLgAAAFctPM3NCHRyYW5zZmVyyAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhbnNmZXIKc3VtbWFyeTogJ1RyYW5zZmVyIGNhcmdvIGJldHdlZW4gZW50aXRpZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZmVyIGNhcmdvIGJldHdlZW4gdHdvIGVudGl0aWVzIGF0IHRoZSBzYW1lIGxvY2F0aW9uLiBCb3RoIGVudGl0aWVzIG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlciBhbmQgYXQgbGVhc3Qgb25lIG11c3QgaGF2ZSBsb2FkZXJzLiBDcmVhdGVzIGxvYWQgYW5kIHVubG9hZCB0YXNrcyBvbiBib3RoIGVudGl0aWVzIHdpdGggZHVyYXRpb24gYmFzZWQgb24gY29tYmluZWQgbG9hZGVyIGNhcGFjaXR5IGFuZCBaLWRpc3RhbmNlIGJldHdlZW4gdGhlbS4AAAAARLXNzQZ0cmF2ZWzLAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgYSBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSB0cmF2ZWwgb2YgYW4gZW50aXR5IGZyb20gaXRzIGN1cnJlbnQgbG9jYXRpb24gdG8gYSBuZXcgZGVzdGluYXRpb24uCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgaXRlbXMgYXQgYSBnaXZlbiBsb2NhdGlvbi6QXVIXqWxS1Qx1cGRhdGVjcmVkaXTCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVjcmVkaXQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVjcmVkaXQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAEA+KqlsUtUKdXBkYXRlZGVidL4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWRlYnQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVkZWJ0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tDAAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAuGo6kydFA2k2NAAADWNvbnRhaW5lcl9yb3cAqqaX+ezyVANpNjQAAA9lbnRpdHlncm91cF9yb3cAAACTumwQjQNpNjQAAAxsb2NhdGlvbl9yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAAD4WKvGA2k2NAAACnN1cHBseV9yb3cAAAAAAKyqzwNpNjQAAAl0eXBlc19yb3cAAFBY06au4QNpNjQAAA13YXJlaG91c2Vfcm93ARFTaGlwbG9hZCAoU2VydmVyKRFTaGlwbG9hZCAoU2VydmVyKQAAABUAAABYquy8Pgx0YXNrX3Jlc3VsdHMAAAAARIWmQQ5jYW5jZWxfcmVzdWx0cwAAACAjc3NXDHRhc2tfcmVzdWx0cwAAYG5NirJiC2dhbWVfY29uZmlnALBy2eWpsmINZW50aXR5X2luZm9bXQAA8NnlqbJiC2VudGl0eV9pbmZvAAAAWKrssmIKaXRlbXNfaW5mbwAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkAADw5xo1s2ILbmVhcmJ5X2luZm8AALjKm1izYgtwbGF5ZXJfaW5mbwDAVfmajLNiDHN0YXJ0ZXJfaW5mb4CVu0ZKjbNiEGVudGl0eV9zdW1tYXJ5W10Aotrm5qrpZQx0YXNrX3Jlc3VsdHMAAAAAANCwaQtjaGVja3N1bTI1NgAAAECE0rBpC2NoZWNrc3VtNTEyAAAAil3TkLoMdGFza19yZXN1bHRzAAAAQO1IsboPcmVzb2x2ZV9yZXN1bHRzAADAUmUXo8IMdGFza19yZXN1bHRzAAAAVy08zc0MdGFza19yZXN1bHRzAAAAAES1zc0MdGFza19yZXN1bHRz');
|
|
209
209
|
const abi = ABI.from(abiBlob);
|
|
210
210
|
var Types;
|
|
211
211
|
(function (Types) {
|
|
@@ -236,24 +236,24 @@ var Types;
|
|
|
236
236
|
Struct.type('buycontainer')
|
|
237
237
|
], buycontainer);
|
|
238
238
|
Types.buycontainer = buycontainer;
|
|
239
|
-
let
|
|
239
|
+
let buyitems = class buyitems extends Struct {
|
|
240
240
|
};
|
|
241
241
|
__decorate([
|
|
242
242
|
Struct.field(Name)
|
|
243
|
-
],
|
|
243
|
+
], buyitems.prototype, "entity_type", void 0);
|
|
244
244
|
__decorate([
|
|
245
245
|
Struct.field(UInt64)
|
|
246
|
-
],
|
|
246
|
+
], buyitems.prototype, "id", void 0);
|
|
247
247
|
__decorate([
|
|
248
248
|
Struct.field(UInt16)
|
|
249
|
-
],
|
|
249
|
+
], buyitems.prototype, "item_id", void 0);
|
|
250
250
|
__decorate([
|
|
251
251
|
Struct.field(UInt32)
|
|
252
|
-
],
|
|
253
|
-
|
|
254
|
-
Struct.type('
|
|
255
|
-
],
|
|
256
|
-
Types.
|
|
252
|
+
], buyitems.prototype, "quantity", void 0);
|
|
253
|
+
buyitems = __decorate([
|
|
254
|
+
Struct.type('buyitems')
|
|
255
|
+
], buyitems);
|
|
256
|
+
Types.buyitems = buyitems;
|
|
257
257
|
let buyship = class buyship extends Struct {
|
|
258
258
|
};
|
|
259
259
|
__decorate([
|
|
@@ -332,32 +332,11 @@ var Types;
|
|
|
332
332
|
Struct.type('cancel_results')
|
|
333
333
|
], cancel_results);
|
|
334
334
|
Types.cancel_results = cancel_results;
|
|
335
|
-
let mixture_component = class mixture_component extends Struct {
|
|
336
|
-
};
|
|
337
|
-
__decorate([
|
|
338
|
-
Struct.field(UInt16)
|
|
339
|
-
], mixture_component.prototype, "good_id", void 0);
|
|
340
|
-
__decorate([
|
|
341
|
-
Struct.field(UInt16)
|
|
342
|
-
], mixture_component.prototype, "purity", void 0);
|
|
343
|
-
mixture_component = __decorate([
|
|
344
|
-
Struct.type('mixture_component')
|
|
345
|
-
], mixture_component);
|
|
346
|
-
Types.mixture_component = mixture_component;
|
|
347
|
-
let mixture_info = class mixture_info extends Struct {
|
|
348
|
-
};
|
|
349
|
-
__decorate([
|
|
350
|
-
Struct.field(mixture_component, { array: true })
|
|
351
|
-
], mixture_info.prototype, "components", void 0);
|
|
352
|
-
mixture_info = __decorate([
|
|
353
|
-
Struct.type('mixture_info')
|
|
354
|
-
], mixture_info);
|
|
355
|
-
Types.mixture_info = mixture_info;
|
|
356
335
|
let cargo_item = class cargo_item extends Struct {
|
|
357
336
|
};
|
|
358
337
|
__decorate([
|
|
359
338
|
Struct.field(UInt16)
|
|
360
|
-
], cargo_item.prototype, "
|
|
339
|
+
], cargo_item.prototype, "item_id", void 0);
|
|
361
340
|
__decorate([
|
|
362
341
|
Struct.field(UInt32)
|
|
363
342
|
], cargo_item.prototype, "quantity", void 0);
|
|
@@ -365,8 +344,8 @@ var Types;
|
|
|
365
344
|
Struct.field(UInt64)
|
|
366
345
|
], cargo_item.prototype, "unit_cost", void 0);
|
|
367
346
|
__decorate([
|
|
368
|
-
Struct.field(
|
|
369
|
-
], cargo_item.prototype, "
|
|
347
|
+
Struct.field(UInt64, { optional: true })
|
|
348
|
+
], cargo_item.prototype, "seed", void 0);
|
|
370
349
|
cargo_item = __decorate([
|
|
371
350
|
Struct.type('cargo_item')
|
|
372
351
|
], cargo_item);
|
|
@@ -381,17 +360,32 @@ var Types;
|
|
|
381
360
|
], cargo_row.prototype, "entity_id", void 0);
|
|
382
361
|
__decorate([
|
|
383
362
|
Struct.field(UInt64)
|
|
384
|
-
], cargo_row.prototype, "
|
|
363
|
+
], cargo_row.prototype, "item_id", void 0);
|
|
385
364
|
__decorate([
|
|
386
365
|
Struct.field(UInt64)
|
|
387
366
|
], cargo_row.prototype, "quantity", void 0);
|
|
388
367
|
__decorate([
|
|
389
368
|
Struct.field(UInt64)
|
|
390
369
|
], cargo_row.prototype, "unit_cost", void 0);
|
|
370
|
+
__decorate([
|
|
371
|
+
Struct.field(UInt64)
|
|
372
|
+
], cargo_row.prototype, "seed", void 0);
|
|
391
373
|
cargo_row = __decorate([
|
|
392
374
|
Struct.type('cargo_row')
|
|
393
375
|
], cargo_row);
|
|
394
376
|
Types.cargo_row = cargo_row;
|
|
377
|
+
let cleanrsvp = class cleanrsvp extends Struct {
|
|
378
|
+
};
|
|
379
|
+
__decorate([
|
|
380
|
+
Struct.field(UInt64)
|
|
381
|
+
], cleanrsvp.prototype, "epoch", void 0);
|
|
382
|
+
__decorate([
|
|
383
|
+
Struct.field(UInt64)
|
|
384
|
+
], cleanrsvp.prototype, "max_rows", void 0);
|
|
385
|
+
cleanrsvp = __decorate([
|
|
386
|
+
Struct.type('cleanrsvp')
|
|
387
|
+
], cleanrsvp);
|
|
388
|
+
Types.cleanrsvp = cleanrsvp;
|
|
395
389
|
let cleartable = class cleartable extends Struct {
|
|
396
390
|
};
|
|
397
391
|
__decorate([
|
|
@@ -416,6 +410,174 @@ var Types;
|
|
|
416
410
|
Struct.type('commit')
|
|
417
411
|
], commit);
|
|
418
412
|
Types.commit = commit;
|
|
413
|
+
let movement_stats = class movement_stats extends Struct {
|
|
414
|
+
};
|
|
415
|
+
__decorate([
|
|
416
|
+
Struct.field(UInt32)
|
|
417
|
+
], movement_stats.prototype, "thrust", void 0);
|
|
418
|
+
__decorate([
|
|
419
|
+
Struct.field(UInt16)
|
|
420
|
+
], movement_stats.prototype, "drain", void 0);
|
|
421
|
+
movement_stats = __decorate([
|
|
422
|
+
Struct.type('movement_stats')
|
|
423
|
+
], movement_stats);
|
|
424
|
+
Types.movement_stats = movement_stats;
|
|
425
|
+
let energy_stats = class energy_stats extends Struct {
|
|
426
|
+
};
|
|
427
|
+
__decorate([
|
|
428
|
+
Struct.field(UInt16)
|
|
429
|
+
], energy_stats.prototype, "capacity", void 0);
|
|
430
|
+
__decorate([
|
|
431
|
+
Struct.field(UInt16)
|
|
432
|
+
], energy_stats.prototype, "recharge", void 0);
|
|
433
|
+
energy_stats = __decorate([
|
|
434
|
+
Struct.type('energy_stats')
|
|
435
|
+
], energy_stats);
|
|
436
|
+
Types.energy_stats = energy_stats;
|
|
437
|
+
let loader_stats = class loader_stats extends Struct {
|
|
438
|
+
};
|
|
439
|
+
__decorate([
|
|
440
|
+
Struct.field(UInt32)
|
|
441
|
+
], loader_stats.prototype, "mass", void 0);
|
|
442
|
+
__decorate([
|
|
443
|
+
Struct.field(UInt16)
|
|
444
|
+
], loader_stats.prototype, "thrust", void 0);
|
|
445
|
+
__decorate([
|
|
446
|
+
Struct.field(UInt8)
|
|
447
|
+
], loader_stats.prototype, "quantity", void 0);
|
|
448
|
+
loader_stats = __decorate([
|
|
449
|
+
Struct.type('loader_stats')
|
|
450
|
+
], loader_stats);
|
|
451
|
+
Types.loader_stats = loader_stats;
|
|
452
|
+
let trade_stats = class trade_stats extends Struct {
|
|
453
|
+
};
|
|
454
|
+
__decorate([
|
|
455
|
+
Struct.field(UInt16)
|
|
456
|
+
], trade_stats.prototype, "margin", void 0);
|
|
457
|
+
trade_stats = __decorate([
|
|
458
|
+
Struct.type('trade_stats')
|
|
459
|
+
], trade_stats);
|
|
460
|
+
Types.trade_stats = trade_stats;
|
|
461
|
+
let extractor_stats = class extractor_stats extends Struct {
|
|
462
|
+
};
|
|
463
|
+
__decorate([
|
|
464
|
+
Struct.field(UInt16)
|
|
465
|
+
], extractor_stats.prototype, "rate", void 0);
|
|
466
|
+
__decorate([
|
|
467
|
+
Struct.field(UInt16)
|
|
468
|
+
], extractor_stats.prototype, "drain", void 0);
|
|
469
|
+
__decorate([
|
|
470
|
+
Struct.field(UInt16)
|
|
471
|
+
], extractor_stats.prototype, "efficiency", void 0);
|
|
472
|
+
__decorate([
|
|
473
|
+
Struct.field(UInt16)
|
|
474
|
+
], extractor_stats.prototype, "depth", void 0);
|
|
475
|
+
__decorate([
|
|
476
|
+
Struct.field(UInt16)
|
|
477
|
+
], extractor_stats.prototype, "drill", void 0);
|
|
478
|
+
extractor_stats = __decorate([
|
|
479
|
+
Struct.type('extractor_stats')
|
|
480
|
+
], extractor_stats);
|
|
481
|
+
Types.extractor_stats = extractor_stats;
|
|
482
|
+
let warp_stats = class warp_stats extends Struct {
|
|
483
|
+
};
|
|
484
|
+
__decorate([
|
|
485
|
+
Struct.field(UInt32)
|
|
486
|
+
], warp_stats.prototype, "range", void 0);
|
|
487
|
+
warp_stats = __decorate([
|
|
488
|
+
Struct.type('warp_stats')
|
|
489
|
+
], warp_stats);
|
|
490
|
+
Types.warp_stats = warp_stats;
|
|
491
|
+
let entity_defaults = class entity_defaults extends Struct {
|
|
492
|
+
};
|
|
493
|
+
__decorate([
|
|
494
|
+
Struct.field(UInt32)
|
|
495
|
+
], entity_defaults.prototype, "ship_hullmass", void 0);
|
|
496
|
+
__decorate([
|
|
497
|
+
Struct.field(UInt32)
|
|
498
|
+
], entity_defaults.prototype, "ship_capacity", void 0);
|
|
499
|
+
__decorate([
|
|
500
|
+
Struct.field(UInt16)
|
|
501
|
+
], entity_defaults.prototype, "ship_energy", void 0);
|
|
502
|
+
__decorate([
|
|
503
|
+
Struct.field(UInt16)
|
|
504
|
+
], entity_defaults.prototype, "ship_z", void 0);
|
|
505
|
+
__decorate([
|
|
506
|
+
Struct.field(movement_stats)
|
|
507
|
+
], entity_defaults.prototype, "ship_engines", void 0);
|
|
508
|
+
__decorate([
|
|
509
|
+
Struct.field(energy_stats)
|
|
510
|
+
], entity_defaults.prototype, "ship_generator", void 0);
|
|
511
|
+
__decorate([
|
|
512
|
+
Struct.field(loader_stats)
|
|
513
|
+
], entity_defaults.prototype, "ship_loaders", void 0);
|
|
514
|
+
__decorate([
|
|
515
|
+
Struct.field(trade_stats)
|
|
516
|
+
], entity_defaults.prototype, "ship_trade", void 0);
|
|
517
|
+
__decorate([
|
|
518
|
+
Struct.field(extractor_stats)
|
|
519
|
+
], entity_defaults.prototype, "ship_extractor", void 0);
|
|
520
|
+
__decorate([
|
|
521
|
+
Struct.field(UInt32)
|
|
522
|
+
], entity_defaults.prototype, "warehouse_capacity", void 0);
|
|
523
|
+
__decorate([
|
|
524
|
+
Struct.field(UInt16)
|
|
525
|
+
], entity_defaults.prototype, "warehouse_z", void 0);
|
|
526
|
+
__decorate([
|
|
527
|
+
Struct.field(loader_stats)
|
|
528
|
+
], entity_defaults.prototype, "warehouse_loaders", void 0);
|
|
529
|
+
__decorate([
|
|
530
|
+
Struct.field(UInt32)
|
|
531
|
+
], entity_defaults.prototype, "container_hullmass", void 0);
|
|
532
|
+
__decorate([
|
|
533
|
+
Struct.field(UInt32)
|
|
534
|
+
], entity_defaults.prototype, "container_capacity", void 0);
|
|
535
|
+
__decorate([
|
|
536
|
+
Struct.field(UInt16)
|
|
537
|
+
], entity_defaults.prototype, "container_z", void 0);
|
|
538
|
+
entity_defaults = __decorate([
|
|
539
|
+
Struct.type('entity_defaults')
|
|
540
|
+
], entity_defaults);
|
|
541
|
+
Types.entity_defaults = entity_defaults;
|
|
542
|
+
let item_def = class item_def extends Struct {
|
|
543
|
+
};
|
|
544
|
+
__decorate([
|
|
545
|
+
Struct.field(UInt16)
|
|
546
|
+
], item_def.prototype, "id", void 0);
|
|
547
|
+
__decorate([
|
|
548
|
+
Struct.field(UInt32)
|
|
549
|
+
], item_def.prototype, "base_price", void 0);
|
|
550
|
+
__decorate([
|
|
551
|
+
Struct.field(UInt32)
|
|
552
|
+
], item_def.prototype, "mass", void 0);
|
|
553
|
+
item_def = __decorate([
|
|
554
|
+
Struct.type('item_def')
|
|
555
|
+
], item_def);
|
|
556
|
+
Types.item_def = item_def;
|
|
557
|
+
let game_config = class game_config extends Struct {
|
|
558
|
+
};
|
|
559
|
+
__decorate([
|
|
560
|
+
Struct.field(UInt32)
|
|
561
|
+
], game_config.prototype, "version", void 0);
|
|
562
|
+
__decorate([
|
|
563
|
+
Struct.field(entity_defaults)
|
|
564
|
+
], game_config.prototype, "defaults", void 0);
|
|
565
|
+
__decorate([
|
|
566
|
+
Struct.field(item_def, { array: true })
|
|
567
|
+
], game_config.prototype, "items", void 0);
|
|
568
|
+
game_config = __decorate([
|
|
569
|
+
Struct.type('game_config')
|
|
570
|
+
], game_config);
|
|
571
|
+
Types.game_config = game_config;
|
|
572
|
+
let configlog = class configlog extends Struct {
|
|
573
|
+
};
|
|
574
|
+
__decorate([
|
|
575
|
+
Struct.field(game_config)
|
|
576
|
+
], configlog.prototype, "config", void 0);
|
|
577
|
+
configlog = __decorate([
|
|
578
|
+
Struct.type('configlog')
|
|
579
|
+
], configlog);
|
|
580
|
+
Types.configlog = configlog;
|
|
419
581
|
let coordinates = class coordinates extends Struct {
|
|
420
582
|
};
|
|
421
583
|
__decorate([
|
|
@@ -515,18 +677,6 @@ var Types;
|
|
|
515
677
|
Struct.type('enable')
|
|
516
678
|
], enable);
|
|
517
679
|
Types.enable = enable;
|
|
518
|
-
let energy_stats = class energy_stats extends Struct {
|
|
519
|
-
};
|
|
520
|
-
__decorate([
|
|
521
|
-
Struct.field(UInt16)
|
|
522
|
-
], energy_stats.prototype, "capacity", void 0);
|
|
523
|
-
__decorate([
|
|
524
|
-
Struct.field(UInt16)
|
|
525
|
-
], energy_stats.prototype, "recharge", void 0);
|
|
526
|
-
energy_stats = __decorate([
|
|
527
|
-
Struct.type('energy_stats')
|
|
528
|
-
], energy_stats);
|
|
529
|
-
Types.energy_stats = energy_stats;
|
|
530
680
|
let entity_current_state = class entity_current_state extends Struct {
|
|
531
681
|
};
|
|
532
682
|
__decorate([
|
|
@@ -539,48 +689,6 @@ var Types;
|
|
|
539
689
|
Struct.type('entity_current_state')
|
|
540
690
|
], entity_current_state);
|
|
541
691
|
Types.entity_current_state = entity_current_state;
|
|
542
|
-
let loader_stats = class loader_stats extends Struct {
|
|
543
|
-
};
|
|
544
|
-
__decorate([
|
|
545
|
-
Struct.field(UInt32)
|
|
546
|
-
], loader_stats.prototype, "mass", void 0);
|
|
547
|
-
__decorate([
|
|
548
|
-
Struct.field(UInt16)
|
|
549
|
-
], loader_stats.prototype, "thrust", void 0);
|
|
550
|
-
__decorate([
|
|
551
|
-
Struct.field(UInt8)
|
|
552
|
-
], loader_stats.prototype, "quantity", void 0);
|
|
553
|
-
loader_stats = __decorate([
|
|
554
|
-
Struct.type('loader_stats')
|
|
555
|
-
], loader_stats);
|
|
556
|
-
Types.loader_stats = loader_stats;
|
|
557
|
-
let movement_stats = class movement_stats extends Struct {
|
|
558
|
-
};
|
|
559
|
-
__decorate([
|
|
560
|
-
Struct.field(UInt32)
|
|
561
|
-
], movement_stats.prototype, "thrust", void 0);
|
|
562
|
-
__decorate([
|
|
563
|
-
Struct.field(UInt16)
|
|
564
|
-
], movement_stats.prototype, "drain", void 0);
|
|
565
|
-
movement_stats = __decorate([
|
|
566
|
-
Struct.type('movement_stats')
|
|
567
|
-
], movement_stats);
|
|
568
|
-
Types.movement_stats = movement_stats;
|
|
569
|
-
let extractor_stats = class extractor_stats extends Struct {
|
|
570
|
-
};
|
|
571
|
-
__decorate([
|
|
572
|
-
Struct.field(UInt16)
|
|
573
|
-
], extractor_stats.prototype, "rate", void 0);
|
|
574
|
-
__decorate([
|
|
575
|
-
Struct.field(UInt16)
|
|
576
|
-
], extractor_stats.prototype, "drain", void 0);
|
|
577
|
-
__decorate([
|
|
578
|
-
Struct.field(UInt16)
|
|
579
|
-
], extractor_stats.prototype, "efficiency", void 0);
|
|
580
|
-
extractor_stats = __decorate([
|
|
581
|
-
Struct.type('extractor_stats')
|
|
582
|
-
], extractor_stats);
|
|
583
|
-
Types.extractor_stats = extractor_stats;
|
|
584
692
|
let entity_info = class entity_info extends Struct {
|
|
585
693
|
};
|
|
586
694
|
__decorate([
|
|
@@ -625,6 +733,9 @@ var Types;
|
|
|
625
733
|
__decorate([
|
|
626
734
|
Struct.field(extractor_stats, { optional: true })
|
|
627
735
|
], entity_info.prototype, "extractor", void 0);
|
|
736
|
+
__decorate([
|
|
737
|
+
Struct.field(warp_stats, { optional: true })
|
|
738
|
+
], entity_info.prototype, "warp", void 0);
|
|
628
739
|
__decorate([
|
|
629
740
|
Struct.field('bool')
|
|
630
741
|
], entity_info.prototype, "is_idle", void 0);
|
|
@@ -712,13 +823,28 @@ var Types;
|
|
|
712
823
|
Types.entitygroup_row = entitygroup_row;
|
|
713
824
|
let extract = class extract extends Struct {
|
|
714
825
|
};
|
|
826
|
+
__decorate([
|
|
827
|
+
Struct.field(Name)
|
|
828
|
+
], extract.prototype, "entity_type", void 0);
|
|
715
829
|
__decorate([
|
|
716
830
|
Struct.field(UInt64)
|
|
717
|
-
], extract.prototype, "
|
|
831
|
+
], extract.prototype, "id", void 0);
|
|
832
|
+
__decorate([
|
|
833
|
+
Struct.field(UInt16)
|
|
834
|
+
], extract.prototype, "stratum", void 0);
|
|
835
|
+
__decorate([
|
|
836
|
+
Struct.field(UInt32)
|
|
837
|
+
], extract.prototype, "quantity", void 0);
|
|
718
838
|
extract = __decorate([
|
|
719
839
|
Struct.type('extract')
|
|
720
840
|
], extract);
|
|
721
841
|
Types.extract = extract;
|
|
842
|
+
let getconfig = class getconfig extends Struct {
|
|
843
|
+
};
|
|
844
|
+
getconfig = __decorate([
|
|
845
|
+
Struct.type('getconfig')
|
|
846
|
+
], getconfig);
|
|
847
|
+
Types.getconfig = getconfig;
|
|
722
848
|
let getentities = class getentities extends Struct {
|
|
723
849
|
};
|
|
724
850
|
__decorate([
|
|
@@ -743,12 +869,12 @@ var Types;
|
|
|
743
869
|
Struct.type('getentity')
|
|
744
870
|
], getentity);
|
|
745
871
|
Types.getentity = getentity;
|
|
746
|
-
let
|
|
872
|
+
let getitems = class getitems extends Struct {
|
|
747
873
|
};
|
|
748
|
-
|
|
749
|
-
Struct.type('
|
|
750
|
-
],
|
|
751
|
-
Types.
|
|
874
|
+
getitems = __decorate([
|
|
875
|
+
Struct.type('getitems')
|
|
876
|
+
], getitems);
|
|
877
|
+
Types.getitems = getitems;
|
|
752
878
|
let getlocation = class getlocation extends Struct {
|
|
753
879
|
};
|
|
754
880
|
__decorate([
|
|
@@ -815,30 +941,6 @@ var Types;
|
|
|
815
941
|
Struct.type('getsummaries')
|
|
816
942
|
], getsummaries);
|
|
817
943
|
Types.getsummaries = getsummaries;
|
|
818
|
-
let good = class good extends Struct {
|
|
819
|
-
};
|
|
820
|
-
__decorate([
|
|
821
|
-
Struct.field(UInt16)
|
|
822
|
-
], good.prototype, "id", void 0);
|
|
823
|
-
__decorate([
|
|
824
|
-
Struct.field(UInt32)
|
|
825
|
-
], good.prototype, "base_price", void 0);
|
|
826
|
-
__decorate([
|
|
827
|
-
Struct.field(UInt32)
|
|
828
|
-
], good.prototype, "mass", void 0);
|
|
829
|
-
good = __decorate([
|
|
830
|
-
Struct.type('good')
|
|
831
|
-
], good);
|
|
832
|
-
Types.good = good;
|
|
833
|
-
let goods_info = class goods_info extends Struct {
|
|
834
|
-
};
|
|
835
|
-
__decorate([
|
|
836
|
-
Struct.field(good, { array: true })
|
|
837
|
-
], goods_info.prototype, "goods", void 0);
|
|
838
|
-
goods_info = __decorate([
|
|
839
|
-
Struct.type('goods_info')
|
|
840
|
-
], goods_info);
|
|
841
|
-
Types.goods_info = goods_info;
|
|
842
944
|
let grouptravel = class grouptravel extends Struct {
|
|
843
945
|
};
|
|
844
946
|
__decorate([
|
|
@@ -884,6 +986,15 @@ var Types;
|
|
|
884
986
|
Struct.type('init')
|
|
885
987
|
], init);
|
|
886
988
|
Types.init = init;
|
|
989
|
+
let items_info = class items_info extends Struct {
|
|
990
|
+
};
|
|
991
|
+
__decorate([
|
|
992
|
+
Struct.field(item_def, { array: true })
|
|
993
|
+
], items_info.prototype, "items", void 0);
|
|
994
|
+
items_info = __decorate([
|
|
995
|
+
Struct.type('items_info')
|
|
996
|
+
], items_info);
|
|
997
|
+
Types.items_info = items_info;
|
|
887
998
|
let join = class join extends Struct {
|
|
888
999
|
};
|
|
889
1000
|
__decorate([
|
|
@@ -941,27 +1052,27 @@ var Types;
|
|
|
941
1052
|
Struct.type('location_derived')
|
|
942
1053
|
], location_derived);
|
|
943
1054
|
Types.location_derived = location_derived;
|
|
944
|
-
let
|
|
1055
|
+
let location_item = class location_item extends Struct {
|
|
945
1056
|
};
|
|
946
1057
|
__decorate([
|
|
947
1058
|
Struct.field(UInt16)
|
|
948
|
-
],
|
|
1059
|
+
], location_item.prototype, "id", void 0);
|
|
949
1060
|
__decorate([
|
|
950
1061
|
Struct.field(UInt32)
|
|
951
|
-
],
|
|
1062
|
+
], location_item.prototype, "price", void 0);
|
|
952
1063
|
__decorate([
|
|
953
1064
|
Struct.field(UInt16)
|
|
954
|
-
],
|
|
1065
|
+
], location_item.prototype, "supply", void 0);
|
|
955
1066
|
__decorate([
|
|
956
1067
|
Struct.field(UInt32)
|
|
957
|
-
],
|
|
1068
|
+
], location_item.prototype, "rarity_multiplier", void 0);
|
|
958
1069
|
__decorate([
|
|
959
1070
|
Struct.field(UInt32)
|
|
960
|
-
],
|
|
961
|
-
|
|
962
|
-
Struct.type('
|
|
963
|
-
],
|
|
964
|
-
Types.
|
|
1071
|
+
], location_item.prototype, "location_multiplier", void 0);
|
|
1072
|
+
location_item = __decorate([
|
|
1073
|
+
Struct.type('location_item')
|
|
1074
|
+
], location_item);
|
|
1075
|
+
Types.location_item = location_item;
|
|
965
1076
|
let location_info = class location_info extends Struct {
|
|
966
1077
|
};
|
|
967
1078
|
__decorate([
|
|
@@ -971,8 +1082,8 @@ var Types;
|
|
|
971
1082
|
Struct.field('bool')
|
|
972
1083
|
], location_info.prototype, "is_system", void 0);
|
|
973
1084
|
__decorate([
|
|
974
|
-
Struct.field(
|
|
975
|
-
], location_info.prototype, "
|
|
1085
|
+
Struct.field(location_item, { array: true })
|
|
1086
|
+
], location_info.prototype, "items", void 0);
|
|
976
1087
|
location_info = __decorate([
|
|
977
1088
|
Struct.type('location_info')
|
|
978
1089
|
], location_info);
|
|
@@ -1069,21 +1180,6 @@ var Types;
|
|
|
1069
1180
|
__decorate([
|
|
1070
1181
|
Struct.field(UInt16, { optional: true })
|
|
1071
1182
|
], task_event.prototype, "new_energy", void 0);
|
|
1072
|
-
__decorate([
|
|
1073
|
-
Struct.field(coordinates, { optional: true })
|
|
1074
|
-
], task_event.prototype, "new_coordinates", void 0);
|
|
1075
|
-
__decorate([
|
|
1076
|
-
Struct.field(Int64)
|
|
1077
|
-
], task_event.prototype, "cargomass_delta", void 0);
|
|
1078
|
-
__decorate([
|
|
1079
|
-
Struct.field(cargo_item, { array: true })
|
|
1080
|
-
], task_event.prototype, "cargo_added", void 0);
|
|
1081
|
-
__decorate([
|
|
1082
|
-
Struct.field(cargo_item, { array: true })
|
|
1083
|
-
], task_event.prototype, "cargo_removed", void 0);
|
|
1084
|
-
__decorate([
|
|
1085
|
-
Struct.field(Int64, { optional: true })
|
|
1086
|
-
], task_event.prototype, "credits", void 0);
|
|
1087
1183
|
task_event = __decorate([
|
|
1088
1184
|
Struct.type('task_event')
|
|
1089
1185
|
], task_event);
|
|
@@ -1193,6 +1289,18 @@ var Types;
|
|
|
1193
1289
|
Struct.type('recharge')
|
|
1194
1290
|
], recharge);
|
|
1195
1291
|
Types.recharge = recharge;
|
|
1292
|
+
let reserve_row = class reserve_row extends Struct {
|
|
1293
|
+
};
|
|
1294
|
+
__decorate([
|
|
1295
|
+
Struct.field(UInt64)
|
|
1296
|
+
], reserve_row.prototype, "id", void 0);
|
|
1297
|
+
__decorate([
|
|
1298
|
+
Struct.field(UInt32)
|
|
1299
|
+
], reserve_row.prototype, "remaining", void 0);
|
|
1300
|
+
reserve_row = __decorate([
|
|
1301
|
+
Struct.type('reserve_row')
|
|
1302
|
+
], reserve_row);
|
|
1303
|
+
Types.reserve_row = reserve_row;
|
|
1196
1304
|
let resolve = class resolve extends Struct {
|
|
1197
1305
|
};
|
|
1198
1306
|
__decorate([
|
|
@@ -1241,24 +1349,24 @@ var Types;
|
|
|
1241
1349
|
Struct.type('salt')
|
|
1242
1350
|
], salt);
|
|
1243
1351
|
Types.salt = salt;
|
|
1244
|
-
let
|
|
1352
|
+
let sellitems = class sellitems extends Struct {
|
|
1245
1353
|
};
|
|
1246
1354
|
__decorate([
|
|
1247
1355
|
Struct.field(Name)
|
|
1248
|
-
],
|
|
1356
|
+
], sellitems.prototype, "entity_type", void 0);
|
|
1249
1357
|
__decorate([
|
|
1250
1358
|
Struct.field(UInt64)
|
|
1251
|
-
],
|
|
1359
|
+
], sellitems.prototype, "id", void 0);
|
|
1252
1360
|
__decorate([
|
|
1253
1361
|
Struct.field(UInt16)
|
|
1254
|
-
],
|
|
1362
|
+
], sellitems.prototype, "item_id", void 0);
|
|
1255
1363
|
__decorate([
|
|
1256
1364
|
Struct.field(UInt32)
|
|
1257
|
-
],
|
|
1258
|
-
|
|
1259
|
-
Struct.type('
|
|
1260
|
-
],
|
|
1261
|
-
Types.
|
|
1365
|
+
], sellitems.prototype, "quantity", void 0);
|
|
1366
|
+
sellitems = __decorate([
|
|
1367
|
+
Struct.type('sellitems')
|
|
1368
|
+
], sellitems);
|
|
1369
|
+
Types.sellitems = sellitems;
|
|
1262
1370
|
let sequence_row = class sequence_row extends Struct {
|
|
1263
1371
|
};
|
|
1264
1372
|
__decorate([
|
|
@@ -1271,15 +1379,6 @@ var Types;
|
|
|
1271
1379
|
Struct.type('sequence_row')
|
|
1272
1380
|
], sequence_row);
|
|
1273
1381
|
Types.sequence_row = sequence_row;
|
|
1274
|
-
let trade_stats = class trade_stats extends Struct {
|
|
1275
|
-
};
|
|
1276
|
-
__decorate([
|
|
1277
|
-
Struct.field(UInt16)
|
|
1278
|
-
], trade_stats.prototype, "margin", void 0);
|
|
1279
|
-
trade_stats = __decorate([
|
|
1280
|
-
Struct.type('trade_stats')
|
|
1281
|
-
], trade_stats);
|
|
1282
|
-
Types.trade_stats = trade_stats;
|
|
1283
1382
|
let ship_row = class ship_row extends Struct {
|
|
1284
1383
|
};
|
|
1285
1384
|
__decorate([
|
|
@@ -1321,6 +1420,9 @@ var Types;
|
|
|
1321
1420
|
__decorate([
|
|
1322
1421
|
Struct.field(extractor_stats, { optional: true })
|
|
1323
1422
|
], ship_row.prototype, "extractor", void 0);
|
|
1423
|
+
__decorate([
|
|
1424
|
+
Struct.field(warp_stats, { optional: true })
|
|
1425
|
+
], ship_row.prototype, "warp", void 0);
|
|
1324
1426
|
__decorate([
|
|
1325
1427
|
Struct.field(schedule, { optional: true })
|
|
1326
1428
|
], ship_row.prototype, "schedule", void 0);
|
|
@@ -1380,7 +1482,7 @@ var Types;
|
|
|
1380
1482
|
], supply_row.prototype, "epoch", void 0);
|
|
1381
1483
|
__decorate([
|
|
1382
1484
|
Struct.field(UInt16)
|
|
1383
|
-
], supply_row.prototype, "
|
|
1485
|
+
], supply_row.prototype, "item_id", void 0);
|
|
1384
1486
|
__decorate([
|
|
1385
1487
|
Struct.field(UInt16)
|
|
1386
1488
|
], supply_row.prototype, "supply", void 0);
|
|
@@ -1425,7 +1527,7 @@ var Types;
|
|
|
1425
1527
|
], transfer.prototype, "dest_id", void 0);
|
|
1426
1528
|
__decorate([
|
|
1427
1529
|
Struct.field(UInt16)
|
|
1428
|
-
], transfer.prototype, "
|
|
1530
|
+
], transfer.prototype, "item_id", void 0);
|
|
1429
1531
|
__decorate([
|
|
1430
1532
|
Struct.field(UInt32)
|
|
1431
1533
|
], transfer.prototype, "quantity", void 0);
|
|
@@ -1465,6 +1567,9 @@ var Types;
|
|
|
1465
1567
|
__decorate([
|
|
1466
1568
|
Struct.field(starter_info)
|
|
1467
1569
|
], types_row.prototype, "starter_info_type", void 0);
|
|
1570
|
+
__decorate([
|
|
1571
|
+
Struct.field(game_config)
|
|
1572
|
+
], types_row.prototype, "game_config_type", void 0);
|
|
1468
1573
|
types_row = __decorate([
|
|
1469
1574
|
Struct.type('types_row')
|
|
1470
1575
|
], types_row);
|
|
@@ -1542,6 +1647,7 @@ const TableMap = {
|
|
|
1542
1647
|
entitygroup: Types.entitygroup_row,
|
|
1543
1648
|
location: Types.location_row,
|
|
1544
1649
|
player: Types.player_row,
|
|
1650
|
+
reserve: Types.reserve_row,
|
|
1545
1651
|
sequence: Types.sequence_row,
|
|
1546
1652
|
ship: Types.ship_row,
|
|
1547
1653
|
state: Types.state_row,
|
|
@@ -1588,11 +1694,11 @@ const ERROR_SYSTEM_DISABLED = 'This game is currently disabled.';
|
|
|
1588
1694
|
const ERROR_SYSTEM_NOT_INITIALIZED = 'This game has not been initialized.';
|
|
1589
1695
|
const GAME_NOT_FOUND = 'Cannot find game for given account name.';
|
|
1590
1696
|
const GAME_SEED_NOT_SET = 'This game has not initialized an epoch seed value.';
|
|
1591
|
-
const
|
|
1592
|
-
const
|
|
1697
|
+
const ITEM_DOES_NOT_EXIST = 'Item does not exist.';
|
|
1698
|
+
const ITEM_NOT_AVAILABLE_AT_LOCATION = 'Item is not tradeable at ship location.';
|
|
1593
1699
|
const INSUFFICIENT_BALANCE = 'Insufficient balance.';
|
|
1594
|
-
const
|
|
1595
|
-
const
|
|
1700
|
+
const INSUFFICIENT_ITEM_QUANTITY = 'Insufficient quantity in cargo.';
|
|
1701
|
+
const INSUFFICIENT_ITEM_SUPPLY = 'Insufficient supply of item at location.';
|
|
1596
1702
|
const INVALID_AMOUNT = 'Invalid amount.';
|
|
1597
1703
|
const REQUIRES_MORE_THAN_ONE = 'A value greater than one is required.';
|
|
1598
1704
|
const REQUIRES_POSITIVE_VALUE = 'Value must be greater than zero.';
|
|
@@ -1653,6 +1759,7 @@ var TaskType;
|
|
|
1653
1759
|
TaskType[TaskType["LOAD"] = 3] = "LOAD";
|
|
1654
1760
|
TaskType[TaskType["UNLOAD"] = 4] = "UNLOAD";
|
|
1655
1761
|
TaskType[TaskType["EXTRACT"] = 5] = "EXTRACT";
|
|
1762
|
+
TaskType[TaskType["WARP"] = 6] = "WARP";
|
|
1656
1763
|
})(TaskType || (TaskType = {}));
|
|
1657
1764
|
var LocationType;
|
|
1658
1765
|
(function (LocationType) {
|
|
@@ -1692,43 +1799,52 @@ function coordsToLocationId(coords) {
|
|
|
1692
1799
|
const id = (x << BigInt(32)) | y;
|
|
1693
1800
|
return UInt64.from(id);
|
|
1694
1801
|
}
|
|
1695
|
-
let
|
|
1802
|
+
let Item = class Item extends Struct {
|
|
1696
1803
|
};
|
|
1697
1804
|
__decorate([
|
|
1698
1805
|
Struct.field(UInt16)
|
|
1699
|
-
],
|
|
1806
|
+
], Item.prototype, "id", void 0);
|
|
1700
1807
|
__decorate([
|
|
1701
1808
|
Struct.field('string')
|
|
1702
|
-
],
|
|
1809
|
+
], Item.prototype, "name", void 0);
|
|
1703
1810
|
__decorate([
|
|
1704
1811
|
Struct.field('string')
|
|
1705
|
-
],
|
|
1812
|
+
], Item.prototype, "description", void 0);
|
|
1706
1813
|
__decorate([
|
|
1707
1814
|
Struct.field(UInt32)
|
|
1708
|
-
],
|
|
1815
|
+
], Item.prototype, "base_price", void 0);
|
|
1709
1816
|
__decorate([
|
|
1710
1817
|
Struct.field(UInt32)
|
|
1711
|
-
],
|
|
1712
|
-
|
|
1713
|
-
Struct.
|
|
1714
|
-
],
|
|
1715
|
-
|
|
1818
|
+
], Item.prototype, "mass", void 0);
|
|
1819
|
+
__decorate([
|
|
1820
|
+
Struct.field('string')
|
|
1821
|
+
], Item.prototype, "category", void 0);
|
|
1822
|
+
__decorate([
|
|
1823
|
+
Struct.field('string')
|
|
1824
|
+
], Item.prototype, "rarity", void 0);
|
|
1825
|
+
__decorate([
|
|
1826
|
+
Struct.field('string')
|
|
1827
|
+
], Item.prototype, "color", void 0);
|
|
1828
|
+
Item = __decorate([
|
|
1829
|
+
Struct.type('item')
|
|
1830
|
+
], Item);
|
|
1831
|
+
let ItemPrice = class ItemPrice extends Struct {
|
|
1716
1832
|
};
|
|
1717
1833
|
__decorate([
|
|
1718
1834
|
Struct.field(UInt16)
|
|
1719
|
-
],
|
|
1835
|
+
], ItemPrice.prototype, "id", void 0);
|
|
1720
1836
|
__decorate([
|
|
1721
|
-
Struct.field(
|
|
1722
|
-
],
|
|
1837
|
+
Struct.field(Item)
|
|
1838
|
+
], ItemPrice.prototype, "item", void 0);
|
|
1723
1839
|
__decorate([
|
|
1724
1840
|
Struct.field(UInt32)
|
|
1725
|
-
],
|
|
1841
|
+
], ItemPrice.prototype, "price", void 0);
|
|
1726
1842
|
__decorate([
|
|
1727
1843
|
Struct.field(UInt16)
|
|
1728
|
-
],
|
|
1729
|
-
|
|
1730
|
-
Struct.type('
|
|
1731
|
-
],
|
|
1844
|
+
], ItemPrice.prototype, "supply", void 0);
|
|
1845
|
+
ItemPrice = __decorate([
|
|
1846
|
+
Struct.type('ItemPrice')
|
|
1847
|
+
], ItemPrice);
|
|
1732
1848
|
|
|
1733
1849
|
function getCurrentEpoch(game) {
|
|
1734
1850
|
const current = new Date().getTime();
|
|
@@ -2960,7 +3076,7 @@ function getLocationType(gameSeed, coordinates) {
|
|
|
2960
3076
|
return LocationType.NEBULA;
|
|
2961
3077
|
}
|
|
2962
3078
|
function isExtractableLocation(locationType) {
|
|
2963
|
-
return locationType
|
|
3079
|
+
return locationType !== LocationType.EMPTY;
|
|
2964
3080
|
}
|
|
2965
3081
|
function getSystemName(gameSeed, location) {
|
|
2966
3082
|
const seed = Checksum256.from(gameSeed);
|
|
@@ -3005,7 +3121,9 @@ function deriveLocationStatic(gameSeed, coordinates) {
|
|
|
3005
3121
|
else {
|
|
3006
3122
|
loc.type = UInt8.from(LocationType.NEBULA);
|
|
3007
3123
|
}
|
|
3008
|
-
loc.subtype = UInt8.from(
|
|
3124
|
+
loc.subtype = UInt8.from(Number(loc.type) === LocationType.PLANET
|
|
3125
|
+
? hashResult.array[2] % 6
|
|
3126
|
+
: hashResult.array[2]);
|
|
3009
3127
|
loc.seed0 = UInt8.from(hashResult.array[3]);
|
|
3010
3128
|
loc.seed1 = UInt8.from(hashResult.array[4]);
|
|
3011
3129
|
return loc;
|
|
@@ -3027,35 +3145,6 @@ function deriveLocation(gameSeed, epochSeed, coordinates) {
|
|
|
3027
3145
|
epoch_props: deriveLocationEpoch(epochSeed, coordinates),
|
|
3028
3146
|
});
|
|
3029
3147
|
}
|
|
3030
|
-
function deriveLocationMixture(location, epochSeed) {
|
|
3031
|
-
const locationType = location.static_props.type.toNumber();
|
|
3032
|
-
if (locationType === LocationType.NEBULA) {
|
|
3033
|
-
return Types.mixture_info.from({
|
|
3034
|
-
components: [{ good_id: 1, purity: PRECISION }],
|
|
3035
|
-
});
|
|
3036
|
-
}
|
|
3037
|
-
if (locationType === LocationType.ASTEROID) {
|
|
3038
|
-
const seed = Checksum256.from(epochSeed);
|
|
3039
|
-
const coords = location.static_props.coords;
|
|
3040
|
-
const str = `mixture-${coords.x}-${coords.y}`;
|
|
3041
|
-
const hashResult = hash512(seed, str);
|
|
3042
|
-
const ironPrimary = location.static_props.subtype.toNumber() % 2 === 0;
|
|
3043
|
-
const purityRange = 0.3;
|
|
3044
|
-
const purityRoll = hashResult.array[0] / 255;
|
|
3045
|
-
const primaryPurity = 0.5 + purityRoll * purityRange;
|
|
3046
|
-
const primaryId = ironPrimary ? 26 : 29;
|
|
3047
|
-
const secondaryId = ironPrimary ? 29 : 26;
|
|
3048
|
-
const primaryAmt = Math.floor(primaryPurity * PRECISION);
|
|
3049
|
-
const secondaryAmt = PRECISION - primaryAmt;
|
|
3050
|
-
return Types.mixture_info.from({
|
|
3051
|
-
components: [
|
|
3052
|
-
{ good_id: primaryId, purity: primaryAmt },
|
|
3053
|
-
{ good_id: secondaryId, purity: secondaryAmt },
|
|
3054
|
-
],
|
|
3055
|
-
});
|
|
3056
|
-
}
|
|
3057
|
-
return Types.mixture_info.from({ components: [] });
|
|
3058
|
-
}
|
|
3059
3148
|
|
|
3060
3149
|
class GameState extends Types.state_row {
|
|
3061
3150
|
static from(state, game) {
|
|
@@ -3150,47 +3239,170 @@ class BaseManager {
|
|
|
3150
3239
|
}
|
|
3151
3240
|
}
|
|
3152
3241
|
|
|
3153
|
-
var
|
|
3242
|
+
var itemsData = [
|
|
3154
3243
|
{
|
|
3155
3244
|
id: 1,
|
|
3156
3245
|
name: "Hydrogen",
|
|
3157
|
-
description: "A lightweight
|
|
3246
|
+
description: "A lightweight gas used for fuel cells and propulsion.",
|
|
3158
3247
|
base_price: 50,
|
|
3159
|
-
mass: 15000
|
|
3248
|
+
mass: 15000,
|
|
3249
|
+
category: "gas",
|
|
3250
|
+
rarity: "common",
|
|
3251
|
+
color: "#7EC8E3"
|
|
3252
|
+
},
|
|
3253
|
+
{
|
|
3254
|
+
id: 2,
|
|
3255
|
+
name: "Helium",
|
|
3256
|
+
description: "An inert noble gas used in energy systems.",
|
|
3257
|
+
base_price: 75,
|
|
3258
|
+
mass: 2000,
|
|
3259
|
+
category: "gas",
|
|
3260
|
+
rarity: "uncommon",
|
|
3261
|
+
color: "#F5E6CC"
|
|
3262
|
+
},
|
|
3263
|
+
{
|
|
3264
|
+
id: 6,
|
|
3265
|
+
name: "Carbon",
|
|
3266
|
+
description: "A versatile element for life support and coatings.",
|
|
3267
|
+
base_price: 100,
|
|
3268
|
+
mass: 12000,
|
|
3269
|
+
category: "organic",
|
|
3270
|
+
rarity: "common",
|
|
3271
|
+
color: "#4A4A4A"
|
|
3272
|
+
},
|
|
3273
|
+
{
|
|
3274
|
+
id: 14,
|
|
3275
|
+
name: "Silicon",
|
|
3276
|
+
description: "A semiconductor used in sensors and computing.",
|
|
3277
|
+
base_price: 150,
|
|
3278
|
+
mass: 28000,
|
|
3279
|
+
category: "mineral",
|
|
3280
|
+
rarity: "common",
|
|
3281
|
+
color: "#B8A9C9"
|
|
3282
|
+
},
|
|
3283
|
+
{
|
|
3284
|
+
id: 18,
|
|
3285
|
+
name: "Argon",
|
|
3286
|
+
description: "A noble gas used in industrial and energy applications.",
|
|
3287
|
+
base_price: 60,
|
|
3288
|
+
mass: 8000,
|
|
3289
|
+
category: "gas",
|
|
3290
|
+
rarity: "rare",
|
|
3291
|
+
color: "#9B59B6"
|
|
3292
|
+
},
|
|
3293
|
+
{
|
|
3294
|
+
id: 22,
|
|
3295
|
+
name: "Titanium",
|
|
3296
|
+
description: "A strong, lightweight metal for ship construction.",
|
|
3297
|
+
base_price: 300,
|
|
3298
|
+
mass: 48000,
|
|
3299
|
+
category: "metal",
|
|
3300
|
+
rarity: "rare",
|
|
3301
|
+
color: "#C0C0C0"
|
|
3160
3302
|
},
|
|
3161
3303
|
{
|
|
3162
3304
|
id: 26,
|
|
3163
3305
|
name: "Iron",
|
|
3164
|
-
description: "A versatile metal used in
|
|
3306
|
+
description: "A versatile metal used in hulls and structures.",
|
|
3165
3307
|
base_price: 125,
|
|
3166
|
-
mass: 40000
|
|
3308
|
+
mass: 40000,
|
|
3309
|
+
category: "metal",
|
|
3310
|
+
rarity: "common",
|
|
3311
|
+
color: "#B7410E"
|
|
3167
3312
|
},
|
|
3168
3313
|
{
|
|
3169
3314
|
id: 29,
|
|
3170
3315
|
name: "Copper",
|
|
3171
|
-
description: "A conductive metal
|
|
3316
|
+
description: "A conductive metal for electronics and wiring.",
|
|
3317
|
+
base_price: 200,
|
|
3318
|
+
mass: 60000,
|
|
3319
|
+
category: "metal",
|
|
3320
|
+
rarity: "uncommon",
|
|
3321
|
+
color: "#B87333"
|
|
3322
|
+
},
|
|
3323
|
+
{
|
|
3324
|
+
id: 54,
|
|
3325
|
+
name: "Xenon",
|
|
3326
|
+
description: "A rare noble gas for advanced propulsion systems.",
|
|
3327
|
+
base_price: 175,
|
|
3328
|
+
mass: 20000,
|
|
3329
|
+
category: "gas",
|
|
3330
|
+
rarity: "epic",
|
|
3331
|
+
color: "#5B2C6F"
|
|
3332
|
+
},
|
|
3333
|
+
{
|
|
3334
|
+
id: 74,
|
|
3335
|
+
name: "Tungsten",
|
|
3336
|
+
description: "An extremely dense metal for heavy-duty applications.",
|
|
3337
|
+
base_price: 500,
|
|
3338
|
+
mass: 80000,
|
|
3339
|
+
category: "metal",
|
|
3340
|
+
rarity: "epic",
|
|
3341
|
+
color: "#708090"
|
|
3342
|
+
},
|
|
3343
|
+
{
|
|
3344
|
+
id: 1000,
|
|
3345
|
+
name: "Quartz",
|
|
3346
|
+
description: "A crystalline mineral for sensors and optics.",
|
|
3172
3347
|
base_price: 200,
|
|
3173
|
-
mass:
|
|
3348
|
+
mass: 35000,
|
|
3349
|
+
category: "mineral",
|
|
3350
|
+
rarity: "uncommon",
|
|
3351
|
+
color: "#E8D5B7"
|
|
3352
|
+
},
|
|
3353
|
+
{
|
|
3354
|
+
id: 1001,
|
|
3355
|
+
name: "Sapphire",
|
|
3356
|
+
description: "A precious crystal for precision instruments.",
|
|
3357
|
+
base_price: 400,
|
|
3358
|
+
mass: 45000,
|
|
3359
|
+
category: "mineral",
|
|
3360
|
+
rarity: "rare",
|
|
3361
|
+
color: "#0F52BA"
|
|
3362
|
+
},
|
|
3363
|
+
{
|
|
3364
|
+
id: 1002,
|
|
3365
|
+
name: "Polymers",
|
|
3366
|
+
description: "Synthetic materials for coatings and consumables.",
|
|
3367
|
+
base_price: 150,
|
|
3368
|
+
mass: 25000,
|
|
3369
|
+
category: "organic",
|
|
3370
|
+
rarity: "rare",
|
|
3371
|
+
color: "#2ECC71"
|
|
3372
|
+
},
|
|
3373
|
+
{
|
|
3374
|
+
id: 1003,
|
|
3375
|
+
name: "Biomass",
|
|
3376
|
+
description: "Organic matter for life support systems.",
|
|
3377
|
+
base_price: 100,
|
|
3378
|
+
mass: 30000,
|
|
3379
|
+
category: "organic",
|
|
3380
|
+
rarity: "uncommon",
|
|
3381
|
+
color: "#8B4513"
|
|
3174
3382
|
}
|
|
3175
3383
|
];
|
|
3176
3384
|
|
|
3177
|
-
const
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3385
|
+
const items = itemsData.map((g) => Item.from({
|
|
3386
|
+
id: g.id,
|
|
3387
|
+
name: g.name,
|
|
3388
|
+
description: g.description,
|
|
3389
|
+
base_price: g.base_price,
|
|
3390
|
+
mass: g.mass,
|
|
3391
|
+
category: g.category,
|
|
3392
|
+
rarity: g.rarity,
|
|
3393
|
+
color: g.color,
|
|
3394
|
+
}));
|
|
3395
|
+
const itemIds = items.map((i) => i.id);
|
|
3396
|
+
function getItem(itemId) {
|
|
3397
|
+
const id = UInt16.from(itemId);
|
|
3398
|
+
const item = items.find((i) => i.id.equals(id));
|
|
3399
|
+
if (!item) {
|
|
3400
|
+
throw new Error(`Item with id ${id} not found`);
|
|
3401
|
+
}
|
|
3402
|
+
return item;
|
|
3403
|
+
}
|
|
3404
|
+
function getItems() {
|
|
3405
|
+
return items;
|
|
3194
3406
|
}
|
|
3195
3407
|
|
|
3196
3408
|
function calc_orbital_altitude(mass) {
|
|
@@ -3280,7 +3492,7 @@ function calc_ship_mass(ship, cargos) {
|
|
|
3280
3492
|
mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
|
|
3281
3493
|
}
|
|
3282
3494
|
for (const cargo of cargos) {
|
|
3283
|
-
mass.add(
|
|
3495
|
+
mass.add(getItem(cargo.item_id).mass.multiplying(cargo.quantity));
|
|
3284
3496
|
}
|
|
3285
3497
|
return mass;
|
|
3286
3498
|
}
|
|
@@ -3290,9 +3502,9 @@ function calc_energyusage(distance, drain) {
|
|
|
3290
3502
|
function calculateTransferTime(ship, cargos, quantities) {
|
|
3291
3503
|
let mass = UInt64.from(0);
|
|
3292
3504
|
for (const cargo of cargos) {
|
|
3293
|
-
const qty = quantities?.get(Number(cargo.
|
|
3505
|
+
const qty = quantities?.get(Number(cargo.item_id)) ?? 0;
|
|
3294
3506
|
if (qty > 0) {
|
|
3295
|
-
const good_mass =
|
|
3507
|
+
const good_mass = getItem(cargo.item_id).mass;
|
|
3296
3508
|
const cargo_mass = good_mass.multiplying(qty);
|
|
3297
3509
|
mass = UInt64.from(mass).adding(cargo_mass);
|
|
3298
3510
|
}
|
|
@@ -3315,11 +3527,11 @@ function calculateLoadTimeBreakdown(ship, cargos, loadQuantities, unloadQuantiti
|
|
|
3315
3527
|
let mass_unload = UInt64.from(0);
|
|
3316
3528
|
let mass_load = UInt64.from(0);
|
|
3317
3529
|
for (const cargo of cargos) {
|
|
3318
|
-
const goodId = Number(cargo.
|
|
3530
|
+
const goodId = Number(cargo.item_id);
|
|
3319
3531
|
const loadQty = loadQuantities?.get(goodId) ?? 0;
|
|
3320
3532
|
const unloadQty = unloadQuantities?.get(goodId) ?? 0;
|
|
3321
3533
|
if (loadQty > 0 || unloadQty > 0) {
|
|
3322
|
-
const good =
|
|
3534
|
+
const good = getItem(cargo.item_id);
|
|
3323
3535
|
if (loadQty > 0) {
|
|
3324
3536
|
const cargo_mass = good.mass.multiplying(loadQty);
|
|
3325
3537
|
mass_load = UInt64.from(mass_load).adding(cargo_mass);
|
|
@@ -3498,7 +3710,7 @@ function capsHasMass(caps) {
|
|
|
3498
3710
|
function calcCargoMass(entity) {
|
|
3499
3711
|
let mass = UInt64.from(0);
|
|
3500
3712
|
for (const item of entity.cargo) {
|
|
3501
|
-
const good =
|
|
3713
|
+
const good = getItem(item.item_id);
|
|
3502
3714
|
mass = mass.adding(good.mass.multiplying(item.quantity));
|
|
3503
3715
|
}
|
|
3504
3716
|
return mass;
|
|
@@ -3797,19 +4009,19 @@ function applyFlightTask(projected, task, options) {
|
|
|
3797
4009
|
: UInt16.from(0);
|
|
3798
4010
|
}
|
|
3799
4011
|
}
|
|
3800
|
-
function
|
|
3801
|
-
const
|
|
3802
|
-
return
|
|
4012
|
+
function getItemMass(item_id) {
|
|
4013
|
+
const item = getItem(item_id);
|
|
4014
|
+
return item.mass;
|
|
3803
4015
|
}
|
|
3804
4016
|
function applyLoadTask(projected, task) {
|
|
3805
4017
|
for (const item of task.cargo) {
|
|
3806
|
-
const good_mass =
|
|
4018
|
+
const good_mass = getItemMass(item.item_id);
|
|
3807
4019
|
projected.cargoMass = projected.cargoMass.adding(good_mass.multiplying(item.quantity));
|
|
3808
4020
|
}
|
|
3809
4021
|
}
|
|
3810
4022
|
function applyUnloadTask(projected, task) {
|
|
3811
4023
|
for (const item of task.cargo) {
|
|
3812
|
-
const good_mass =
|
|
4024
|
+
const good_mass = getItemMass(item.item_id);
|
|
3813
4025
|
const cargoMass = good_mass.multiplying(item.quantity);
|
|
3814
4026
|
projected.cargoMass = projected.cargoMass.gt(cargoMass)
|
|
3815
4027
|
? projected.cargoMass.subtracting(cargoMass)
|
|
@@ -3826,7 +4038,7 @@ function applyExtractTask(projected, task, options) {
|
|
|
3826
4038
|
: UInt16.from(0);
|
|
3827
4039
|
}
|
|
3828
4040
|
for (const item of task.cargo) {
|
|
3829
|
-
const good_mass =
|
|
4041
|
+
const good_mass = getItemMass(item.item_id);
|
|
3830
4042
|
projected.cargoMass = projected.cargoMass.adding(good_mass.multiplying(item.quantity));
|
|
3831
4043
|
}
|
|
3832
4044
|
}
|
|
@@ -3947,7 +4159,7 @@ class Location {
|
|
|
3947
4159
|
getSupply(goodId) {
|
|
3948
4160
|
if (!this._locationRows)
|
|
3949
4161
|
return undefined;
|
|
3950
|
-
const row = this._locationRows.find((r) => r.
|
|
4162
|
+
const row = this._locationRows.find((r) => r.item_id.equals(goodId) && this._epoch && r.epoch.equals(this._epoch));
|
|
3951
4163
|
return row ? row.supply : undefined;
|
|
3952
4164
|
}
|
|
3953
4165
|
get availableGoods() {
|
|
@@ -3985,9 +4197,9 @@ class Location {
|
|
|
3985
4197
|
? currentSupply.subtracting(delta)
|
|
3986
4198
|
: UInt16.from(0)
|
|
3987
4199
|
: currentSupply.adding(quantityDelta);
|
|
3988
|
-
return
|
|
4200
|
+
return ItemPrice.from({
|
|
3989
4201
|
id: price.id,
|
|
3990
|
-
|
|
4202
|
+
item: price.item,
|
|
3991
4203
|
price: price.price,
|
|
3992
4204
|
supply: newSupply,
|
|
3993
4205
|
});
|
|
@@ -3997,7 +4209,7 @@ class Location {
|
|
|
3997
4209
|
}
|
|
3998
4210
|
if (this._locationRows && this._epoch) {
|
|
3999
4211
|
newLocation._locationRows = this._locationRows.map((row) => {
|
|
4000
|
-
if (row.
|
|
4212
|
+
if (row.item_id.equals(goodId) && row.epoch.equals(this._epoch)) {
|
|
4001
4213
|
const currentSupply = UInt16.from(row.supply);
|
|
4002
4214
|
const delta = UInt16.from(Math.abs(quantityDelta));
|
|
4003
4215
|
const newSupply = quantityDelta < 0
|
|
@@ -4009,7 +4221,7 @@ class Location {
|
|
|
4009
4221
|
id: row.id,
|
|
4010
4222
|
coordinates: row.coordinates,
|
|
4011
4223
|
epoch: row.epoch,
|
|
4012
|
-
|
|
4224
|
+
item_id: row.item_id,
|
|
4013
4225
|
supply: newSupply,
|
|
4014
4226
|
});
|
|
4015
4227
|
}
|
|
@@ -4090,17 +4302,20 @@ function createScheduleAccessor(entity) {
|
|
|
4090
4302
|
}
|
|
4091
4303
|
|
|
4092
4304
|
class EntityInventory extends Types.cargo_item {
|
|
4093
|
-
get
|
|
4094
|
-
if (!this.
|
|
4095
|
-
this.
|
|
4305
|
+
get item() {
|
|
4306
|
+
if (!this._item) {
|
|
4307
|
+
this._item = getItem(this.item_id);
|
|
4096
4308
|
}
|
|
4097
|
-
return this.
|
|
4309
|
+
return this._item;
|
|
4310
|
+
}
|
|
4311
|
+
get good() {
|
|
4312
|
+
return this.item;
|
|
4098
4313
|
}
|
|
4099
4314
|
get name() {
|
|
4100
|
-
return this.
|
|
4315
|
+
return this.item.name;
|
|
4101
4316
|
}
|
|
4102
4317
|
get unitMass() {
|
|
4103
|
-
return this.
|
|
4318
|
+
return this.item.mass;
|
|
4104
4319
|
}
|
|
4105
4320
|
get totalMass() {
|
|
4106
4321
|
return UInt64.from(this.unitMass).multiplying(this.quantity);
|
|
@@ -4132,8 +4347,8 @@ class InventoryAccessor {
|
|
|
4132
4347
|
get totalValue() {
|
|
4133
4348
|
return this.items.reduce((sum, c) => sum.adding(c.totalCost), UInt64.from(0));
|
|
4134
4349
|
}
|
|
4135
|
-
|
|
4136
|
-
return this.items.find((c) => c.
|
|
4350
|
+
forItem(goodId) {
|
|
4351
|
+
return this.items.find((c) => c.item_id.equals(goodId));
|
|
4137
4352
|
}
|
|
4138
4353
|
get sellable() {
|
|
4139
4354
|
return this.items.filter((c) => c.hasCargo);
|
|
@@ -4178,8 +4393,8 @@ function cargoValue(cargo) {
|
|
|
4178
4393
|
return sum.adding(c.totalCost);
|
|
4179
4394
|
}, UInt64.from(0));
|
|
4180
4395
|
}
|
|
4181
|
-
function
|
|
4182
|
-
return cargo.find((c) => c.
|
|
4396
|
+
function getCargoForItem(cargo, goodId) {
|
|
4397
|
+
return cargo.find((c) => c.item_id.equals(goodId));
|
|
4183
4398
|
}
|
|
4184
4399
|
function hasSpace(currentMass, maxCapacity, goodMass, quantity) {
|
|
4185
4400
|
const additionalMass = goodMass.multiplying(quantity);
|
|
@@ -4204,7 +4419,7 @@ function calculateSaleValue(cargo, prices) {
|
|
|
4204
4419
|
for (const item of cargo) {
|
|
4205
4420
|
if (UInt32.from(item.quantity).equals(UInt32.from(0)))
|
|
4206
4421
|
continue;
|
|
4207
|
-
const goodId = Number(item.
|
|
4422
|
+
const goodId = Number(item.item_id);
|
|
4208
4423
|
const salePrice = prices.get(goodId);
|
|
4209
4424
|
if (salePrice) {
|
|
4210
4425
|
revenue = revenue.adding(salePrice.multiplying(item.quantity));
|
|
@@ -4225,30 +4440,30 @@ function calculateSaleValueFromArray(cargo, prices) {
|
|
|
4225
4440
|
});
|
|
4226
4441
|
return calculateSaleValue(cargo, priceMap);
|
|
4227
4442
|
}
|
|
4228
|
-
function
|
|
4443
|
+
function afterSellItems(cargo, goodsToSell) {
|
|
4229
4444
|
if (cargo.length === 0) {
|
|
4230
4445
|
return [];
|
|
4231
4446
|
}
|
|
4232
4447
|
return cargo.map((item) => {
|
|
4233
|
-
const saleItem = goodsToSell.find((s) => Number(item.
|
|
4448
|
+
const saleItem = goodsToSell.find((s) => Number(item.item_id) === s.goodId);
|
|
4234
4449
|
if (!saleItem) {
|
|
4235
4450
|
return new EntityInventory(item);
|
|
4236
4451
|
}
|
|
4237
4452
|
const currentQty = Number(item.quantity);
|
|
4238
4453
|
const newQty = Math.max(0, currentQty - saleItem.quantity);
|
|
4239
4454
|
return new EntityInventory(Types.cargo_item.from({
|
|
4240
|
-
|
|
4455
|
+
item_id: item.item_id,
|
|
4241
4456
|
quantity: UInt32.from(newQty),
|
|
4242
4457
|
unit_cost: item.unit_cost,
|
|
4243
4458
|
}));
|
|
4244
4459
|
});
|
|
4245
4460
|
}
|
|
4246
|
-
function
|
|
4461
|
+
function afterSellAllItems(cargo) {
|
|
4247
4462
|
if (cargo.length === 0) {
|
|
4248
4463
|
return [];
|
|
4249
4464
|
}
|
|
4250
4465
|
return cargo.map((item) => new EntityInventory(Types.cargo_item.from({
|
|
4251
|
-
|
|
4466
|
+
item_id: item.item_id,
|
|
4252
4467
|
quantity: UInt32.from(0),
|
|
4253
4468
|
unit_cost: item.unit_cost,
|
|
4254
4469
|
})));
|
|
@@ -4258,14 +4473,14 @@ var cargoUtils = /*#__PURE__*/Object.freeze({
|
|
|
4258
4473
|
__proto__: null,
|
|
4259
4474
|
totalCargoMass: totalCargoMass,
|
|
4260
4475
|
cargoValue: cargoValue,
|
|
4261
|
-
|
|
4476
|
+
getCargoForItem: getCargoForItem,
|
|
4262
4477
|
hasSpace: hasSpace,
|
|
4263
4478
|
availableCapacity: availableCapacity,
|
|
4264
4479
|
isFull: isFull,
|
|
4265
4480
|
calculateSaleValue: calculateSaleValue,
|
|
4266
4481
|
calculateSaleValueFromArray: calculateSaleValueFromArray,
|
|
4267
|
-
|
|
4268
|
-
|
|
4482
|
+
afterSellItems: afterSellItems,
|
|
4483
|
+
afterSellAllItems: afterSellAllItems
|
|
4269
4484
|
});
|
|
4270
4485
|
|
|
4271
4486
|
class Ship extends Types.entity_info {
|
|
@@ -4319,6 +4534,9 @@ class Ship extends Types.entity_info {
|
|
|
4319
4534
|
get hasExtractor() {
|
|
4320
4535
|
return this.extractor !== undefined;
|
|
4321
4536
|
}
|
|
4537
|
+
get hasWarp() {
|
|
4538
|
+
return this.warp !== undefined;
|
|
4539
|
+
}
|
|
4322
4540
|
project() {
|
|
4323
4541
|
return projectEntity(this);
|
|
4324
4542
|
}
|
|
@@ -4352,8 +4570,8 @@ class Ship extends Types.entity_info {
|
|
|
4352
4570
|
? UInt64.from(0)
|
|
4353
4571
|
: this.maxCapacity.subtracting(this.totalMass);
|
|
4354
4572
|
}
|
|
4355
|
-
|
|
4356
|
-
return this.inv.
|
|
4573
|
+
getCargoForItem(goodId) {
|
|
4574
|
+
return this.inv.forItem(goodId);
|
|
4357
4575
|
}
|
|
4358
4576
|
get sellableCargo() {
|
|
4359
4577
|
return this.inv.sellable;
|
|
@@ -4388,11 +4606,11 @@ class Ship extends Types.entity_info {
|
|
|
4388
4606
|
calculateSaleValueFromArray(prices) {
|
|
4389
4607
|
return calculateSaleValueFromArray(this.cargo, prices);
|
|
4390
4608
|
}
|
|
4391
|
-
|
|
4392
|
-
return
|
|
4609
|
+
afterSellItems(goodsToSell) {
|
|
4610
|
+
return afterSellItems(this.cargo, goodsToSell);
|
|
4393
4611
|
}
|
|
4394
|
-
|
|
4395
|
-
return
|
|
4612
|
+
afterSellAllItems() {
|
|
4613
|
+
return afterSellAllItems(this.cargo);
|
|
4396
4614
|
}
|
|
4397
4615
|
}
|
|
4398
4616
|
|
|
@@ -4440,8 +4658,8 @@ class Warehouse extends Types.entity_info {
|
|
|
4440
4658
|
get isFull() {
|
|
4441
4659
|
return this.totalCargoMass.gte(this.maxCapacity);
|
|
4442
4660
|
}
|
|
4443
|
-
|
|
4444
|
-
return this.inv.
|
|
4661
|
+
getCargoForItem(goodId) {
|
|
4662
|
+
return this.inv.forItem(goodId);
|
|
4445
4663
|
}
|
|
4446
4664
|
get orbitalAltitude() {
|
|
4447
4665
|
return this.coordinates.z?.toNumber() || 0;
|
|
@@ -4853,22 +5071,22 @@ function getSupply(gameSeed, state, location, goodId) {
|
|
|
4853
5071
|
return Math.floor(base * percent * ship * epoch);
|
|
4854
5072
|
}
|
|
4855
5073
|
function marketPrice(location, goodId, gameSeed, state) {
|
|
4856
|
-
const
|
|
4857
|
-
let price = Number(
|
|
5074
|
+
const item = getItem(goodId);
|
|
5075
|
+
let price = Number(item.base_price);
|
|
4858
5076
|
const rarityMultiplier = getRarityMultiplier(gameSeed, state.seed, location, goodId);
|
|
4859
5077
|
price *= rarityMultiplier;
|
|
4860
5078
|
const locationMultiplier = getLocationMultiplier(gameSeed, location, goodId);
|
|
4861
5079
|
price *= locationMultiplier;
|
|
4862
5080
|
const supply = getSupply(gameSeed, state, location, goodId);
|
|
4863
|
-
return
|
|
5081
|
+
return ItemPrice.from({
|
|
4864
5082
|
id: goodId,
|
|
4865
|
-
|
|
5083
|
+
item,
|
|
4866
5084
|
price: UInt32.from(price),
|
|
4867
5085
|
supply: UInt16.from(supply),
|
|
4868
5086
|
});
|
|
4869
5087
|
}
|
|
4870
5088
|
function marketPrices(location, gameSeed, state) {
|
|
4871
|
-
return
|
|
5089
|
+
return getItems().map((item) => marketPrice(location, item.id, gameSeed, state));
|
|
4872
5090
|
}
|
|
4873
5091
|
|
|
4874
5092
|
class LocationsManager extends BaseManager {
|
|
@@ -4892,15 +5110,15 @@ class LocationsManager extends BaseManager {
|
|
|
4892
5110
|
const supplyMap = new Map();
|
|
4893
5111
|
for (const row of supplyRows) {
|
|
4894
5112
|
if (UInt64.from(row.epoch).equals(state.epoch)) {
|
|
4895
|
-
supplyMap.set(Number(row.
|
|
5113
|
+
supplyMap.set(Number(row.item_id), Number(row.supply));
|
|
4896
5114
|
}
|
|
4897
5115
|
}
|
|
4898
5116
|
return prices.map((price) => {
|
|
4899
5117
|
const actualSupply = supplyMap.get(Number(price.id));
|
|
4900
5118
|
if (actualSupply !== undefined) {
|
|
4901
|
-
return
|
|
5119
|
+
return ItemPrice.from({
|
|
4902
5120
|
id: price.id,
|
|
4903
|
-
|
|
5121
|
+
item: price.item,
|
|
4904
5122
|
price: price.price,
|
|
4905
5123
|
supply: UInt64.from(actualSupply),
|
|
4906
5124
|
});
|
|
@@ -4970,7 +5188,7 @@ function calculateUpdatedCargoCost(currentPaid, currentOwned, purchaseCost, purc
|
|
|
4970
5188
|
}
|
|
4971
5189
|
function calculateMaxTradeQuantity(ship, player, goodPrice) {
|
|
4972
5190
|
const pricePerUnit = UInt32.from(goodPrice.price);
|
|
4973
|
-
const massPerUnit = UInt32.from(goodPrice.
|
|
5191
|
+
const massPerUnit = UInt32.from(goodPrice.item.mass);
|
|
4974
5192
|
const spaceForQuantity = ship.availableCapacity.dividing(massPerUnit);
|
|
4975
5193
|
const affordableQuantity = player.balance.dividing(pricePerUnit);
|
|
4976
5194
|
const maxQuantity = spaceForQuantity.lt(affordableQuantity)
|
|
@@ -5003,7 +5221,7 @@ function calculateProfitPerSecond(profit, travelTimeSeconds) {
|
|
|
5003
5221
|
const t = UInt32.from(travelTimeSeconds);
|
|
5004
5222
|
return t.gt(UInt32.zero) ? Number(profit) / Number(t) : 0;
|
|
5005
5223
|
}
|
|
5006
|
-
function
|
|
5224
|
+
function findBestItemToTrade(ship, player, originPrices, destPrices, travelTimeSeconds) {
|
|
5007
5225
|
let bestTrade = null;
|
|
5008
5226
|
let bestProfitPerSecond = 0;
|
|
5009
5227
|
for (const originPrice of originPrices) {
|
|
@@ -5020,7 +5238,7 @@ function findBestGoodToTrade(ship, player, originPrices, destPrices, travelTimeS
|
|
|
5020
5238
|
if (profitPerSecond > bestProfitPerSecond) {
|
|
5021
5239
|
bestProfitPerSecond = profitPerSecond;
|
|
5022
5240
|
bestTrade = {
|
|
5023
|
-
|
|
5241
|
+
item: originPrice,
|
|
5024
5242
|
quantity: calc.maxQuantity,
|
|
5025
5243
|
profit: Number(tradeResult.profit),
|
|
5026
5244
|
profitPerSecond,
|
|
@@ -5070,7 +5288,7 @@ async function findDealsForShip(ship, originLocation, getNearbyLocations, getMar
|
|
|
5070
5288
|
const canAfford = balance !== undefined
|
|
5071
5289
|
? balance.dividing(originGood.price)
|
|
5072
5290
|
: UInt64.from(Number.MAX_SAFE_INTEGER);
|
|
5073
|
-
const canHaul = effectiveAvailableMass.dividing(originGood.
|
|
5291
|
+
const canHaul = effectiveAvailableMass.dividing(originGood.item.mass);
|
|
5074
5292
|
const supplyLimit = UInt64.from(originGood.supply);
|
|
5075
5293
|
let maxQuantity = canAfford;
|
|
5076
5294
|
if (canHaul.lt(maxQuantity))
|
|
@@ -5079,7 +5297,7 @@ async function findDealsForShip(ship, originLocation, getNearbyLocations, getMar
|
|
|
5079
5297
|
maxQuantity = supplyLimit;
|
|
5080
5298
|
if (maxQuantity.equals(UInt64.zero))
|
|
5081
5299
|
continue;
|
|
5082
|
-
const cargoMass = originGood.
|
|
5300
|
+
const cargoMass = originGood.item.mass.multiplying(maxQuantity);
|
|
5083
5301
|
const availableSpaceUInt = UInt64.from(availableSpace);
|
|
5084
5302
|
const baseMass = availableSpace !== undefined
|
|
5085
5303
|
? shipCapacity.gte(availableSpaceUInt)
|
|
@@ -5102,7 +5320,7 @@ async function findDealsForShip(ship, originLocation, getNearbyLocations, getMar
|
|
|
5102
5320
|
deals.push({
|
|
5103
5321
|
origin,
|
|
5104
5322
|
destination: destLocation,
|
|
5105
|
-
|
|
5323
|
+
item: originGood,
|
|
5106
5324
|
distance,
|
|
5107
5325
|
supply: originGood.supply,
|
|
5108
5326
|
buyPrice: originGood.price,
|
|
@@ -5132,7 +5350,7 @@ function calculateCargoMass(cargo) {
|
|
|
5132
5350
|
let mass = UInt32.from(0);
|
|
5133
5351
|
for (const c of cargo) {
|
|
5134
5352
|
if (UInt64.from(c.quantity).gt(UInt64.zero)) {
|
|
5135
|
-
const goodMass =
|
|
5353
|
+
const goodMass = getItem(c.item_id).mass;
|
|
5136
5354
|
mass = mass.adding(goodMass.multiplying(c.quantity));
|
|
5137
5355
|
}
|
|
5138
5356
|
}
|
|
@@ -5154,7 +5372,7 @@ function analyzeCargoSale(cargo, prices) {
|
|
|
5154
5372
|
for (const c of cargo) {
|
|
5155
5373
|
if (UInt64.from(c.quantity).equals(UInt64.zero))
|
|
5156
5374
|
continue;
|
|
5157
|
-
const goodId = Number(c.
|
|
5375
|
+
const goodId = Number(c.item_id);
|
|
5158
5376
|
const salePrice = prices.get(goodId);
|
|
5159
5377
|
if (salePrice) {
|
|
5160
5378
|
revenue = revenue.adding(UInt64.from(salePrice).multiplying(c.quantity));
|
|
@@ -5172,15 +5390,15 @@ function buildCargoSaleItems(cargo, prices) {
|
|
|
5172
5390
|
for (const c of cargo) {
|
|
5173
5391
|
if (UInt64.from(c.quantity).equals(UInt64.zero))
|
|
5174
5392
|
continue;
|
|
5175
|
-
const goodId = Number(c.
|
|
5393
|
+
const goodId = Number(c.item_id);
|
|
5176
5394
|
const salePrice = prices.get(goodId);
|
|
5177
5395
|
const pricePerUnit = salePrice ? UInt32.from(salePrice) : UInt32.zero;
|
|
5178
5396
|
const revenue = UInt64.from(pricePerUnit).multiplying(c.quantity);
|
|
5179
5397
|
const cost = c.unit_cost.multiplying(c.quantity);
|
|
5180
5398
|
const profit = Int64.from(revenue).subtracting(cost);
|
|
5181
5399
|
items.push({
|
|
5182
|
-
goodId: c.
|
|
5183
|
-
goodName: c.
|
|
5400
|
+
goodId: c.item_id,
|
|
5401
|
+
goodName: c.item?.name ?? `Item #${goodId}`,
|
|
5184
5402
|
quantity: UInt32.from(c.quantity),
|
|
5185
5403
|
pricePerUnit,
|
|
5186
5404
|
revenue,
|
|
@@ -5210,10 +5428,10 @@ function createSellAndTradeOption(saleRevenue, saleCost, deal, cargoSale, unload
|
|
|
5210
5428
|
}
|
|
5211
5429
|
: undefined;
|
|
5212
5430
|
return {
|
|
5213
|
-
id: `sell-trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.
|
|
5431
|
+
id: `sell-trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.item.id}`,
|
|
5214
5432
|
type: 'sell-and-trade',
|
|
5215
|
-
title: `Trade ${deal.
|
|
5216
|
-
description: `Sell cargo, buy ${deal.maxQuantity} ${deal.
|
|
5433
|
+
title: `Trade ${deal.item.item.name}`,
|
|
5434
|
+
description: `Sell cargo, buy ${deal.maxQuantity} ${deal.item.item.name}, deliver to (${deal.destination.coordinates.x}, ${deal.destination.coordinates.y})`,
|
|
5217
5435
|
reason: `${deal.marginPercent.toFixed(0)}% margin, ${deal.profitPerSecond.toFixed(1)}/s profit rate`,
|
|
5218
5436
|
recommended: false,
|
|
5219
5437
|
highestProfit: false,
|
|
@@ -5275,7 +5493,7 @@ function createSellAndRepositionOption(saleRevenue, saleCost, reposition, cargoS
|
|
|
5275
5493
|
id: `sell-reposition-${reposition.location.coordinates.x}-${reposition.location.coordinates.y}`,
|
|
5276
5494
|
type: 'sell-and-reposition',
|
|
5277
5495
|
title: 'Sell & Move',
|
|
5278
|
-
description: `Sell cargo here, travel empty to buy ${deal.
|
|
5496
|
+
description: `Sell cargo here, travel empty to buy ${deal.item.item.name}`,
|
|
5279
5497
|
reason: `No good trades here — ${deal.marginPercent.toFixed(0)}% margin trade available at destination`,
|
|
5280
5498
|
recommended: false,
|
|
5281
5499
|
highestProfit: false,
|
|
@@ -5394,9 +5612,9 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
|
|
|
5394
5612
|
availableSpace: Number(ship.maxCapacity),
|
|
5395
5613
|
});
|
|
5396
5614
|
if (hasCargo && dealsAtOrigin.length > 0) {
|
|
5397
|
-
const cargoGoodIds = new Set(cargo.map((c) => Number(c.
|
|
5615
|
+
const cargoGoodIds = new Set(cargo.map((c) => Number(c.item_id)));
|
|
5398
5616
|
for (const deal of dealsAtOrigin.slice(0, 3)) {
|
|
5399
|
-
const dealGoodId = Number(deal.
|
|
5617
|
+
const dealGoodId = Number(deal.item.id);
|
|
5400
5618
|
if (cargoGoodIds.has(dealGoodId)) {
|
|
5401
5619
|
continue;
|
|
5402
5620
|
}
|
|
@@ -5493,10 +5711,10 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
|
|
|
5493
5711
|
if (!hasCargo && dealsAtOrigin.length > 0) {
|
|
5494
5712
|
for (const deal of dealsAtOrigin.slice(0, 3)) {
|
|
5495
5713
|
const option = {
|
|
5496
|
-
id: `trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.
|
|
5714
|
+
id: `trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.item.id}`,
|
|
5497
5715
|
type: 'sell-and-trade',
|
|
5498
|
-
title: `Trade ${deal.
|
|
5499
|
-
description: `Buy ${deal.maxQuantity} ${deal.
|
|
5716
|
+
title: `Trade ${deal.item.item.name}`,
|
|
5717
|
+
description: `Buy ${deal.maxQuantity} ${deal.item.item.name}, deliver to (${deal.destination.coordinates.x}, ${deal.destination.coordinates.y})`,
|
|
5500
5718
|
reason: `${deal.marginPercent.toFixed(0)}% margin, ${deal.profitPerSecond.toFixed(1)}/s profit rate`,
|
|
5501
5719
|
recommended: false,
|
|
5502
5720
|
highestProfit: false,
|
|
@@ -5534,7 +5752,7 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
|
|
|
5534
5752
|
let discountedGood;
|
|
5535
5753
|
let bestDiscount = 0;
|
|
5536
5754
|
if (gameSeed && state) {
|
|
5537
|
-
const allGoods =
|
|
5755
|
+
const allGoods = getItems();
|
|
5538
5756
|
for (const good of allGoods) {
|
|
5539
5757
|
const rarity = getRarity(gameSeed, state.seed, dest.coordinates, good.id);
|
|
5540
5758
|
if (rarity.minMultiplier < 1.0) {
|
|
@@ -5562,8 +5780,8 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
|
|
|
5562
5780
|
}
|
|
5563
5781
|
const destDeals = await findDealsForShip(ship, dest.coordinates, callbacks.getNearbyLocations, callbacks.getMarketPrices, { maxDeals: 2 });
|
|
5564
5782
|
const potentialDeals = destDeals.map((d) => ({
|
|
5565
|
-
goodId: Number(d.
|
|
5566
|
-
goodName: d.
|
|
5783
|
+
goodId: Number(d.item.id),
|
|
5784
|
+
goodName: d.item.item.name,
|
|
5567
5785
|
destinationCoords: d.destination.coordinates,
|
|
5568
5786
|
marginPercent: d.marginPercent,
|
|
5569
5787
|
profitPerSecond: d.profitPerSecond,
|
|
@@ -5649,9 +5867,9 @@ class TradesManager extends BaseManager {
|
|
|
5649
5867
|
const result = prices.map((price) => {
|
|
5650
5868
|
const actualSupply = locationWithSupply.getSupply(price.id);
|
|
5651
5869
|
if (actualSupply !== undefined) {
|
|
5652
|
-
return
|
|
5870
|
+
return ItemPrice.from({
|
|
5653
5871
|
id: price.id,
|
|
5654
|
-
|
|
5872
|
+
item: price.item,
|
|
5655
5873
|
price: price.price,
|
|
5656
5874
|
supply: actualSupply,
|
|
5657
5875
|
});
|
|
@@ -5776,23 +5994,23 @@ class ActionsManager extends BaseManager {
|
|
|
5776
5994
|
source_id: UInt64.from(sourceId),
|
|
5777
5995
|
dest_type: destType,
|
|
5778
5996
|
dest_id: UInt64.from(destId),
|
|
5779
|
-
|
|
5997
|
+
item_id: UInt16.from(goodId),
|
|
5780
5998
|
quantity: UInt32.from(quantity),
|
|
5781
5999
|
});
|
|
5782
6000
|
}
|
|
5783
|
-
|
|
5784
|
-
return this.server.action('
|
|
6001
|
+
buyItems(entityId, goodId, quantity, entityType = EntityType.SHIP) {
|
|
6002
|
+
return this.server.action('buyitems', {
|
|
5785
6003
|
entity_type: entityType,
|
|
5786
6004
|
id: UInt64.from(entityId),
|
|
5787
|
-
|
|
6005
|
+
item_id: UInt16.from(goodId),
|
|
5788
6006
|
quantity: UInt32.from(quantity),
|
|
5789
6007
|
});
|
|
5790
6008
|
}
|
|
5791
|
-
|
|
5792
|
-
return this.server.action('
|
|
6009
|
+
sellItems(entityId, goodId, quantity, entityType = EntityType.SHIP) {
|
|
6010
|
+
return this.server.action('sellitems', {
|
|
5793
6011
|
entity_type: entityType,
|
|
5794
6012
|
id: UInt64.from(entityId),
|
|
5795
|
-
|
|
6013
|
+
item_id: UInt16.from(goodId),
|
|
5796
6014
|
quantity: UInt32.from(quantity),
|
|
5797
6015
|
});
|
|
5798
6016
|
}
|
|
@@ -5844,6 +6062,16 @@ class ActionsManager extends BaseManager {
|
|
|
5844
6062
|
ship_id: UInt64.from(shipId),
|
|
5845
6063
|
});
|
|
5846
6064
|
}
|
|
6065
|
+
warp(shipId, destination) {
|
|
6066
|
+
const x = Int64.from(destination.x);
|
|
6067
|
+
const y = Int64.from(destination.y);
|
|
6068
|
+
return this.server.action('warp', {
|
|
6069
|
+
entity_type: EntityType.SHIP,
|
|
6070
|
+
id: UInt64.from(shipId),
|
|
6071
|
+
x,
|
|
6072
|
+
y,
|
|
6073
|
+
});
|
|
6074
|
+
}
|
|
5847
6075
|
joinGame(account, companyName) {
|
|
5848
6076
|
return [this.foundCompany(account, companyName), this.join(account)];
|
|
5849
6077
|
}
|
|
@@ -5861,7 +6089,7 @@ class ActionsManager extends BaseManager {
|
|
|
5861
6089
|
const shipId = ship instanceof Ship ? ship.id : UInt64.from(ship);
|
|
5862
6090
|
return shipCargo
|
|
5863
6091
|
.filter((c) => c.hasCargo)
|
|
5864
|
-
.map((c) => this.
|
|
6092
|
+
.map((c) => this.sellItems(shipId, c.item_id, c.quantity, EntityType.SHIP));
|
|
5865
6093
|
}
|
|
5866
6094
|
}
|
|
5867
6095
|
|
|
@@ -6070,6 +6298,219 @@ function makeContainer(state) {
|
|
|
6070
6298
|
return new Container(entityInfo);
|
|
6071
6299
|
}
|
|
6072
6300
|
|
|
6301
|
+
const DEPTH_THRESHOLD_COMMON = 0;
|
|
6302
|
+
const DEPTH_THRESHOLD_UNCOMMON = 2000;
|
|
6303
|
+
const DEPTH_THRESHOLD_RARE = 10000;
|
|
6304
|
+
const DEPTH_THRESHOLD_EPIC = 30000;
|
|
6305
|
+
const DEPTH_THRESHOLD_LEGENDARY = 55000;
|
|
6306
|
+
const LOCATION_MIN_DEPTH = 500;
|
|
6307
|
+
const LOCATION_MAX_DEPTH = 65535;
|
|
6308
|
+
const YIELD_THRESHOLD = Math.floor(0.003 * 0xffffffff);
|
|
6309
|
+
const PLANET_SUBTYPE_GAS_GIANT = 0;
|
|
6310
|
+
const PLANET_SUBTYPE_ROCKY = 1;
|
|
6311
|
+
const PLANET_SUBTYPE_TERRESTRIAL = 2;
|
|
6312
|
+
const PLANET_SUBTYPE_ICY = 3;
|
|
6313
|
+
const PLANET_SUBTYPE_OCEAN = 4;
|
|
6314
|
+
const PLANET_SUBTYPE_INDUSTRIAL = 5;
|
|
6315
|
+
const RESOURCE_CATALOG = [
|
|
6316
|
+
{ id: 26, rarity: 'common' },
|
|
6317
|
+
{ id: 1, rarity: 'common' },
|
|
6318
|
+
{ id: 14, rarity: 'common' },
|
|
6319
|
+
{ id: 6, rarity: 'common' },
|
|
6320
|
+
{ id: 29, rarity: 'uncommon' },
|
|
6321
|
+
{ id: 2, rarity: 'uncommon' },
|
|
6322
|
+
{ id: 1000, rarity: 'uncommon' },
|
|
6323
|
+
{ id: 1003, rarity: 'uncommon' },
|
|
6324
|
+
{ id: 22, rarity: 'rare' },
|
|
6325
|
+
{ id: 18, rarity: 'rare' },
|
|
6326
|
+
{ id: 1001, rarity: 'rare' },
|
|
6327
|
+
{ id: 1002, rarity: 'rare' },
|
|
6328
|
+
{ id: 74, rarity: 'epic' },
|
|
6329
|
+
{ id: 54, rarity: 'epic' },
|
|
6330
|
+
];
|
|
6331
|
+
function getDepthThreshold(rarity) {
|
|
6332
|
+
switch (rarity) {
|
|
6333
|
+
case 'common':
|
|
6334
|
+
return DEPTH_THRESHOLD_COMMON;
|
|
6335
|
+
case 'uncommon':
|
|
6336
|
+
return DEPTH_THRESHOLD_UNCOMMON;
|
|
6337
|
+
case 'rare':
|
|
6338
|
+
return DEPTH_THRESHOLD_RARE;
|
|
6339
|
+
case 'epic':
|
|
6340
|
+
return DEPTH_THRESHOLD_EPIC;
|
|
6341
|
+
case 'legendary':
|
|
6342
|
+
return DEPTH_THRESHOLD_LEGENDARY;
|
|
6343
|
+
}
|
|
6344
|
+
}
|
|
6345
|
+
function getResourceRarity(itemId) {
|
|
6346
|
+
const entry = RESOURCE_CATALOG.find((r) => r.id === itemId);
|
|
6347
|
+
return entry ? entry.rarity : 'legendary';
|
|
6348
|
+
}
|
|
6349
|
+
function getResourceWeight(itemId, stratum) {
|
|
6350
|
+
const rarity = getResourceRarity(itemId);
|
|
6351
|
+
const threshold = getDepthThreshold(rarity);
|
|
6352
|
+
if (stratum < threshold)
|
|
6353
|
+
return 0;
|
|
6354
|
+
const depthAbove = stratum - threshold;
|
|
6355
|
+
switch (rarity) {
|
|
6356
|
+
case 'common':
|
|
6357
|
+
if (stratum < 2000)
|
|
6358
|
+
return 100;
|
|
6359
|
+
if (stratum < 10000)
|
|
6360
|
+
return 80;
|
|
6361
|
+
if (stratum < 30000)
|
|
6362
|
+
return 50;
|
|
6363
|
+
return 30;
|
|
6364
|
+
case 'uncommon':
|
|
6365
|
+
if (depthAbove < 3000)
|
|
6366
|
+
return 40;
|
|
6367
|
+
if (depthAbove < 8000)
|
|
6368
|
+
return 60;
|
|
6369
|
+
return 50;
|
|
6370
|
+
case 'rare':
|
|
6371
|
+
if (depthAbove < 5000)
|
|
6372
|
+
return 20;
|
|
6373
|
+
if (depthAbove < 15000)
|
|
6374
|
+
return 35;
|
|
6375
|
+
return 40;
|
|
6376
|
+
case 'epic':
|
|
6377
|
+
if (depthAbove < 10000)
|
|
6378
|
+
return 10;
|
|
6379
|
+
if (depthAbove < 25000)
|
|
6380
|
+
return 20;
|
|
6381
|
+
return 30;
|
|
6382
|
+
case 'legendary':
|
|
6383
|
+
return 10;
|
|
6384
|
+
}
|
|
6385
|
+
}
|
|
6386
|
+
const ASTEROID_RESOURCES = [26, 29, 22, 74, 14, 1000, 1001];
|
|
6387
|
+
const NEBULA_RESOURCES = [1, 2, 18, 54];
|
|
6388
|
+
const GAS_GIANT_RESOURCES = [1, 2, 18, 54];
|
|
6389
|
+
const ROCKY_RESOURCES = [26, 29, 22, 74, 6, 1003, 1002];
|
|
6390
|
+
const TERRESTRIAL_RESOURCES = [6, 1003, 1002, 1001];
|
|
6391
|
+
const ICY_RESOURCES = [6, 14, 1000, 1001, 18];
|
|
6392
|
+
const OCEAN_RESOURCES = [1, 2, 1003, 1002];
|
|
6393
|
+
const INDUSTRIAL_RESOURCES = [26, 29, 22, 74, 14, 1000, 54];
|
|
6394
|
+
function getLocationCandidates(locationType, subtype) {
|
|
6395
|
+
if (locationType === 2)
|
|
6396
|
+
return ASTEROID_RESOURCES;
|
|
6397
|
+
if (locationType === 3)
|
|
6398
|
+
return NEBULA_RESOURCES;
|
|
6399
|
+
if (locationType === 1) {
|
|
6400
|
+
switch (subtype) {
|
|
6401
|
+
case PLANET_SUBTYPE_GAS_GIANT:
|
|
6402
|
+
return GAS_GIANT_RESOURCES;
|
|
6403
|
+
case PLANET_SUBTYPE_ROCKY:
|
|
6404
|
+
return ROCKY_RESOURCES;
|
|
6405
|
+
case PLANET_SUBTYPE_TERRESTRIAL:
|
|
6406
|
+
return TERRESTRIAL_RESOURCES;
|
|
6407
|
+
case PLANET_SUBTYPE_ICY:
|
|
6408
|
+
return ICY_RESOURCES;
|
|
6409
|
+
case PLANET_SUBTYPE_OCEAN:
|
|
6410
|
+
return OCEAN_RESOURCES;
|
|
6411
|
+
case PLANET_SUBTYPE_INDUSTRIAL:
|
|
6412
|
+
return INDUSTRIAL_RESOURCES;
|
|
6413
|
+
}
|
|
6414
|
+
}
|
|
6415
|
+
return [];
|
|
6416
|
+
}
|
|
6417
|
+
function getEligibleResources(locationType, subtype, stratum) {
|
|
6418
|
+
const candidates = getLocationCandidates(locationType, subtype);
|
|
6419
|
+
return candidates.filter((itemId) => {
|
|
6420
|
+
const rarity = getResourceRarity(itemId);
|
|
6421
|
+
const threshold = getDepthThreshold(rarity);
|
|
6422
|
+
return stratum >= threshold;
|
|
6423
|
+
});
|
|
6424
|
+
}
|
|
6425
|
+
function depthScaleFactor(stratum) {
|
|
6426
|
+
if (stratum <= 1)
|
|
6427
|
+
return 1.0;
|
|
6428
|
+
const logScale = Math.log(stratum) / Math.log(65535);
|
|
6429
|
+
return 1.0 + logScale * 2.0;
|
|
6430
|
+
}
|
|
6431
|
+
|
|
6432
|
+
function deriveStratum(epochSeed, coords, stratum, locationType, subtype, _maxDepth) {
|
|
6433
|
+
const seed = Checksum256.from(epochSeed);
|
|
6434
|
+
const c = Coordinates.from(coords);
|
|
6435
|
+
const input = `stratum-${c.x}-${c.y}-${stratum}`;
|
|
6436
|
+
const hashResult = hash512(seed, input);
|
|
6437
|
+
const bytes = hashResult.array;
|
|
6438
|
+
const rawReserve = ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0;
|
|
6439
|
+
let reserve = 0;
|
|
6440
|
+
if (rawReserve <= YIELD_THRESHOLD) {
|
|
6441
|
+
const baseReserve = (rawReserve % 333) + 1;
|
|
6442
|
+
const scale = depthScaleFactor(stratum);
|
|
6443
|
+
reserve = Math.floor(baseReserve * scale);
|
|
6444
|
+
}
|
|
6445
|
+
if (reserve === 0)
|
|
6446
|
+
return { itemId: 0, seed: 0n, richness: 0, reserve: 0 };
|
|
6447
|
+
const eligible = getEligibleResources(locationType, subtype, stratum);
|
|
6448
|
+
if (eligible.length === 0)
|
|
6449
|
+
return { itemId: 0, seed: 0n, richness: 0, reserve: 0 };
|
|
6450
|
+
const resourceRoll = ((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7]) >>> 0;
|
|
6451
|
+
let totalWeight = 0;
|
|
6452
|
+
for (const id of eligible) {
|
|
6453
|
+
totalWeight += getResourceWeight(id, stratum);
|
|
6454
|
+
}
|
|
6455
|
+
let selectedItemId = eligible[0];
|
|
6456
|
+
if (totalWeight > 0) {
|
|
6457
|
+
const roll = resourceRoll % totalWeight;
|
|
6458
|
+
let cumulative = 0;
|
|
6459
|
+
for (const id of eligible) {
|
|
6460
|
+
cumulative += getResourceWeight(id, stratum);
|
|
6461
|
+
if (roll < cumulative) {
|
|
6462
|
+
selectedItemId = id;
|
|
6463
|
+
break;
|
|
6464
|
+
}
|
|
6465
|
+
}
|
|
6466
|
+
}
|
|
6467
|
+
const seedBigInt = (BigInt(bytes[8]) << 56n) |
|
|
6468
|
+
(BigInt(bytes[9]) << 48n) |
|
|
6469
|
+
(BigInt(bytes[10]) << 40n) |
|
|
6470
|
+
(BigInt(bytes[11]) << 32n) |
|
|
6471
|
+
(BigInt(bytes[12]) << 24n) |
|
|
6472
|
+
(BigInt(bytes[13]) << 16n) |
|
|
6473
|
+
(BigInt(bytes[14]) << 8n) |
|
|
6474
|
+
BigInt(bytes[15]);
|
|
6475
|
+
const rawRichness = (bytes[16] << 8) | bytes[17];
|
|
6476
|
+
const normalized = rawRichness / 65535;
|
|
6477
|
+
const baseRichness = Math.floor(normalized * normalized * 999) + 1;
|
|
6478
|
+
let depthBonus = 0;
|
|
6479
|
+
if (stratum > 1) {
|
|
6480
|
+
depthBonus = 50 * Math.log(stratum) / Math.log(65535);
|
|
6481
|
+
}
|
|
6482
|
+
const richness = Math.min(Math.floor(baseRichness + depthBonus), 1000);
|
|
6483
|
+
return { itemId: selectedItemId, seed: seedBigInt, richness, reserve };
|
|
6484
|
+
}
|
|
6485
|
+
function deriveResourceStats(seed) {
|
|
6486
|
+
const seedStr = seed.toString();
|
|
6487
|
+
const encoder = new TextEncoder();
|
|
6488
|
+
const data = encoder.encode(seedStr);
|
|
6489
|
+
const hashResult = Checksum256.hash(Bytes.from(data));
|
|
6490
|
+
const hashBytes = hashResult.array;
|
|
6491
|
+
const extractU32 = (offset) => ((hashBytes[offset] << 24) |
|
|
6492
|
+
(hashBytes[offset + 1] << 16) |
|
|
6493
|
+
(hashBytes[offset + 2] << 8) |
|
|
6494
|
+
hashBytes[offset + 3]) >>>
|
|
6495
|
+
0;
|
|
6496
|
+
return {
|
|
6497
|
+
purity: (extractU32(0) % 1000) + 1,
|
|
6498
|
+
density: (extractU32(4) % 1000) + 1,
|
|
6499
|
+
reactivity: (extractU32(8) % 1000) + 1,
|
|
6500
|
+
resonance: (extractU32(12) % 1000) + 1,
|
|
6501
|
+
};
|
|
6502
|
+
}
|
|
6503
|
+
|
|
6504
|
+
function deriveLocationSize(loc) {
|
|
6505
|
+
if (loc.type.toNumber() === LocationType.EMPTY)
|
|
6506
|
+
return 0;
|
|
6507
|
+
const raw = (loc.seed0.toNumber() << 8) | loc.seed1.toNumber();
|
|
6508
|
+
const normalized = raw / 65535;
|
|
6509
|
+
const curved = Math.pow(normalized, 3.0);
|
|
6510
|
+
const range = LOCATION_MAX_DEPTH - LOCATION_MIN_DEPTH;
|
|
6511
|
+
return Math.floor(LOCATION_MIN_DEPTH + curved * range);
|
|
6512
|
+
}
|
|
6513
|
+
|
|
6073
6514
|
function canMove(e) {
|
|
6074
6515
|
return 'engines' in e && 'generator' in e && 'energy' in e;
|
|
6075
6516
|
}
|
|
@@ -6102,24 +6543,21 @@ function calcLoadDuration(entity, cargoMass) {
|
|
|
6102
6543
|
return UInt32.from(Math.ceil(Number(cargoMass) / totalThrust));
|
|
6103
6544
|
}
|
|
6104
6545
|
|
|
6105
|
-
function
|
|
6106
|
-
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
const
|
|
6110
|
-
|
|
6111
|
-
|
|
6112
|
-
|
|
6113
|
-
|
|
6114
|
-
|
|
6115
|
-
const extractionTime = Math.floor(batchMass / extractor.rate.toNumber());
|
|
6116
|
-
const loadingTime = calc_load_time_internal(loaders, shipZ, batchMass);
|
|
6117
|
-
return UInt32.from(Math.max(extractionTime, loadingTime));
|
|
6546
|
+
function calc_extraction_duration(extractor, cargoMass, stratum, richness) {
|
|
6547
|
+
const rate = extractor.rate.toNumber();
|
|
6548
|
+
const efficiency = extractor.efficiency.toNumber();
|
|
6549
|
+
const drill = extractor.drill.toNumber();
|
|
6550
|
+
const rateProduct = Math.floor((rate * richness * efficiency) / PRECISION);
|
|
6551
|
+
if (rateProduct === 0)
|
|
6552
|
+
return UInt32.from(0);
|
|
6553
|
+
const extractionTime = Math.floor((cargoMass * PRECISION) / rateProduct);
|
|
6554
|
+
const drillTime = Math.floor(stratum / drill);
|
|
6555
|
+
return UInt32.from(extractionTime + drillTime);
|
|
6118
6556
|
}
|
|
6119
6557
|
function calc_extraction_energy(extractor, duration) {
|
|
6120
6558
|
const energy = Math.floor((duration * extractor.drain.toNumber()) / PRECISION);
|
|
6121
6559
|
return UInt16.from(energy);
|
|
6122
6560
|
}
|
|
6123
6561
|
|
|
6124
|
-
export { ActionsManager, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, Container, Coordinates, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET,
|
|
6562
|
+
export { ActionsManager, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, Container, Coordinates, DEPTH_THRESHOLD_COMMON, DEPTH_THRESHOLD_EPIC, DEPTH_THRESHOLD_LEGENDARY, DEPTH_THRESHOLD_RARE, DEPTH_THRESHOLD_UNCOMMON, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GameState, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_EXTRACTOR_DRAIN, INITIAL_EXTRACTOR_EFFICIENCY, INITIAL_EXTRACTOR_RATE, INITIAL_LOADER_MASS, INITIAL_LOADER_QUANTITY, INITIAL_LOADER_THRUST, INITIAL_SHIP_CAPACITY, INITIAL_SHIP_DRAIN, INITIAL_SHIP_ENERGY, INITIAL_SHIP_GENERATOR_CAPACITY, INITIAL_SHIP_HULLMASS, INITIAL_SHIP_MASS, INITIAL_SHIP_RECHARGE, INITIAL_SHIP_THRUST, INITIAL_SHIP_Z, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_DOES_NOT_EXIST, ITEM_NOT_AVAILABLE_AT_LOCATION, InventoryAccessor, Item, ItemPrice, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PRECISION, platform as PlatformContract, Player, PlayersManager, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, Rarities, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, ScheduleAccessor, server as ServerContract, Ship, Shipload, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, TradesManager, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, analyzeCargoSale, analyzeCollectOptions, availableCapacity$1 as availableCapacity, availableCapacityFromMass, calcCargoMass, calcCargoValue, calcEnergyUsage, calcLoadDuration, calc_acceleration, calc_energyusage, calc_extraction_duration, calc_extraction_energy, calc_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateBreakEvenPrice, calculateFlightTime, calculateLoadTimeBreakdown, calculateMaxTradeQuantity, calculateProfitPerMass, calculateProfitPerSecond, calculateROI, calculateRefuelingTime, calculateTradeProfit, calculateTransferTime, calculateUpdatedCargoCost, canMove, capsHasExtractor, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, capsHasTrade, cargoUtils, coordsToLocationId, createExploreOption, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, createSellAndRepositionOption, createSellAndStayOption, createSellAndTradeOption, createTravelToSellOption, Shipload as default, depthScaleFactor, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStratum, distanceBetweenCoordinates, distanceBetweenPoints, energyPercent, estimateDealTravelTime, estimateTravelTime, findBestDeal, findBestItemToTrade, findDealsForShip, findNearbyPlanets, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getPositionAt, getRarity, getResourceRarity, getResourceWeight, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasExtractor, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hasTrade, hash, hash512, isExtractableLocation, isFull$1 as isFull, isFullFromMass, isProfitable, itemIds, lerp, makeContainer, makeShip, makeWarehouse, marketPrice, marketPrices, maxTravelDistance, needsRecharge, projectEntity, projectEntityAt, rotation, schedule, toLocation };
|
|
6125
6563
|
//# sourceMappingURL=shipload.m.js.map
|