@shipload/sdk 2.0.0-rc8 → 2.0.0-rc9

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.js CHANGED
@@ -213,7 +213,7 @@ var platform = /*#__PURE__*/Object.freeze({
213
213
  Contract: Contract$1
214
214
  });
215
215
 
216
- const abiBlob = antelope.Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhWCWFkZG1vZHVsZQAFC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgPbW9kdWxlX2NhcmdvX2lkBnVpbnQ2NA90YXJnZXRfY2FyZ29faWQGdWludDY0B2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgVibGVuZAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BmlucHV0cwxjYXJnb19pdGVtW10GY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIEc2VlZAd1aW50NjQ/B21vZHVsZXMObW9kdWxlX2VudHJ5W10JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BHNlZWQGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10KY2FyZ29fc2VlZAACB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAIAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8LY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/BWNyYWZ0AAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQ1jcmFmdGVyX3N0YXRzAAIFc3BlZWQGdWludDE2BWRyYWluBnVpbnQxNgxjcmVhdGVlbnRpdHkABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWULZW50aXR5X25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAZkZXBsb3kABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NA5wYWNrZWRfaXRlbV9pZAZ1aW50MTYEc2VlZAZ1aW50NjQLZW50aXR5X25hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAxlbmVyZ3lfc3RhdHMAAghjYXBhY2l0eQZ1aW50MTYIcmVjaGFyZ2UGdWludDE2FGVudGl0eV9jdXJyZW50X3N0YXRlAAILY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5BnVpbnQxNg9lbnRpdHlfZGVmYXVsdHMABhJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhF3YXJlaG91c2VfbG9hZGVycwxsb2FkZXJfc3RhdHMSY29udGFpbmVyX2h1bGxtYXNzBnVpbnQzMhJjb250YWluZXJfY2FwYWNpdHkGdWludDMyC2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAXBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/CGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8IY2FwYWNpdHkHdWludDMyPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8HaXNfaWRsZQRib29sDGN1cnJlbnRfdGFzawV0YXNrPxRjdXJyZW50X3Rhc2tfZWxhcHNlZAZ1aW50MzIWY3VycmVudF90YXNrX3JlbWFpbmluZwZ1aW50MzINcGVuZGluZ190YXNrcwZ0YXNrW10HaWRsZV9hdAt0aW1lX3BvaW50PwhzY2hlZHVsZQlzY2hlZHVsZT8KZW50aXR5X3JlZgACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NA5lbnRpdHlfc3VtbWFyeQAIBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXNfaWRsZQRib29sDnJlc29sdmVkX2NvdW50BnVpbnQzMg1wZW5kaW5nX2NvdW50BnVpbnQzMhBlbnRpdHlfdGFza19pbmZvAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lCnRhc2tfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAp0aW1lX3BvaW50D2VudGl0eWdyb3VwX3JvdwACAmlkBnVpbnQ2NAxwYXJ0aWNpcGFudHMMZW50aXR5X3JlZltdB2V4dHJhY3QABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNghxdWFudGl0eQZ1aW50MzIPZXh0cmFjdG9yX3N0YXRzAAQEcmF0ZQZ1aW50MTYFZHJhaW4GdWludDE2BWRlcHRoBnVpbnQxNgVkcmlsbAZ1aW50MTYLZ2FtZV9jb25maWcAAwd2ZXJzaW9uBnVpbnQzMghkZWZhdWx0cw9lbnRpdHlfZGVmYXVsdHMFaXRlbXMKaXRlbV9kZWZbXQlnZXRjb25maWcAAAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CGdldGl0ZW1zAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQKZ2V0bG9jZGF0YQACAXgFaW50NjQBeQVpbnQ2NAlnZXRuZWFyYnkAAwtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIcmVjaGFyZ2UEYm9vbAlnZXRwbGF5ZXIAAQdhY2NvdW50BG5hbWUKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghpdGVtX2RlZgACAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgppdGVtc19pbmZvAAEFaXRlbXMKaXRlbV9kZWZbXQRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgQbG9jYXRpb25fZGVyaXZlZAADDHN0YXRpY19wcm9wcw9sb2NhdGlvbl9zdGF0aWMLZXBvY2hfcHJvcHMObG9jYXRpb25fZXBvY2gEc2l6ZQZ1aW50MTYObG9jYXRpb25fZXBvY2gAAwZhY3RpdmUEYm9vbAVzZWVkMAV1aW50OAVzZWVkMQV1aW50OA1sb2NhdGlvbl9pbmZvAAIGY29vcmRzC2Nvb3JkaW5hdGVzCWlzX3N5c3RlbQRib29sDGxvY2F0aW9uX3JvdwAGAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29faXRlbVtdCHNjaGVkdWxlCXNjaGVkdWxlPw9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgMbW9kdWxlX2VudHJ5AAIEdHlwZQV1aW50OAlpbnN0YWxsZWQLY2FyZ29fc2VlZD8ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50FGVudGl0eV9jdXJyZW50X3N0YXRlCXByb2plY3RlZBRlbnRpdHlfY3VycmVudF9zdGF0ZQptYXhfZW5lcmd5BnVpbnQxNgdzeXN0ZW1zD25lYXJieV9zeXN0ZW1bXQ1uZWFyYnlfc3lzdGVtAAQIZGlzdGFuY2UGdWludDY0C2VuZXJneV9jb3N0BnVpbnQ2NAtmbGlnaHRfdGltZQZ1aW50MzIIbG9jYXRpb24NbG9jYXRpb25faW5mbwZub3RpZnkAAQVldmVudAp0YXNrX2V2ZW50C3BsYXllcl9pbmZvAAYFb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nCnNoaXBfY291bnQGdWludDY0D3dhcmVob3VzZV9jb3VudAZ1aW50NjQPY29udGFpbmVyX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAEFb3duZXIEbmFtZQhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0C3Jlc2VydmVfcm93AAICaWQGdWludDY0CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/DnJlc291cmNlX3N0YXRzAAMFc3RhdDEGdWludDE2BXN0YXQyBnVpbnQxNgVzdGF0MwZ1aW50MTYIcm1tb2R1bGUABAtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4D3RhcmdldF9jYXJnb19pZAZ1aW50NjQEc2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQIc2hpcF9yb3cAEAJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8GZW5lcmd5B3VpbnQxNj8JY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwdsb2FkZXJzDWxvYWRlcl9zdGF0cz8JZXh0cmFjdG9yEGV4dHJhY3Rvcl9zdGF0cz8Ed2FycAt3YXJwX3N0YXRzPwdjcmFmdGVyDmNyYWZ0ZXJfc3RhdHM/B21vZHVsZXMObW9kdWxlX2VudHJ5W10Ic2NoZWR1bGUJc2NoZWR1bGU/CnNwYXduY2FyZ28AAwllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAtzcGF3bnNlZWRlZAAECWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BHNlZWQGdWludDY0CXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50MzIEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAEB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgR0YXNrAAgEdHlwZQV1aW50OAhkdXJhdGlvbgZ1aW50MzIKY2FuY2VsYWJsZQV1aW50OAtjb29yZGluYXRlcwxjb29yZGluYXRlcz8FY2FyZ28MY2FyZ29faXRlbVtdDGVudGl0eXRhcmdldAtlbnRpdHlfcmVmPwtlbnRpdHlncm91cAd1aW50NjQ/C2VuZXJneV9jb3N0B3VpbnQxNj8KdGFza19ldmVudAAJCmV2ZW50X3R5cGUFdWludDgFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DHRhc2tfcmVzdWx0cwABCGVudGl0aWVzEmVudGl0eV90YXNrX2luZm9bXQh0cmFuc2ZlcgAGC3NvdXJjZV90eXBlBG5hbWUJc291cmNlX2lkBnVpbnQ2NAlkZXN0X3R5cGUEbmFtZQdkZXN0X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGdHJhdmVsAAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93AAMCaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkQZ2FtZV9jb25maWdfdHlwZQtnYW1lX2NvbmZpZw13YXJlaG91c2Vfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIY2FwYWNpdHkGdWludDMyCWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdhcnAABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQKd2FycF9zdGF0cwABBXJhbmdlBnVpbnQzMgR3aXBlAAAMd2lwZXNlcXVlbmNlAAAoAABQUScqUzIJYWRkbW9kdWxlAAAAAEChaXYyB2FkdmFuY2XTAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZHZhbmNlCnN1bW1hcnk6ICdBZHZhbmNlIHR1cm4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkdmFuY2UgdGhlIGdhbWUgdG8gdGhlIG5leHQgdHVybi4AAAAAgDRVPAVibGVuZAAAAAAARIWmQQZjYW5jZWzHAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjYW5jZWwKc3VtbWFyeTogJ0NhbmNlbCBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbmNlbCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0YXNrcyBmcm9tIHRoZSBlbmQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUuIFRhc2tzIHRoYXQgYXJlIGltbXV0YWJsZSBhbmQgaW4gcHJvZ3Jlc3MgY2Fubm90IGJlIGNhbmNlbGxlZC4KCi0tLQAAqBvfaVRECWNsZWFucnN2cAAAgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl08QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgoKLS0tAABgNDK3JkUJY29uZmlnbG9nAAAAAACAvMxFBWNyYWZ0AOCzy1OpbNRFDGNyZWF0ZWVudGl0eQAAAAAAeBqrSgZkZXBsb3kAAAAAAKh4zFQGZW5hYmxl4gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdTZXQgZW5hYmxlZCBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBnYW1lIG9mIFNoaXBsb2FkLgoKLS0tAAAAICNzc1cHZXh0cmFjdKEDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGV4dHJhY3QKc3VtbWFyeTogJ0V4dHJhY3QgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFeHRyYWN0IHJlc291cmNlcyBhdCB0aGUgc2hpcCdzIGN1cnJlbnQgbG9jYXRpb24uIE9ubHkgd29ya3MgYXQgZXh0cmFjdGFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhbiBleHRyYWN0aW9uIHRhc2sgdGhhdCBjb25zdW1lcyBlbmVyZ3kgYW5kIHlpZWxkcyBjYXJnbyBiYXNlZCBvbiB0aGUgc2hpcCdzIGV4dHJhY3RvciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAABgbk2KsmIJZ2V0Y29uZmlnAACwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLgAAAFiq7LJiCGdldGl0ZW1zmgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgaXRlbXMgaW4gdGhlIGdhbWUgaW5jbHVkaW5nIHRoZWlyIGlkLCBiYXNlIHByaWNlLCBhbmQgbWFzcy4AJnXZIBqzYgtnZXRsb2NhdGlvbuICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2F0aW9uCnN1bW1hcnk6ICdHZXQgbG9jYXRpb24gaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NhdGlvbiBpbmNsdWRpbmcgd2hldGhlciBhIHN5c3RlbSBleGlzdHMsIGFuZCBmb3IgZWFjaCBpdGVtOiBwcmljZSwgc3VwcGx5LCByYXJpdHkgbXVsdGlwbGllciwgYW5kIGxvY2F0aW9uIG11bHRpcGxpZXIuAIDJJiEas2IKZ2V0bG9jZGF0Yf4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2RhdGEKc3VtbWFyeTogJ0dldCBkZXJpdmVkIGxvY2F0aW9uIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgZGVyaXZlZCBsb2NhdGlvbiBkYXRhIGluY2x1ZGluZyBzdGF0aWMgcHJvcGVydGllcyAodHlwZSwgZGlmZmljdWx0eSwgc2VlZHMpIGZyb20gdGhlIGdhbWUgc2VlZCBhbmQgZXBvY2gtc3BlY2lmaWMgcHJvcGVydGllcyAoYWN0aXZlLCBzZWVkcykgZnJvbSB0aGUgY3VycmVudCBlcG9jaCBzZWVkLgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUuAIDU2dyMs2IKZ2V0c3RyYXR1bQCAlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgCi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaP0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4KCi0tLQAAAECE0rBpB2hhc2g1MTL7AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoNTEyCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhNTEyIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTUxMiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuAAAAAACQ3XQEaW5pdPoBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGluaXQKc3VtbWFyeTogJ0luaXRpYWxpemUgZ2FtZSBzZWVkJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWFsaXplIGEgdGhlIGdhbWVzIHNlZWQgYW5kIHNlZWQgdmFsdWVzIHRvIGJvb3RzdHJhcCBnYW1lIHN0YXRlLgAAAAAAMB19BGpvaW7JAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBqb2luCnN1bW1hcnk6ICdKb2luIGEgZ2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSm9pbiBhIGdhbWUgb2YgU2hpcGxvYWQKCi0tLQAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXVAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuCgotLS0AAAAq6kSlvAhybW1vZHVsZQAAAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAZdegyU3FCnNwYXduY2FyZ28AAJJKSuHJTcULc3Bhd25zZWVkZWQAAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbMsCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBpdGVtcyBhdCBhIGdpdmVuIGxvY2F0aW9uLgAAAAAAUK/hBHdhcnAAAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0LAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAC4ajqTJ0UDaTY0AAANY29udGFpbmVyX3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAAJO6bBCNA2k2NAAADGxvY2F0aW9uX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAABA7auwugNpNjQAAAtyZXNlcnZlX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAWAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAAgLzMRQx0YXNrX3Jlc3VsdHMAAAAAeBqrSgx0YXNrX3Jlc3VsdHMAAAAgI3NzVwx0YXNrX3Jlc3VsdHMAAGBuTYqyYgtnYW1lX2NvbmZpZwCwctnlqbJiDWVudGl0eV9pbmZvW10AAPDZ5amyYgtlbnRpdHlfaW5mbwAAAFiq7LJiCml0ZW1zX2luZm8AJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZAAA8OcaNbNiC25lYXJieV9pbmZvAAC4yptYs2ILcGxheWVyX2luZm8AgNTZ3IyzYgxzdHJhdHVtX2RhdGGAlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAKLa5uaq6WUMdGFza19yZXN1bHRzAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cwAAAAAAUK/hDHRhc2tfcmVzdWx0cw==');
216
+ const abiBlob = antelope.Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhxCWFkZG1vZHVsZQAFC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgPbW9kdWxlX2NhcmdvX2lkBnVpbnQ2NA90YXJnZXRfY2FyZ29faWQGdWludDY0CGFkZG5leHVzAAMKbmV4dXNfbmFtZQZzdHJpbmcBeAVpbnQ2NAF5BWludDY0B2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgVibGVuZAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BmlucHV0cwxjYXJnb19pdGVtW10GY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIEc2VlZAd1aW50NjQ/B21vZHVsZXMObW9kdWxlX2VudHJ5W10JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BHNlZWQGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10KY2FyZ29fc2VlZAACB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAIAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8LY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/BWNyYWZ0AAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQ1jcmFmdGVyX3N0YXRzAAIFc3BlZWQGdWludDE2BWRyYWluBnVpbnQxNgxjcmVhdGVlbnRpdHkABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWULZW50aXR5X25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAZkZXBsb3kABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NA5wYWNrZWRfaXRlbV9pZAZ1aW50MTYEc2VlZAZ1aW50NjQLZW50aXR5X25hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAxlbmVyZ3lfc3RhdHMAAghjYXBhY2l0eQZ1aW50MTYIcmVjaGFyZ2UGdWludDE2FGVudGl0eV9jdXJyZW50X3N0YXRlAAILY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5BnVpbnQxNg9lbnRpdHlfZGVmYXVsdHMABRJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhJjb250YWluZXJfaHVsbG1hc3MGdWludDMyEmNvbnRhaW5lcl9jYXBhY2l0eQZ1aW50MzILY29udGFpbmVyX3oGdWludDE2C2VudGl0eV9pbmZvABcEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQdsb2FkZXJzDWxvYWRlcl9zdGF0cz8GZW5lcmd5B3VpbnQxNj8IaHVsbG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwdpc19pZGxlBGJvb2wMY3VycmVudF90YXNrBXRhc2s/FGN1cnJlbnRfdGFza19lbGFwc2VkBnVpbnQzMhZjdXJyZW50X3Rhc2tfcmVtYWluaW5nBnVpbnQzMg1wZW5kaW5nX3Rhc2tzBnRhc2tbXQdpZGxlX2F0C3RpbWVfcG9pbnQ/CHNjaGVkdWxlCXNjaGVkdWxlPwplbnRpdHlfcmVmAAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkCnRpbWVfcG9pbnQPZW50aXR5Z3JvdXBfcm93AAICaWQGdWludDY0DHBhcnRpY2lwYW50cwxlbnRpdHlfcmVmW10HZXh0cmFjdAAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B3N0cmF0dW0GdWludDE2CHF1YW50aXR5BnVpbnQzMg9leHRyYWN0b3Jfc3RhdHMABARyYXRlBnVpbnQxNgVkcmFpbgZ1aW50MTYFZGVwdGgGdWludDE2BWRyaWxsBnVpbnQxNgtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdCWdldGNvbmZpZwAAC2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQLZ2V0aXRlbWRhdGEAAAhnZXRpdGVtcwAAC2dldGxvY2F0aW9uAAIBeAVpbnQ2NAF5BWludDY0CmdldGxvY2RhdGEAAgF4BWludDY0AXkFaW50NjQKZ2V0bW9kdWxlcwAACWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCmdldG5mdGluZm8AAAlnZXRwbGF5ZXIAAQdhY2NvdW50BG5hbWUJZ2V0cmVjaXBlAAEOb3V0cHV0X2l0ZW1faWQGdWludDE2CmdldHJlY2lwZXMAAgtsb3dlcl9ib3VuZAZ1aW50MTYFbGltaXQFdWludDgMZ2V0cmVzb3VyY2VzAAAKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghpdGVtX2RlZgAFAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgR0eXBlBXVpbnQ4B3N1YnR5cGUFdWludDgEdGllcgV1aW50OA9pdGVtZGF0YV9yZXN1bHQAAgVpdGVtcwppdGVtX2RlZltdB3JlY2lwZXMOcmVjaXBlc19yZXN1bHQKaXRlbXNfaW5mbwABBWl0ZW1zCml0ZW1fZGVmW10Eam9pbgABB2FjY291bnQEbmFtZQxsb2FkZXJfc3RhdHMAAwRtYXNzBnVpbnQzMgZ0aHJ1c3QGdWludDE2CHF1YW50aXR5BXVpbnQ4EGxvY2F0aW9uX2Rlcml2ZWQAAwxzdGF0aWNfcHJvcHMPbG9jYXRpb25fc3RhdGljC2Vwb2NoX3Byb3BzDmxvY2F0aW9uX2Vwb2NoBHNpemUGdWludDE2DmxvY2F0aW9uX2Vwb2NoAAMGYWN0aXZlBGJvb2wFc2VlZDAFdWludDgFc2VlZDEFdWludDgNbG9jYXRpb25faW5mbwACBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAxsb2NhdGlvbl9yb3cABgJpZAZ1aW50NjQFb3duZXIEbmFtZQtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQhzY2hlZHVsZQlzY2hlZHVsZT8PbG9jYXRpb25fc3RhdGljAAUGY29vcmRzC2Nvb3JkaW5hdGVzBHR5cGUNbG9jYXRpb25fdHlwZQdzdWJ0eXBlBXVpbnQ4BXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DG1vZHVsZV9lbnRyeQACBHR5cGUFdWludDgJaW5zdGFsbGVkC2NhcmdvX3NlZWQ/C21vZHVsZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyC21vZHVsZV90eXBlBXVpbnQ4BHRpZXIFdWludDgObW9kdWxlc19yZXN1bHQAAQdtb2R1bGVzDW1vZHVsZV9pbmZvW10ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50FGVudGl0eV9jdXJyZW50X3N0YXRlCXByb2plY3RlZBRlbnRpdHlfY3VycmVudF9zdGF0ZQptYXhfZW5lcmd5BnVpbnQxNgdzeXN0ZW1zD25lYXJieV9zeXN0ZW1bXQ1uZWFyYnlfc3lzdGVtAAQIZGlzdGFuY2UGdWludDY0C2VuZXJneV9jb3N0BnVpbnQ2NAtmbGlnaHRfdGltZQZ1aW50MzIIbG9jYXRpb24NbG9jYXRpb25faW5mbwluZXh1c19yb3cABAJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcw5uZnRfc2NoZW1hX2RlZgACC3NjaGVtYV9uYW1lBG5hbWUGZmllbGRzDnNjaGVtYV9maWVsZFtdEG5mdF90ZW1wbGF0ZV9kZWYAAgdpdGVtX2lkBnVpbnQxNgtzY2hlbWFfbmFtZQRuYW1lDW5mdGNvbmZpZ19yb3cAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lDm5mdGluZm9fcmVzdWx0AAIHc2NoZW1hcxBuZnRfc2NoZW1hX2RlZltdCXRlbXBsYXRlcxJuZnRfdGVtcGxhdGVfZGVmW10Gbm90aWZ5AAEFZXZlbnQKdGFza19ldmVudAtwbGF5ZXJfaW5mbwAGBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwpzaGlwX2NvdW50BnVpbnQ2NA93YXJlaG91c2VfY291bnQGdWludDY0D2NvbnRhaW5lcl9jb3VudAZ1aW50NjQKcGxheWVyX3JvdwABBW93bmVyBG5hbWUIcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAxyZWNpcGVfaW5wdXQAAwdpdGVtX2lkBnVpbnQxNghjYXRlZ29yeQV1aW50OAhxdWFudGl0eQZ1aW50MzIQcmVjaXBlX2l0ZW1faW5mbwACAmlkBnVpbnQxNgRtYXNzBnVpbnQzMg9yZWNpcGVfcmVzcG9uc2UABw5vdXRwdXRfaXRlbV9pZAZ1aW50MTYLb3V0cHV0X21hc3MGdWludDMyBmlucHV0cw5yZWNpcGVfaW5wdXRbXQpzdGF0X3Nsb3RzFHN0YXRfc2xvdF9yZXNwb25zZVtdDWJsZW5kX3dlaWdodHMFYnl0ZXMLb3V0cHV0X2l0ZW0QcmVjaXBlX2l0ZW1faW5mbwtpbnB1dF9pdGVtcxJyZWNpcGVfaXRlbV9pbmZvW10OcmVjaXBlc19yZXN1bHQAAQdyZWNpcGVzEXJlY2lwZV9yZXNwb25zZVtdC3Jlc2VydmVfcm93AAICaWQGdWludDY0CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/DXJlc291cmNlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzIIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OA5yZXNvdXJjZV9zdGF0cwADBXN0YXQxBnVpbnQxNgVzdGF0MgZ1aW50MTYFc3RhdDMGdWludDE2EHJlc291cmNlc19yZXN1bHQAAQlyZXNvdXJjZXMPcmVzb3VyY2VfaW5mb1tdCHJtbW9kdWxlAAQLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OA90YXJnZXRfY2FyZ29faWQGdWludDY0CHJtbmZ0Y2ZnAAEHaXRlbV9pZAZ1aW50MTYEc2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzY2hlbWFfZmllbGQAAgRuYW1lBnN0cmluZwpmaWVsZF90eXBlBnN0cmluZwxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQJc2V0bmZ0Y2ZnAAMHaXRlbV9pZAZ1aW50MTYLdGVtcGxhdGVfaWQFaW50MzILc2NoZW1hX25hbWUEbmFtZQhzaGlwX3JvdwARAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBHNlZWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzB3VpbnQzMj8IY2FwYWNpdHkHdWludDMyPwZlbmVyZ3kHdWludDE2PwljYXJnb21hc3MGdWludDMyB2VuZ2luZXMPbW92ZW1lbnRfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/B2xvYWRlcnMNbG9hZGVyX3N0YXRzPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8Kc3Bhd25jYXJnbwADCWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0C3NwYXduc2VlZGVkAAQJZW50aXR5X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQEc2VlZAZ1aW50NjQSc3RhdF9zbG90X3Jlc3BvbnNlAAEHc291cmNlcw1zdGF0X3NvdXJjZVtdC3N0YXRfc291cmNlAAILaW5wdXRfaW5kZXgFdWludDgQaW5wdXRfc3RhdF9pbmRleAV1aW50OAlzdGF0ZV9yb3cABgdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNhbHQGdWludDY0BXNoaXBzBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2BmNvbW1pdAtjaGVja3N1bTI1NgxzdHJhdHVtX2RhdGEAAgdzdHJhdHVtDHN0cmF0dW1faW5mbwVzdGF0cw5yZXNvdXJjZV9zdGF0cwxzdHJhdHVtX2luZm8ABAdpdGVtX2lkBnVpbnQxNgRzZWVkBnVpbnQ2NAhyaWNobmVzcwZ1aW50MTYHcmVzZXJ2ZQZ1aW50MzIEdGFzawAIBHR5cGUFdWludDgIZHVyYXRpb24GdWludDMyCmNhbmNlbGFibGUFdWludDgLY29vcmRpbmF0ZXMMY29vcmRpbmF0ZXM/BWNhcmdvDGNhcmdvX2l0ZW1bXQxlbnRpdHl0YXJnZXQLZW50aXR5X3JlZj8LZW50aXR5Z3JvdXAHdWludDY0PwtlbmVyZ3lfY29zdAd1aW50MTY/CnRhc2tfZXZlbnQACQpldmVudF90eXBlBXVpbnQ4BW93bmVyBG5hbWULZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CnRhc2tfaW5kZXgFdWludDgEdGFzawR0YXNrCXN0YXJ0c19hdAp0aW1lX3BvaW50DGNvbXBsZXRlc19hdAp0aW1lX3BvaW50Cm5ld19lbmVyZ3kHdWludDE2Pwx0YXNrX3Jlc3VsdHMAAQhlbnRpdGllcxJlbnRpdHlfdGFza19pbmZvW10IdHJhbnNmZXIABgtzb3VyY2VfdHlwZQRuYW1lCXNvdXJjZV9pZAZ1aW50NjQJZGVzdF90eXBlBG5hbWUHZGVzdF9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBnRyYXZlbAAFC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sCXR5cGVzX3JvdwADAmlkBnVpbnQ2NBNlbnRpdHlfc3VtbWFyeV90eXBlDmVudGl0eV9zdW1tYXJ5EGdhbWVfY29uZmlnX3R5cGULZ2FtZV9jb25maWcNd2FyZWhvdXNlX3JvdwALAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBHNlZWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzB3VpbnQzMj8IY2FwYWNpdHkHdWludDMyPwljYXJnb21hc3MGdWludDMyB2xvYWRlcnMNbG9hZGVyX3N0YXRzPwdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHNjaGVkdWxlCXNjaGVkdWxlPwR3YXJwAAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CndhcnBfc3RhdHMAAQVyYW5nZQZ1aW50MzIEd2lwZQAADHdpcGVzZXF1ZW5jZQAABHdyYXAABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhjYXJnb19pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0MgAAUFEnKlMyCWFkZG1vZHVsZccDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkZG1vZHVsZQpzdW1tYXJ5OiAnSW5zdGFsbCBhIG1vZHVsZSBpbnRvIGEgc2xvdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5zdGFsbCBhIG1vZHVsZSBmcm9tIGNhcmdvIGludG8gYSBtb2R1bGUgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgdHlwZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0IHNsb3QgdHlwZS4gVGhlIG1vZHVsZSBpdGVtIGlzIHJlbW92ZWQgZnJvbSBjYXJnbyB1cG9uIGluc3RhbGxhdGlvbi4AAABYdzVTMghhZGRuZXh1cwAAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAAIA0VTwFYmxlbmT9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBibGVuZApzdW1tYXJ5OiAnQmxlbmQgY2FyZ28gc3RhY2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDb21iaW5lIG11bHRpcGxlIGNhcmdvIHN0YWNrcyBvZiB0aGUgc2FtZSBpdGVtIHR5cGUgaW50byBhIHNpbmdsZSBzdGFjayB3aXRoIGEgbmV3IGJsZW5kZWQgc2VlZC4gQWxsIGlucHV0IHN0YWNrcyBtdXN0IHNoYXJlIHRoZSBzYW1lIGl0ZW0gaWQuIFRoZSBvdXRwdXQgc3RhY2sgaGFzIHRoZSBjb21iaW5lZCBxdWFudGl0eSBvZiBhbGwgaW5wdXRzLgAAAABEhaZBBmNhbmNlbMICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNhbmNlbApzdW1tYXJ5OiAnQ2FuY2VsIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FuY2VsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGZyb20gdGhlIGVuZCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZS4gVGFza3MgdGhhdCBhcmUgaW1tdXRhYmxlIGFuZCBpbiBwcm9ncmVzcyBjYW5ub3QgYmUgY2FuY2VsbGVkLgAAqBvfaVRECWNsZWFucnN2cOwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFucnN2cApzdW1tYXJ5OiAnQ2xlYW4gdXAgcGFzdCBlcG9jaCByZXNlcnZlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXJhc2UgcmVzZXJ2ZSB0YWJsZSByb3dzIGZyb20gYSBwYXN0IGVwb2NoLiBDYW5ub3QgY2xlYW4gdGhlIGN1cnJlbnQgb3IgZnV0dXJlIGVwb2Nocy4gVGhlIG1heF9yb3dzIHBhcmFtZXRlciBjYXBzIHRoZSBudW1iZXIgb2Ygcm93cyBlcmFzZWQgcGVyIGNhbGwgdG8gbGltaXQgQ1BVIHVzYWdlLgCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAZCclRQZjb21taXTsAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb21taXQKc3VtbWFyeTogJ1NldCBjb21taXQgdmFsdWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNldCB0aGUgaW5pdGlhbCBjb21taXQgdmFsdWUgZHVyaW5nIGdhbWUgaW5pdGlhbGl6YXRpb24uAABgNDK3JkUJY29uZmlnbG9n3QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29uZmlnbG9nCnN1bW1hcnk6ICdMb2cgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBsb2dzIHRoZSBjdXJyZW50IGdhbWUgY29uZmlndXJhdGlvbi4gQ2FsbGVkIGlubGluZSBhZnRlciBpbml0aWFsaXphdGlvbiB0byBicm9hZGNhc3QgY29uZmlnIHZpYSBhY3Rpb24gdHJhY2VzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAIC8zEUFY3JhZnTIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmFmdApzdW1tYXJ5OiAnQ3JhZnQgaXRlbXMgZnJvbSBhIHJlY2lwZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmb3JtIGNhcmdvIGl0ZW1zIGludG8gYSBuZXcgaXRlbSB1c2luZyBhIHJlY2lwZS4gVGhlIGVudGl0eSBtdXN0IGhhdmUgYSBjcmFmdGVyIG1vZHVsZSBpbnN0YWxsZWQuIENvbnN1bWVzIGVuZXJneSBhbmQgc2NoZWR1bGVzIGEgY3JhZnRpbmcgdGFzayB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIHRvdGFsIGlucHV0IG1hc3MgYW5kIGNyYWZ0ZXIgc3BlZWQuIElucHV0IHF1YW50aXRpZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSByZWNpcGUgcmVxdWlyZW1lbnRzLuCzy1OpbNRFDGNyZWF0ZWVudGl0eb8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNyZWF0ZWVudGl0eQpzdW1tYXJ5OiAnREVCVUc6IGNyZWF0ZSBhbiBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAeBqrSgZkZXBsb3nsAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXBsb3kKc3VtbWFyeTogJ0RlcGxveSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClVucGFjayBhIHBhY2tlZCBlbnRpdHkgaXRlbSAocGFja2VkIHNoaXAgb3IgcGFja2VkIGNvbnRhaW5lcikgZnJvbSBjYXJnbywgc2NoZWR1bGluZyBhIGRlcGxveSB0YXNrIHRoYXQgY3JlYXRlcyB0aGUgbmV3IGVudGl0eSBhdCB0aGUgZGVwbG95aW5nIGVudGl0eSdzIGxvY2F0aW9uIHVwb24gcmVzb2x1dGlvbi4AAAAAqHjMVAZlbmFibGXdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQuAAAAICNzc1cHZXh0cmFjdKEDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGV4dHJhY3QKc3VtbWFyeTogJ0V4dHJhY3QgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFeHRyYWN0IHJlc291cmNlcyBhdCB0aGUgc2hpcCdzIGN1cnJlbnQgbG9jYXRpb24uIE9ubHkgd29ya3MgYXQgZXh0cmFjdGFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhbiBleHRyYWN0aW9uIHRhc2sgdGhhdCBjb25zdW1lcyBlbmVyZ3kgYW5kIHlpZWxkcyBjYXJnbyBiYXNlZCBvbiB0aGUgc2hpcCdzIGV4dHJhY3RvciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAABgbk2KsmIJZ2V0Y29uZmlnygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Y29uZmlnCnN1bW1hcnk6ICdHZXQgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBnYW1lIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGRlZmF1bHQgZW50aXR5IHN0YXRzIGZvciB3YXJlaG91c2VzIGFuZCBjb250YWluZXJzLCBhbmQgdGhlIGZ1bGwgaXRlbSBkZWZpbml0aW9ucyB0YWJsZS4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4ATDZJquyyYgtnZXRpdGVtZGF0YQAAAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggaXRlbTogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgCAySYhGrNiCmdldGxvY2RhdGH+Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NkYXRhCnN1bW1hcnk6ICdHZXQgZGVyaXZlZCBsb2NhdGlvbiBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGRlcml2ZWQgbG9jYXRpb24gZGF0YSBpbmNsdWRpbmcgc3RhdGljIHByb3BlcnRpZXMgKHR5cGUsIGRpZmZpY3VsdHksIHNlZWRzKSBmcm9tIHRoZSBnYW1lIHNlZWQgYW5kIGVwb2NoLXNwZWNpZmljIHByb3BlcnRpZXMgKGFjdGl2ZSwgc2VlZHMpIGZyb20gdGhlIGN1cnJlbnQgZXBvY2ggc2VlZC4AAFZRJyqzYgpnZXRtb2R1bGVzAAAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAXdPlNbNiCmdldG5mdGluZm8AAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AAFDVIXWzYglnZXRyZWNpcGUAAABW1SF1s2IKZ2V0cmVjaXBlcwCAFbqaYnWzYgxnZXRyZXNvdXJjZXMAAIDU2dyMs2IKZ2V0c3RyYXR1bdICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN0cmF0dW0Kc3VtbWFyeTogJ0dldCByZXNvdXJjZSBzdHJhdHVtIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhIGZvciBhIHNwZWNpZmljIGRlcHRoIGxheWVyIGF0IGEgY29vcmRpbmF0ZSwgaW5jbHVkaW5nIHRoZSBzdHJhdHVtIHNlZWQgaW5mbyBhbmQgZGVyaXZlZCByZXNvdXJjZSBzdGF0cy6AlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgCi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaPgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAABAhNKwaQdoYXNoNTEy+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaDUxMgpzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTUxMiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGE1MTIgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAAAAkN10BGluaXT6AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0CnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAil3TkLoIcmVjaGFyZ2XNAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZWNoYXJnZQpzdW1tYXJ5OiAnUmVjaGFyZ2Ugc2hpcCBlbmVyZ3knCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNjaGVkdWxlIGEgcmVjaGFyZ2UgdGFzayBmb3IgYW4gZW50aXR5IHRvIHJlc3RvcmUgZW5lcmd5IHRvIGZ1bGwgY2FwYWNpdHkuIFRoZSByZWNoYXJnZSBkdXJhdGlvbiBkZXBlbmRzIG9uIGN1cnJlbnQgZW5lcmd5IGxldmVsIGFuZCByZWNoYXJnZSByYXRlLgAAAEDtSLG6B3Jlc29sdmXQAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuAAAAKupEpbwIcm1tb2R1bGW8Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW1vZHVsZQpzdW1tYXJ5OiAnUmVtb3ZlIGEgbW9kdWxlIGZyb20gYSBzbG90JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgYW4gaW5zdGFsbGVkIG1vZHVsZSBmcm9tIGEgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgaXMgcmV0dXJuZWQgdG8gY2FyZ28uIEZhaWxzIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgaGF2ZSBlbm91Z2ggY2FyZ28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgcmV0dXJuZWQgbW9kdWxlLgAAAGyhvKa8CHJtbmZ0Y2ZnAAAAAAAAkKPBBHNhbHTYAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgAAYAvlNbPCCXNldG5mdGNmZwAAAGXXoMlNxQpzcGF3bmNhcmdvxQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Bhd25jYXJnbwpzdW1tYXJ5OiAnREVCVUc6IHNwYXduIGNhcmdvIG9uIGFuIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQCSSkrhyU3FC3NwYXduc2VlZGVkzQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Bhd25zZWVkZWQKc3VtbWFyeTogJ0RFQlVHOiBzcGF3biBzZWVkZWQgY2FyZ28gb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbPsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4AAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAFDN5QR3cmFwAA0AAAAAAMquQQNpNjQAAAljYXJnb19yb3cAALhqOpMnRQNpNjQAAA1jb250YWluZXJfcm93AKqml/ns8lQDaTY0AAAPZW50aXR5Z3JvdXBfcm93AAAAk7psEI0DaTY0AAAMbG9jYXRpb25fcm93AAAAAACsu5oDaTY0AAAJbmV4dXNfcm93AABgbk2K8poDaTY0AAANbmZ0Y29uZmlnX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAABA7auwugNpNjQAAAtyZXNlcnZlX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAdAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAAgLzMRQx0YXNrX3Jlc3VsdHMAAAAAeBqrSgx0YXNrX3Jlc3VsdHMAAAAgI3NzVwx0YXNrX3Jlc3VsdHMAAGBuTYqyYgtnYW1lX2NvbmZpZwCwctnlqbJiDWVudGl0eV9pbmZvW10AAPDZ5amyYgtlbnRpdHlfaW5mbwBMNkmq7LJiD2l0ZW1kYXRhX3Jlc3VsdAAAAFiq7LJiCml0ZW1zX2luZm8AJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZAAAVlEnKrNiDm1vZHVsZXNfcmVzdWx0AADw5xo1s2ILbmVhcmJ5X2luZm8AAF3T5TWzYg5uZnRpbmZvX3Jlc3VsdAAAuMqbWLNiC3BsYXllcl9pbmZvAABQ1SF1s2IOcmVjaXBlc19yZXN1bHQAAFbVIXWzYg5yZWNpcGVzX3Jlc3VsdIAVuppidbNiEHJlc291cmNlc19yZXN1bHQAgNTZ3IyzYgxzdHJhdHVtX2RhdGGAlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAKLa5uaq6WUMdGFza19yZXN1bHRzAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cwAAAAAAUK/hDHRhc2tfcmVzdWx0cwAAAAAAUM3lDHRhc2tfcmVzdWx0cw==');
217
217
  const abi = antelope.ABI.from(abiBlob);
