@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.d.ts +401 -38
- package/lib/shipload.js +1390 -67
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +1330 -68
- package/lib/shipload.m.js.map +1 -1
- package/package.json +6 -5
- package/src/capabilities/modules.ts +9 -5
- package/src/contracts/server.ts +279 -22
- package/src/data/capabilities.ts +372 -0
- package/src/data/categories.ts +57 -0
- package/src/data/colors.ts +19 -14
- package/src/data/locations.ts +53 -0
- package/src/data/recipes.ts +117 -14
- package/src/data/tiers.ts +41 -0
- package/src/derivation/crafting.ts +58 -1
- package/src/entities/container.ts +18 -0
- package/src/entities/makers.ts +6 -4
- package/src/entities/ship-deploy.ts +34 -1
- package/src/entities/warehouse.ts +7 -1
- package/src/index-module.ts +70 -2
- package/src/nft/description.ts +173 -0
- package/src/nft/deserializers.ts +81 -0
- package/src/nft/index.ts +2 -0
- package/src/resolution/resolve-item.ts +11 -1
- package/src/travel/travel.ts +17 -8
- package/src/types/entity.ts +1 -1
- package/src/types.ts +6 -6
package/lib/shipload.m.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import { Blob, ABI, Struct, Name, UInt64, Checksum256, UInt32, TimePointSec, UInt8, UInt16, TimePoint,
|
|
2
|
+
import { Blob, ABI, Struct, Name, UInt64, Checksum256, UInt32, TimePointSec, UInt8, Int64, UInt16, TimePoint, Bytes, Int32, Checksum512, APIClient } from '@wharfkit/antelope';
|
|
3
3
|
import ContractKit, { Contract as Contract$2 } from '@wharfkit/contract';
|
|
4
4
|
|
|
5
5
|
const abiBlob$1 = Blob.from('DmVvc2lvOjphYmkvMS4yAA0KY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/C2NvbXBhbnlfcm93AAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAplbmFibGVnYW1lAAIIY29udHJhY3QEbmFtZQdlbmFibGVkBGJvb2wMZm91bmRjb21wYW55AAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nC2dhbWVfY29uZmlnAAQEc2VlZAtjaGVja3N1bTI1NgllcG9jaHRpbWUGdWludDMyBXN0YXJ0DnRpbWVfcG9pbnRfc2VjA2VuZA50aW1lX3BvaW50X3NlYwlnYW1lX21ldGEABARuYW1lBnN0cmluZwtkZXNjcmlwdGlvbgZzdHJpbmcDdXJsBnN0cmluZwd2ZXJzaW9uBnN0cmluZwhnYW1lX3JvdwAECGNvbnRyYWN0BG5hbWUGY29uZmlnC2dhbWVfY29uZmlnBG1ldGEJZ2FtZV9tZXRhBXN0YXRlCmdhbWVfc3RhdGUKZ2FtZV9zdGF0ZQABB2VuYWJsZWQEYm9vbAlzdGFydGdhbWUABAhjb250cmFjdARuYW1lBmNvbmZpZwtnYW1lX2NvbmZpZwRtZXRhCWdhbWVfbWV0YQVzdGF0ZQpnYW1lX3N0YXRlCXN0YXRlX3JvdwABB2VuYWJsZWQEYm9vbAp1cGRhdGVnYW1lAAIIY29udHJhY3QEbmFtZQRtZXRhCWdhbWVfbWV0YQR3aXBlAAAHAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAACoeMxUBmVuYWJsZfMBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnRW5hYmxlL2Rpc2FibGUgcGxhdGZvcm0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGUgcGxhdGZvcm0gY29udHJhY3QuAICShql4zFQKZW5hYmxlZ2FtZfwBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZWdhbWUKc3VtbWFyeTogJ0VuYWJsZS9kaXNiYWJsZSBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGUgc3BlY2lmaWVkIGdhbWUgY29udHJhY3Qu4KepkqI0NV0MZm91bmRjb21wYW55gwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZm91bmRjb21wYW55CnN1bW1hcnk6ICdGb3VuZCBhIG5ldyBjb21wYW55JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKRm91bmQgYSBuZXcgY29tcGFueSBpbiB0aGUgU2hpcGxvYWQgcGxhdGZvcm0gY29udHJhY3QuAABQ0rB8TcYJc3RhcnRnYW1l/wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3RhcnRnYW1lCnN1bW1hcnk6ICdTdGFydCBhIG5ldyBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKU3RhcnQgYSBuZXcgZ2FtZSBvZiBTaGlwbG9hZCBkZXBsb3llZCB0byBhIG5ldyBjb250cmFjdC4AgJKGqWxS1Qp1cGRhdGVnYW1ljQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlZ2FtZQpzdW1tYXJ5OiAnVXBkYXRlIGdhbWUgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpVcGRhdGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgZ2FtZSBjb250cmFjdC4KCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0DAAAAwE9TJUUDaTY0AAALY29tcGFueV9yb3cAAAAAAKykYQNpNjQAAAhnYW1lX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwETU2hpcGxvYWQgKFBsYXRmb3JtKRNTaGlwbG9hZCAoUGxhdGZvcm0pAAAAAA==');
|
|
@@ -205,7 +205,7 @@ var platform = /*#__PURE__*/Object.freeze({
|
|
|
205
205
|
Contract: Contract$1
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
const abiBlob = 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==');
|
|
208
|
+
const abiBlob = 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==');
|
|
209
209
|
const abi = ABI.from(abiBlob);
|
|
210
210
|
var Types;
|
|
211
211
|
(function (Types) {
|
|
@@ -230,6 +230,21 @@ var Types;
|
|
|
230
230
|
Struct.type('addmodule')
|
|
231
231
|
], addmodule);
|
|
232
232
|
Types.addmodule = addmodule;
|
|
233
|
+
let addnexus = class addnexus extends Struct {
|
|
234
|
+
};
|
|
235
|
+
__decorate([
|
|
236
|
+
Struct.field('string')
|
|
237
|
+
], addnexus.prototype, "nexus_name", void 0);
|
|
238
|
+
__decorate([
|
|
239
|
+
Struct.field(Int64)
|
|
240
|
+
], addnexus.prototype, "x", void 0);
|
|
241
|
+
__decorate([
|
|
242
|
+
Struct.field(Int64)
|
|
243
|
+
], addnexus.prototype, "y", void 0);
|
|
244
|
+
addnexus = __decorate([
|
|
245
|
+
Struct.type('addnexus')
|
|
246
|
+
], addnexus);
|
|
247
|
+
Types.addnexus = addnexus;
|
|
233
248
|
let advance = class advance extends Struct {
|
|
234
249
|
};
|
|
235
250
|
__decorate([
|
|
@@ -410,21 +425,6 @@ var Types;
|
|
|
410
425
|
Struct.type('commit')
|
|
411
426
|
], commit);
|
|
412
427
|
Types.commit = commit;
|
|
413
|
-
let loader_stats = class loader_stats extends Struct {
|
|
414
|
-
};
|
|
415
|
-
__decorate([
|
|
416
|
-
Struct.field(UInt32)
|
|
417
|
-
], loader_stats.prototype, "mass", void 0);
|
|
418
|
-
__decorate([
|
|
419
|
-
Struct.field(UInt16)
|
|
420
|
-
], loader_stats.prototype, "thrust", void 0);
|
|
421
|
-
__decorate([
|
|
422
|
-
Struct.field(UInt8)
|
|
423
|
-
], loader_stats.prototype, "quantity", void 0);
|
|
424
|
-
loader_stats = __decorate([
|
|
425
|
-
Struct.type('loader_stats')
|
|
426
|
-
], loader_stats);
|
|
427
|
-
Types.loader_stats = loader_stats;
|
|
428
428
|
let entity_defaults = class entity_defaults extends Struct {
|
|
429
429
|
};
|
|
430
430
|
__decorate([
|
|
@@ -433,9 +433,6 @@ var Types;
|
|
|
433
433
|
__decorate([
|
|
434
434
|
Struct.field(UInt16)
|
|
435
435
|
], entity_defaults.prototype, "warehouse_z", void 0);
|
|
436
|
-
__decorate([
|
|
437
|
-
Struct.field(loader_stats)
|
|
438
|
-
], entity_defaults.prototype, "warehouse_loaders", void 0);
|
|
439
436
|
__decorate([
|
|
440
437
|
Struct.field(UInt32)
|
|
441
438
|
], entity_defaults.prototype, "container_hullmass", void 0);
|
|
@@ -457,6 +454,15 @@ var Types;
|
|
|
457
454
|
__decorate([
|
|
458
455
|
Struct.field(UInt32)
|
|
459
456
|
], item_def.prototype, "mass", void 0);
|
|
457
|
+
__decorate([
|
|
458
|
+
Struct.field(UInt8)
|
|
459
|
+
], item_def.prototype, "type", void 0);
|
|
460
|
+
__decorate([
|
|
461
|
+
Struct.field(UInt8)
|
|
462
|
+
], item_def.prototype, "subtype", void 0);
|
|
463
|
+
__decorate([
|
|
464
|
+
Struct.field(UInt8)
|
|
465
|
+
], item_def.prototype, "tier", void 0);
|
|
460
466
|
item_def = __decorate([
|
|
461
467
|
Struct.type('item_def')
|
|
462
468
|
], item_def);
|
|
@@ -680,6 +686,21 @@ var Types;
|
|
|
680
686
|
Struct.type('entity_current_state')
|
|
681
687
|
], entity_current_state);
|
|
682
688
|
Types.entity_current_state = entity_current_state;
|
|
689
|
+
let loader_stats = class loader_stats extends Struct {
|
|
690
|
+
};
|
|
691
|
+
__decorate([
|
|
692
|
+
Struct.field(UInt32)
|
|
693
|
+
], loader_stats.prototype, "mass", void 0);
|
|
694
|
+
__decorate([
|
|
695
|
+
Struct.field(UInt16)
|
|
696
|
+
], loader_stats.prototype, "thrust", void 0);
|
|
697
|
+
__decorate([
|
|
698
|
+
Struct.field(UInt8)
|
|
699
|
+
], loader_stats.prototype, "quantity", void 0);
|
|
700
|
+
loader_stats = __decorate([
|
|
701
|
+
Struct.type('loader_stats')
|
|
702
|
+
], loader_stats);
|
|
703
|
+
Types.loader_stats = loader_stats;
|
|
683
704
|
let movement_stats = class movement_stats extends Struct {
|
|
684
705
|
};
|
|
685
706
|
__decorate([
|
|
@@ -902,6 +923,12 @@ var Types;
|
|
|
902
923
|
Struct.type('getentity')
|
|
903
924
|
], getentity);
|
|
904
925
|
Types.getentity = getentity;
|
|
926
|
+
let getitemdata = class getitemdata extends Struct {
|
|
927
|
+
};
|
|
928
|
+
getitemdata = __decorate([
|
|
929
|
+
Struct.type('getitemdata')
|
|
930
|
+
], getitemdata);
|
|
931
|
+
Types.getitemdata = getitemdata;
|
|
905
932
|
let getitems = class getitems extends Struct {
|
|
906
933
|
};
|
|
907
934
|
getitems = __decorate([
|
|
@@ -932,6 +959,12 @@ var Types;
|
|
|
932
959
|
Struct.type('getlocdata')
|
|
933
960
|
], getlocdata);
|
|
934
961
|
Types.getlocdata = getlocdata;
|
|
962
|
+
let getmodules = class getmodules extends Struct {
|
|
963
|
+
};
|
|
964
|
+
getmodules = __decorate([
|
|
965
|
+
Struct.type('getmodules')
|
|
966
|
+
], getmodules);
|
|
967
|
+
Types.getmodules = getmodules;
|
|
935
968
|
let getnearby = class getnearby extends Struct {
|
|
936
969
|
};
|
|
937
970
|
__decorate([
|
|
@@ -947,6 +980,12 @@ var Types;
|
|
|
947
980
|
Struct.type('getnearby')
|
|
948
981
|
], getnearby);
|
|
949
982
|
Types.getnearby = getnearby;
|
|
983
|
+
let getnftinfo = class getnftinfo extends Struct {
|
|
984
|
+
};
|
|
985
|
+
getnftinfo = __decorate([
|
|
986
|
+
Struct.type('getnftinfo')
|
|
987
|
+
], getnftinfo);
|
|
988
|
+
Types.getnftinfo = getnftinfo;
|
|
950
989
|
let getplayer = class getplayer extends Struct {
|
|
951
990
|
};
|
|
952
991
|
__decorate([
|
|
@@ -956,6 +995,33 @@ var Types;
|
|
|
956
995
|
Struct.type('getplayer')
|
|
957
996
|
], getplayer);
|
|
958
997
|
Types.getplayer = getplayer;
|
|
998
|
+
let getrecipe = class getrecipe extends Struct {
|
|
999
|
+
};
|
|
1000
|
+
__decorate([
|
|
1001
|
+
Struct.field(UInt16)
|
|
1002
|
+
], getrecipe.prototype, "output_item_id", void 0);
|
|
1003
|
+
getrecipe = __decorate([
|
|
1004
|
+
Struct.type('getrecipe')
|
|
1005
|
+
], getrecipe);
|
|
1006
|
+
Types.getrecipe = getrecipe;
|
|
1007
|
+
let getrecipes = class getrecipes extends Struct {
|
|
1008
|
+
};
|
|
1009
|
+
__decorate([
|
|
1010
|
+
Struct.field(UInt16)
|
|
1011
|
+
], getrecipes.prototype, "lower_bound", void 0);
|
|
1012
|
+
__decorate([
|
|
1013
|
+
Struct.field(UInt8)
|
|
1014
|
+
], getrecipes.prototype, "limit", void 0);
|
|
1015
|
+
getrecipes = __decorate([
|
|
1016
|
+
Struct.type('getrecipes')
|
|
1017
|
+
], getrecipes);
|
|
1018
|
+
Types.getrecipes = getrecipes;
|
|
1019
|
+
let getresources = class getresources extends Struct {
|
|
1020
|
+
};
|
|
1021
|
+
getresources = __decorate([
|
|
1022
|
+
Struct.type('getresources')
|
|
1023
|
+
], getresources);
|
|
1024
|
+
Types.getresources = getresources;
|
|
959
1025
|
let getstratum = class getstratum extends Struct {
|
|
960
1026
|
};
|
|
961
1027
|
__decorate([
|
|
@@ -1028,6 +1094,102 @@ var Types;
|
|
|
1028
1094
|
Struct.type('init')
|
|
1029
1095
|
], init);
|
|
1030
1096
|
Types.init = init;
|
|
1097
|
+
let recipe_input = class recipe_input extends Struct {
|
|
1098
|
+
};
|
|
1099
|
+
__decorate([
|
|
1100
|
+
Struct.field(UInt16)
|
|
1101
|
+
], recipe_input.prototype, "item_id", void 0);
|
|
1102
|
+
__decorate([
|
|
1103
|
+
Struct.field(UInt8)
|
|
1104
|
+
], recipe_input.prototype, "category", void 0);
|
|
1105
|
+
__decorate([
|
|
1106
|
+
Struct.field(UInt32)
|
|
1107
|
+
], recipe_input.prototype, "quantity", void 0);
|
|
1108
|
+
recipe_input = __decorate([
|
|
1109
|
+
Struct.type('recipe_input')
|
|
1110
|
+
], recipe_input);
|
|
1111
|
+
Types.recipe_input = recipe_input;
|
|
1112
|
+
let stat_source = class stat_source extends Struct {
|
|
1113
|
+
};
|
|
1114
|
+
__decorate([
|
|
1115
|
+
Struct.field(UInt8)
|
|
1116
|
+
], stat_source.prototype, "input_index", void 0);
|
|
1117
|
+
__decorate([
|
|
1118
|
+
Struct.field(UInt8)
|
|
1119
|
+
], stat_source.prototype, "input_stat_index", void 0);
|
|
1120
|
+
stat_source = __decorate([
|
|
1121
|
+
Struct.type('stat_source')
|
|
1122
|
+
], stat_source);
|
|
1123
|
+
Types.stat_source = stat_source;
|
|
1124
|
+
let stat_slot_response = class stat_slot_response extends Struct {
|
|
1125
|
+
};
|
|
1126
|
+
__decorate([
|
|
1127
|
+
Struct.field(stat_source, { array: true })
|
|
1128
|
+
], stat_slot_response.prototype, "sources", void 0);
|
|
1129
|
+
stat_slot_response = __decorate([
|
|
1130
|
+
Struct.type('stat_slot_response')
|
|
1131
|
+
], stat_slot_response);
|
|
1132
|
+
Types.stat_slot_response = stat_slot_response;
|
|
1133
|
+
let recipe_item_info = class recipe_item_info extends Struct {
|
|
1134
|
+
};
|
|
1135
|
+
__decorate([
|
|
1136
|
+
Struct.field(UInt16)
|
|
1137
|
+
], recipe_item_info.prototype, "id", void 0);
|
|
1138
|
+
__decorate([
|
|
1139
|
+
Struct.field(UInt32)
|
|
1140
|
+
], recipe_item_info.prototype, "mass", void 0);
|
|
1141
|
+
recipe_item_info = __decorate([
|
|
1142
|
+
Struct.type('recipe_item_info')
|
|
1143
|
+
], recipe_item_info);
|
|
1144
|
+
Types.recipe_item_info = recipe_item_info;
|
|
1145
|
+
let recipe_response = class recipe_response extends Struct {
|
|
1146
|
+
};
|
|
1147
|
+
__decorate([
|
|
1148
|
+
Struct.field(UInt16)
|
|
1149
|
+
], recipe_response.prototype, "output_item_id", void 0);
|
|
1150
|
+
__decorate([
|
|
1151
|
+
Struct.field(UInt32)
|
|
1152
|
+
], recipe_response.prototype, "output_mass", void 0);
|
|
1153
|
+
__decorate([
|
|
1154
|
+
Struct.field(recipe_input, { array: true })
|
|
1155
|
+
], recipe_response.prototype, "inputs", void 0);
|
|
1156
|
+
__decorate([
|
|
1157
|
+
Struct.field(stat_slot_response, { array: true })
|
|
1158
|
+
], recipe_response.prototype, "stat_slots", void 0);
|
|
1159
|
+
__decorate([
|
|
1160
|
+
Struct.field(Bytes)
|
|
1161
|
+
], recipe_response.prototype, "blend_weights", void 0);
|
|
1162
|
+
__decorate([
|
|
1163
|
+
Struct.field(recipe_item_info)
|
|
1164
|
+
], recipe_response.prototype, "output_item", void 0);
|
|
1165
|
+
__decorate([
|
|
1166
|
+
Struct.field(recipe_item_info, { array: true })
|
|
1167
|
+
], recipe_response.prototype, "input_items", void 0);
|
|
1168
|
+
recipe_response = __decorate([
|
|
1169
|
+
Struct.type('recipe_response')
|
|
1170
|
+
], recipe_response);
|
|
1171
|
+
Types.recipe_response = recipe_response;
|
|
1172
|
+
let recipes_result = class recipes_result extends Struct {
|
|
1173
|
+
};
|
|
1174
|
+
__decorate([
|
|
1175
|
+
Struct.field(recipe_response, { array: true })
|
|
1176
|
+
], recipes_result.prototype, "recipes", void 0);
|
|
1177
|
+
recipes_result = __decorate([
|
|
1178
|
+
Struct.type('recipes_result')
|
|
1179
|
+
], recipes_result);
|
|
1180
|
+
Types.recipes_result = recipes_result;
|
|
1181
|
+
let itemdata_result = class itemdata_result extends Struct {
|
|
1182
|
+
};
|
|
1183
|
+
__decorate([
|
|
1184
|
+
Struct.field(item_def, { array: true })
|
|
1185
|
+
], itemdata_result.prototype, "items", void 0);
|
|
1186
|
+
__decorate([
|
|
1187
|
+
Struct.field(recipes_result)
|
|
1188
|
+
], itemdata_result.prototype, "recipes", void 0);
|
|
1189
|
+
itemdata_result = __decorate([
|
|
1190
|
+
Struct.type('itemdata_result')
|
|
1191
|
+
], itemdata_result);
|
|
1192
|
+
Types.itemdata_result = itemdata_result;
|
|
1031
1193
|
let items_info = class items_info extends Struct {
|
|
1032
1194
|
};
|
|
1033
1195
|
__decorate([
|
|
@@ -1133,6 +1295,33 @@ var Types;
|
|
|
1133
1295
|
Struct.type('location_row')
|
|
1134
1296
|
], location_row);
|
|
1135
1297
|
Types.location_row = location_row;
|
|
1298
|
+
let module_info = class module_info extends Struct {
|
|
1299
|
+
};
|
|
1300
|
+
__decorate([
|
|
1301
|
+
Struct.field(UInt16)
|
|
1302
|
+
], module_info.prototype, "id", void 0);
|
|
1303
|
+
__decorate([
|
|
1304
|
+
Struct.field(UInt32)
|
|
1305
|
+
], module_info.prototype, "mass", void 0);
|
|
1306
|
+
__decorate([
|
|
1307
|
+
Struct.field(UInt8)
|
|
1308
|
+
], module_info.prototype, "module_type", void 0);
|
|
1309
|
+
__decorate([
|
|
1310
|
+
Struct.field(UInt8)
|
|
1311
|
+
], module_info.prototype, "tier", void 0);
|
|
1312
|
+
module_info = __decorate([
|
|
1313
|
+
Struct.type('module_info')
|
|
1314
|
+
], module_info);
|
|
1315
|
+
Types.module_info = module_info;
|
|
1316
|
+
let modules_result = class modules_result extends Struct {
|
|
1317
|
+
};
|
|
1318
|
+
__decorate([
|
|
1319
|
+
Struct.field(module_info, { array: true })
|
|
1320
|
+
], modules_result.prototype, "modules", void 0);
|
|
1321
|
+
modules_result = __decorate([
|
|
1322
|
+
Struct.type('modules_result')
|
|
1323
|
+
], modules_result);
|
|
1324
|
+
Types.modules_result = modules_result;
|
|
1136
1325
|
let nearby_system = class nearby_system extends Struct {
|
|
1137
1326
|
};
|
|
1138
1327
|
__decorate([
|
|
@@ -1172,6 +1361,87 @@ var Types;
|
|
|
1172
1361
|
Struct.type('nearby_info')
|
|
1173
1362
|
], nearby_info);
|
|
1174
1363
|
Types.nearby_info = nearby_info;
|
|
1364
|
+
let nexus_row = class nexus_row extends Struct {
|
|
1365
|
+
};
|
|
1366
|
+
__decorate([
|
|
1367
|
+
Struct.field(UInt64)
|
|
1368
|
+
], nexus_row.prototype, "id", void 0);
|
|
1369
|
+
__decorate([
|
|
1370
|
+
Struct.field(Name)
|
|
1371
|
+
], nexus_row.prototype, "owner", void 0);
|
|
1372
|
+
__decorate([
|
|
1373
|
+
Struct.field('string')
|
|
1374
|
+
], nexus_row.prototype, "name", void 0);
|
|
1375
|
+
__decorate([
|
|
1376
|
+
Struct.field(coordinates)
|
|
1377
|
+
], nexus_row.prototype, "coordinates", void 0);
|
|
1378
|
+
nexus_row = __decorate([
|
|
1379
|
+
Struct.type('nexus_row')
|
|
1380
|
+
], nexus_row);
|
|
1381
|
+
Types.nexus_row = nexus_row;
|
|
1382
|
+
let schema_field = class schema_field extends Struct {
|
|
1383
|
+
};
|
|
1384
|
+
__decorate([
|
|
1385
|
+
Struct.field('string')
|
|
1386
|
+
], schema_field.prototype, "name", void 0);
|
|
1387
|
+
__decorate([
|
|
1388
|
+
Struct.field('string')
|
|
1389
|
+
], schema_field.prototype, "field_type", void 0);
|
|
1390
|
+
schema_field = __decorate([
|
|
1391
|
+
Struct.type('schema_field')
|
|
1392
|
+
], schema_field);
|
|
1393
|
+
Types.schema_field = schema_field;
|
|
1394
|
+
let nft_schema_def = class nft_schema_def extends Struct {
|
|
1395
|
+
};
|
|
1396
|
+
__decorate([
|
|
1397
|
+
Struct.field(Name)
|
|
1398
|
+
], nft_schema_def.prototype, "schema_name", void 0);
|
|
1399
|
+
__decorate([
|
|
1400
|
+
Struct.field(schema_field, { array: true })
|
|
1401
|
+
], nft_schema_def.prototype, "fields", void 0);
|
|
1402
|
+
nft_schema_def = __decorate([
|
|
1403
|
+
Struct.type('nft_schema_def')
|
|
1404
|
+
], nft_schema_def);
|
|
1405
|
+
Types.nft_schema_def = nft_schema_def;
|
|
1406
|
+
let nft_template_def = class nft_template_def extends Struct {
|
|
1407
|
+
};
|
|
1408
|
+
__decorate([
|
|
1409
|
+
Struct.field(UInt16)
|
|
1410
|
+
], nft_template_def.prototype, "item_id", void 0);
|
|
1411
|
+
__decorate([
|
|
1412
|
+
Struct.field(Name)
|
|
1413
|
+
], nft_template_def.prototype, "schema_name", void 0);
|
|
1414
|
+
nft_template_def = __decorate([
|
|
1415
|
+
Struct.type('nft_template_def')
|
|
1416
|
+
], nft_template_def);
|
|
1417
|
+
Types.nft_template_def = nft_template_def;
|
|
1418
|
+
let nftconfig_row = class nftconfig_row extends Struct {
|
|
1419
|
+
};
|
|
1420
|
+
__decorate([
|
|
1421
|
+
Struct.field(UInt16)
|
|
1422
|
+
], nftconfig_row.prototype, "item_id", void 0);
|
|
1423
|
+
__decorate([
|
|
1424
|
+
Struct.field(Int32)
|
|
1425
|
+
], nftconfig_row.prototype, "template_id", void 0);
|
|
1426
|
+
__decorate([
|
|
1427
|
+
Struct.field(Name)
|
|
1428
|
+
], nftconfig_row.prototype, "schema_name", void 0);
|
|
1429
|
+
nftconfig_row = __decorate([
|
|
1430
|
+
Struct.type('nftconfig_row')
|
|
1431
|
+
], nftconfig_row);
|
|
1432
|
+
Types.nftconfig_row = nftconfig_row;
|
|
1433
|
+
let nftinfo_result = class nftinfo_result extends Struct {
|
|
1434
|
+
};
|
|
1435
|
+
__decorate([
|
|
1436
|
+
Struct.field(nft_schema_def, { array: true })
|
|
1437
|
+
], nftinfo_result.prototype, "schemas", void 0);
|
|
1438
|
+
__decorate([
|
|
1439
|
+
Struct.field(nft_template_def, { array: true })
|
|
1440
|
+
], nftinfo_result.prototype, "templates", void 0);
|
|
1441
|
+
nftinfo_result = __decorate([
|
|
1442
|
+
Struct.type('nftinfo_result')
|
|
1443
|
+
], nftinfo_result);
|
|
1444
|
+
Types.nftinfo_result = nftinfo_result;
|
|
1175
1445
|
let task_event = class task_event extends Struct {
|
|
1176
1446
|
};
|
|
1177
1447
|
__decorate([
|
|
@@ -1310,6 +1580,24 @@ var Types;
|
|
|
1310
1580
|
Struct.type('resolve_results')
|
|
1311
1581
|
], resolve_results);
|
|
1312
1582
|
Types.resolve_results = resolve_results;
|
|
1583
|
+
let resource_info = class resource_info extends Struct {
|
|
1584
|
+
};
|
|
1585
|
+
__decorate([
|
|
1586
|
+
Struct.field(UInt16)
|
|
1587
|
+
], resource_info.prototype, "id", void 0);
|
|
1588
|
+
__decorate([
|
|
1589
|
+
Struct.field(UInt32)
|
|
1590
|
+
], resource_info.prototype, "mass", void 0);
|
|
1591
|
+
__decorate([
|
|
1592
|
+
Struct.field(UInt8)
|
|
1593
|
+
], resource_info.prototype, "category", void 0);
|
|
1594
|
+
__decorate([
|
|
1595
|
+
Struct.field(UInt8)
|
|
1596
|
+
], resource_info.prototype, "tier", void 0);
|
|
1597
|
+
resource_info = __decorate([
|
|
1598
|
+
Struct.type('resource_info')
|
|
1599
|
+
], resource_info);
|
|
1600
|
+
Types.resource_info = resource_info;
|
|
1313
1601
|
let resource_stats = class resource_stats extends Struct {
|
|
1314
1602
|
};
|
|
1315
1603
|
__decorate([
|
|
@@ -1325,6 +1613,15 @@ var Types;
|
|
|
1325
1613
|
Struct.type('resource_stats')
|
|
1326
1614
|
], resource_stats);
|
|
1327
1615
|
Types.resource_stats = resource_stats;
|
|
1616
|
+
let resources_result = class resources_result extends Struct {
|
|
1617
|
+
};
|
|
1618
|
+
__decorate([
|
|
1619
|
+
Struct.field(resource_info, { array: true })
|
|
1620
|
+
], resources_result.prototype, "resources", void 0);
|
|
1621
|
+
resources_result = __decorate([
|
|
1622
|
+
Struct.type('resources_result')
|
|
1623
|
+
], resources_result);
|
|
1624
|
+
Types.resources_result = resources_result;
|
|
1328
1625
|
let rmmodule = class rmmodule extends Struct {
|
|
1329
1626
|
};
|
|
1330
1627
|
__decorate([
|
|
@@ -1343,6 +1640,15 @@ var Types;
|
|
|
1343
1640
|
Struct.type('rmmodule')
|
|
1344
1641
|
], rmmodule);
|
|
1345
1642
|
Types.rmmodule = rmmodule;
|
|
1643
|
+
let rmnftcfg = class rmnftcfg extends Struct {
|
|
1644
|
+
};
|
|
1645
|
+
__decorate([
|
|
1646
|
+
Struct.field(UInt16)
|
|
1647
|
+
], rmnftcfg.prototype, "item_id", void 0);
|
|
1648
|
+
rmnftcfg = __decorate([
|
|
1649
|
+
Struct.type('rmnftcfg')
|
|
1650
|
+
], rmnftcfg);
|
|
1651
|
+
Types.rmnftcfg = rmnftcfg;
|
|
1346
1652
|
let salt = class salt extends Struct {
|
|
1347
1653
|
};
|
|
1348
1654
|
__decorate([
|
|
@@ -1364,6 +1670,21 @@ var Types;
|
|
|
1364
1670
|
Struct.type('sequence_row')
|
|
1365
1671
|
], sequence_row);
|
|
1366
1672
|
Types.sequence_row = sequence_row;
|
|
1673
|
+
let setnftcfg = class setnftcfg extends Struct {
|
|
1674
|
+
};
|
|
1675
|
+
__decorate([
|
|
1676
|
+
Struct.field(UInt16)
|
|
1677
|
+
], setnftcfg.prototype, "item_id", void 0);
|
|
1678
|
+
__decorate([
|
|
1679
|
+
Struct.field(Int32)
|
|
1680
|
+
], setnftcfg.prototype, "template_id", void 0);
|
|
1681
|
+
__decorate([
|
|
1682
|
+
Struct.field(Name)
|
|
1683
|
+
], setnftcfg.prototype, "schema_name", void 0);
|
|
1684
|
+
setnftcfg = __decorate([
|
|
1685
|
+
Struct.type('setnftcfg')
|
|
1686
|
+
], setnftcfg);
|
|
1687
|
+
Types.setnftcfg = setnftcfg;
|
|
1367
1688
|
let ship_row = class ship_row extends Struct {
|
|
1368
1689
|
};
|
|
1369
1690
|
__decorate([
|
|
@@ -1375,6 +1696,9 @@ var Types;
|
|
|
1375
1696
|
__decorate([
|
|
1376
1697
|
Struct.field('string')
|
|
1377
1698
|
], ship_row.prototype, "name", void 0);
|
|
1699
|
+
__decorate([
|
|
1700
|
+
Struct.field(UInt64)
|
|
1701
|
+
], ship_row.prototype, "seed", void 0);
|
|
1378
1702
|
__decorate([
|
|
1379
1703
|
Struct.field(coordinates)
|
|
1380
1704
|
], ship_row.prototype, "coordinates", void 0);
|
|
@@ -1585,18 +1909,27 @@ var Types;
|
|
|
1585
1909
|
__decorate([
|
|
1586
1910
|
Struct.field('string')
|
|
1587
1911
|
], warehouse_row.prototype, "name", void 0);
|
|
1912
|
+
__decorate([
|
|
1913
|
+
Struct.field(UInt64)
|
|
1914
|
+
], warehouse_row.prototype, "seed", void 0);
|
|
1588
1915
|
__decorate([
|
|
1589
1916
|
Struct.field(coordinates)
|
|
1590
1917
|
], warehouse_row.prototype, "coordinates", void 0);
|
|
1591
1918
|
__decorate([
|
|
1592
|
-
Struct.field(UInt32)
|
|
1919
|
+
Struct.field(UInt32, { optional: true })
|
|
1920
|
+
], warehouse_row.prototype, "hullmass", void 0);
|
|
1921
|
+
__decorate([
|
|
1922
|
+
Struct.field(UInt32, { optional: true })
|
|
1593
1923
|
], warehouse_row.prototype, "capacity", void 0);
|
|
1594
1924
|
__decorate([
|
|
1595
1925
|
Struct.field(UInt32)
|
|
1596
1926
|
], warehouse_row.prototype, "cargomass", void 0);
|
|
1597
1927
|
__decorate([
|
|
1598
|
-
Struct.field(loader_stats)
|
|
1928
|
+
Struct.field(loader_stats, { optional: true })
|
|
1599
1929
|
], warehouse_row.prototype, "loaders", void 0);
|
|
1930
|
+
__decorate([
|
|
1931
|
+
Struct.field(module_entry, { array: true })
|
|
1932
|
+
], warehouse_row.prototype, "modules", void 0);
|
|
1600
1933
|
__decorate([
|
|
1601
1934
|
Struct.field(schedule, { optional: true })
|
|
1602
1935
|
], warehouse_row.prototype, "schedule", void 0);
|
|
@@ -1634,12 +1967,35 @@ var Types;
|
|
|
1634
1967
|
Struct.type('wipesequence')
|
|
1635
1968
|
], wipesequence);
|
|
1636
1969
|
Types.wipesequence = wipesequence;
|
|
1970
|
+
let wrap = class wrap extends Struct {
|
|
1971
|
+
};
|
|
1972
|
+
__decorate([
|
|
1973
|
+
Struct.field(Name)
|
|
1974
|
+
], wrap.prototype, "owner", void 0);
|
|
1975
|
+
__decorate([
|
|
1976
|
+
Struct.field(Name)
|
|
1977
|
+
], wrap.prototype, "entity_type", void 0);
|
|
1978
|
+
__decorate([
|
|
1979
|
+
Struct.field(UInt64)
|
|
1980
|
+
], wrap.prototype, "entity_id", void 0);
|
|
1981
|
+
__decorate([
|
|
1982
|
+
Struct.field(UInt64)
|
|
1983
|
+
], wrap.prototype, "cargo_id", void 0);
|
|
1984
|
+
__decorate([
|
|
1985
|
+
Struct.field(UInt64)
|
|
1986
|
+
], wrap.prototype, "quantity", void 0);
|
|
1987
|
+
wrap = __decorate([
|
|
1988
|
+
Struct.type('wrap')
|
|
1989
|
+
], wrap);
|
|
1990
|
+
Types.wrap = wrap;
|
|
1637
1991
|
})(Types || (Types = {}));
|
|
1638
1992
|
const TableMap = {
|
|
1639
1993
|
cargo: Types.cargo_row,
|
|
1640
1994
|
container: Types.container_row,
|
|
1641
1995
|
entitygroup: Types.entitygroup_row,
|
|
1642
1996
|
location: Types.location_row,
|
|
1997
|
+
nexus: Types.nexus_row,
|
|
1998
|
+
nftconfig: Types.nftconfig_row,
|
|
1643
1999
|
player: Types.player_row,
|
|
1644
2000
|
reserve: Types.reserve_row,
|
|
1645
2001
|
sequence: Types.sequence_row,
|
|
@@ -4558,7 +4914,9 @@ function calc_rechargetime(capacity, energy, recharge) {
|
|
|
4558
4914
|
return cap.subtracting(eng).dividing(recharge);
|
|
4559
4915
|
}
|
|
4560
4916
|
function calc_ship_rechargetime(ship) {
|
|
4561
|
-
|
|
4917
|
+
if (!ship.generator)
|
|
4918
|
+
return UInt32.from(0);
|
|
4919
|
+
return calc_rechargetime(ship.generator.capacity, ship.energy ?? UInt16.from(0), ship.generator.recharge);
|
|
4562
4920
|
}
|
|
4563
4921
|
function calc_flighttime(distance, acceleration) {
|
|
4564
4922
|
return UInt32.from(2 * Math.sqrt(Number(distance) / acceleration));
|
|
@@ -4568,14 +4926,17 @@ function calc_loader_flighttime(ship, mass, altitude) {
|
|
|
4568
4926
|
return calc_flighttime(z, calc_loader_acceleration(ship, mass));
|
|
4569
4927
|
}
|
|
4570
4928
|
function calc_loader_acceleration(ship, mass) {
|
|
4571
|
-
|
|
4929
|
+
const thrust = ship.loaders ? Number(ship.loaders.thrust) : 0;
|
|
4930
|
+
const loaderMass = ship.loaders ? Number(ship.loaders.mass) : 0;
|
|
4931
|
+
return calc_acceleration(thrust, Number(mass) + loaderMass);
|
|
4572
4932
|
}
|
|
4573
4933
|
function calc_ship_flighttime(ship, mass, distance) {
|
|
4574
4934
|
const acceleration = calc_ship_acceleration(ship, mass);
|
|
4575
4935
|
return calc_flighttime(distance, acceleration);
|
|
4576
4936
|
}
|
|
4577
4937
|
function calc_ship_acceleration(ship, mass) {
|
|
4578
|
-
|
|
4938
|
+
const thrust = ship.engines ? Number(ship.engines.thrust) : 0;
|
|
4939
|
+
return calc_acceleration(thrust, Number(mass));
|
|
4579
4940
|
}
|
|
4580
4941
|
function calc_acceleration(thrust, mass) {
|
|
4581
4942
|
return (thrust / mass) * PRECISION;
|
|
@@ -4583,7 +4944,7 @@ function calc_acceleration(thrust, mass) {
|
|
|
4583
4944
|
function calc_ship_mass(ship, cargos) {
|
|
4584
4945
|
const mass = UInt64.from(0);
|
|
4585
4946
|
mass.add(ship.hullmass);
|
|
4586
|
-
if (ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4947
|
+
if (ship.loaders && ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4587
4948
|
mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
|
|
4588
4949
|
}
|
|
4589
4950
|
for (const cargo of cargos) {
|
|
@@ -4607,6 +4968,8 @@ function calculateTransferTime(ship, cargos, quantities) {
|
|
|
4607
4968
|
if (mass.equals(UInt64.zero)) {
|
|
4608
4969
|
return UInt32.from(0);
|
|
4609
4970
|
}
|
|
4971
|
+
if (!ship.loaders)
|
|
4972
|
+
return UInt32.from(0);
|
|
4610
4973
|
mass = UInt64.from(mass).adding(ship.loaders.mass);
|
|
4611
4974
|
const transfer_time = calc_loader_flighttime(ship, mass);
|
|
4612
4975
|
return transfer_time.dividing(ship.loaders.quantity);
|
|
@@ -4639,15 +5002,15 @@ function calculateLoadTimeBreakdown(ship, cargos, loadQuantities, unloadQuantiti
|
|
|
4639
5002
|
}
|
|
4640
5003
|
let unloadTime = 0;
|
|
4641
5004
|
let loadTime = 0;
|
|
4642
|
-
if (mass_unload.gt(UInt64.zero)) {
|
|
5005
|
+
if (mass_unload.gt(UInt64.zero) && ship.loaders) {
|
|
4643
5006
|
const totalMass = UInt64.from(mass_unload).adding(ship.loaders.mass);
|
|
4644
5007
|
unloadTime = Number(calc_loader_flighttime(ship, totalMass));
|
|
4645
5008
|
}
|
|
4646
|
-
if (mass_load.gt(UInt64.zero)) {
|
|
5009
|
+
if (mass_load.gt(UInt64.zero) && ship.loaders) {
|
|
4647
5010
|
const totalMass = UInt64.from(mass_load).adding(ship.loaders.mass);
|
|
4648
5011
|
loadTime = Number(calc_loader_flighttime(ship, totalMass));
|
|
4649
5012
|
}
|
|
4650
|
-
const numLoaders = Number(ship.loaders.quantity);
|
|
5013
|
+
const numLoaders = ship.loaders ? Number(ship.loaders.quantity) : 0;
|
|
4651
5014
|
const totalTime = numLoaders > 0 ? (unloadTime + loadTime) / numLoaders : 0;
|
|
4652
5015
|
const unloadTimePerLoader = numLoaders > 0 ? unloadTime / numLoaders : 0;
|
|
4653
5016
|
const loadTimePerLoader = numLoaders > 0 ? loadTime / numLoaders : 0;
|
|
@@ -4667,12 +5030,14 @@ function estimateTravelTime(ship, travelMass, distance, options = {}) {
|
|
|
4667
5030
|
let unloadTime = UInt32.zero;
|
|
4668
5031
|
if (loadMass &&
|
|
4669
5032
|
UInt32.from(loadMass).gt(UInt32.zero) &&
|
|
5033
|
+
ship.loaders &&
|
|
4670
5034
|
ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4671
5035
|
const totalMass = UInt64.from(loadMass).adding(ship.loaders.mass);
|
|
4672
5036
|
loadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
|
|
4673
5037
|
}
|
|
4674
5038
|
if (unloadMass &&
|
|
4675
5039
|
UInt32.from(unloadMass).gt(UInt32.zero) &&
|
|
5040
|
+
ship.loaders &&
|
|
4676
5041
|
ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4677
5042
|
const totalMass = UInt64.from(unloadMass).adding(ship.loaders.mass);
|
|
4678
5043
|
unloadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
|
|
@@ -4694,8 +5059,10 @@ function estimateDealTravelTime(ship, shipMass, distance, loadMass) {
|
|
|
4694
5059
|
return estimate.total;
|
|
4695
5060
|
}
|
|
4696
5061
|
function hasEnergyForDistance$1(ship, distance) {
|
|
5062
|
+
if (!ship.engines)
|
|
5063
|
+
return false;
|
|
4697
5064
|
const energyNeeded = UInt64.from(distance).dividing(PRECISION).multiplying(ship.engines.drain);
|
|
4698
|
-
return UInt64.from(ship.energy).gte(energyNeeded);
|
|
5065
|
+
return UInt64.from(ship.energy ?? 0).gte(energyNeeded);
|
|
4699
5066
|
}
|
|
4700
5067
|
function getFlightOrigin(entity, flightTaskIndex) {
|
|
4701
5068
|
if (!entity.schedule)
|
|
@@ -5536,6 +5903,10 @@ class Warehouse extends Types.entity_info {
|
|
|
5536
5903
|
get orbitalAltitude() {
|
|
5537
5904
|
return this.coordinates.z?.toNumber() || 0;
|
|
5538
5905
|
}
|
|
5906
|
+
get totalMass() {
|
|
5907
|
+
const hull = this.hullmass ? UInt64.from(this.hullmass) : UInt64.from(0);
|
|
5908
|
+
return hull.adding(this.totalCargoMass);
|
|
5909
|
+
}
|
|
5539
5910
|
}
|
|
5540
5911
|
|
|
5541
5912
|
class Container extends Types.entity_info {
|
|
@@ -5588,6 +5959,17 @@ function computeContainerCapabilities(stats) {
|
|
|
5588
5959
|
const capacity = Math.floor(1000000 * Math.pow(10, exponent));
|
|
5589
5960
|
return { hullmass, capacity };
|
|
5590
5961
|
}
|
|
5962
|
+
function computeContainerT2Capabilities(stats) {
|
|
5963
|
+
const strength = stats['strength'] ?? 0;
|
|
5964
|
+
const density = stats['density'] ?? 0;
|
|
5965
|
+
const ductility = stats['ductility'] ?? 0;
|
|
5966
|
+
const purity = stats['purity'] ?? 0;
|
|
5967
|
+
const hullmass = 20000 + 50 * density;
|
|
5968
|
+
const statSum = strength + ductility + purity;
|
|
5969
|
+
const exponent = statSum / 2500;
|
|
5970
|
+
const capacity = Math.floor(1500000 * Math.pow(10, exponent));
|
|
5971
|
+
return { hullmass, capacity };
|
|
5972
|
+
}
|
|
5591
5973
|
|
|
5592
5974
|
class EntitiesManager extends BaseManager {
|
|
5593
5975
|
async getEntity(type, id) {
|
|
@@ -6037,7 +6419,7 @@ function makeShip(state) {
|
|
|
6037
6419
|
return new Ship(entityInfo);
|
|
6038
6420
|
}
|
|
6039
6421
|
function makeWarehouse(state) {
|
|
6040
|
-
const
|
|
6422
|
+
const info = {
|
|
6041
6423
|
type: Name.from('warehouse'),
|
|
6042
6424
|
id: UInt64.from(state.id),
|
|
6043
6425
|
owner: Name.from(state.owner),
|
|
@@ -6046,13 +6428,18 @@ function makeWarehouse(state) {
|
|
|
6046
6428
|
capacity: UInt32.from(state.capacity),
|
|
6047
6429
|
cargomass: UInt32.from(0),
|
|
6048
6430
|
cargo: state.cargo || [],
|
|
6049
|
-
loaders: state.loaders,
|
|
6050
6431
|
is_idle: !state.schedule,
|
|
6051
6432
|
current_task_elapsed: UInt32.from(0),
|
|
6052
6433
|
current_task_remaining: UInt32.from(0),
|
|
6053
6434
|
pending_tasks: [],
|
|
6054
|
-
|
|
6055
|
-
|
|
6435
|
+
};
|
|
6436
|
+
if (state.hullmass !== undefined)
|
|
6437
|
+
info.hullmass = UInt32.from(state.hullmass);
|
|
6438
|
+
if (state.loaders)
|
|
6439
|
+
info.loaders = state.loaders;
|
|
6440
|
+
if (state.schedule)
|
|
6441
|
+
info.schedule = state.schedule;
|
|
6442
|
+
const entityInfo = Types.entity_info.from(info);
|
|
6056
6443
|
return new Warehouse(entityInfo);
|
|
6057
6444
|
}
|
|
6058
6445
|
function makeContainer(state) {
|
|
@@ -6272,11 +6659,12 @@ function resolveStats(category, stats) {
|
|
|
6272
6659
|
};
|
|
6273
6660
|
}
|
|
6274
6661
|
|
|
6275
|
-
const ITEM_ENGINE_T1 =
|
|
6276
|
-
const ITEM_GENERATOR_T1 =
|
|
6277
|
-
const ITEM_EXTRACTOR_T1 =
|
|
6278
|
-
const ITEM_LOADER_T1 =
|
|
6279
|
-
const ITEM_MANUFACTURING_T1 =
|
|
6662
|
+
const ITEM_ENGINE_T1 = 10100;
|
|
6663
|
+
const ITEM_GENERATOR_T1 = 10101;
|
|
6664
|
+
const ITEM_EXTRACTOR_T1 = 10102;
|
|
6665
|
+
const ITEM_LOADER_T1 = 10103;
|
|
6666
|
+
const ITEM_MANUFACTURING_T1 = 10104;
|
|
6667
|
+
const ITEM_STORAGE_T1 = 10105;
|
|
6280
6668
|
const MODULE_ANY = 0;
|
|
6281
6669
|
const MODULE_ENGINE = 1;
|
|
6282
6670
|
const MODULE_GENERATOR = 2;
|
|
@@ -6285,6 +6673,7 @@ const MODULE_LOADER = 4;
|
|
|
6285
6673
|
const MODULE_WARP = 5;
|
|
6286
6674
|
const MODULE_CRAFTER = 6;
|
|
6287
6675
|
const MODULE_LAUNCHER = 7;
|
|
6676
|
+
const MODULE_STORAGE = 8;
|
|
6288
6677
|
function moduleAccepts(slotType, moduleType) {
|
|
6289
6678
|
return slotType === MODULE_ANY || slotType === moduleType;
|
|
6290
6679
|
}
|
|
@@ -6300,6 +6689,8 @@ function getModuleCapabilityType(itemId) {
|
|
|
6300
6689
|
return MODULE_LOADER;
|
|
6301
6690
|
case ITEM_MANUFACTURING_T1:
|
|
6302
6691
|
return MODULE_CRAFTER;
|
|
6692
|
+
case ITEM_STORAGE_T1:
|
|
6693
|
+
return MODULE_STORAGE;
|
|
6303
6694
|
default:
|
|
6304
6695
|
return 0xff;
|
|
6305
6696
|
}
|
|
@@ -6308,17 +6699,21 @@ function isModuleItem(itemId) {
|
|
|
6308
6699
|
return getModuleCapabilityType(itemId) !== 0xff;
|
|
6309
6700
|
}
|
|
6310
6701
|
|
|
6311
|
-
const ITEM_DRILL_SHAFT =
|
|
6312
|
-
const ITEM_EXTRACTION_PROBE =
|
|
6313
|
-
const ITEM_CARGO_ARM =
|
|
6314
|
-
const ITEM_TOOL_BIT =
|
|
6315
|
-
const ITEM_REACTION_CHAMBER =
|
|
6702
|
+
const ITEM_DRILL_SHAFT = 10005;
|
|
6703
|
+
const ITEM_EXTRACTION_PROBE = 10006;
|
|
6704
|
+
const ITEM_CARGO_ARM = 10007;
|
|
6705
|
+
const ITEM_TOOL_BIT = 10008;
|
|
6706
|
+
const ITEM_REACTION_CHAMBER = 10009;
|
|
6316
6707
|
const ITEM_HULL_PLATES = 10001;
|
|
6317
6708
|
const ITEM_CARGO_LINING = 10002;
|
|
6318
|
-
const
|
|
6319
|
-
const ITEM_THRUSTER_CORE =
|
|
6320
|
-
const ITEM_POWER_CELL =
|
|
6321
|
-
const ITEM_SHIP_T1_PACKED =
|
|
6709
|
+
const ITEM_CONTAINER_T1_PACKED = 10200;
|
|
6710
|
+
const ITEM_THRUSTER_CORE = 10003;
|
|
6711
|
+
const ITEM_POWER_CELL = 10004;
|
|
6712
|
+
const ITEM_SHIP_T1_PACKED = 10201;
|
|
6713
|
+
const ITEM_WAREHOUSE_T1_PACKED = 10202;
|
|
6714
|
+
const ITEM_HULL_PLATES_T2 = 20001;
|
|
6715
|
+
const ITEM_CARGO_LINING_T2 = 20002;
|
|
6716
|
+
const ITEM_CONTAINER_T2_PACKED = 20200;
|
|
6322
6717
|
const components = [
|
|
6323
6718
|
{
|
|
6324
6719
|
id: ITEM_HULL_PLATES,
|
|
@@ -6331,7 +6726,7 @@ const components = [
|
|
|
6331
6726
|
{ key: 'density', source: 'metal' },
|
|
6332
6727
|
],
|
|
6333
6728
|
recipe: [{ category: 'metal', quantity: 15 }],
|
|
6334
|
-
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
|
|
6729
|
+
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
|
|
6335
6730
|
},
|
|
6336
6731
|
{
|
|
6337
6732
|
id: ITEM_CARGO_LINING,
|
|
@@ -6347,7 +6742,7 @@ const components = [
|
|
|
6347
6742
|
{ category: 'precious', quantity: 6 },
|
|
6348
6743
|
{ category: 'organic', quantity: 14 },
|
|
6349
6744
|
],
|
|
6350
|
-
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
|
|
6745
|
+
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
|
|
6351
6746
|
},
|
|
6352
6747
|
{
|
|
6353
6748
|
id: ITEM_THRUSTER_CORE,
|
|
@@ -6440,6 +6835,39 @@ const components = [
|
|
|
6440
6835
|
recipe: [{ category: 'gas', quantity: 32 }],
|
|
6441
6836
|
usedIn: [{ type: 'module', name: 'Manufacturing' }],
|
|
6442
6837
|
},
|
|
6838
|
+
{
|
|
6839
|
+
id: ITEM_HULL_PLATES_T2,
|
|
6840
|
+
name: 'Hull Plates T2',
|
|
6841
|
+
description: 'Advanced structural plating reinforced with tier 2 metals.',
|
|
6842
|
+
color: '#9BADB8',
|
|
6843
|
+
mass: 50000,
|
|
6844
|
+
stats: [
|
|
6845
|
+
{ key: 'strength', source: 'metal' },
|
|
6846
|
+
{ key: 'density', source: 'metal' },
|
|
6847
|
+
],
|
|
6848
|
+
recipe: [
|
|
6849
|
+
{ itemId: ITEM_HULL_PLATES, quantity: 2 },
|
|
6850
|
+
{ category: 'metal', quantity: 15 },
|
|
6851
|
+
],
|
|
6852
|
+
usedIn: [{ type: 'entity', name: 'Container T2' }],
|
|
6853
|
+
},
|
|
6854
|
+
{
|
|
6855
|
+
id: ITEM_CARGO_LINING_T2,
|
|
6856
|
+
name: 'Cargo Lining T2',
|
|
6857
|
+
description: 'Advanced composite lining with improved storage properties.',
|
|
6858
|
+
color: '#E0B84D',
|
|
6859
|
+
mass: 30000,
|
|
6860
|
+
stats: [
|
|
6861
|
+
{ key: 'ductility', source: 'precious' },
|
|
6862
|
+
{ key: 'purity', source: 'organic' },
|
|
6863
|
+
],
|
|
6864
|
+
recipe: [
|
|
6865
|
+
{ itemId: ITEM_CARGO_LINING, quantity: 2 },
|
|
6866
|
+
{ category: 'precious', quantity: 6 },
|
|
6867
|
+
{ category: 'organic', quantity: 14 },
|
|
6868
|
+
],
|
|
6869
|
+
usedIn: [{ type: 'entity', name: 'Container T2' }],
|
|
6870
|
+
},
|
|
6443
6871
|
];
|
|
6444
6872
|
const entityRecipes = [
|
|
6445
6873
|
{
|
|
@@ -6447,7 +6875,7 @@ const entityRecipes = [
|
|
|
6447
6875
|
name: 'Container',
|
|
6448
6876
|
description: 'Passive floating cargo storage in space. Towed by ships.',
|
|
6449
6877
|
color: '#7B8D9E',
|
|
6450
|
-
packedItemId:
|
|
6878
|
+
packedItemId: ITEM_CONTAINER_T1_PACKED,
|
|
6451
6879
|
recipe: [
|
|
6452
6880
|
{ itemId: ITEM_HULL_PLATES, quantity: 6 },
|
|
6453
6881
|
{ itemId: ITEM_CARGO_LINING, quantity: 2 },
|
|
@@ -6483,6 +6911,47 @@ const entityRecipes = [
|
|
|
6483
6911
|
{ type: MODULE_ANY },
|
|
6484
6912
|
],
|
|
6485
6913
|
},
|
|
6914
|
+
{
|
|
6915
|
+
id: 'warehouse-t1',
|
|
6916
|
+
name: 'Warehouse T1',
|
|
6917
|
+
description: 'Massive stationary storage facility with a single loader module slot.',
|
|
6918
|
+
color: '#EAB308',
|
|
6919
|
+
packedItemId: ITEM_WAREHOUSE_T1_PACKED,
|
|
6920
|
+
recipe: [
|
|
6921
|
+
{ itemId: ITEM_HULL_PLATES, quantity: 20 },
|
|
6922
|
+
{ itemId: ITEM_CARGO_LINING, quantity: 10 },
|
|
6923
|
+
],
|
|
6924
|
+
stats: [
|
|
6925
|
+
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
6926
|
+
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
|
|
6927
|
+
{ key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
|
|
6928
|
+
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
|
|
6929
|
+
],
|
|
6930
|
+
moduleSlots: [
|
|
6931
|
+
{ type: MODULE_LOADER, label: 'Loader' },
|
|
6932
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6933
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6934
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6935
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6936
|
+
],
|
|
6937
|
+
},
|
|
6938
|
+
{
|
|
6939
|
+
id: 'container-t2',
|
|
6940
|
+
name: 'Container T2',
|
|
6941
|
+
description: 'Advanced cargo container with improved capacity formulas.',
|
|
6942
|
+
color: '#9BADB8',
|
|
6943
|
+
packedItemId: ITEM_CONTAINER_T2_PACKED,
|
|
6944
|
+
recipe: [
|
|
6945
|
+
{ itemId: ITEM_HULL_PLATES_T2, quantity: 6 },
|
|
6946
|
+
{ itemId: ITEM_CARGO_LINING_T2, quantity: 2 },
|
|
6947
|
+
],
|
|
6948
|
+
stats: [
|
|
6949
|
+
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength' },
|
|
6950
|
+
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density' },
|
|
6951
|
+
{ key: 'ductility', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'ductility' },
|
|
6952
|
+
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'purity' },
|
|
6953
|
+
],
|
|
6954
|
+
},
|
|
6486
6955
|
];
|
|
6487
6956
|
const moduleRecipes = [
|
|
6488
6957
|
{
|
|
@@ -6562,6 +7031,24 @@ const moduleRecipes = [
|
|
|
6562
7031
|
{ key: 'clarity', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'clarity' },
|
|
6563
7032
|
],
|
|
6564
7033
|
},
|
|
7034
|
+
{
|
|
7035
|
+
id: 'storage-t1',
|
|
7036
|
+
name: 'Storage',
|
|
7037
|
+
description: 'Expands cargo capacity based on hull material quality',
|
|
7038
|
+
color: '#8B7355',
|
|
7039
|
+
itemId: ITEM_STORAGE_T1,
|
|
7040
|
+
moduleType: MODULE_STORAGE,
|
|
7041
|
+
recipe: [
|
|
7042
|
+
{ itemId: ITEM_HULL_PLATES, quantity: 8 },
|
|
7043
|
+
{ itemId: ITEM_CARGO_LINING, quantity: 4 },
|
|
7044
|
+
],
|
|
7045
|
+
stats: [
|
|
7046
|
+
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
7047
|
+
{ key: 'ductility', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'ductility' },
|
|
7048
|
+
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
|
|
7049
|
+
{ key: 'density', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'density' },
|
|
7050
|
+
],
|
|
7051
|
+
},
|
|
6565
7052
|
];
|
|
6566
7053
|
function getModuleRecipe(id) {
|
|
6567
7054
|
return moduleRecipes.find((r) => r.id === id);
|
|
@@ -6578,6 +7065,10 @@ function getEntityRecipe(id) {
|
|
|
6578
7065
|
function getEntityRecipeByItemId(itemId) {
|
|
6579
7066
|
return entityRecipes.find((r) => r.packedItemId === itemId);
|
|
6580
7067
|
}
|
|
7068
|
+
function getEntitySlotLayout(packedItemId) {
|
|
7069
|
+
const recipe = getEntityRecipeByItemId(packedItemId);
|
|
7070
|
+
return recipe?.moduleSlots ?? [];
|
|
7071
|
+
}
|
|
6581
7072
|
function getAllCraftableItems() {
|
|
6582
7073
|
const items = [];
|
|
6583
7074
|
for (const comp of components) {
|
|
@@ -6605,10 +7096,13 @@ function encodeStats(values) {
|
|
|
6605
7096
|
}
|
|
6606
7097
|
return seed;
|
|
6607
7098
|
}
|
|
7099
|
+
function decodeStat(seed, index) {
|
|
7100
|
+
return Number((seed >> BigInt(index * 10)) & 0x3ffn);
|
|
7101
|
+
}
|
|
6608
7102
|
function decodeStats(seed, count) {
|
|
6609
7103
|
const stats = [];
|
|
6610
7104
|
for (let i = 0; i < count; i++) {
|
|
6611
|
-
stats.push(
|
|
7105
|
+
stats.push(decodeStat(seed, i));
|
|
6612
7106
|
}
|
|
6613
7107
|
return stats;
|
|
6614
7108
|
}
|
|
@@ -6689,6 +7183,55 @@ function decodeStackStats(itemId, seed) {
|
|
|
6689
7183
|
const raw = deriveResourceStats(BigInt(seed.toString()));
|
|
6690
7184
|
return { stat1: raw.stat1, stat2: raw.stat2, stat3: raw.stat3 };
|
|
6691
7185
|
}
|
|
7186
|
+
const categoryItemMass = {
|
|
7187
|
+
metal: 30000,
|
|
7188
|
+
precious: 40000,
|
|
7189
|
+
gas: 15000,
|
|
7190
|
+
mineral: 22000,
|
|
7191
|
+
organic: 15000,
|
|
7192
|
+
};
|
|
7193
|
+
function computeInputMass(itemId, itemType) {
|
|
7194
|
+
if (itemType === 'component') {
|
|
7195
|
+
const comp = getComponentById(itemId);
|
|
7196
|
+
if (!comp)
|
|
7197
|
+
return 0;
|
|
7198
|
+
return comp.recipe.reduce((sum, input) => {
|
|
7199
|
+
const mass = input.category ? (categoryItemMass[input.category] ?? 0) : 0;
|
|
7200
|
+
return sum + mass * input.quantity;
|
|
7201
|
+
}, 0);
|
|
7202
|
+
}
|
|
7203
|
+
if (itemType === 'module') {
|
|
7204
|
+
const mod = getModuleRecipe(itemId);
|
|
7205
|
+
if (!mod)
|
|
7206
|
+
return 0;
|
|
7207
|
+
return mod.recipe.reduce((sum, input) => {
|
|
7208
|
+
const comp = input.itemId ? getComponentById(input.itemId) : undefined;
|
|
7209
|
+
return sum + (comp?.mass ?? 0) * input.quantity;
|
|
7210
|
+
}, 0);
|
|
7211
|
+
}
|
|
7212
|
+
if (itemType === 'entity') {
|
|
7213
|
+
const ent = getEntityRecipe(itemId);
|
|
7214
|
+
if (!ent)
|
|
7215
|
+
return 0;
|
|
7216
|
+
return ent.recipe.reduce((sum, input) => {
|
|
7217
|
+
const comp = input.itemId ? getComponentById(input.itemId) : undefined;
|
|
7218
|
+
return sum + (comp?.mass ?? 0) * input.quantity;
|
|
7219
|
+
}, 0);
|
|
7220
|
+
}
|
|
7221
|
+
return 0;
|
|
7222
|
+
}
|
|
7223
|
+
function blendCrossGroup(sources) {
|
|
7224
|
+
let weightedSum = 0;
|
|
7225
|
+
let totalWeight = 0;
|
|
7226
|
+
for (const src of sources) {
|
|
7227
|
+
weightedSum += src.value * src.weight;
|
|
7228
|
+
totalWeight += src.weight;
|
|
7229
|
+
}
|
|
7230
|
+
if (totalWeight === 0)
|
|
7231
|
+
return 1;
|
|
7232
|
+
const result = Math.floor(weightedSum / totalWeight);
|
|
7233
|
+
return Math.max(1, Math.min(999, result));
|
|
7234
|
+
}
|
|
6692
7235
|
function blendCargoStacks(itemId, stacks) {
|
|
6693
7236
|
const decoded = stacks.map((s) => ({
|
|
6694
7237
|
quantity: s.quantity,
|
|
@@ -6846,22 +7389,506 @@ const moduleIcon = '⬢';
|
|
|
6846
7389
|
const itemIcons = {
|
|
6847
7390
|
10001: 'HP',
|
|
6848
7391
|
10002: 'CL',
|
|
6849
|
-
10003: '
|
|
6850
|
-
10004: '
|
|
6851
|
-
10005: '
|
|
6852
|
-
10006: '
|
|
6853
|
-
10007: '
|
|
6854
|
-
10008: '
|
|
6855
|
-
10009: '
|
|
6856
|
-
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
|
|
6861
|
-
|
|
6862
|
-
|
|
7392
|
+
10003: 'TC',
|
|
7393
|
+
10004: 'PC',
|
|
7394
|
+
10005: 'DS',
|
|
7395
|
+
10006: 'EP',
|
|
7396
|
+
10007: 'CA',
|
|
7397
|
+
10008: 'TB',
|
|
7398
|
+
10009: 'RC',
|
|
7399
|
+
10100: 'EN',
|
|
7400
|
+
10101: 'GN',
|
|
7401
|
+
10102: 'EX',
|
|
7402
|
+
10103: 'LD',
|
|
7403
|
+
10104: 'MF',
|
|
7404
|
+
10105: 'ST',
|
|
7405
|
+
10200: 'CT',
|
|
7406
|
+
10201: 'SH',
|
|
7407
|
+
10202: 'WH',
|
|
7408
|
+
20001: 'HP',
|
|
7409
|
+
20002: 'CL',
|
|
7410
|
+
20200: 'CT',
|
|
6863
7411
|
};
|
|
6864
7412
|
|
|
7413
|
+
const ITEM_TYPE_RESOURCE = 0;
|
|
7414
|
+
const ITEM_TYPE_COMPONENT = 1;
|
|
7415
|
+
const ITEM_TYPE_MODULE = 2;
|
|
7416
|
+
const ITEM_TYPE_ENTITY = 3;
|
|
7417
|
+
function itemTypeCode(id) {
|
|
7418
|
+
switch (itemCategory(id)) {
|
|
7419
|
+
case 'resource': return ITEM_TYPE_RESOURCE;
|
|
7420
|
+
case 'component': return ITEM_TYPE_COMPONENT;
|
|
7421
|
+
case 'module': return ITEM_TYPE_MODULE;
|
|
7422
|
+
case 'entity': return ITEM_TYPE_ENTITY;
|
|
7423
|
+
}
|
|
7424
|
+
}
|
|
7425
|
+
function itemTier(id) {
|
|
7426
|
+
if (id < 10000)
|
|
7427
|
+
return 0;
|
|
7428
|
+
return Math.floor(id / 10000);
|
|
7429
|
+
}
|
|
7430
|
+
function itemOffset(id) {
|
|
7431
|
+
return id % 10000;
|
|
7432
|
+
}
|
|
7433
|
+
function itemCategory(id) {
|
|
7434
|
+
if (id < 10000)
|
|
7435
|
+
return 'resource';
|
|
7436
|
+
const offset = itemOffset(id);
|
|
7437
|
+
if (offset >= 200)
|
|
7438
|
+
return 'entity';
|
|
7439
|
+
if (offset >= 100)
|
|
7440
|
+
return 'module';
|
|
7441
|
+
return 'component';
|
|
7442
|
+
}
|
|
7443
|
+
function isRelatedItem(a, b) {
|
|
7444
|
+
if (a < 10000 || b < 10000)
|
|
7445
|
+
return false;
|
|
7446
|
+
return itemOffset(a) === itemOffset(b);
|
|
7447
|
+
}
|
|
7448
|
+
function isCraftedItem(id) {
|
|
7449
|
+
return id >= 10000;
|
|
7450
|
+
}
|
|
7451
|
+
|
|
7452
|
+
const categories = [
|
|
7453
|
+
{
|
|
7454
|
+
id: 'metal',
|
|
7455
|
+
name: 'Metals',
|
|
7456
|
+
label: 'Metal',
|
|
7457
|
+
description: 'Structural, strong, heavy — hulls, frames, load-bearing components',
|
|
7458
|
+
color: categoryColors.metal,
|
|
7459
|
+
},
|
|
7460
|
+
{
|
|
7461
|
+
id: 'precious',
|
|
7462
|
+
name: 'Precious Metals',
|
|
7463
|
+
label: 'Precious',
|
|
7464
|
+
description: 'Conductive, corrosion-resistant — electronics, energy systems, precision components',
|
|
7465
|
+
color: categoryColors.precious,
|
|
7466
|
+
},
|
|
7467
|
+
{
|
|
7468
|
+
id: 'gas',
|
|
7469
|
+
name: 'Gases',
|
|
7470
|
+
label: 'Gas',
|
|
7471
|
+
description: 'Energy, fuel, volatile/reactive — propulsion, thermal processing, chemical reactions',
|
|
7472
|
+
color: categoryColors.gas,
|
|
7473
|
+
},
|
|
7474
|
+
{
|
|
7475
|
+
id: 'mineral',
|
|
7476
|
+
name: 'Minerals',
|
|
7477
|
+
label: 'Mineral',
|
|
7478
|
+
description: 'Crystalline, hard, precise — sensors, optics, energy storage, cutting surfaces',
|
|
7479
|
+
color: categoryColors.mineral,
|
|
7480
|
+
},
|
|
7481
|
+
{
|
|
7482
|
+
id: 'organic',
|
|
7483
|
+
name: 'Organics',
|
|
7484
|
+
label: 'Organic',
|
|
7485
|
+
description: 'Adaptive, biological, polymer — insulation, composites, bio-processes',
|
|
7486
|
+
color: categoryColors.organic,
|
|
7487
|
+
},
|
|
7488
|
+
];
|
|
7489
|
+
function getCategoryInfo(id) {
|
|
7490
|
+
if (id === undefined)
|
|
7491
|
+
return categories;
|
|
7492
|
+
return categories.find((c) => c.id === id);
|
|
7493
|
+
}
|
|
7494
|
+
|
|
7495
|
+
const planetSubtypes = [
|
|
7496
|
+
{
|
|
7497
|
+
id: 0,
|
|
7498
|
+
label: 'Gas Giant',
|
|
7499
|
+
description: 'Massive planets with thick atmospheres rich in gases',
|
|
7500
|
+
paletteType: 'gasGiant',
|
|
7501
|
+
},
|
|
7502
|
+
{
|
|
7503
|
+
id: 1,
|
|
7504
|
+
label: 'Rocky',
|
|
7505
|
+
description: 'Dense, mineral-rich worlds with metallic cores',
|
|
7506
|
+
paletteType: 'rocky',
|
|
7507
|
+
},
|
|
7508
|
+
{
|
|
7509
|
+
id: 2,
|
|
7510
|
+
label: 'Terrestrial',
|
|
7511
|
+
description: 'Earth-like planets with varied terrain and life potential',
|
|
7512
|
+
paletteType: 'terrestrial',
|
|
7513
|
+
},
|
|
7514
|
+
{
|
|
7515
|
+
id: 3,
|
|
7516
|
+
label: 'Icy',
|
|
7517
|
+
description: 'Frozen worlds with subsurface resources',
|
|
7518
|
+
paletteType: 'ice',
|
|
7519
|
+
},
|
|
7520
|
+
{
|
|
7521
|
+
id: 4,
|
|
7522
|
+
label: 'Ocean',
|
|
7523
|
+
description: 'Water worlds with dissolved minerals and organics',
|
|
7524
|
+
paletteType: 'ocean',
|
|
7525
|
+
},
|
|
7526
|
+
{
|
|
7527
|
+
id: 5,
|
|
7528
|
+
label: 'Industrial',
|
|
7529
|
+
description: 'Heavily processed worlds rich in refined materials',
|
|
7530
|
+
paletteType: 'industrial',
|
|
7531
|
+
},
|
|
7532
|
+
];
|
|
7533
|
+
function getPlanetSubtypes() {
|
|
7534
|
+
return planetSubtypes;
|
|
7535
|
+
}
|
|
7536
|
+
function getPlanetSubtype(id) {
|
|
7537
|
+
return planetSubtypes.find((s) => s.id === id);
|
|
7538
|
+
}
|
|
7539
|
+
|
|
7540
|
+
const capabilityNames = [
|
|
7541
|
+
'Hull',
|
|
7542
|
+
'Storage',
|
|
7543
|
+
'Movement',
|
|
7544
|
+
'Energy',
|
|
7545
|
+
'Loader',
|
|
7546
|
+
'Extraction',
|
|
7547
|
+
'Warp',
|
|
7548
|
+
'Manufacturing',
|
|
7549
|
+
'Launch',
|
|
7550
|
+
];
|
|
7551
|
+
const capabilityAttributes = [
|
|
7552
|
+
{ capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
|
|
7553
|
+
{ capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
|
|
7554
|
+
{ capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
|
|
7555
|
+
{ capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
|
|
7556
|
+
{ capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
|
|
7557
|
+
{ capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate' },
|
|
7558
|
+
{ capability: 'Loader', attribute: 'mass', description: 'Weight of the loader unit itself' },
|
|
7559
|
+
{ capability: 'Loader', attribute: 'thrust', description: 'Loading speed/force' },
|
|
7560
|
+
{ capability: 'Extraction', attribute: 'rate', description: 'Mass extracted per second' },
|
|
7561
|
+
{ capability: 'Extraction', attribute: 'drain', description: 'Energy consumed per extraction' },
|
|
7562
|
+
{ capability: 'Extraction', attribute: 'depth', description: 'Maximum extraction depth' },
|
|
7563
|
+
{ capability: 'Extraction', attribute: 'drill', description: 'Drilling speed/penetration' },
|
|
7564
|
+
{ capability: 'Warp', attribute: 'range', description: 'Maximum warp distance' },
|
|
7565
|
+
{ capability: 'Manufacturing', attribute: 'speed', description: 'Crafting time per item' },
|
|
7566
|
+
{
|
|
7567
|
+
capability: 'Manufacturing',
|
|
7568
|
+
attribute: 'drain',
|
|
7569
|
+
description: 'Energy consumed per second while crafting',
|
|
7570
|
+
},
|
|
7571
|
+
{ capability: 'Manufacturing', attribute: 'quality', description: 'Modifier on output quality' },
|
|
7572
|
+
{ capability: 'Launch', attribute: 'range', description: 'Maximum launch distance' },
|
|
7573
|
+
{ capability: 'Launch', attribute: 'capacity', description: 'Maximum mass per launch' },
|
|
7574
|
+
{ capability: 'Launch', attribute: 'drain', description: 'Energy consumed per launch' },
|
|
7575
|
+
];
|
|
7576
|
+
const statMappings = [
|
|
7577
|
+
{
|
|
7578
|
+
stat: 'Strength',
|
|
7579
|
+
capability: 'Extraction',
|
|
7580
|
+
attribute: 'rate',
|
|
7581
|
+
rationale: 'Raw mechanical force drives faster extraction',
|
|
7582
|
+
},
|
|
7583
|
+
{
|
|
7584
|
+
stat: 'Strength',
|
|
7585
|
+
capability: 'Storage',
|
|
7586
|
+
attribute: 'capacity',
|
|
7587
|
+
rationale: 'Stronger walls hold more capacity per mass',
|
|
7588
|
+
},
|
|
7589
|
+
{
|
|
7590
|
+
stat: 'Strength',
|
|
7591
|
+
capability: 'Launch',
|
|
7592
|
+
attribute: 'capacity',
|
|
7593
|
+
rationale: 'Stronger housing handles larger launch loads',
|
|
7594
|
+
},
|
|
7595
|
+
{
|
|
7596
|
+
stat: 'Tolerance',
|
|
7597
|
+
capability: 'Movement',
|
|
7598
|
+
attribute: 'thrust',
|
|
7599
|
+
rationale: 'Engine components that tolerate more can push harder',
|
|
7600
|
+
},
|
|
7601
|
+
{
|
|
7602
|
+
stat: 'Tolerance',
|
|
7603
|
+
capability: 'Energy',
|
|
7604
|
+
attribute: 'recharge',
|
|
7605
|
+
rationale: 'Generator housing withstands stress for faster recharge',
|
|
7606
|
+
},
|
|
7607
|
+
{
|
|
7608
|
+
stat: 'Tolerance',
|
|
7609
|
+
capability: 'Extraction',
|
|
7610
|
+
attribute: 'depth',
|
|
7611
|
+
rationale: 'Housing withstands pressure/heat at extreme depths',
|
|
7612
|
+
},
|
|
7613
|
+
{
|
|
7614
|
+
stat: 'Tolerance',
|
|
7615
|
+
capability: 'Warp',
|
|
7616
|
+
attribute: 'range',
|
|
7617
|
+
rationale: 'Warp drive housing withstands extreme forces',
|
|
7618
|
+
},
|
|
7619
|
+
{
|
|
7620
|
+
stat: 'Density',
|
|
7621
|
+
capability: 'Hull',
|
|
7622
|
+
attribute: 'mass',
|
|
7623
|
+
rationale: 'Lighter metal = lighter hull',
|
|
7624
|
+
},
|
|
7625
|
+
{
|
|
7626
|
+
stat: 'Density',
|
|
7627
|
+
capability: 'Loader',
|
|
7628
|
+
attribute: 'mass',
|
|
7629
|
+
rationale: 'Lighter metal = lighter loader units',
|
|
7630
|
+
},
|
|
7631
|
+
{
|
|
7632
|
+
stat: 'Density',
|
|
7633
|
+
capability: 'Movement',
|
|
7634
|
+
attribute: 'drain',
|
|
7635
|
+
rationale: 'Lighter components require less energy to move',
|
|
7636
|
+
},
|
|
7637
|
+
{
|
|
7638
|
+
stat: 'Conductivity',
|
|
7639
|
+
capability: 'Movement',
|
|
7640
|
+
attribute: 'drain',
|
|
7641
|
+
rationale: 'Efficient energy transfer reduces movement energy cost',
|
|
7642
|
+
},
|
|
7643
|
+
{
|
|
7644
|
+
stat: 'Conductivity',
|
|
7645
|
+
capability: 'Extraction',
|
|
7646
|
+
attribute: 'drain',
|
|
7647
|
+
rationale: 'Efficient energy transfer reduces extraction energy cost',
|
|
7648
|
+
},
|
|
7649
|
+
{
|
|
7650
|
+
stat: 'Conductivity',
|
|
7651
|
+
capability: 'Manufacturing',
|
|
7652
|
+
attribute: 'drain',
|
|
7653
|
+
rationale: 'Efficient energy transfer reduces manufacturing energy cost',
|
|
7654
|
+
},
|
|
7655
|
+
{
|
|
7656
|
+
stat: 'Conductivity',
|
|
7657
|
+
capability: 'Energy',
|
|
7658
|
+
attribute: 'recharge',
|
|
7659
|
+
rationale: 'Better conductivity speeds energy flow during recharge',
|
|
7660
|
+
},
|
|
7661
|
+
{
|
|
7662
|
+
stat: 'Ductility',
|
|
7663
|
+
capability: 'Manufacturing',
|
|
7664
|
+
attribute: 'quality',
|
|
7665
|
+
rationale: 'Precise shaping enables tighter manufacturing tolerances',
|
|
7666
|
+
},
|
|
7667
|
+
{
|
|
7668
|
+
stat: 'Ductility',
|
|
7669
|
+
capability: 'Extraction',
|
|
7670
|
+
attribute: 'rate',
|
|
7671
|
+
rationale: 'Precisely shaped drill components extract faster',
|
|
7672
|
+
},
|
|
7673
|
+
{
|
|
7674
|
+
stat: 'Ductility',
|
|
7675
|
+
capability: 'Storage',
|
|
7676
|
+
attribute: 'capacity',
|
|
7677
|
+
rationale: 'Precision-formed container walls maximize volume',
|
|
7678
|
+
},
|
|
7679
|
+
{
|
|
7680
|
+
stat: 'Ductility',
|
|
7681
|
+
capability: 'Loader',
|
|
7682
|
+
attribute: 'mass',
|
|
7683
|
+
rationale: 'Precision-formed precious metal reduces loader unit mass',
|
|
7684
|
+
},
|
|
7685
|
+
{
|
|
7686
|
+
stat: 'Reflectivity',
|
|
7687
|
+
capability: 'Extraction',
|
|
7688
|
+
attribute: 'depth',
|
|
7689
|
+
rationale: 'Reflective heat shielding protects equipment at depth',
|
|
7690
|
+
},
|
|
7691
|
+
{
|
|
7692
|
+
stat: 'Reflectivity',
|
|
7693
|
+
capability: 'Launch',
|
|
7694
|
+
attribute: 'range',
|
|
7695
|
+
rationale: 'Reflective surfaces focus electromagnetic launch energy',
|
|
7696
|
+
},
|
|
7697
|
+
{
|
|
7698
|
+
stat: 'Volatility',
|
|
7699
|
+
capability: 'Extraction',
|
|
7700
|
+
attribute: 'rate',
|
|
7701
|
+
rationale: 'Energy release powers faster extraction',
|
|
7702
|
+
},
|
|
7703
|
+
{
|
|
7704
|
+
stat: 'Volatility',
|
|
7705
|
+
capability: 'Movement',
|
|
7706
|
+
attribute: 'thrust',
|
|
7707
|
+
rationale: 'Energy release drives propulsion force',
|
|
7708
|
+
},
|
|
7709
|
+
{
|
|
7710
|
+
stat: 'Volatility',
|
|
7711
|
+
capability: 'Loader',
|
|
7712
|
+
attribute: 'thrust',
|
|
7713
|
+
rationale: 'Energy release powers loader motors',
|
|
7714
|
+
},
|
|
7715
|
+
{
|
|
7716
|
+
stat: 'Volatility',
|
|
7717
|
+
capability: 'Launch',
|
|
7718
|
+
attribute: 'capacity',
|
|
7719
|
+
rationale: 'Energy release enables launching heavier payloads',
|
|
7720
|
+
},
|
|
7721
|
+
{
|
|
7722
|
+
stat: 'Reactivity',
|
|
7723
|
+
capability: 'Manufacturing',
|
|
7724
|
+
attribute: 'speed',
|
|
7725
|
+
rationale: 'Reactive gases accelerate chemical/thermal processing',
|
|
7726
|
+
},
|
|
7727
|
+
{
|
|
7728
|
+
stat: 'Reactivity',
|
|
7729
|
+
capability: 'Extraction',
|
|
7730
|
+
attribute: 'drill',
|
|
7731
|
+
rationale: 'Reactive gases manage heat/friction during drilling',
|
|
7732
|
+
},
|
|
7733
|
+
{
|
|
7734
|
+
stat: 'Reactivity',
|
|
7735
|
+
capability: 'Launch',
|
|
7736
|
+
attribute: 'drain',
|
|
7737
|
+
rationale: 'Reactive gas medium reduces electromagnetic resistance',
|
|
7738
|
+
},
|
|
7739
|
+
{
|
|
7740
|
+
stat: 'Thermal',
|
|
7741
|
+
capability: 'Manufacturing',
|
|
7742
|
+
attribute: 'quality',
|
|
7743
|
+
rationale: 'Precise thermal control during fabrication',
|
|
7744
|
+
},
|
|
7745
|
+
{
|
|
7746
|
+
stat: 'Thermal',
|
|
7747
|
+
capability: 'Extraction',
|
|
7748
|
+
attribute: 'drain',
|
|
7749
|
+
rationale: 'Thermal management reduces energy waste during extraction',
|
|
7750
|
+
},
|
|
7751
|
+
{
|
|
7752
|
+
stat: 'Thermal',
|
|
7753
|
+
capability: 'Energy',
|
|
7754
|
+
attribute: 'capacity',
|
|
7755
|
+
rationale: 'Thermal management enables denser energy storage',
|
|
7756
|
+
},
|
|
7757
|
+
{
|
|
7758
|
+
stat: 'Resonance',
|
|
7759
|
+
capability: 'Energy',
|
|
7760
|
+
attribute: 'capacity',
|
|
7761
|
+
rationale: 'Resonating crystals store energy in fields',
|
|
7762
|
+
},
|
|
7763
|
+
{
|
|
7764
|
+
stat: 'Resonance',
|
|
7765
|
+
capability: 'Warp',
|
|
7766
|
+
attribute: 'range',
|
|
7767
|
+
rationale: 'Resonant crystals amplify warp field projection',
|
|
7768
|
+
},
|
|
7769
|
+
{
|
|
7770
|
+
stat: 'Resonance',
|
|
7771
|
+
capability: 'Launch',
|
|
7772
|
+
attribute: 'range',
|
|
7773
|
+
rationale: 'Resonant crystals focus electromagnetic launch field',
|
|
7774
|
+
},
|
|
7775
|
+
{
|
|
7776
|
+
stat: 'Resonance',
|
|
7777
|
+
capability: 'Launch',
|
|
7778
|
+
attribute: 'capacity',
|
|
7779
|
+
rationale: 'Stronger resonant field launches heavier payloads',
|
|
7780
|
+
},
|
|
7781
|
+
{
|
|
7782
|
+
stat: 'Hardness',
|
|
7783
|
+
capability: 'Manufacturing',
|
|
7784
|
+
attribute: 'speed',
|
|
7785
|
+
rationale: 'Hard tooling surfaces cut and shape materials faster',
|
|
7786
|
+
},
|
|
7787
|
+
{
|
|
7788
|
+
stat: 'Hardness',
|
|
7789
|
+
capability: 'Launch',
|
|
7790
|
+
attribute: 'drain',
|
|
7791
|
+
rationale: 'Hard rail surfaces reduce friction, less energy wasted',
|
|
7792
|
+
},
|
|
7793
|
+
{
|
|
7794
|
+
stat: 'Clarity',
|
|
7795
|
+
capability: 'Energy',
|
|
7796
|
+
attribute: 'recharge',
|
|
7797
|
+
rationale: 'Flawless crystals enable smoother energy flow during recharge',
|
|
7798
|
+
},
|
|
7799
|
+
{
|
|
7800
|
+
stat: 'Clarity',
|
|
7801
|
+
capability: 'Manufacturing',
|
|
7802
|
+
attribute: 'quality',
|
|
7803
|
+
rationale: 'Precision optics for calibration during fabrication',
|
|
7804
|
+
},
|
|
7805
|
+
{
|
|
7806
|
+
stat: 'Clarity',
|
|
7807
|
+
capability: 'Manufacturing',
|
|
7808
|
+
attribute: 'drain',
|
|
7809
|
+
rationale: 'Precision computing optimizes energy routing in factory',
|
|
7810
|
+
},
|
|
7811
|
+
{
|
|
7812
|
+
stat: 'Plasticity',
|
|
7813
|
+
capability: 'Manufacturing',
|
|
7814
|
+
attribute: 'speed',
|
|
7815
|
+
rationale: 'Easily reshaped materials speed up processing',
|
|
7816
|
+
},
|
|
7817
|
+
{
|
|
7818
|
+
stat: 'Plasticity',
|
|
7819
|
+
capability: 'Movement',
|
|
7820
|
+
attribute: 'thrust',
|
|
7821
|
+
rationale: 'Flexible polymer seals reduce friction in propulsion',
|
|
7822
|
+
},
|
|
7823
|
+
{
|
|
7824
|
+
stat: 'Plasticity',
|
|
7825
|
+
capability: 'Loader',
|
|
7826
|
+
attribute: 'thrust',
|
|
7827
|
+
rationale: 'Flexible joints improve loader force transfer',
|
|
7828
|
+
},
|
|
7829
|
+
{
|
|
7830
|
+
stat: 'Insulation',
|
|
7831
|
+
capability: 'Movement',
|
|
7832
|
+
attribute: 'drain',
|
|
7833
|
+
rationale: 'Better insulation reduces energy loss during movement',
|
|
7834
|
+
},
|
|
7835
|
+
{
|
|
7836
|
+
stat: 'Insulation',
|
|
7837
|
+
capability: 'Extraction',
|
|
7838
|
+
attribute: 'drain',
|
|
7839
|
+
rationale: 'Better insulation reduces energy loss during extraction',
|
|
7840
|
+
},
|
|
7841
|
+
{
|
|
7842
|
+
stat: 'Insulation',
|
|
7843
|
+
capability: 'Manufacturing',
|
|
7844
|
+
attribute: 'drain',
|
|
7845
|
+
rationale: 'Better insulation reduces energy loss during manufacturing',
|
|
7846
|
+
},
|
|
7847
|
+
{
|
|
7848
|
+
stat: 'Insulation',
|
|
7849
|
+
capability: 'Launch',
|
|
7850
|
+
attribute: 'drain',
|
|
7851
|
+
rationale: 'Better insulation reduces energy loss during launch',
|
|
7852
|
+
},
|
|
7853
|
+
{
|
|
7854
|
+
stat: 'Purity',
|
|
7855
|
+
capability: 'Storage',
|
|
7856
|
+
attribute: 'capacity',
|
|
7857
|
+
rationale: 'Purer composites make better containers',
|
|
7858
|
+
},
|
|
7859
|
+
{
|
|
7860
|
+
stat: 'Purity',
|
|
7861
|
+
capability: 'Extraction',
|
|
7862
|
+
attribute: 'drill',
|
|
7863
|
+
rationale: 'Purer bio-lubricants reduce friction during drilling',
|
|
7864
|
+
},
|
|
7865
|
+
{
|
|
7866
|
+
stat: 'Purity',
|
|
7867
|
+
capability: 'Energy',
|
|
7868
|
+
attribute: 'capacity',
|
|
7869
|
+
rationale: 'Purer organic electrolytes store more charge',
|
|
7870
|
+
},
|
|
7871
|
+
];
|
|
7872
|
+
const invertedAttributes = new Set(['drain', 'mass']);
|
|
7873
|
+
function isInvertedAttribute(attribute) {
|
|
7874
|
+
return invertedAttributes.has(attribute);
|
|
7875
|
+
}
|
|
7876
|
+
function getCapabilityAttributes(capability) {
|
|
7877
|
+
if (capability) {
|
|
7878
|
+
return capabilityAttributes.filter((a) => a.capability === capability);
|
|
7879
|
+
}
|
|
7880
|
+
return capabilityAttributes;
|
|
7881
|
+
}
|
|
7882
|
+
function getStatMappings() {
|
|
7883
|
+
return statMappings;
|
|
7884
|
+
}
|
|
7885
|
+
function getStatMappingsForStat(stat) {
|
|
7886
|
+
return statMappings.filter((m) => m.stat === stat);
|
|
7887
|
+
}
|
|
7888
|
+
function getStatMappingsForCapability(capability) {
|
|
7889
|
+
return statMappings.filter((m) => m.capability === capability);
|
|
7890
|
+
}
|
|
7891
|
+
|
|
6865
7892
|
function computeShipHullCapabilities(stats) {
|
|
6866
7893
|
const density = stats.density ?? 500;
|
|
6867
7894
|
const strength = stats.strength ?? 500;
|
|
@@ -6878,7 +7905,7 @@ function computeEngineCapabilities(stats) {
|
|
|
6878
7905
|
const thm = stats.thermal ?? 500;
|
|
6879
7906
|
return {
|
|
6880
7907
|
thrust: 400 + Math.floor(vol * 3 / 4),
|
|
6881
|
-
drain: Math.max(
|
|
7908
|
+
drain: Math.max(30, 50 - Math.floor(thm / 70)),
|
|
6882
7909
|
};
|
|
6883
7910
|
}
|
|
6884
7911
|
function computeGeneratorCapabilities(stats) {
|
|
@@ -6918,6 +7945,25 @@ function computeManufacturingCapabilities(stats) {
|
|
|
6918
7945
|
drain: Math.max(5, 30 - Math.floor(clr / 33)),
|
|
6919
7946
|
};
|
|
6920
7947
|
}
|
|
7948
|
+
function computeStorageCapabilities(stats, baseCapacity) {
|
|
7949
|
+
const strength = stats.strength ?? 500;
|
|
7950
|
+
const ductility = stats.ductility ?? 500;
|
|
7951
|
+
const purity = stats.purity ?? 500;
|
|
7952
|
+
const statSum = strength + ductility + purity;
|
|
7953
|
+
const capacityBonus = Math.floor(baseCapacity * (10 + Math.floor(statSum * 10 / 2997)) / 100);
|
|
7954
|
+
return { capacityBonus };
|
|
7955
|
+
}
|
|
7956
|
+
function computeWarehouseHullCapabilities(stats) {
|
|
7957
|
+
const density = stats.density ?? 500;
|
|
7958
|
+
const strength = stats.strength ?? 500;
|
|
7959
|
+
const ductility = stats.ductility ?? 500;
|
|
7960
|
+
const purity = stats.purity ?? 500;
|
|
7961
|
+
const hullmass = 25000 + 75 * density;
|
|
7962
|
+
const statSum = strength + ductility + purity;
|
|
7963
|
+
const exponent = statSum / 2997.0;
|
|
7964
|
+
const capacity = Math.floor(20000000 * Math.pow(10, exponent));
|
|
7965
|
+
return { hullmass, capacity };
|
|
7966
|
+
}
|
|
6921
7967
|
|
|
6922
7968
|
function toNum(v) {
|
|
6923
7969
|
return Number(UInt16.from(v).value.toString());
|
|
@@ -7029,6 +8075,16 @@ function computeCapabilityGroup(moduleType, stats) {
|
|
|
7029
8075
|
{ label: 'Drain', value: caps.drain },
|
|
7030
8076
|
] };
|
|
7031
8077
|
}
|
|
8078
|
+
case MODULE_STORAGE: {
|
|
8079
|
+
const str = stats.strength ?? 500;
|
|
8080
|
+
const duc = stats.ductility ?? 500;
|
|
8081
|
+
const pur = stats.purity ?? 500;
|
|
8082
|
+
const statSum = str + duc + pur;
|
|
8083
|
+
const pct = 10 + Math.floor(statSum * 10 / 2997);
|
|
8084
|
+
return { capability: 'Storage', attributes: [
|
|
8085
|
+
{ label: 'Capacity Bonus', value: pct },
|
|
8086
|
+
] };
|
|
8087
|
+
}
|
|
7032
8088
|
default:
|
|
7033
8089
|
return undefined;
|
|
7034
8090
|
}
|
|
@@ -7117,5 +8173,211 @@ function resolveItem(itemId, seed, modules) {
|
|
|
7117
8173
|
return resolveResource(id, seed);
|
|
7118
8174
|
}
|
|
7119
8175
|
|
|
7120
|
-
|
|
8176
|
+
function readCommonBase(data) {
|
|
8177
|
+
return {
|
|
8178
|
+
quantity: Number(data.quantity),
|
|
8179
|
+
seed: String(data.seed),
|
|
8180
|
+
origin_x: String(data.origin_x),
|
|
8181
|
+
origin_y: String(data.origin_y),
|
|
8182
|
+
};
|
|
8183
|
+
}
|
|
8184
|
+
function deserializeScalar(data, itemId) {
|
|
8185
|
+
const base = readCommonBase(data);
|
|
8186
|
+
return { item_id: itemId, quantity: base.quantity, seed: base.seed };
|
|
8187
|
+
}
|
|
8188
|
+
const deserializeResource = deserializeScalar;
|
|
8189
|
+
const deserializeComponent = deserializeScalar;
|
|
8190
|
+
const deserializeModule = deserializeScalar;
|
|
8191
|
+
function deserializeEntity(data, itemId) {
|
|
8192
|
+
const base = readCommonBase(data);
|
|
8193
|
+
const moduleItems = (data.module_items ?? []).map((v) => Number(v));
|
|
8194
|
+
const moduleSeeds = (data.module_seeds ?? []).map((v) => String(v));
|
|
8195
|
+
const layout = getEntitySlotLayout(itemId);
|
|
8196
|
+
const modules = layout.map((slot, i) => ({
|
|
8197
|
+
type: slot.type,
|
|
8198
|
+
installed: moduleItems[i] && moduleItems[i] !== 0
|
|
8199
|
+
? { item_id: moduleItems[i], seed: moduleSeeds[i] }
|
|
8200
|
+
: undefined,
|
|
8201
|
+
}));
|
|
8202
|
+
return { item_id: itemId, quantity: base.quantity, seed: base.seed, modules };
|
|
8203
|
+
}
|
|
8204
|
+
function deserializeAsset(data, itemId) {
|
|
8205
|
+
const type = itemTypeCode(itemId);
|
|
8206
|
+
switch (type) {
|
|
8207
|
+
case ITEM_TYPE_RESOURCE:
|
|
8208
|
+
case ITEM_TYPE_COMPONENT:
|
|
8209
|
+
case ITEM_TYPE_MODULE:
|
|
8210
|
+
return deserializeScalar(data, itemId);
|
|
8211
|
+
case ITEM_TYPE_ENTITY:
|
|
8212
|
+
return deserializeEntity(data, itemId);
|
|
8213
|
+
default:
|
|
8214
|
+
throw new Error(`unknown item type ${type} for item ${itemId}`);
|
|
8215
|
+
}
|
|
8216
|
+
}
|
|
8217
|
+
|
|
8218
|
+
function idiv(a, b) {
|
|
8219
|
+
return Math.floor(a / b);
|
|
8220
|
+
}
|
|
8221
|
+
function computeBaseHullmass(seed) {
|
|
8222
|
+
const density = decodeStat(seed, 1);
|
|
8223
|
+
return 25000 + 75 * density;
|
|
8224
|
+
}
|
|
8225
|
+
function computeBaseCapacityShip(seed) {
|
|
8226
|
+
const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
|
|
8227
|
+
return Math.floor(1000000 * Math.pow(10, s / 2997));
|
|
8228
|
+
}
|
|
8229
|
+
function computeBaseCapacityWarehouse(seed) {
|
|
8230
|
+
const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
|
|
8231
|
+
return Math.floor(20000000 * Math.pow(10, s / 2997));
|
|
8232
|
+
}
|
|
8233
|
+
const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
|
|
8234
|
+
const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
|
|
8235
|
+
const computeGeneratorCap = (res) => 300 + idiv(res, 6);
|
|
8236
|
+
const computeGeneratorRech = (clr) => 5 + idiv(clr * 15, 1000);
|
|
8237
|
+
const computeExtractorRate = (str) => 200 + str;
|
|
8238
|
+
const computeExtractorDrain = (con) => Math.max(10, 50 - idiv(con, 20));
|
|
8239
|
+
const computeExtractorDepth = (tol) => 200 + idiv(tol * 3, 2);
|
|
8240
|
+
const computeExtractorDrill = (ref) => 100 + idiv(ref * 4, 5);
|
|
8241
|
+
const computeLoaderMass = (duc) => Math.max(200, 2000 - duc * 2);
|
|
8242
|
+
const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
|
|
8243
|
+
const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
|
|
8244
|
+
const computeCrafterDrain = (clr) => Math.max(5, 30 - idiv(clr, 33));
|
|
8245
|
+
function entityDisplayName(itemId) {
|
|
8246
|
+
switch (itemId) {
|
|
8247
|
+
case ITEM_SHIP_T1_PACKED:
|
|
8248
|
+
return 'Ship T1';
|
|
8249
|
+
case ITEM_WAREHOUSE_T1_PACKED:
|
|
8250
|
+
return 'Warehouse T1';
|
|
8251
|
+
case ITEM_CONTAINER_T1_PACKED:
|
|
8252
|
+
return 'Container T1';
|
|
8253
|
+
case ITEM_CONTAINER_T2_PACKED:
|
|
8254
|
+
return 'Container T2';
|
|
8255
|
+
default:
|
|
8256
|
+
return 'Entity';
|
|
8257
|
+
}
|
|
8258
|
+
}
|
|
8259
|
+
function moduleDisplayName(itemId) {
|
|
8260
|
+
switch (itemId) {
|
|
8261
|
+
case ITEM_ENGINE_T1:
|
|
8262
|
+
return 'Engine T1';
|
|
8263
|
+
case ITEM_GENERATOR_T1:
|
|
8264
|
+
return 'Generator T1';
|
|
8265
|
+
case ITEM_EXTRACTOR_T1:
|
|
8266
|
+
return 'Extractor T1';
|
|
8267
|
+
case ITEM_LOADER_T1:
|
|
8268
|
+
return 'Loader T1';
|
|
8269
|
+
case ITEM_MANUFACTURING_T1:
|
|
8270
|
+
return 'Manufacturing T1';
|
|
8271
|
+
case ITEM_STORAGE_T1:
|
|
8272
|
+
return 'Storage T1';
|
|
8273
|
+
default:
|
|
8274
|
+
return 'Module';
|
|
8275
|
+
}
|
|
8276
|
+
}
|
|
8277
|
+
function formatModuleLine(slot, itemId, seed) {
|
|
8278
|
+
let out = `Slot ${slot} - `;
|
|
8279
|
+
if (itemId === 0) {
|
|
8280
|
+
out += '(empty)';
|
|
8281
|
+
return out;
|
|
8282
|
+
}
|
|
8283
|
+
out += moduleDisplayName(itemId);
|
|
8284
|
+
const subtype = getModuleCapabilityType(itemId);
|
|
8285
|
+
switch (subtype) {
|
|
8286
|
+
case MODULE_ENGINE: {
|
|
8287
|
+
const vol = decodeStat(seed, 0);
|
|
8288
|
+
const thm = decodeStat(seed, 1);
|
|
8289
|
+
out += ` Thrust ${computeEngineThrust(vol)} Drain ${computeEngineDrain(thm)}`;
|
|
8290
|
+
break;
|
|
8291
|
+
}
|
|
8292
|
+
case MODULE_GENERATOR: {
|
|
8293
|
+
const res = decodeStat(seed, 0);
|
|
8294
|
+
const clr = decodeStat(seed, 1);
|
|
8295
|
+
out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(clr)}`;
|
|
8296
|
+
break;
|
|
8297
|
+
}
|
|
8298
|
+
case MODULE_EXTRACTOR: {
|
|
8299
|
+
const str = decodeStat(seed, 0);
|
|
8300
|
+
const tol = decodeStat(seed, 1);
|
|
8301
|
+
const con = decodeStat(seed, 3);
|
|
8302
|
+
const ref = decodeStat(seed, 4);
|
|
8303
|
+
out += ` Rate ${computeExtractorRate(str)} Depth ${computeExtractorDepth(tol)} Drill ${computeExtractorDrill(ref)} Drain ${computeExtractorDrain(con)}`;
|
|
8304
|
+
break;
|
|
8305
|
+
}
|
|
8306
|
+
case MODULE_LOADER: {
|
|
8307
|
+
const duc = decodeStat(seed, 0);
|
|
8308
|
+
const pla = decodeStat(seed, 1);
|
|
8309
|
+
out += ` Mass ${computeLoaderMass(duc)} Thrust ${computeLoaderThrust(pla)}`;
|
|
8310
|
+
break;
|
|
8311
|
+
}
|
|
8312
|
+
case MODULE_CRAFTER: {
|
|
8313
|
+
const rea = decodeStat(seed, 0);
|
|
8314
|
+
const clr = decodeStat(seed, 1);
|
|
8315
|
+
out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(clr)}`;
|
|
8316
|
+
break;
|
|
8317
|
+
}
|
|
8318
|
+
case MODULE_STORAGE: {
|
|
8319
|
+
const str = decodeStat(seed, 0);
|
|
8320
|
+
const duc = decodeStat(seed, 1);
|
|
8321
|
+
const pur = decodeStat(seed, 2);
|
|
8322
|
+
const sum = str + duc + pur;
|
|
8323
|
+
const pct = 10 + idiv(sum * 10, 2997);
|
|
8324
|
+
out += ` +${pct}% capacity`;
|
|
8325
|
+
break;
|
|
8326
|
+
}
|
|
8327
|
+
}
|
|
8328
|
+
return out;
|
|
8329
|
+
}
|
|
8330
|
+
function buildEntityDescription(itemId, hullSeed, moduleItems, moduleSeeds) {
|
|
8331
|
+
const hullMass = computeBaseHullmass(hullSeed);
|
|
8332
|
+
let baseCapacity = 0;
|
|
8333
|
+
if (itemId === ITEM_SHIP_T1_PACKED) {
|
|
8334
|
+
baseCapacity = computeBaseCapacityShip(hullSeed);
|
|
8335
|
+
}
|
|
8336
|
+
else if (itemId === ITEM_WAREHOUSE_T1_PACKED) {
|
|
8337
|
+
baseCapacity = computeBaseCapacityWarehouse(hullSeed);
|
|
8338
|
+
}
|
|
8339
|
+
let out = entityDisplayName(itemId);
|
|
8340
|
+
out += ` - Hull ${hullMass} mass`;
|
|
8341
|
+
if (baseCapacity > 0) {
|
|
8342
|
+
out += ` * ${baseCapacity} capacity`;
|
|
8343
|
+
}
|
|
8344
|
+
out += '\n\n';
|
|
8345
|
+
for (let i = 0; i < moduleItems.length; i++) {
|
|
8346
|
+
out += formatModuleLine(i, moduleItems[i], moduleSeeds[i] ?? 0n);
|
|
8347
|
+
out += '\n';
|
|
8348
|
+
}
|
|
8349
|
+
return out;
|
|
8350
|
+
}
|
|
8351
|
+
|
|
8352
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
8353
|
+
__proto__: null,
|
|
8354
|
+
readCommonBase: readCommonBase,
|
|
8355
|
+
deserializeScalar: deserializeScalar,
|
|
8356
|
+
deserializeResource: deserializeResource,
|
|
8357
|
+
deserializeComponent: deserializeComponent,
|
|
8358
|
+
deserializeModule: deserializeModule,
|
|
8359
|
+
deserializeEntity: deserializeEntity,
|
|
8360
|
+
deserializeAsset: deserializeAsset,
|
|
8361
|
+
computeBaseHullmass: computeBaseHullmass,
|
|
8362
|
+
computeBaseCapacityShip: computeBaseCapacityShip,
|
|
8363
|
+
computeBaseCapacityWarehouse: computeBaseCapacityWarehouse,
|
|
8364
|
+
computeEngineThrust: computeEngineThrust,
|
|
8365
|
+
computeEngineDrain: computeEngineDrain,
|
|
8366
|
+
computeGeneratorCap: computeGeneratorCap,
|
|
8367
|
+
computeGeneratorRech: computeGeneratorRech,
|
|
8368
|
+
computeExtractorRate: computeExtractorRate,
|
|
8369
|
+
computeExtractorDrain: computeExtractorDrain,
|
|
8370
|
+
computeExtractorDepth: computeExtractorDepth,
|
|
8371
|
+
computeExtractorDrill: computeExtractorDrill,
|
|
8372
|
+
computeLoaderMass: computeLoaderMass,
|
|
8373
|
+
computeLoaderThrust: computeLoaderThrust,
|
|
8374
|
+
computeCrafterSpeed: computeCrafterSpeed,
|
|
8375
|
+
computeCrafterDrain: computeCrafterDrain,
|
|
8376
|
+
entityDisplayName: entityDisplayName,
|
|
8377
|
+
moduleDisplayName: moduleDisplayName,
|
|
8378
|
+
formatModuleLine: formatModuleLine,
|
|
8379
|
+
buildEntityDescription: buildEntityDescription
|
|
8380
|
+
});
|
|
8381
|
+
|
|
8382
|
+
export { ActionsManager, BASE_ORBITAL_MASS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, Container, Coordinates, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GameState, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_DOES_NOT_EXIST, ITEM_DRILL_SHAFT, ITEM_ENGINE_T1, ITEM_EXTRACTION_PROBE, ITEM_EXTRACTOR_T1, ITEM_GENERATOR_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MANUFACTURING_T1, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_POWER_CELL, ITEM_REACTION_CHAMBER, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_THRUSTER_CORE, ITEM_TOOL_BIT, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, InventoryAccessor, Item, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, MODULE_CRAFTER, MODULE_ENGINE, MODULE_EXTRACTOR, MODULE_GENERATOR, MODULE_LAUNCHER, MODULE_LOADER, MODULE_STORAGE, MODULE_WARP, index as NFT, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PRECISION, platform as PlatformContract, Player, PlayersManager, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, ScheduleAccessor, server as ServerContract, Ship, Shipload, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, availableCapacity$1 as availableCapacity, availableCapacityFromMass, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildEntityDescription, calcCargoMass, calcEnergyUsage, calcLoadDuration, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_extraction_duration, calc_extraction_energy, calc_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasExtractor, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoUtils, categoryColors, categoryIcons, categoryItemMass, componentIcon, components, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeExtractorCapabilities, computeExtractorDepth, computeExtractorDrain, computeExtractorDrill, computeExtractorRate, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeManufacturingCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseHullCapabilities, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, depthScaleFactor, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStratum, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, distanceBetweenCoordinates, distanceBetweenPoints, encodeStats, energyPercent, entityDisplayName, entityRecipes, estimateDealTravelTime, estimateTravelTime, findNearbyPlanets, formatModuleLine, getAllCraftableItems, getCapabilityAttributes, getCategoryInfo, getComponentById, getComponentsForCategory, getComponentsForStat, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityRecipe, getEntityRecipeByItemId, getEntitySlotLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getModuleCapabilityType, getModuleRecipe, getModuleRecipeByItemId, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getResourceTier, getResourceWeight, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasExtractor, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, isCraftedItem, isExtractableLocation, isFull$1 as isFull, isFullFromMass, isInvertedAttribute, isModuleItem, isRelatedItem, itemCategory, itemIcons, itemIds, itemOffset, itemTier, itemTypeCode, lerp, makeContainer, makeShip, makeWarehouse, maxTravelDistance, moduleAccepts, moduleDisplayName, moduleIcon, moduleRecipes, needsRecharge, projectEntity, projectEntityAt, readCommonBase, resolveItem, resolveStats, rotation, schedule, statMappings, tierColors, toLocation };
|
|
7121
8383
|
//# sourceMappingURL=shipload.m.js.map
|