218
218
  var Types;
219
219
  (function (Types) {
@@ -238,6 +238,21 @@ var Types;
238
238
  antelope.Struct.type('addmodule')
239
239
  ], addmodule);
240
240
  Types.addmodule = addmodule;
241
+ let addnexus = class addnexus extends antelope.Struct {
242
+ };
243
+ tslib.__decorate([
244
+ antelope.Struct.field('string')
245
+ ], addnexus.prototype, "nexus_name", void 0);
246
+ tslib.__decorate([
247
+ antelope.Struct.field(antelope.Int64)
248
+ ], addnexus.prototype, "x", void 0);
249
+ tslib.__decorate([
250
+ antelope.Struct.field(antelope.Int64)
251
+ ], addnexus.prototype, "y", void 0);
252
+ addnexus = tslib.__decorate([
253
+ antelope.Struct.type('addnexus')
254
+ ], addnexus);
255
+ Types.addnexus = addnexus;
241
256
  let advance = class advance extends antelope.Struct {
242
257
  };
243
258
  tslib.__decorate([
@@ -418,21 +433,6 @@ var Types;
418
433
  antelope.Struct.type('commit')
419
434
  ], commit);
420
435
  Types.commit = commit;
421
- let loader_stats = class loader_stats extends antelope.Struct {
422
- };
423
- tslib.__decorate([
424
- antelope.Struct.field(antelope.UInt32)
425
- ], loader_stats.prototype, "mass", void 0);
426
- tslib.__decorate([
427
- antelope.Struct.field(antelope.UInt16)
428
- ], loader_stats.prototype, "thrust", void 0);
429
- tslib.__decorate([
430
- antelope.Struct.field(antelope.UInt8)
431
- ], loader_stats.prototype, "quantity", void 0);
432
- loader_stats = tslib.__decorate([
433
- antelope.Struct.type('loader_stats')
434
- ], loader_stats);
435
- Types.loader_stats = loader_stats;
436
436
  let entity_defaults = class entity_defaults extends antelope.Struct {
437
437
  };
438
438
  tslib.__decorate([
@@ -441,9 +441,6 @@ var Types;
441
441
  tslib.__decorate([
442
442
  antelope.Struct.field(antelope.UInt16)
443
443
  ], entity_defaults.prototype, "warehouse_z", void 0);
444
- tslib.__decorate([
445
- antelope.Struct.field(loader_stats)
446
- ], entity_defaults.prototype, "warehouse_loaders", void 0);
447
444
  tslib.__decorate([
448
445
  antelope.Struct.field(antelope.UInt32)
449
446
  ], entity_defaults.prototype, "container_hullmass", void 0);
@@ -465,6 +462,15 @@ var Types;
465
462
  tslib.__decorate([
466
463
  antelope.Struct.field(antelope.UInt32)
467
464
  ], item_def.prototype, "mass", void 0);
465
+ tslib.__decorate([
466
+ antelope.Struct.field(antelope.UInt8)
467
+ ], item_def.prototype, "type", void 0);
468
+ tslib.__decorate([
469
+ antelope.Struct.field(antelope.UInt8)
470
+ ], item_def.prototype, "subtype", void 0);
471
+ tslib.__decorate([
472
+ antelope.Struct.field(antelope.UInt8)
473
+ ], item_def.prototype, "tier", void 0);
468
474
  item_def = tslib.__decorate([
469
475
  antelope.Struct.type('item_def')
470
476
  ], item_def);
@@ -688,6 +694,21 @@ var Types;
688
694
  antelope.Struct.type('entity_current_state')
689
695
  ], entity_current_state);
690
696
  Types.entity_current_state = entity_current_state;
697
+ let loader_stats = class loader_stats extends antelope.Struct {
698
+ };
699
+ tslib.__decorate([
700
+ antelope.Struct.field(antelope.UInt32)
701
+ ], loader_stats.prototype, "mass", void 0);
702
+ tslib.__decorate([
703
+ antelope.Struct.field(antelope.UInt16)
704
+ ], loader_stats.prototype, "thrust", void 0);
705
+ tslib.__decorate([
706
+ antelope.Struct.field(antelope.UInt8)
707
+ ], loader_stats.prototype, "quantity", void 0);
708
+ loader_stats = tslib.__decorate([
709
+ antelope.Struct.type('loader_stats')
710
+ ], loader_stats);
711
+ Types.loader_stats = loader_stats;
691
712
  let movement_stats = class movement_stats extends antelope.Struct {
692
713
  };
693
714
  tslib.__decorate([
@@ -910,6 +931,12 @@ var Types;
910
931
  antelope.Struct.type('getentity')
911
932
  ], getentity);
912
933
  Types.getentity = getentity;
934
+ let getitemdata = class getitemdata extends antelope.Struct {
935
+ };
936
+ getitemdata = tslib.__decorate([
937
+ antelope.Struct.type('getitemdata')
938
+ ], getitemdata);
939
+ Types.getitemdata = getitemdata;
913
940
  let getitems = class getitems extends antelope.Struct {
914
941
  };
915
942
  getitems = tslib.__decorate([
@@ -940,6 +967,12 @@ var Types;
940
967
  antelope.Struct.type('getlocdata')
941
968
  ], getlocdata);
942
969
  Types.getlocdata = getlocdata;
970
+ let getmodules = class getmodules extends antelope.Struct {
971
+ };
972
+ getmodules = tslib.__decorate([
973
+ antelope.Struct.type('getmodules')
974
+ ], getmodules);
975
+ Types.getmodules = getmodules;
943
976
  let getnearby = class getnearby extends antelope.Struct {
944
977
  };
945
978
  tslib.__decorate([
@@ -955,6 +988,12 @@ var Types;
955
988
  antelope.Struct.type('getnearby')
956
989
  ], getnearby);
957
990
  Types.getnearby = getnearby;
991
+ let getnftinfo = class getnftinfo extends antelope.Struct {
992
+ };
993
+ getnftinfo = tslib.__decorate([
994
+ antelope.Struct.type('getnftinfo')
995
+ ], getnftinfo);
996
+ Types.getnftinfo = getnftinfo;
958
997
  let getplayer = class getplayer extends antelope.Struct {
959
998
  };
960
999
  tslib.__decorate([
@@ -964,6 +1003,33 @@ var Types;
964
1003
  antelope.Struct.type('getplayer')
965
1004
  ], getplayer);
966
1005
  Types.getplayer = getplayer;
1006
+ let getrecipe = class getrecipe extends antelope.Struct {
1007
+ };
1008
+ tslib.__decorate([
1009
+ antelope.Struct.field(antelope.UInt16)
1010
+ ], getrecipe.prototype, "output_item_id", void 0);
1011
+ getrecipe = tslib.__decorate([
1012
+ antelope.Struct.type('getrecipe')
1013
+ ], getrecipe);
1014
+ Types.getrecipe = getrecipe;
1015
+ let getrecipes = class getrecipes extends antelope.Struct {
1016
+ };
1017
+ tslib.__decorate([
1018
+ antelope.Struct.field(antelope.UInt16)
1019
+ ], getrecipes.prototype, "lower_bound", void 0);
1020
+ tslib.__decorate([
1021
+ antelope.Struct.field(antelope.UInt8)
1022
+ ], getrecipes.prototype, "limit", void 0);
1023
+ getrecipes = tslib.__decorate([
1024
+ antelope.Struct.type('getrecipes')
1025
+ ], getrecipes);
1026
+ Types.getrecipes = getrecipes;
1027
+ let getresources = class getresources extends antelope.Struct {
1028
+ };
1029
+ getresources = tslib.__decorate([
1030
+ antelope.Struct.type('getresources')
1031
+ ], getresources);
1032
+ Types.getresources = getresources;
967
1033
  let getstratum = class getstratum extends antelope.Struct {
968
1034
  };
969
1035
  tslib.__decorate([
@@ -1036,6 +1102,102 @@ var Types;
1036
1102
  antelope.Struct.type('init')
1037
1103
  ], init);
1038
1104
  Types.init = init;
1105
+ let recipe_input = class recipe_input extends antelope.Struct {
1106
+ };
1107
+ tslib.__decorate([
1108
+ antelope.Struct.field(antelope.UInt16)
1109
+ ], recipe_input.prototype, "item_id", void 0);
1110
+ tslib.__decorate([
1111
+ antelope.Struct.field(antelope.UInt8)
1112
+ ], recipe_input.prototype, "category", void 0);
1113
+ tslib.__decorate([
1114
+ antelope.Struct.field(antelope.UInt32)
1115
+ ], recipe_input.prototype, "quantity", void 0);
1116
+ recipe_input = tslib.__decorate([
1117
+ antelope.Struct.type('recipe_input')
1118
+ ], recipe_input);
1119
+ Types.recipe_input = recipe_input;
1120
+ let stat_source = class stat_source extends antelope.Struct {
1121
+ };
1122
+ tslib.__decorate([
1123
+ antelope.Struct.field(antelope.UInt8)
1124
+ ], stat_source.prototype, "input_index", void 0);
1125
+ tslib.__decorate([
1126
+ antelope.Struct.field(antelope.UInt8)
1127
+ ], stat_source.prototype, "input_stat_index", void 0);
1128
+ stat_source = tslib.__decorate([
1129
+ antelope.Struct.type('stat_source')
1130
+ ], stat_source);
1131
+ Types.stat_source = stat_source;
1132
+ let stat_slot_response = class stat_slot_response extends antelope.Struct {
1133
+ };
1134
+ tslib.__decorate([
1135
+ antelope.Struct.field(stat_source, { array: true })
1136
+ ], stat_slot_response.prototype, "sources", void 0);
1137
+ stat_slot_response = tslib.__decorate([
1138
+ antelope.Struct.type('stat_slot_response')
1139
+ ], stat_slot_response);
1140
+ Types.stat_slot_response = stat_slot_response;
1141
+ let recipe_item_info = class recipe_item_info extends antelope.Struct {
1142
+ };
1143
+ tslib.__decorate([
1144
+ antelope.Struct.field(antelope.UInt16)
1145
+ ], recipe_item_info.prototype, "id", void 0);
1146
+ tslib.__decorate([
1147
+ antelope.Struct.field(antelope.UInt32)
1148
+ ], recipe_item_info.prototype, "mass", void 0);
1149
+ recipe_item_info = tslib.__decorate([
1150
+ antelope.Struct.type('recipe_item_info')
1151
+ ], recipe_item_info);
1152
+ Types.recipe_item_info = recipe_item_info;
1153
+ let recipe_response = class recipe_response extends antelope.Struct {
1154
+ };
1155
+ tslib.__decorate([
1156
+ antelope.Struct.field(antelope.UInt16)
1157
+ ], recipe_response.prototype, "output_item_id", void 0);
1158
+ tslib.__decorate([
1159
+ antelope.Struct.field(antelope.UInt32)
1160
+ ], recipe_response.prototype, "output_mass", void 0);
1161
+ tslib.__decorate([
1162
+ antelope.Struct.field(recipe_input, { array: true })
1163
+ ], recipe_response.prototype, "inputs", void 0);
1164
+ tslib.__decorate([
1165
+ antelope.Struct.field(stat_slot_response, { array: true })
1166
+ ], recipe_response.prototype, "stat_slots", void 0);
1167
+ tslib.__decorate([
1168
+ antelope.Struct.field(antelope.Bytes)
1169
+ ], recipe_response.prototype, "blend_weights", void 0);
1170
+ tslib.__decorate([
1171
+ antelope.Struct.field(recipe_item_info)
1172
+ ], recipe_response.prototype, "output_item", void 0);
1173
+ tslib.__decorate([
1174
+ antelope.Struct.field(recipe_item_info, { array: true })
1175
+ ], recipe_response.prototype, "input_items", void 0);
1176
+ recipe_response = tslib.__decorate([
1177
+ antelope.Struct.type('recipe_response')
1178
+ ], recipe_response);
1179
+ Types.recipe_response = recipe_response;
1180
+ let recipes_result = class recipes_result extends antelope.Struct {
1181
+ };
1182
+ tslib.__decorate([
1183
+ antelope.Struct.field(recipe_response, { array: true })
1184
+ ], recipes_result.prototype, "recipes", void 0);
1185
+ recipes_result = tslib.__decorate([
1186
+ antelope.Struct.type('recipes_result')
1187
+ ], recipes_result);
1188
+ Types.recipes_result = recipes_result;
1189
+ let itemdata_result = class itemdata_result extends antelope.Struct {
1190
+ };
1191
+ tslib.__decorate([
1192
+ antelope.Struct.field(item_def, { array: true })
1193
+ ], itemdata_result.prototype, "items", void 0);
1194
+ tslib.__decorate([
1195
+ antelope.Struct.field(recipes_result)
1196
+ ], itemdata_result.prototype, "recipes", void 0);
1197
+ itemdata_result = tslib.__decorate([
1198
+ antelope.Struct.type('itemdata_result')
1199
+ ], itemdata_result);
1200
+ Types.itemdata_result = itemdata_result;
1039
1201
  let items_info = class items_info extends antelope.Struct {
1040
1202
  };
1041
1203
  tslib.__decorate([
@@ -1141,6 +1303,33 @@ var Types;
1141
1303
  antelope.Struct.type('location_row')
1142
1304
  ], location_row);
1143
1305
  Types.location_row = location_row;
1306
+ let module_info = class module_info extends antelope.Struct {
1307
+ };
1308
+ tslib.__decorate([
1309
+ antelope.Struct.field(antelope.UInt16)
1310
+ ], module_info.prototype, "id", void 0);
1311
+ tslib.__decorate([
1312
+ antelope.Struct.field(antelope.UInt32)
1313
+ ], module_info.prototype, "mass", void 0);
1314
+ tslib.__decorate([
1315
+ antelope.Struct.field(antelope.UInt8)
1316
+ ], module_info.prototype, "module_type", void 0);
1317
+ tslib.__decorate([
1318
+ antelope.Struct.field(antelope.UInt8)
1319
+ ], module_info.prototype, "tier", void 0);
1320
+ module_info = tslib.__decorate([
1321
+ antelope.Struct.type('module_info')
1322
+ ], module_info);
1323
+ Types.module_info = module_info;
1324
+ let modules_result = class modules_result extends antelope.Struct {
1325
+ };
1326
+ tslib.__decorate([
1327
+ antelope.Struct.field(module_info, { array: true })
1328
+ ], modules_result.prototype, "modules", void 0);
1329
+ modules_result = tslib.__decorate([
1330
+ antelope.Struct.type('modules_result')
1331
+ ], modules_result);
1332
+ Types.modules_result = modules_result;
1144
1333
  let nearby_system = class nearby_system extends antelope.Struct {
1145
1334
  };
1146
1335
  tslib.__decorate([
@@ -1180,6 +1369,87 @@ var Types;
1180
1369
  antelope.Struct.type('nearby_info')
1181
1370
  ], nearby_info);
1182
1371
  Types.nearby_info = nearby_info;
1372
+ let nexus_row = class nexus_row extends antelope.Struct {
1373
+ };
1374
+ tslib.__decorate([
1375
+ antelope.Struct.field(antelope.UInt64)
1376
+ ], nexus_row.prototype, "id", void 0);
1377
+ tslib.__decorate([
1378
+ antelope.Struct.field(antelope.Name)
1379
+ ], nexus_row.prototype, "owner", void 0);
1380
+ tslib.__decorate([
1381
+ antelope.Struct.field('string')
1382
+ ], nexus_row.prototype, "name", void 0);
1383
+ tslib.__decorate([
1384
+ antelope.Struct.field(coordinates)
1385
+ ], nexus_row.prototype, "coordinates", void 0);
1386
+ nexus_row = tslib.__decorate([
1387
+ antelope.Struct.type('nexus_row')
1388
+ ], nexus_row);
1389
+ Types.nexus_row = nexus_row;
1390
+ let schema_field = class schema_field extends antelope.Struct {
1391
+ };
1392
+ tslib.__decorate([
1393
+ antelope.Struct.field('string')
1394
+ ], schema_field.prototype, "name", void 0);
1395
+ tslib.__decorate([
1396
+ antelope.Struct.field('string')
1397
+ ], schema_field.prototype, "field_type", void 0);
1398
+ schema_field = tslib.__decorate([
1399
+ antelope.Struct.type('schema_field')
1400
+ ], schema_field);
1401
+ Types.schema_field = schema_field;
1402
+ let nft_schema_def = class nft_schema_def extends antelope.Struct {
1403
+ };
1404
+ tslib.__decorate([
1405
+ antelope.Struct.field(antelope.Name)
1406
+ ], nft_schema_def.prototype, "schema_name", void 0);
1407
+ tslib.__decorate([
1408
+ antelope.Struct.field(schema_field, { array: true })
1409
+ ], nft_schema_def.prototype, "fields", void 0);
1410
+ nft_schema_def = tslib.__decorate([
1411
+ antelope.Struct.type('nft_schema_def')
1412
+ ], nft_schema_def);
1413
+ Types.nft_schema_def = nft_schema_def;
1414
+ let nft_template_def = class nft_template_def extends antelope.Struct {
1415
+ };
1416
+ tslib.__decorate([
1417
+ antelope.Struct.field(antelope.UInt16)
1418
+ ], nft_template_def.prototype, "item_id", void 0);
1419
+ tslib.__decorate([
1420
+ antelope.Struct.field(antelope.Name)
1421
+ ], nft_template_def.prototype, "schema_name", void 0);
1422
+ nft_template_def = tslib.__decorate([
1423
+ antelope.Struct.type('nft_template_def')
1424
+ ], nft_template_def);
1425
+ Types.nft_template_def = nft_template_def;
1426
+ let nftconfig_row = class nftconfig_row extends antelope.Struct {
1427
+ };
1428
+ tslib.__decorate([
1429
+ antelope.Struct.field(antelope.UInt16)
1430
+ ], nftconfig_row.prototype, "item_id", void 0);
1431
+ tslib.__decorate([
1432
+ antelope.Struct.field(antelope.Int32)
1433
+ ], nftconfig_row.prototype, "template_id", void 0);
1434
+ tslib.__decorate([
1435
+ antelope.Struct.field(antelope.Name)
1436
+ ], nftconfig_row.prototype, "schema_name", void 0);
1437
+ nftconfig_row = tslib.__decorate([
1438
+ antelope.Struct.type('nftconfig_row')
1439
+ ], nftconfig_row);
1440
+ Types.nftconfig_row = nftconfig_row;
1441
+ let nftinfo_result = class nftinfo_result extends antelope.Struct {
1442
+ };
1443
+ tslib.__decorate([
1444
+ antelope.Struct.field(nft_schema_def, { array: true })
1445
+ ], nftinfo_result.prototype, "schemas", void 0);
1446
+ tslib.__decorate([
1447
+ antelope.Struct.field(nft_template_def, { array: true })
1448
+ ], nftinfo_result.prototype, "templates", void 0);
1449
+ nftinfo_result = tslib.__decorate([
1450
+ antelope.Struct.type('nftinfo_result')
1451
+ ], nftinfo_result);
1452
+ Types.nftinfo_result = nftinfo_result;
1183
1453
  let task_event = class task_event extends antelope.Struct {
1184
1454
  };
1185
1455
  tslib.__decorate([
@@ -1318,6 +1588,24 @@ var Types;
1318
1588
  antelope.Struct.type('resolve_results')
1319
1589
  ], resolve_results);
1320
1590
  Types.resolve_results = resolve_results;
1591
+ let resource_info = class resource_info extends antelope.Struct {
1592
+ };
1593
+ tslib.__decorate([
1594
+ antelope.Struct.field(antelope.UInt16)
1595
+ ], resource_info.prototype, "id", void 0);
1596
+ tslib.__decorate([
1597
+ antelope.Struct.field(antelope.UInt32)
1598
+ ], resource_info.prototype, "mass", void 0);
1599
+ tslib.__decorate([
1600
+ antelope.Struct.field(antelope.UInt8)
1601
+ ], resource_info.prototype, "category", void 0);
1602
+ tslib.__decorate([
1603
+ antelope.Struct.field(antelope.UInt8)
1604
+ ], resource_info.prototype, "tier", void 0);
1605
+ resource_info = tslib.__decorate([
1606
+ antelope.Struct.type('resource_info')
1607
+ ], resource_info);
1608
+ Types.resource_info = resource_info;
1321
1609
  let resource_stats = class resource_stats extends antelope.Struct {
1322
1610
  };
1323
1611
  tslib.__decorate([
@@ -1333,6 +1621,15 @@ var Types;
1333
1621
  antelope.Struct.type('resource_stats')
1334
1622
  ], resource_stats);
1335
1623
  Types.resource_stats = resource_stats;
1624
+ let resources_result = class resources_result extends antelope.Struct {
1625
+ };
1626
+ tslib.__decorate([
1627
+ antelope.Struct.field(resource_info, { array: true })
1628
+ ], resources_result.prototype, "resources", void 0);
1629
+ resources_result = tslib.__decorate([
1630
+ antelope.Struct.type('resources_result')
1631
+ ], resources_result);
1632
+ Types.resources_result = resources_result;
1336
1633
  let rmmodule = class rmmodule extends antelope.Struct {
1337
1634
  };
1338
1635
  tslib.__decorate([
@@ -1351,6 +1648,15 @@ var Types;
1351
1648
  antelope.Struct.type('rmmodule')
1352
1649
  ], rmmodule);
1353
1650
  Types.rmmodule = rmmodule;
1651
+ let rmnftcfg = class rmnftcfg extends antelope.Struct {
1652
+ };
1653
+ tslib.__decorate([
1654
+ antelope.Struct.field(antelope.UInt16)
1655
+ ], rmnftcfg.prototype, "item_id", void 0);
1656
+ rmnftcfg = tslib.__decorate([
1657
+ antelope.Struct.type('rmnftcfg')
1658
+ ], rmnftcfg);
1659
+ Types.rmnftcfg = rmnftcfg;
1354
1660
  let salt = class salt extends antelope.Struct {
1355
1661
  };
1356
1662
  tslib.__decorate([
@@ -1372,6 +1678,21 @@ var Types;
1372
1678
  antelope.Struct.type('sequence_row')
1373
1679
  ], sequence_row);
1374
1680
  Types.sequence_row = sequence_row;
1681
+ let setnftcfg = class setnftcfg extends antelope.Struct {
1682
+ };
1683
+ tslib.__decorate([
1684
+ antelope.Struct.field(antelope.UInt16)
1685
+ ], setnftcfg.prototype, "item_id", void 0);
1686
+ tslib.__decorate([
1687
+ antelope.Struct.field(antelope.Int32)
1688
+ ], setnftcfg.prototype, "template_id", void 0);
1689
+ tslib.__decorate([
1690
+ antelope.Struct.field(antelope.Name)
1691
+ ], setnftcfg.prototype, "schema_name", void 0);
1692
+ setnftcfg = tslib.__decorate([
1693
+ antelope.Struct.type('setnftcfg')
1694
+ ], setnftcfg);
1695
+ Types.setnftcfg = setnftcfg;
1375
1696
  let ship_row = class ship_row extends antelope.Struct {
1376
1697
  };
1377
1698
  tslib.__decorate([
@@ -1383,6 +1704,9 @@ var Types;
1383
1704
  tslib.__decorate([
1384
1705
  antelope.Struct.field('string')
1385
1706
  ], ship_row.prototype, "name", void 0);
1707
+ tslib.__decorate([
1708
+ antelope.Struct.field(antelope.UInt64)
1709
+ ], ship_row.prototype, "seed", void 0);
1386
1710
  tslib.__decorate([
1387
1711
  antelope.Struct.field(coordinates)
1388
1712
  ], ship_row.prototype, "coordinates", void 0);
@@ -1593,18 +1917,27 @@ var Types;
1593
1917
  tslib.__decorate([
1594
1918
  antelope.Struct.field('string')
1595
1919
  ], warehouse_row.prototype, "name", void 0);
1920
+ tslib.__decorate([
1921
+ antelope.Struct.field(antelope.UInt64)
1922
+ ], warehouse_row.prototype, "seed", void 0);
1596
1923
  tslib.__decorate([
1597
1924
  antelope.Struct.field(coordinates)
1598
1925
  ], warehouse_row.prototype, "coordinates", void 0);
1599
1926
  tslib.__decorate([
1600
- antelope.Struct.field(antelope.UInt32)
1927
+ antelope.Struct.field(antelope.UInt32, { optional: true })
1928
+ ], warehouse_row.prototype, "hullmass", void 0);
1929
+ tslib.__decorate([
1930
+ antelope.Struct.field(antelope.UInt32, { optional: true })
1601
1931
  ], warehouse_row.prototype, "capacity", void 0);
1602
1932
  tslib.__decorate([
1603
1933
  antelope.Struct.field(antelope.UInt32)
1604
1934
  ], warehouse_row.prototype, "cargomass", void 0);
1605
1935
  tslib.__decorate([
1606
- antelope.Struct.field(loader_stats)
1936
+ antelope.Struct.field(loader_stats, { optional: true })
1607
1937
  ], warehouse_row.prototype, "loaders", void 0);
1938
+ tslib.__decorate([
1939
+ antelope.Struct.field(module_entry, { array: true })
1940
+ ], warehouse_row.prototype, "modules", void 0);
1608
1941
  tslib.__decorate([
1609
1942
  antelope.Struct.field(schedule, { optional: true })
1610
1943
  ], warehouse_row.prototype, "schedule", void 0);
@@ -1642,12 +1975,35 @@ var Types;
1642
1975
  antelope.Struct.type('wipesequence')
1643
1976
  ], wipesequence);
1644
1977
  Types.wipesequence = wipesequence;
1978
+ let wrap = class wrap extends antelope.Struct {
1979
+ };
1980
+ tslib.__decorate([
1981
+ antelope.Struct.field(antelope.Name)
1982
+ ], wrap.prototype, "owner", void 0);
1983
+ tslib.__decorate([
1984
+ antelope.Struct.field(antelope.Name)
1985
+ ], wrap.prototype, "entity_type", void 0);
1986
+ tslib.__decorate([
1987
+ antelope.Struct.field(antelope.UInt64)
1988
+ ], wrap.prototype, "entity_id", void 0);
1989
+ tslib.__decorate([
1990
+ antelope.Struct.field(antelope.UInt64)
1991
+ ], wrap.prototype, "cargo_id", void 0);
1992
+ tslib.__decorate([
1993
+ antelope.Struct.field(antelope.UInt64)
1994
+ ], wrap.prototype, "quantity", void 0);
1995
+ wrap = tslib.__decorate([
1996
+ antelope.Struct.type('wrap')
1997
+ ], wrap);
1998
+ Types.wrap = wrap;
1645
1999
  })(Types || (Types = {}));
1646
2000
  const TableMap = {
1647
2001
  cargo: Types.cargo_row,
1648
2002
  container: Types.container_row,
1649
2003
  entitygroup: Types.entitygroup_row,
1650
2004
  location: Types.location_row,
2005
+ nexus: Types.nexus_row,
2006
+ nftconfig: Types.nftconfig_row,
1651
2007
  player: Types.player_row,
1652
2008
  reserve: Types.reserve_row,
1653
2009
  sequence: Types.sequence_row,
@@ -4566,7 +4922,9 @@ function calc_rechargetime(capacity, energy, recharge) {
4566
4922
  return cap.subtracting(eng).dividing(recharge);
4567
4923
  }
4568
4924
  function calc_ship_rechargetime(ship) {
4569
- return calc_rechargetime(ship.generator.capacity, ship.energy, ship.generator.recharge);
4925
+ if (!ship.generator)
4926
+ return antelope.UInt32.from(0);
4927
+ return calc_rechargetime(ship.generator.capacity, ship.energy ?? antelope.UInt16.from(0), ship.generator.recharge);
4570
4928
  }
4571
4929
  function calc_flighttime(distance, acceleration) {
4572
4930
  return antelope.UInt32.from(2 * Math.sqrt(Number(distance) / acceleration));
@@ -4576,14 +4934,17 @@ function calc_loader_flighttime(ship, mass, altitude) {
4576
4934
  return calc_flighttime(z, calc_loader_acceleration(ship, mass));
4577
4935
  }
4578
4936
  function calc_loader_acceleration(ship, mass) {
4579
- return calc_acceleration(Number(ship.loaders.thrust), Number(mass) + Number(ship.loaders.mass));
4937
+ const thrust = ship.loaders ? Number(ship.loaders.thrust) : 0;
4938
+ const loaderMass = ship.loaders ? Number(ship.loaders.mass) : 0;
4939
+ return calc_acceleration(thrust, Number(mass) + loaderMass);
4580
4940
  }
4581
4941
  function calc_ship_flighttime(ship, mass, distance) {
4582
4942
  const acceleration = calc_ship_acceleration(ship, mass);
4583
4943
  return calc_flighttime(distance, acceleration);
4584
4944
  }
4585
4945
  function calc_ship_acceleration(ship, mass) {
4586
- return calc_acceleration(Number(ship.engines.thrust), Number(mass));
4946
+ const thrust = ship.engines ? Number(ship.engines.thrust) : 0;
4947
+ return calc_acceleration(thrust, Number(mass));
4587
4948
  }
4588
4949
  function calc_acceleration(thrust, mass) {
4589
4950
  return (thrust / mass) * PRECISION;
@@ -4591,7 +4952,7 @@ function calc_acceleration(thrust, mass) {
4591
4952
  function calc_ship_mass(ship, cargos) {
4592
4953
  const mass = antelope.UInt64.from(0);
4593
4954
  mass.add(ship.hullmass);
4594
- if (ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4955
+ if (ship.loaders && ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4595
4956
  mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
4596
4957
  }
4597
4958
  for (const cargo of cargos) {
@@ -4615,6 +4976,8 @@ function calculateTransferTime(ship, cargos, quantities) {
4615
4976
  if (mass.equals(antelope.UInt64.zero)) {
4616
4977
  return antelope.UInt32.from(0);
4617
4978
  }
4979
+ if (!ship.loaders)
4980
+ return antelope.UInt32.from(0);
4618
4981
  mass = antelope.UInt64.from(mass).adding(ship.loaders.mass);
4619
4982
  const transfer_time = calc_loader_flighttime(ship, mass);
4620
4983
  return transfer_time.dividing(ship.loaders.quantity);
@@ -4647,15 +5010,15 @@ function calculateLoadTimeBreakdown(ship, cargos, loadQuantities, unloadQuantiti
4647
5010
  }
4648
5011
  let unloadTime = 0;
4649
5012
  let loadTime = 0;
4650
- if (mass_unload.gt(antelope.UInt64.zero)) {
5013
+ if (mass_unload.gt(antelope.UInt64.zero) && ship.loaders) {
4651
5014
  const totalMass = antelope.UInt64.from(mass_unload).adding(ship.loaders.mass);
4652
5015
  unloadTime = Number(calc_loader_flighttime(ship, totalMass));
4653
5016
  }
4654
- if (mass_load.gt(antelope.UInt64.zero)) {
5017
+ if (mass_load.gt(antelope.UInt64.zero) && ship.loaders) {
4655
5018
  const totalMass = antelope.UInt64.from(mass_load).adding(ship.loaders.mass);
4656
5019
  loadTime = Number(calc_loader_flighttime(ship, totalMass));
4657
5020
  }
4658
- const numLoaders = Number(ship.loaders.quantity);
5021
+ const numLoaders = ship.loaders ? Number(ship.loaders.quantity) : 0;
4659
5022
  const totalTime = numLoaders > 0 ? (unloadTime + loadTime) / numLoaders : 0;
4660
5023
  const unloadTimePerLoader = numLoaders > 0 ? unloadTime / numLoaders : 0;
4661
5024
  const loadTimePerLoader = numLoaders > 0 ? loadTime / numLoaders : 0;
@@ -4675,12 +5038,14 @@ function estimateTravelTime(ship, travelMass, distance, options = {}) {
4675
5038
  let unloadTime = antelope.UInt32.zero;
4676
5039
  if (loadMass &&
4677
5040
  antelope.UInt32.from(loadMass).gt(antelope.UInt32.zero) &&
5041
+ ship.loaders &&
4678
5042
  ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4679
5043
  const totalMass = antelope.UInt64.from(loadMass).adding(ship.loaders.mass);
4680
5044
  loadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
4681
5045
  }
4682
5046
  if (unloadMass &&
4683
5047
  antelope.UInt32.from(unloadMass).gt(antelope.UInt32.zero) &&
5048
+ ship.loaders &&
4684
5049
  ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4685
5050
  const totalMass = antelope.UInt64.from(unloadMass).adding(ship.loaders.mass);
4686
5051
  unloadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
@@ -4702,8 +5067,10 @@ function estimateDealTravelTime(ship, shipMass, distance, loadMass) {
4702
5067
  return estimate.total;
4703
5068
  }
4704
5069
  function hasEnergyForDistance$1(ship, distance) {
5070
+ if (!ship.engines)
5071
+ return false;
4705
5072
  const energyNeeded = antelope.UInt64.from(distance).dividing(PRECISION).multiplying(ship.engines.drain);
4706
- return antelope.UInt64.from(ship.energy).gte(energyNeeded);
5073
+ return antelope.UInt64.from(ship.energy ?? 0).gte(energyNeeded);
4707
5074
  }
4708
5075
  function getFlightOrigin(entity, flightTaskIndex) {
4709
5076
  if (!entity.schedule)
@@ -5544,6 +5911,10 @@ class Warehouse extends Types.entity_info {
5544
5911
  get orbitalAltitude() {
5545
5912
  return this.coordinates.z?.toNumber() || 0;
5546
5913
  }
5914
+ get totalMass() {
5915
+ const hull = this.hullmass ? antelope.UInt64.from(this.hullmass) : antelope.UInt64.from(0);
5916
+ return hull.adding(this.totalCargoMass);
5917
+ }
5547
5918
  }
5548
5919
 
5549
5920
  class Container extends Types.entity_info {
@@ -5596,6 +5967,17 @@ function computeContainerCapabilities(stats) {
5596
5967
  const capacity = Math.floor(1000000 * Math.pow(10, exponent));
5597
5968
  return { hullmass, capacity };
5598
5969
  }
5970
+ function computeContainerT2Capabilities(stats) {
5971
+ const strength = stats['strength'] ?? 0;
5972
+ const density = stats['density'] ?? 0;
5973
+ const ductility = stats['ductility'] ?? 0;
5974
+ const purity = stats['purity'] ?? 0;
5975
+ const hullmass = 20000 + 50 * density;
5976
+ const statSum = strength + ductility + purity;
5977
+ const exponent = statSum / 2500;
5978
+ const capacity = Math.floor(1500000 * Math.pow(10, exponent));
5979
+ return { hullmass, capacity };
5980
+ }
5599
5981
 
5600
5982
  class EntitiesManager extends BaseManager {
5601
5983
  async getEntity(type, id) {
@@ -6045,7 +6427,7 @@ function makeShip(state) {
6045
6427
  return new Ship(entityInfo);
6046
6428
  }
6047
6429
  function makeWarehouse(state) {
6048
- const entityInfo = Types.entity_info.from({
6430
+ const info = {
6049
6431
  type: antelope.Name.from('warehouse'),
6050
6432
  id: antelope.UInt64.from(state.id),
6051
6433
  owner: antelope.Name.from(state.owner),
@@ -6054,13 +6436,18 @@ function makeWarehouse(state) {
6054
6436
  capacity: antelope.UInt32.from(state.capacity),
6055
6437
  cargomass: antelope.UInt32.from(0),
6056
6438
  cargo: state.cargo || [],
6057
- loaders: state.loaders,
6058
6439
  is_idle: !state.schedule,
6059
6440
  current_task_elapsed: antelope.UInt32.from(0),
6060
6441
  current_task_remaining: antelope.UInt32.from(0),
6061
6442
  pending_tasks: [],
6062
- schedule: state.schedule,
6063
- });
6443
+ };
6444
+ if (state.hullmass !== undefined)
6445
+ info.hullmass = antelope.UInt32.from(state.hullmass);
6446
+ if (state.loaders)
6447
+ info.loaders = state.loaders;
6448
+ if (state.schedule)
6449
+ info.schedule = state.schedule;
6450
+ const entityInfo = Types.entity_info.from(info);
6064
6451
  return new Warehouse(entityInfo);
6065
6452
  }
6066
6453
  function makeContainer(state) {
@@ -6280,11 +6667,12 @@ function resolveStats(category, stats) {
6280
6667
  };
6281
6668
  }
6282
6669
 
6283
- const ITEM_ENGINE_T1 = 10006;
6284
- const ITEM_GENERATOR_T1 = 10007;
6285
- const ITEM_EXTRACTOR_T1 = 10014;
6286
- const ITEM_LOADER_T1 = 10015;
6287
- const ITEM_MANUFACTURING_T1 = 10016;
6670
+ const ITEM_ENGINE_T1 = 10100;
6671
+ const ITEM_GENERATOR_T1 = 10101;
6672
+ const ITEM_EXTRACTOR_T1 = 10102;
6673
+ const ITEM_LOADER_T1 = 10103;
6674
+ const ITEM_MANUFACTURING_T1 = 10104;
6675
+ const ITEM_STORAGE_T1 = 10105;
6288
6676
  const MODULE_ANY = 0;
6289
6677
  const MODULE_ENGINE = 1;
6290
6678
  const MODULE_GENERATOR = 2;
@@ -6293,6 +6681,7 @@ const MODULE_LOADER = 4;
6293
6681
  const MODULE_WARP = 5;
6294
6682
  const MODULE_CRAFTER = 6;
6295
6683
  const MODULE_LAUNCHER = 7;
6684
+ const MODULE_STORAGE = 8;
6296
6685
  function moduleAccepts(slotType, moduleType) {
6297
6686
  return slotType === MODULE_ANY || slotType === moduleType;
6298
6687
  }
@@ -6308,6 +6697,8 @@ function getModuleCapabilityType(itemId) {
6308
6697
  return MODULE_LOADER;
6309
6698
  case ITEM_MANUFACTURING_T1:
6310
6699
  return MODULE_CRAFTER;
6700
+ case ITEM_STORAGE_T1:
6701
+ return MODULE_STORAGE;
6311
6702
  default:
6312
6703
  return 0xff;
6313
6704
  }
@@ -6316,17 +6707,21 @@ function isModuleItem(itemId) {
6316
6707
  return getModuleCapabilityType(itemId) !== 0xff;
6317
6708
  }
6318
6709
 
6319
- const ITEM_DRILL_SHAFT = 10009;
6320
- const ITEM_EXTRACTION_PROBE = 10010;
6321
- const ITEM_CARGO_ARM = 10011;
6322
- const ITEM_TOOL_BIT = 10012;
6323
- const ITEM_REACTION_CHAMBER = 10013;
6710
+ const ITEM_DRILL_SHAFT = 10005;
6711
+ const ITEM_EXTRACTION_PROBE = 10006;
6712
+ const ITEM_CARGO_ARM = 10007;
6713
+ const ITEM_TOOL_BIT = 10008;
6714
+ const ITEM_REACTION_CHAMBER = 10009;
6324
6715
  const ITEM_HULL_PLATES = 10001;
6325
6716
  const ITEM_CARGO_LINING = 10002;
6326
- const ITEM_CONTAINER_PACKED = 10003;
6327
- const ITEM_THRUSTER_CORE = 10004;
6328
- const ITEM_POWER_CELL = 10005;
6329
- const ITEM_SHIP_T1_PACKED = 10008;
6717
+ const ITEM_CONTAINER_T1_PACKED = 10200;
6718
+ const ITEM_THRUSTER_CORE = 10003;
6719
+ const ITEM_POWER_CELL = 10004;
6720
+ const ITEM_SHIP_T1_PACKED = 10201;
6721
+ const ITEM_WAREHOUSE_T1_PACKED = 10202;
6722
+ const ITEM_HULL_PLATES_T2 = 20001;
6723
+ const ITEM_CARGO_LINING_T2 = 20002;
6724
+ const ITEM_CONTAINER_T2_PACKED = 20200;
6330
6725
  const components = [
6331
6726
  {
6332
6727
  id: ITEM_HULL_PLATES,
@@ -6339,7 +6734,7 @@ const components = [
6339
6734
  { key: 'density', source: 'metal' },
6340
6735
  ],
6341
6736
  recipe: [{ category: 'metal', quantity: 15 }],
6342
- usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
6737
+ usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
6343
6738
  },
6344
6739
  {
6345
6740
  id: ITEM_CARGO_LINING,
@@ -6355,7 +6750,7 @@ const components = [
6355
6750
  { category: 'precious', quantity: 6 },
6356
6751
  { category: 'organic', quantity: 14 },
6357
6752
  ],
6358
- usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
6753
+ usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
6359
6754
  },
6360
6755
  {
6361
6756
  id: ITEM_THRUSTER_CORE,
@@ -6448,6 +6843,39 @@ const components = [
6448
6843
  recipe: [{ category: 'gas', quantity: 32 }],
6449
6844
  usedIn: [{ type: 'module', name: 'Manufacturing' }],
6450
6845
  },
6846
+ {
6847
+ id: ITEM_HULL_PLATES_T2,
6848
+ name: 'Hull Plates T2',
6849
+ description: 'Advanced structural plating reinforced with tier 2 metals.',
6850
+ color: '#9BADB8',
6851
+ mass: 50000,
6852
+ stats: [
6853
+ { key: 'strength', source: 'metal' },
6854
+ { key: 'density', source: 'metal' },
6855
+ ],
6856
+ recipe: [
6857
+ { itemId: ITEM_HULL_PLATES, quantity: 2 },
6858
+ { category: 'metal', quantity: 15 },
6859
+ ],
6860
+ usedIn: [{ type: 'entity', name: 'Container T2' }],
6861
+ },
6862
+ {
6863
+ id: ITEM_CARGO_LINING_T2,
6864
+ name: 'Cargo Lining T2',
6865
+ description: 'Advanced composite lining with improved storage properties.',
6866
+ color: '#E0B84D',
6867
+ mass: 30000,
6868
+ stats: [
6869
+ { key: 'ductility', source: 'precious' },
6870
+ { key: 'purity', source: 'organic' },
6871
+ ],
6872
+ recipe: [
6873
+ { itemId: ITEM_CARGO_LINING, quantity: 2 },
6874
+ { category: 'precious', quantity: 6 },
6875
+ { category: 'organic', quantity: 14 },
6876
+ ],
6877
+ usedIn: [{ type: 'entity', name: 'Container T2' }],
6878
+ },
6451
6879
  ];
6452
6880
  const entityRecipes = [
6453
6881
  {
@@ -6455,7 +6883,7 @@ const entityRecipes = [
6455
6883
  name: 'Container',
6456
6884
  description: 'Passive floating cargo storage in space. Towed by ships.',
6457
6885
  color: '#7B8D9E',
6458
- packedItemId: ITEM_CONTAINER_PACKED,
6886
+ packedItemId: ITEM_CONTAINER_T1_PACKED,
6459
6887
  recipe: [
6460
6888
  { itemId: ITEM_HULL_PLATES, quantity: 6 },
6461
6889
  { itemId: ITEM_CARGO_LINING, quantity: 2 },
@@ -6491,6 +6919,47 @@ const entityRecipes = [
6491
6919
  { type: MODULE_ANY },
6492
6920
  ],
6493
6921
  },
6922
+ {
6923
+ id: 'warehouse-t1',
6924
+ name: 'Warehouse T1',
6925
+ description: 'Massive stationary storage facility with a single loader module slot.',
6926
+ color: '#EAB308',
6927
+ packedItemId: ITEM_WAREHOUSE_T1_PACKED,
6928
+ recipe: [
6929
+ { itemId: ITEM_HULL_PLATES, quantity: 20 },
6930
+ { itemId: ITEM_CARGO_LINING, quantity: 10 },
6931
+ ],
6932
+ stats: [
6933
+ { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
6934
+ { key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
6935
+ { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
6936
+ { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
6937
+ ],
6938
+ moduleSlots: [
6939
+ { type: MODULE_LOADER, label: 'Loader' },
6940
+ { type: MODULE_STORAGE, label: 'Storage' },
6941
+ { type: MODULE_STORAGE, label: 'Storage' },
6942
+ { type: MODULE_STORAGE, label: 'Storage' },
6943
+ { type: MODULE_STORAGE, label: 'Storage' },
6944
+ ],
6945
+ },
6946
+ {
6947
+ id: 'container-t2',
6948
+ name: 'Container T2',
6949
+ description: 'Advanced cargo container with improved capacity formulas.',
6950
+ color: '#9BADB8',
6951
+ packedItemId: ITEM_CONTAINER_T2_PACKED,
6952
+ recipe: [
6953
+ { itemId: ITEM_HULL_PLATES_T2, quantity: 6 },
6954
+ { itemId: ITEM_CARGO_LINING_T2, quantity: 2 },
6955
+ ],
6956
+ stats: [
6957
+ { key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength' },
6958
+ { key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density' },
6959
+ { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'ductility' },
6960
+ { key: 'purity', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'purity' },
6961
+ ],
6962
+ },
6494
6963
  ];
6495
6964
  const moduleRecipes = [
6496
6965
  {
@@ -6570,6 +7039,24 @@ const moduleRecipes = [
6570
7039
  { key: 'clarity', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'clarity' },
6571
7040
  ],
6572
7041
  },
7042
+ {
7043
+ id: 'storage-t1',
7044
+ name: 'Storage',
7045
+ description: 'Expands cargo capacity based on hull material quality',
7046
+ color: '#8B7355',
7047
+ itemId: ITEM_STORAGE_T1,
7048
+ moduleType: MODULE_STORAGE,
7049
+ recipe: [
7050
+ { itemId: ITEM_HULL_PLATES, quantity: 8 },
7051
+ { itemId: ITEM_CARGO_LINING, quantity: 4 },
7052
+ ],
7053
+ stats: [
7054
+ { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
7055
+ { key: 'ductility', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'ductility' },
7056
+ { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
7057
+ { key: 'density', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'density' },
7058
+ ],
7059
+ },
6573
7060
  ];
6574
7061
  function getModuleRecipe(id) {
6575
7062
  return moduleRecipes.find((r) => r.id === id);
@@ -6586,6 +7073,10 @@ function getEntityRecipe(id) {
6586
7073
  function getEntityRecipeByItemId(itemId) {
6587
7074
  return entityRecipes.find((r) => r.packedItemId === itemId);
6588
7075
  }
7076
+ function getEntitySlotLayout(packedItemId) {
7077
+ const recipe = getEntityRecipeByItemId(packedItemId);
7078
+ return recipe?.moduleSlots ?? [];
7079
+ }
6589
7080
  function getAllCraftableItems() {
6590
7081
  const items = [];
6591
7082
  for (const comp of components) {
@@ -6613,10 +7104,13 @@ function encodeStats(values) {
6613
7104
  }
6614
7105
  return seed;
6615
7106
  }
7107
+ function decodeStat(seed, index) {
7108
+ return Number((seed >> BigInt(index * 10)) & 0x3ffn);
7109
+ }
6616
7110
  function decodeStats(seed, count) {
6617
7111
  const stats = [];
6618
7112
  for (let i = 0; i < count; i++) {
6619
- stats.push(Number((seed >> BigInt(i * 10)) & 0x3ffn));
7113
+ stats.push(decodeStat(seed, i));
6620
7114
  }
6621
7115
  return stats;
6622
7116
  }
@@ -6697,6 +7191,55 @@ function decodeStackStats(itemId, seed) {
6697
7191
  const raw = deriveResourceStats(BigInt(seed.toString()));
6698
7192
  return { stat1: raw.stat1, stat2: raw.stat2, stat3: raw.stat3 };
6699
7193
  }
7194
+ const categoryItemMass = {
7195
+ metal: 30000,
7196
+ precious: 40000,
7197
+ gas: 15000,
7198
+ mineral: 22000,
7199
+ organic: 15000,
7200
+ };
7201
+ function computeInputMass(itemId, itemType) {
7202
+ if (itemType === 'component') {
7203
+ const comp = getComponentById(itemId);
7204
+ if (!comp)
7205
+ return 0;
7206
+ return comp.recipe.reduce((sum, input) => {
7207
+ const mass = input.category ? (categoryItemMass[input.category] ?? 0) : 0;
7208
+ return sum + mass * input.quantity;
7209
+ }, 0);
7210
+ }
7211
+ if (itemType === 'module') {
7212
+ const mod = getModuleRecipe(itemId);
7213
+ if (!mod)
7214
+ return 0;
7215
+ return mod.recipe.reduce((sum, input) => {
7216
+ const comp = input.itemId ? getComponentById(input.itemId) : undefined;
7217
+ return sum + (comp?.mass ?? 0) * input.quantity;
7218
+ }, 0);
7219
+ }
7220
+ if (itemType === 'entity') {
7221
+ const ent = getEntityRecipe(itemId);
7222
+ if (!ent)
7223
+ return 0;
7224
+ return ent.recipe.reduce((sum, input) => {
7225
+ const comp = input.itemId ? getComponentById(input.itemId) : undefined;
7226
+ return sum + (comp?.mass ?? 0) * input.quantity;
7227
+ }, 0);
7228
+ }
7229
+ return 0;
7230
+ }
7231
+ function blendCrossGroup(sources) {
7232
+ let weightedSum = 0;
7233
+ let totalWeight = 0;
7234
+ for (const src of sources) {
7235
+ weightedSum += src.value * src.weight;
7236
+ totalWeight += src.weight;
7237
+ }
7238
+ if (totalWeight === 0)
7239
+ return 1;
7240
+ const result = Math.floor(weightedSum / totalWeight);
7241
+ return Math.max(1, Math.min(999, result));
7242
+ }
6700
7243
  function blendCargoStacks(itemId, stacks) {
6701
7244
  const decoded = stacks.map((s) => ({
6702
7245
  quantity: s.quantity,
@@ -6854,22 +7397,506 @@ const moduleIcon = '⬢';
6854
7397
  const itemIcons = {
6855
7398
  10001: 'HP',
6856
7399
  10002: 'CL',
6857
- 10003: 'CT',
6858
- 10004: 'TC',
6859
- 10005: 'PC',
6860
- 10006: 'EN',
6861
- 10007: 'GN',
6862
- 10008: 'SH',
6863
- 10009: 'DS',
6864
- 10010: 'EP',
6865
- 10011: 'CA',
6866
- 10012: 'TB',
6867
- 10013: 'RC',
6868
- 10014: 'EX',
6869
- 10015: 'LD',
6870
- 10016: 'MF',
7400
+ 10003: 'TC',
7401
+ 10004: 'PC',
7402
+ 10005: 'DS',
7403
+ 10006: 'EP',
7404
+ 10007: 'CA',
7405
+ 10008: 'TB',
7406
+ 10009: 'RC',
7407
+ 10100: 'EN',
7408
+ 10101: 'GN',
7409
+ 10102: 'EX',
7410
+ 10103: 'LD',
7411
+ 10104: 'MF',
7412
+ 10105: 'ST',
7413
+ 10200: 'CT',
7414
+ 10201: 'SH',
7415
+ 10202: 'WH',
7416
+ 20001: 'HP',
7417
+ 20002: 'CL',
7418
+ 20200: 'CT',
6871
7419
  };
6872
7420
 
7421
+ const ITEM_TYPE_RESOURCE = 0;
7422
+ const ITEM_TYPE_COMPONENT = 1;
7423
+ const ITEM_TYPE_MODULE = 2;
7424
+ const ITEM_TYPE_ENTITY = 3;
7425
+ function itemTypeCode(id) {
7426
+ switch (itemCategory(id)) {
7427
+ case 'resource': return ITEM_TYPE_RESOURCE;
7428
+ case 'component': return ITEM_TYPE_COMPONENT;
7429
+ case 'module': return ITEM_TYPE_MODULE;
7430
+ case 'entity': return ITEM_TYPE_ENTITY;
7431
+ }
7432
+ }
7433
+ function itemTier(id) {
7434
+ if (id < 10000)
7435
+ return 0;
7436
+ return Math.floor(id / 10000);
7437
+ }
7438
+ function itemOffset(id) {
7439
+ return id % 10000;
7440
+ }
7441
+ function itemCategory(id) {
7442
+ if (id < 10000)
7443
+ return 'resource';
7444
+ const offset = itemOffset(id);
7445
+ if (offset >= 200)
7446
+ return 'entity';
7447
+ if (offset >= 100)
7448
+ return 'module';
7449
+ return 'component';
7450
+ }
7451
+ function isRelatedItem(a, b) {
7452
+ if (a < 10000 || b < 10000)
7453
+ return false;
7454
+ return itemOffset(a) === itemOffset(b);
7455
+ }
7456
+ function isCraftedItem(id) {
7457
+ return id >= 10000;
7458
+ }
7459
+
7460
+ const categories = [
7461
+ {
7462
+ id: 'metal',
7463
+ name: 'Metals',
7464
+ label: 'Metal',
7465
+ description: 'Structural, strong, heavy — hulls, frames, load-bearing components',
7466
+ color: categoryColors.metal,
7467
+ },
7468
+ {
7469
+ id: 'precious',
7470
+ name: 'Precious Metals',
7471
+ label: 'Precious',
7472
+ description: 'Conductive, corrosion-resistant — electronics, energy systems, precision components',
7473
+ color: categoryColors.precious,
7474
+ },
7475
+ {
7476
+ id: 'gas',
7477
+ name: 'Gases',
7478
+ label: 'Gas',
7479
+ description: 'Energy, fuel, volatile/reactive — propulsion, thermal processing, chemical reactions',
7480
+ color: categoryColors.gas,
7481
+ },
7482
+ {
7483
+ id: 'mineral',
7484
+ name: 'Minerals',
7485
+ label: 'Mineral',
7486
+ description: 'Crystalline, hard, precise — sensors, optics, energy storage, cutting surfaces',
7487
+ color: categoryColors.mineral,
7488
+ },
7489
+ {
7490
+ id: 'organic',
7491
+ name: 'Organics',
7492
+ label: 'Organic',
7493
+ description: 'Adaptive, biological, polymer — insulation, composites, bio-processes',
7494
+ color: categoryColors.organic,
7495
+ },
7496
+ ];
7497
+ function getCategoryInfo(id) {
7498
+ if (id === undefined)
7499
+ return categories;
7500
+ return categories.find((c) => c.id === id);
7501
+ }
7502
+
7503
+ const planetSubtypes = [
7504
+ {
7505
+ id: 0,
7506
+ label: 'Gas Giant',
7507
+ description: 'Massive planets with thick atmospheres rich in gases',
7508
+ paletteType: 'gasGiant',
7509
+ },
7510
+ {
7511
+ id: 1,
7512
+ label: 'Rocky',
7513
+ description: 'Dense, mineral-rich worlds with metallic cores',
7514
+ paletteType: 'rocky',
7515
+ },
7516
+ {
7517
+ id: 2,
7518
+ label: 'Terrestrial',
7519
+ description: 'Earth-like planets with varied terrain and life potential',
7520
+ paletteType: 'terrestrial',
7521
+ },
7522
+ {
7523
+ id: 3,
7524
+ label: 'Icy',
7525
+ description: 'Frozen worlds with subsurface resources',
7526
+ paletteType: 'ice',
7527
+ },
7528
+ {
7529
+ id: 4,
7530
+ label: 'Ocean',
7531
+ description: 'Water worlds with dissolved minerals and organics',
7532
+ paletteType: 'ocean',
7533
+ },
7534
+ {
7535
+ id: 5,
7536
+ label: 'Industrial',
7537
+ description: 'Heavily processed worlds rich in refined materials',
7538
+ paletteType: 'industrial',
7539
+ },
7540
+ ];
7541
+ function getPlanetSubtypes() {
7542
+ return planetSubtypes;
7543
+ }
7544
+ function getPlanetSubtype(id) {
7545
+ return planetSubtypes.find((s) => s.id === id);
7546
+ }
7547
+
7548
+ const capabilityNames = [
7549
+ 'Hull',
7550
+ 'Storage',
7551
+ 'Movement',
7552
+ 'Energy',
7553
+ 'Loader',
7554
+ 'Extraction',
7555
+ 'Warp',
7556
+ 'Manufacturing',
7557
+ 'Launch',
7558
+ ];
7559
+ const capabilityAttributes = [
7560
+ { capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
7561
+ { capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
7562
+ { capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
7563
+ { capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
7564
+ { capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
7565
+ { capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate' },
7566
+ { capability: 'Loader', attribute: 'mass', description: 'Weight of the loader unit itself' },
7567
+ { capability: 'Loader', attribute: 'thrust', description: 'Loading speed/force' },
7568
+ { capability: 'Extraction', attribute: 'rate', description: 'Mass extracted per second' },
7569
+ { capability: 'Extraction', attribute: 'drain', description: 'Energy consumed per extraction' },
7570
+ { capability: 'Extraction', attribute: 'depth', description: 'Maximum extraction depth' },
7571
+ { capability: 'Extraction', attribute: 'drill', description: 'Drilling speed/penetration' },
7572
+ { capability: 'Warp', attribute: 'range', description: 'Maximum warp distance' },
7573
+ { capability: 'Manufacturing', attribute: 'speed', description: 'Crafting time per item' },
7574
+ {
7575
+ capability: 'Manufacturing',
7576
+ attribute: 'drain',
7577
+ description: 'Energy consumed per second while crafting',
7578
+ },
7579
+ { capability: 'Manufacturing', attribute: 'quality', description: 'Modifier on output quality' },
7580
+ { capability: 'Launch', attribute: 'range', description: 'Maximum launch distance' },
7581
+ { capability: 'Launch', attribute: 'capacity', description: 'Maximum mass per launch' },
7582
+ { capability: 'Launch', attribute: 'drain', description: 'Energy consumed per launch' },
7583
+ ];
7584
+ const statMappings = [
7585
+ {
7586
+ stat: 'Strength',
7587
+ capability: 'Extraction',
7588
+ attribute: 'rate',
7589
+ rationale: 'Raw mechanical force drives faster extraction',
7590
+ },
7591
+ {
7592
+ stat: 'Strength',
7593
+ capability: 'Storage',
7594
+ attribute: 'capacity',
7595
+ rationale: 'Stronger walls hold more capacity per mass',
7596
+ },
7597
+ {
7598
+ stat: 'Strength',
7599
+ capability: 'Launch',
7600
+ attribute: 'capacity',
7601
+ rationale: 'Stronger housing handles larger launch loads',
7602
+ },
7603
+ {
7604
+ stat: 'Tolerance',
7605
+ capability: 'Movement',
7606
+ attribute: 'thrust',
7607
+ rationale: 'Engine components that tolerate more can push harder',
7608
+ },
7609
+ {
7610
+ stat: 'Tolerance',
7611
+ capability: 'Energy',
7612
+ attribute: 'recharge',
7613
+ rationale: 'Generator housing withstands stress for faster recharge',
7614
+ },
7615
+ {
7616
+ stat: 'Tolerance',
7617
+ capability: 'Extraction',
7618
+ attribute: 'depth',
7619
+ rationale: 'Housing withstands pressure/heat at extreme depths',
7620
+ },
7621
+ {
7622
+ stat: 'Tolerance',
7623
+ capability: 'Warp',
7624
+ attribute: 'range',
7625
+ rationale: 'Warp drive housing withstands extreme forces',
7626
+ },
7627
+ {
7628
+ stat: 'Density',
7629
+ capability: 'Hull',
7630
+ attribute: 'mass',
7631
+ rationale: 'Lighter metal = lighter hull',
7632
+ },
7633
+ {
7634
+ stat: 'Density',
7635
+ capability: 'Loader',
7636
+ attribute: 'mass',
7637
+ rationale: 'Lighter metal = lighter loader units',
7638
+ },
7639
+ {
7640
+ stat: 'Density',
7641
+ capability: 'Movement',
7642
+ attribute: 'drain',
7643
+ rationale: 'Lighter components require less energy to move',
7644
+ },
7645
+ {
7646
+ stat: 'Conductivity',
7647
+ capability: 'Movement',
7648
+ attribute: 'drain',
7649
+ rationale: 'Efficient energy transfer reduces movement energy cost',
7650
+ },
7651
+ {
7652
+ stat: 'Conductivity',
7653
+ capability: 'Extraction',
7654
+ attribute: 'drain',
7655
+ rationale: 'Efficient energy transfer reduces extraction energy cost',
7656
+ },
7657
+ {
7658
+ stat: 'Conductivity',
7659
+ capability: 'Manufacturing',
7660
+ attribute: 'drain',
7661
+ rationale: 'Efficient energy transfer reduces manufacturing energy cost',
7662
+ },
7663
+ {
7664
+ stat: 'Conductivity',
7665
+ capability: 'Energy',
7666
+ attribute: 'recharge',
7667
+ rationale: 'Better conductivity speeds energy flow during recharge',
7668
+ },
7669
+ {
7670
+ stat: 'Ductility',
7671
+ capability: 'Manufacturing',
7672
+ attribute: 'quality',
7673
+ rationale: 'Precise shaping enables tighter manufacturing tolerances',
7674
+ },
7675
+ {
7676
+ stat: 'Ductility',
7677
+ capability: 'Extraction',
7678
+ attribute: 'rate',
7679
+ rationale: 'Precisely shaped drill components extract faster',
7680
+ },
7681
+ {
7682
+ stat: 'Ductility',
7683
+ capability: 'Storage',
7684
+ attribute: 'capacity',
7685
+ rationale: 'Precision-formed container walls maximize volume',
7686
+ },
7687
+ {
7688
+ stat: 'Ductility',
7689
+ capability: 'Loader',
7690
+ attribute: 'mass',
7691
+ rationale: 'Precision-formed precious metal reduces loader unit mass',
7692
+ },
7693
+ {
7694
+ stat: 'Reflectivity',
7695
+ capability: 'Extraction',
7696
+ attribute: 'depth',
7697
+ rationale: 'Reflective heat shielding protects equipment at depth',
7698
+ },
7699
+ {
7700
+ stat: 'Reflectivity',
7701
+ capability: 'Launch',
7702
+ attribute: 'range',
7703
+ rationale: 'Reflective surfaces focus electromagnetic launch energy',
7704
+ },
7705
+ {
7706
+ stat: 'Volatility',
7707
+ capability: 'Extraction',
7708
+ attribute: 'rate',
7709
+ rationale: 'Energy release powers faster extraction',
7710
+ },
7711
+ {
7712
+ stat: 'Volatility',
7713
+ capability: 'Movement',
7714
+ attribute: 'thrust',
7715
+ rationale: 'Energy release drives propulsion force',
7716
+ },
7717
+ {
7718
+ stat: 'Volatility',
7719
+ capability: 'Loader',
7720
+ attribute: 'thrust',
7721
+ rationale: 'Energy release powers loader motors',
7722
+ },
7723
+ {
7724
+ stat: 'Volatility',
7725
+ capability: 'Launch',
7726
+ attribute: 'capacity',
7727
+ rationale: 'Energy release enables launching heavier payloads',
7728
+ },
7729
+ {
7730
+ stat: 'Reactivity',
7731
+ capability: 'Manufacturing',
7732
+ attribute: 'speed',
7733
+ rationale: 'Reactive gases accelerate chemical/thermal processing',
7734
+ },
7735
+ {
7736
+ stat: 'Reactivity',
7737
+ capability: 'Extraction',
7738
+ attribute: 'drill',
7739
+ rationale: 'Reactive gases manage heat/friction during drilling',
7740
+ },
7741
+ {
7742
+ stat: 'Reactivity',
7743
+ capability: 'Launch',
7744
+ attribute: 'drain',
7745
+ rationale: 'Reactive gas medium reduces electromagnetic resistance',
7746
+ },
7747
+ {
7748
+ stat: 'Thermal',
7749
+ capability: 'Manufacturing',
7750
+ attribute: 'quality',
7751
+ rationale: 'Precise thermal control during fabrication',
7752
+ },
7753
+ {
7754
+ stat: 'Thermal',
7755
+ capability: 'Extraction',
7756
+ attribute: 'drain',
7757
+ rationale: 'Thermal management reduces energy waste during extraction',
7758
+ },
7759
+ {
7760
+ stat: 'Thermal',
7761
+ capability: 'Energy',
7762
+ attribute: 'capacity',
7763
+ rationale: 'Thermal management enables denser energy storage',
7764
+ },
7765
+ {
7766
+ stat: 'Resonance',
7767
+ capability: 'Energy',
7768
+ attribute: 'capacity',
7769
+ rationale: 'Resonating crystals store energy in fields',
7770
+ },
7771
+ {
7772
+ stat: 'Resonance',
7773
+ capability: 'Warp',
7774
+ attribute: 'range',
7775
+ rationale: 'Resonant crystals amplify warp field projection',
7776
+ },
7777
+ {
7778
+ stat: 'Resonance',
7779
+ capability: 'Launch',
7780
+ attribute: 'range',
7781
+ rationale: 'Resonant crystals focus electromagnetic launch field',
7782
+ },
7783
+ {
7784
+ stat: 'Resonance',
7785
+ capability: 'Launch',
7786
+ attribute: 'capacity',
7787
+ rationale: 'Stronger resonant field launches heavier payloads',
7788
+ },
7789
+ {
7790
+ stat: 'Hardness',
7791
+ capability: 'Manufacturing',
7792
+ attribute: 'speed',
7793
+ rationale: 'Hard tooling surfaces cut and shape materials faster',
7794
+ },
7795
+ {
7796
+ stat: 'Hardness',
7797
+ capability: 'Launch',
7798
+ attribute: 'drain',
7799
+ rationale: 'Hard rail surfaces reduce friction, less energy wasted',
7800
+ },
7801
+ {
7802
+ stat: 'Clarity',
7803
+ capability: 'Energy',
7804
+ attribute: 'recharge',
7805
+ rationale: 'Flawless crystals enable smoother energy flow during recharge',
7806
+ },
7807
+ {
7808
+ stat: 'Clarity',
7809
+ capability: 'Manufacturing',
7810
+ attribute: 'quality',
7811
+ rationale: 'Precision optics for calibration during fabrication',
7812
+ },
7813
+ {
7814
+ stat: 'Clarity',
7815
+ capability: 'Manufacturing',
7816
+ attribute: 'drain',
7817
+ rationale: 'Precision computing optimizes energy routing in factory',
7818
+ },
7819
+ {
7820
+ stat: 'Plasticity',
7821
+ capability: 'Manufacturing',
7822
+ attribute: 'speed',
7823
+ rationale: 'Easily reshaped materials speed up processing',
7824
+ },
7825
+ {
7826
+ stat: 'Plasticity',
7827
+ capability: 'Movement',
7828
+ attribute: 'thrust',
7829
+ rationale: 'Flexible polymer seals reduce friction in propulsion',
7830
+ },
7831
+ {
7832
+ stat: 'Plasticity',
7833
+ capability: 'Loader',
7834
+ attribute: 'thrust',
7835
+ rationale: 'Flexible joints improve loader force transfer',
7836
+ },
7837
+ {
7838
+ stat: 'Insulation',
7839
+ capability: 'Movement',
7840
+ attribute: 'drain',
7841
+ rationale: 'Better insulation reduces energy loss during movement',
7842
+ },
7843
+ {
7844
+ stat: 'Insulation',
7845
+ capability: 'Extraction',
7846
+ attribute: 'drain',
7847
+ rationale: 'Better insulation reduces energy loss during extraction',
7848
+ },
7849
+ {
7850
+ stat: 'Insulation',
7851
+ capability: 'Manufacturing',
7852
+ attribute: 'drain',
7853
+ rationale: 'Better insulation reduces energy loss during manufacturing',
7854
+ },
7855
+ {
7856
+ stat: 'Insulation',
7857
+ capability: 'Launch',
7858
+ attribute: 'drain',
7859
+ rationale: 'Better insulation reduces energy loss during launch',
7860
+ },
7861
+ {
7862
+ stat: 'Purity',
7863
+ capability: 'Storage',
7864
+ attribute: 'capacity',
7865
+ rationale: 'Purer composites make better containers',
7866
+ },
7867
+ {
7868
+ stat: 'Purity',
7869
+ capability: 'Extraction',
7870
+ attribute: 'drill',
7871
+ rationale: 'Purer bio-lubricants reduce friction during drilling',
7872
+ },
7873
+ {
7874
+ stat: 'Purity',
7875
+ capability: 'Energy',
7876
+ attribute: 'capacity',
7877
+ rationale: 'Purer organic electrolytes store more charge',
7878
+ },
7879
+ ];
7880
+ const invertedAttributes = new Set(['drain', 'mass']);
7881
+ function isInvertedAttribute(attribute) {
7882
+ return invertedAttributes.has(attribute);
7883
+ }
7884
+ function getCapabilityAttributes(capability) {
7885
+ if (capability) {
7886
+ return capabilityAttributes.filter((a) => a.capability === capability);
7887
+ }
7888
+ return capabilityAttributes;
7889
+ }
7890
+ function getStatMappings() {
7891
+ return statMappings;
7892
+ }
7893
+ function getStatMappingsForStat(stat) {
7894
+ return statMappings.filter((m) => m.stat === stat);
7895
+ }
7896
+ function getStatMappingsForCapability(capability) {
7897
+ return statMappings.filter((m) => m.capability === capability);
7898
+ }
7899
+
6873
7900
  function computeShipHullCapabilities(stats) {
6874
7901
  const density = stats.density ?? 500;
6875
7902
  const strength = stats.strength ?? 500;
@@ -6886,7 +7913,7 @@ function computeEngineCapabilities(stats) {
6886
7913
  const thm = stats.thermal ?? 500;
6887
7914
  return {
6888
7915
  thrust: 400 + Math.floor(vol * 3 / 4),
6889
- drain: Math.max(16, 30 - Math.floor(thm / 70)),
7916
+ drain: Math.max(30, 50 - Math.floor(thm / 70)),
6890
7917
  };
6891
7918
  }
6892
7919
  function computeGeneratorCapabilities(stats) {
@@ -6926,6 +7953,25 @@ function computeManufacturingCapabilities(stats) {
6926
7953
  drain: Math.max(5, 30 - Math.floor(clr / 33)),
6927
7954
  };
6928
7955
  }
7956
+ function computeStorageCapabilities(stats, baseCapacity) {
7957
+ const strength = stats.strength ?? 500;
7958
+ const ductility = stats.ductility ?? 500;
7959
+ const purity = stats.purity ?? 500;
7960
+ const statSum = strength + ductility + purity;
7961
+ const capacityBonus = Math.floor(baseCapacity * (10 + Math.floor(statSum * 10 / 2997)) / 100);
7962
+ return { capacityBonus };
7963
+ }
7964
+ function computeWarehouseHullCapabilities(stats) {
7965
+ const density = stats.density ?? 500;
7966
+ const strength = stats.strength ?? 500;
7967
+ const ductility = stats.ductility ?? 500;
7968
+ const purity = stats.purity ?? 500;
7969
+ const hullmass = 25000 + 75 * density;
7970
+ const statSum = strength + ductility + purity;
7971
+ const exponent = statSum / 2997.0;
7972
+ const capacity = Math.floor(20000000 * Math.pow(10, exponent));
7973
+ return { hullmass, capacity };
7974
+ }
6929
7975
 
6930
7976
  function toNum(v) {
6931
7977
  return Number(antelope.UInt16.from(v).value.toString());
@@ -7037,6 +8083,16 @@ function computeCapabilityGroup(moduleType, stats) {
7037
8083
  { label: 'Drain', value: caps.drain },
7038
8084
  ] };
7039
8085
  }
8086
+ case MODULE_STORAGE: {
8087
+ const str = stats.strength ?? 500;
8088
+ const duc = stats.ductility ?? 500;
8089
+ const pur = stats.purity ?? 500;
8090
+ const statSum = str + duc + pur;
8091
+ const pct = 10 + Math.floor(statSum * 10 / 2997);
8092
+ return { capability: 'Storage', attributes: [
8093
+ { label: 'Capacity Bonus', value: pct },
8094
+ ] };
8095
+ }
7040
8096
  default:
7041
8097
  return undefined;
7042
8098
  }
@@ -7125,6 +8181,212 @@ function resolveItem(itemId, seed, modules) {
7125
8181
  return resolveResource(id, seed);
7126
8182
  }
7127
8183
 
8184
+ function readCommonBase(data) {
8185
+ return {
8186
+ quantity: Number(data.quantity),
8187
+ seed: String(data.seed),
8188
+ origin_x: String(data.origin_x),
8189
+ origin_y: String(data.origin_y),
8190
+ };
8191
+ }
8192
+ function deserializeScalar(data, itemId) {
8193
+ const base = readCommonBase(data);
8194
+ return { item_id: itemId, quantity: base.quantity, seed: base.seed };
8195
+ }
8196
+ const deserializeResource = deserializeScalar;
8197
+ const deserializeComponent = deserializeScalar;
8198
+ const deserializeModule = deserializeScalar;
8199
+ function deserializeEntity(data, itemId) {
8200
+ const base = readCommonBase(data);
8201
+ const moduleItems = (data.module_items ?? []).map((v) => Number(v));
8202
+ const moduleSeeds = (data.module_seeds ?? []).map((v) => String(v));
8203
+ const layout = getEntitySlotLayout(itemId);
8204
+ const modules = layout.map((slot, i) => ({
8205
+ type: slot.type,
8206
+ installed: moduleItems[i] && moduleItems[i] !== 0
8207
+ ? { item_id: moduleItems[i], seed: moduleSeeds[i] }
8208
+ : undefined,
8209
+ }));
8210
+ return { item_id: itemId, quantity: base.quantity, seed: base.seed, modules };
8211
+ }
8212
+ function deserializeAsset(data, itemId) {
8213
+ const type = itemTypeCode(itemId);
8214
+ switch (type) {
8215
+ case ITEM_TYPE_RESOURCE:
8216
+ case ITEM_TYPE_COMPONENT:
8217
+ case ITEM_TYPE_MODULE:
8218
+ return deserializeScalar(data, itemId);
8219
+ case ITEM_TYPE_ENTITY:
8220
+ return deserializeEntity(data, itemId);
8221
+ default:
8222
+ throw new Error(`unknown item type ${type} for item ${itemId}`);
8223
+ }
8224
+ }
8225
+
8226
+ function idiv(a, b) {
8227
+ return Math.floor(a / b);
8228
+ }
8229
+ function computeBaseHullmass(seed) {
8230
+ const density = decodeStat(seed, 1);
8231
+ return 25000 + 75 * density;
8232
+ }
8233
+ function computeBaseCapacityShip(seed) {
8234
+ const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
8235
+ return Math.floor(1000000 * Math.pow(10, s / 2997));
8236
+ }
8237
+ function computeBaseCapacityWarehouse(seed) {
8238
+ const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
8239
+ return Math.floor(20000000 * Math.pow(10, s / 2997));
8240
+ }
8241
+ const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
8242
+ const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
8243
+ const computeGeneratorCap = (res) => 300 + idiv(res, 6);
8244
+ const computeGeneratorRech = (clr) => 5 + idiv(clr * 15, 1000);
8245
+ const computeExtractorRate = (str) => 200 + str;
8246
+ const computeExtractorDrain = (con) => Math.max(10, 50 - idiv(con, 20));
8247
+ const computeExtractorDepth = (tol) => 200 + idiv(tol * 3, 2);
8248
+ const computeExtractorDrill = (ref) => 100 + idiv(ref * 4, 5);
8249
+ const computeLoaderMass = (duc) => Math.max(200, 2000 - duc * 2);
8250
+ const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
8251
+ const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
8252
+ const computeCrafterDrain = (clr) => Math.max(5, 30 - idiv(clr, 33));
8253
+ function entityDisplayName(itemId) {
8254
+ switch (itemId) {
8255
+ case ITEM_SHIP_T1_PACKED:
8256
+ return 'Ship T1';
8257
+ case ITEM_WAREHOUSE_T1_PACKED:
8258
+ return 'Warehouse T1';
8259
+ case ITEM_CONTAINER_T1_PACKED:
8260
+ return 'Container T1';
8261
+ case ITEM_CONTAINER_T2_PACKED:
8262
+ return 'Container T2';
8263
+ default:
8264
+ return 'Entity';
8265
+ }
8266
+ }
8267
+ function moduleDisplayName(itemId) {
8268
+ switch (itemId) {
8269
+ case ITEM_ENGINE_T1:
8270
+ return 'Engine T1';
8271
+ case ITEM_GENERATOR_T1:
8272
+ return 'Generator T1';
8273
+ case ITEM_EXTRACTOR_T1:
8274
+ return 'Extractor T1';
8275
+ case ITEM_LOADER_T1:
8276
+ return 'Loader T1';
8277
+ case ITEM_MANUFACTURING_T1:
8278
+ return 'Manufacturing T1';
8279
+ case ITEM_STORAGE_T1:
8280
+ return 'Storage T1';
8281
+ default:
8282
+ return 'Module';
8283
+ }
8284
+ }
8285
+ function formatModuleLine(slot, itemId, seed) {
8286
+ let out = `Slot ${slot} - `;
8287
+ if (itemId === 0) {
8288
+ out += '(empty)';
8289
+ return out;
8290
+ }
8291
+ out += moduleDisplayName(itemId);
8292
+ const subtype = getModuleCapabilityType(itemId);
8293
+ switch (subtype) {
8294
+ case MODULE_ENGINE: {
8295
+ const vol = decodeStat(seed, 0);
8296
+ const thm = decodeStat(seed, 1);
8297
+ out += ` Thrust ${computeEngineThrust(vol)} Drain ${computeEngineDrain(thm)}`;
8298
+ break;
8299
+ }
8300
+ case MODULE_GENERATOR: {
8301
+ const res = decodeStat(seed, 0);
8302
+ const clr = decodeStat(seed, 1);
8303
+ out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(clr)}`;
8304
+ break;
8305
+ }
8306
+ case MODULE_EXTRACTOR: {
8307
+ const str = decodeStat(seed, 0);
8308
+ const tol = decodeStat(seed, 1);
8309
+ const con = decodeStat(seed, 3);
8310
+ const ref = decodeStat(seed, 4);
8311
+ out += ` Rate ${computeExtractorRate(str)} Depth ${computeExtractorDepth(tol)} Drill ${computeExtractorDrill(ref)} Drain ${computeExtractorDrain(con)}`;
8312
+ break;
8313
+ }
8314
+ case MODULE_LOADER: {
8315
+ const duc = decodeStat(seed, 0);
8316
+ const pla = decodeStat(seed, 1);
8317
+ out += ` Mass ${computeLoaderMass(duc)} Thrust ${computeLoaderThrust(pla)}`;
8318
+ break;
8319
+ }
8320
+ case MODULE_CRAFTER: {
8321
+ const rea = decodeStat(seed, 0);
8322
+ const clr = decodeStat(seed, 1);
8323
+ out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(clr)}`;
8324
+ break;
8325
+ }
8326
+ case MODULE_STORAGE: {
8327
+ const str = decodeStat(seed, 0);
8328
+ const duc = decodeStat(seed, 1);
8329
+ const pur = decodeStat(seed, 2);
8330
+ const sum = str + duc + pur;
8331
+ const pct = 10 + idiv(sum * 10, 2997);
8332
+ out += ` +${pct}% capacity`;
8333
+ break;
8334
+ }
8335
+ }
8336
+ return out;
8337
+ }
8338
+ function buildEntityDescription(itemId, hullSeed, moduleItems, moduleSeeds) {
8339
+ const hullMass = computeBaseHullmass(hullSeed);
8340
+ let baseCapacity = 0;
8341
+ if (itemId === ITEM_SHIP_T1_PACKED) {
8342
+ baseCapacity = computeBaseCapacityShip(hullSeed);
8343
+ }
8344
+ else if (itemId === ITEM_WAREHOUSE_T1_PACKED) {
8345
+ baseCapacity = computeBaseCapacityWarehouse(hullSeed);
8346
+ }
8347
+ let out = entityDisplayName(itemId);
8348
+ out += ` - Hull ${hullMass} mass`;
8349
+ if (baseCapacity > 0) {
8350
+ out += ` * ${baseCapacity} capacity`;
8351
+ }
8352
+ out += '\n\n';
8353
+ for (let i = 0; i < moduleItems.length; i++) {
8354
+ out += formatModuleLine(i, moduleItems[i], moduleSeeds[i] ?? 0n);
8355
+ out += '\n';
8356
+ }
8357
+ return out;
8358
+ }
8359
+
8360
+ var index = /*#__PURE__*/Object.freeze({
8361
+ __proto__: null,
8362
+ readCommonBase: readCommonBase,
8363
+ deserializeScalar: deserializeScalar,
8364
+ deserializeResource: deserializeResource,
8365
+ deserializeComponent: deserializeComponent,
8366
+ deserializeModule: deserializeModule,
8367
+ deserializeEntity: deserializeEntity,
8368
+ deserializeAsset: deserializeAsset,
8369
+ computeBaseHullmass: computeBaseHullmass,
8370
+ computeBaseCapacityShip: computeBaseCapacityShip,
8371
+ computeBaseCapacityWarehouse: computeBaseCapacityWarehouse,
8372
+ computeEngineThrust: computeEngineThrust,
8373
+ computeEngineDrain: computeEngineDrain,
8374
+ computeGeneratorCap: computeGeneratorCap,
8375
+ computeGeneratorRech: computeGeneratorRech,
8376
+ computeExtractorRate: computeExtractorRate,
8377
+ computeExtractorDrain: computeExtractorDrain,
8378
+ computeExtractorDepth: computeExtractorDepth,
8379
+ computeExtractorDrill: computeExtractorDrill,
8380
+ computeLoaderMass: computeLoaderMass,
8381
+ computeLoaderThrust: computeLoaderThrust,
8382
+ computeCrafterSpeed: computeCrafterSpeed,
8383
+ computeCrafterDrain: computeCrafterDrain,
8384
+ entityDisplayName: entityDisplayName,
8385
+ moduleDisplayName: moduleDisplayName,
8386
+ formatModuleLine: formatModuleLine,
8387
+ buildEntityDescription: buildEntityDescription
8388
+ });
8389
+
7128
8390
  exports.ActionsManager = ActionsManager;
7129
8391
  exports.BASE_ORBITAL_MASS = BASE_ORBITAL_MASS;
7130
8392
  exports.COMMIT_ALREADY_SET = COMMIT_ALREADY_SET;
@@ -7160,7 +8422,9 @@ exports.INSUFFICIENT_ITEM_SUPPLY = INSUFFICIENT_ITEM_SUPPLY;
7160
8422
  exports.INVALID_AMOUNT = INVALID_AMOUNT;
7161
8423
  exports.ITEM_CARGO_ARM = ITEM_CARGO_ARM;
7162
8424
  exports.ITEM_CARGO_LINING = ITEM_CARGO_LINING;
7163
- exports.ITEM_CONTAINER_PACKED = ITEM_CONTAINER_PACKED;
8425
+ exports.ITEM_CARGO_LINING_T2 = ITEM_CARGO_LINING_T2;
8426
+ exports.ITEM_CONTAINER_T1_PACKED = ITEM_CONTAINER_T1_PACKED;
8427
+ exports.ITEM_CONTAINER_T2_PACKED = ITEM_CONTAINER_T2_PACKED;
7164
8428
  exports.ITEM_DOES_NOT_EXIST = ITEM_DOES_NOT_EXIST;
7165
8429
  exports.ITEM_DRILL_SHAFT = ITEM_DRILL_SHAFT;
7166
8430
  exports.ITEM_ENGINE_T1 = ITEM_ENGINE_T1;
@@ -7168,14 +8432,21 @@ exports.ITEM_EXTRACTION_PROBE = ITEM_EXTRACTION_PROBE;
7168
8432
  exports.ITEM_EXTRACTOR_T1 = ITEM_EXTRACTOR_T1;
7169
8433
  exports.ITEM_GENERATOR_T1 = ITEM_GENERATOR_T1;
7170
8434
  exports.ITEM_HULL_PLATES = ITEM_HULL_PLATES;
8435
+ exports.ITEM_HULL_PLATES_T2 = ITEM_HULL_PLATES_T2;
7171
8436
  exports.ITEM_LOADER_T1 = ITEM_LOADER_T1;
7172
8437
  exports.ITEM_MANUFACTURING_T1 = ITEM_MANUFACTURING_T1;
7173
8438
  exports.ITEM_NOT_AVAILABLE_AT_LOCATION = ITEM_NOT_AVAILABLE_AT_LOCATION;
7174
8439
  exports.ITEM_POWER_CELL = ITEM_POWER_CELL;
7175
8440
  exports.ITEM_REACTION_CHAMBER = ITEM_REACTION_CHAMBER;
7176
8441
  exports.ITEM_SHIP_T1_PACKED = ITEM_SHIP_T1_PACKED;
8442
+ exports.ITEM_STORAGE_T1 = ITEM_STORAGE_T1;
7177
8443
  exports.ITEM_THRUSTER_CORE = ITEM_THRUSTER_CORE;
7178
8444
  exports.ITEM_TOOL_BIT = ITEM_TOOL_BIT;
8445
+ exports.ITEM_TYPE_COMPONENT = ITEM_TYPE_COMPONENT;
8446
+ exports.ITEM_TYPE_ENTITY = ITEM_TYPE_ENTITY;
8447
+ exports.ITEM_TYPE_MODULE = ITEM_TYPE_MODULE;
8448
+ exports.ITEM_TYPE_RESOURCE = ITEM_TYPE_RESOURCE;
8449
+ exports.ITEM_WAREHOUSE_T1_PACKED = ITEM_WAREHOUSE_T1_PACKED;
7179
8450
  exports.InventoryAccessor = InventoryAccessor;
7180
8451
  exports.LOCATION_MAX_DEPTH = LOCATION_MAX_DEPTH;
7181
8452
  exports.LOCATION_MIN_DEPTH = LOCATION_MIN_DEPTH;
@@ -7190,7 +8461,9 @@ exports.MODULE_EXTRACTOR = MODULE_EXTRACTOR;
7190
8461
  exports.MODULE_GENERATOR = MODULE_GENERATOR;
7191
8462
  exports.MODULE_LAUNCHER = MODULE_LAUNCHER;
7192
8463
  exports.MODULE_LOADER = MODULE_LOADER;
8464
+ exports.MODULE_STORAGE = MODULE_STORAGE;
7193
8465
  exports.MODULE_WARP = MODULE_WARP;
8466
+ exports.NFT = index;
7194
8467
  exports.NO_SCHEDULE = NO_SCHEDULE;
7195
8468
  exports.PLANET_SUBTYPE_GAS_GIANT = PLANET_SUBTYPE_GAS_GIANT;
7196
8469
  exports.PLANET_SUBTYPE_ICY = PLANET_SUBTYPE_ICY;
@@ -7238,7 +8511,9 @@ exports.availableCapacity = availableCapacity$1;
7238
8511
  exports.availableCapacityFromMass = availableCapacityFromMass;
7239
8512
  exports.blendCargoStacks = blendCargoStacks;
7240
8513
  exports.blendComponentStacks = blendComponentStacks;
8514
+ exports.blendCrossGroup = blendCrossGroup;
7241
8515
  exports.blendStacks = blendStacks;
8516
+ exports.buildEntityDescription = buildEntityDescription;
7242
8517
  exports.calcCargoMass = calcCargoMass;
7243
8518
  exports.calcEnergyUsage = calcEnergyUsage;
7244
8519
  exports.calcLoadDuration = calcLoadDuration;
@@ -7263,6 +8538,8 @@ exports.calculateLoadTimeBreakdown = calculateLoadTimeBreakdown;
7263
8538
  exports.calculateRefuelingTime = calculateRefuelingTime;
7264
8539
  exports.calculateTransferTime = calculateTransferTime;
7265
8540
  exports.canMove = canMove;
8541
+ exports.capabilityAttributes = capabilityAttributes;
8542
+ exports.capabilityNames = capabilityNames;
7266
8543
  exports.capsHasCrafter = capsHasCrafter;
7267
8544
  exports.capsHasExtractor = capsHasExtractor;
7268
8545
  exports.capsHasLoaders = capsHasLoaders;
@@ -7272,22 +8549,43 @@ exports.capsHasStorage = capsHasStorage;
7272
8549
  exports.cargoUtils = cargoUtils;
7273
8550
  exports.categoryColors = categoryColors;
7274
8551
  exports.categoryIcons = categoryIcons;
8552
+ exports.categoryItemMass = categoryItemMass;
7275
8553
  exports.componentIcon = componentIcon;
7276
8554
  exports.components = components;
8555
+ exports.computeBaseCapacityShip = computeBaseCapacityShip;
8556
+ exports.computeBaseCapacityWarehouse = computeBaseCapacityWarehouse;
8557
+ exports.computeBaseHullmass = computeBaseHullmass;
7277
8558
  exports.computeComponentStats = computeComponentStats;
7278
8559
  exports.computeContainerCapabilities = computeContainerCapabilities;
8560
+ exports.computeContainerT2Capabilities = computeContainerT2Capabilities;
8561
+ exports.computeCrafterDrain = computeCrafterDrain;
8562
+ exports.computeCrafterSpeed = computeCrafterSpeed;
7279
8563
  exports.computeEngineCapabilities = computeEngineCapabilities;
8564
+ exports.computeEngineDrain = computeEngineDrain;
8565
+ exports.computeEngineThrust = computeEngineThrust;
7280
8566
  exports.computeEntityStats = computeEntityStats;
7281
8567
  exports.computeExtractorCapabilities = computeExtractorCapabilities;
8568
+ exports.computeExtractorDepth = computeExtractorDepth;
8569
+ exports.computeExtractorDrain = computeExtractorDrain;
8570
+ exports.computeExtractorDrill = computeExtractorDrill;
8571
+ exports.computeExtractorRate = computeExtractorRate;
8572
+ exports.computeGeneratorCap = computeGeneratorCap;
7282
8573
  exports.computeGeneratorCapabilities = computeGeneratorCapabilities;
8574
+ exports.computeGeneratorRech = computeGeneratorRech;
8575
+ exports.computeInputMass = computeInputMass;
7283
8576
  exports.computeLoaderCapabilities = computeLoaderCapabilities;
8577
+ exports.computeLoaderMass = computeLoaderMass;
8578
+ exports.computeLoaderThrust = computeLoaderThrust;
7284
8579
  exports.computeManufacturingCapabilities = computeManufacturingCapabilities;
7285
8580
  exports.computeShipHullCapabilities = computeShipHullCapabilities;
8581
+ exports.computeStorageCapabilities = computeStorageCapabilities;
8582
+ exports.computeWarehouseHullCapabilities = computeWarehouseHullCapabilities;
7286
8583
  exports.coordsToLocationId = coordsToLocationId;
7287
8584
  exports.createInventoryAccessor = createInventoryAccessor;
7288
8585
  exports.createProjectedEntity = createProjectedEntity;
7289
8586
  exports.createScheduleAccessor = createScheduleAccessor;
7290
8587
  exports.decodeCraftedItemStats = decodeCraftedItemStats;
8588
+ exports.decodeStat = decodeStat;
7291
8589
  exports.decodeStats = decodeStats;
7292
8590
  exports["default"] = Shipload;
7293
8591
  exports.depthScaleFactor = depthScaleFactor;
@@ -7297,15 +8595,24 @@ exports.deriveLocationSize = deriveLocationSize;
7297
8595
  exports.deriveLocationStatic = deriveLocationStatic;
7298
8596
  exports.deriveResourceStats = deriveResourceStats;
7299
8597
  exports.deriveStratum = deriveStratum;
8598
+ exports.deserializeAsset = deserializeAsset;
8599
+ exports.deserializeComponent = deserializeComponent;
8600
+ exports.deserializeEntity = deserializeEntity;
8601
+ exports.deserializeModule = deserializeModule;
8602
+ exports.deserializeResource = deserializeResource;
7300
8603
  exports.distanceBetweenCoordinates = distanceBetweenCoordinates;
7301
8604
  exports.distanceBetweenPoints = distanceBetweenPoints;
7302
8605
  exports.encodeStats = encodeStats;
7303
8606
  exports.energyPercent = energyPercent;
8607
+ exports.entityDisplayName = entityDisplayName;
7304
8608
  exports.entityRecipes = entityRecipes;
7305
8609
  exports.estimateDealTravelTime = estimateDealTravelTime;
7306
8610
  exports.estimateTravelTime = estimateTravelTime;
7307
8611
  exports.findNearbyPlanets = findNearbyPlanets;
8612
+ exports.formatModuleLine = formatModuleLine;
7308
8613
  exports.getAllCraftableItems = getAllCraftableItems;
8614
+ exports.getCapabilityAttributes = getCapabilityAttributes;
8615
+ exports.getCategoryInfo = getCategoryInfo;
7309
8616
  exports.getComponentById = getComponentById;
7310
8617
  exports.getComponentsForCategory = getComponentsForCategory;
7311
8618
  exports.getComponentsForStat = getComponentsForStat;
@@ -7315,6 +8622,7 @@ exports.getDestinationLocation = getDestinationLocation;
7315
8622
  exports.getEligibleResources = getEligibleResources;
7316
8623
  exports.getEntityRecipe = getEntityRecipe;
7317
8624
  exports.getEntityRecipeByItemId = getEntityRecipeByItemId;
8625
+ exports.getEntitySlotLayout = getEntitySlotLayout;
7318
8626
  exports.getEpochInfo = getEpochInfo;
7319
8627
  exports.getFlightOrigin = getFlightOrigin;
7320
8628
  exports.getItem = getItem;
@@ -7324,10 +8632,15 @@ exports.getLocationType = getLocationType;
7324
8632
  exports.getModuleCapabilityType = getModuleCapabilityType;
7325
8633
  exports.getModuleRecipe = getModuleRecipe;
7326
8634
  exports.getModuleRecipeByItemId = getModuleRecipeByItemId;
8635
+ exports.getPlanetSubtype = getPlanetSubtype;
8636
+ exports.getPlanetSubtypes = getPlanetSubtypes;
7327
8637
  exports.getPositionAt = getPositionAt;
7328
8638
  exports.getResourceTier = getResourceTier;
7329
8639
  exports.getResourceWeight = getResourceWeight;
7330
8640
  exports.getStatDefinitions = getStatDefinitions;
8641
+ exports.getStatMappings = getStatMappings;
8642
+ exports.getStatMappingsForCapability = getStatMappingsForCapability;
8643
+ exports.getStatMappingsForStat = getStatMappingsForStat;
7331
8644
  exports.getStatName = getStatName;
7332
8645
  exports.getSystemName = getSystemName;
7333
8646
  exports.hasEnergy = hasEnergy;
@@ -7342,27 +8655,37 @@ exports.hasStorage = hasStorage;
7342
8655
  exports.hasSystem = hasSystem;
7343
8656
  exports.hash = hash;
7344
8657
  exports.hash512 = hash512;
8658
+ exports.isCraftedItem = isCraftedItem;
7345
8659
  exports.isExtractableLocation = isExtractableLocation;
7346
8660
  exports.isFull = isFull$1;
7347
8661
  exports.isFullFromMass = isFullFromMass;
8662
+ exports.isInvertedAttribute = isInvertedAttribute;
7348
8663
  exports.isModuleItem = isModuleItem;
8664
+ exports.isRelatedItem = isRelatedItem;
8665
+ exports.itemCategory = itemCategory;
7349
8666
  exports.itemIcons = itemIcons;
7350
8667
  exports.itemIds = itemIds;
8668
+ exports.itemOffset = itemOffset;
8669
+ exports.itemTier = itemTier;
8670
+ exports.itemTypeCode = itemTypeCode;
7351
8671
  exports.lerp = lerp;
7352
8672
  exports.makeContainer = makeContainer;
7353
8673
  exports.makeShip = makeShip;
7354
8674
  exports.makeWarehouse = makeWarehouse;
7355
8675
  exports.maxTravelDistance = maxTravelDistance;
7356
8676
  exports.moduleAccepts = moduleAccepts;
8677
+ exports.moduleDisplayName = moduleDisplayName;
7357
8678
  exports.moduleIcon = moduleIcon;
7358
8679
  exports.moduleRecipes = moduleRecipes;
7359
8680
  exports.needsRecharge = needsRecharge;
7360
8681
  exports.projectEntity = projectEntity;
7361
8682
  exports.projectEntityAt = projectEntityAt;
8683
+ exports.readCommonBase = readCommonBase;
7362
8684
  exports.resolveItem = resolveItem;
7363
8685
  exports.resolveStats = resolveStats;
7364
8686
  exports.rotation = rotation;
7365
8687
  exports.schedule = schedule;
8688
+ exports.statMappings = statMappings;
7366
8689
  exports.tierColors = tierColors;
7367
8690
  exports.toLocation = toLocation;
7368
8691
  //# sourceMappingURL=shipload.js.map