@shipload/sdk 2.0.0-rc1 → 2.0.0-rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +349 -1
  2. package/lib/shipload.d.ts +809 -314
  3. package/lib/shipload.js +2745 -1740
  4. package/lib/shipload.js.map +1 -1
  5. package/lib/shipload.m.js +2158 -1154
  6. package/lib/shipload.m.js.map +1 -1
  7. package/package.json +1 -2
  8. package/src/capabilities/extraction.ts +30 -0
  9. package/src/capabilities/guards.ts +43 -0
  10. package/src/capabilities/index.ts +5 -0
  11. package/src/capabilities/loading.ts +8 -0
  12. package/src/capabilities/movement.ts +29 -0
  13. package/src/capabilities/storage.ts +67 -0
  14. package/src/contracts/server.ts +506 -183
  15. package/src/data/items.json +16 -0
  16. package/src/derivation/index.ts +25 -0
  17. package/src/derivation/location-size.ts +15 -0
  18. package/src/derivation/resources.ts +141 -0
  19. package/src/derivation/stratum.ts +116 -0
  20. package/src/entities/cargo-utils.ts +98 -3
  21. package/src/entities/container.ts +70 -0
  22. package/src/entities/entity-inventory.ts +13 -9
  23. package/src/entities/inventory-accessor.ts +46 -0
  24. package/src/entities/location.ts +31 -17
  25. package/src/entities/makers.ts +69 -0
  26. package/src/entities/player.ts +2 -1
  27. package/src/entities/ship.ts +93 -440
  28. package/src/entities/warehouse.ts +29 -145
  29. package/src/errors.ts +4 -4
  30. package/src/index-module.ts +62 -4
  31. package/src/managers/actions.ts +75 -31
  32. package/src/managers/entities.ts +22 -5
  33. package/src/managers/locations.ts +34 -15
  34. package/src/managers/trades.ts +7 -7
  35. package/src/market/items.ts +31 -0
  36. package/src/market/market.ts +12 -13
  37. package/src/scheduling/accessor.ts +82 -0
  38. package/src/scheduling/projection.ts +126 -54
  39. package/src/scheduling/schedule.ts +24 -0
  40. package/src/trading/collect.ts +25 -26
  41. package/src/trading/deal.ts +8 -9
  42. package/src/trading/trade.ts +9 -9
  43. package/src/travel/travel.ts +69 -8
  44. package/src/types/capabilities.ts +79 -0
  45. package/src/types/entity-traits.ts +70 -0
  46. package/src/types/entity.ts +36 -0
  47. package/src/types/index.ts +3 -0
  48. package/src/types.ts +92 -15
  49. package/src/utils/hash.ts +1 -1
  50. package/src/utils/system.ts +97 -4
  51. package/src/data/goods.json +0 -23
  52. package/src/market/goods.ts +0 -31
@@ -26,7 +26,7 @@ import {
26
26
  import type {ActionOptions, ContractArgs, PartialBy, Table} from '@wharfkit/contract'
27
27
  import {Contract as BaseContract} from '@wharfkit/contract'
28
28
  export const abiBlob = Blob.from(
29
- 'DmVvc2lvOjphYmkvMS4yAEEHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2CGJ1eWdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyB2J1eXNoaXAAAgdhY2NvdW50BG5hbWUEbmFtZQZzdHJpbmcMYnV5d2FyZWhvdXNlAAMHYWNjb3VudARuYW1lB3NoaXBfaWQGdWludDY0BG5hbWUGc3RyaW5nBmNhbmNlbAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50BnVpbnQ2NApjYW5jZWxfbG9nAAYFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sKc3RhcnRlZF9hdAp0aW1lX3BvaW50DmNhbmNlbF9yZXN1bHRzAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/CmNhcmdvX2l0ZW0AAwdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NAljYXJnb19yb3cABQJpZAZ1aW50NjQJZW50aXR5X2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQJdW5pdF9jb3N0BnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2C2Nvb3JkaW5hdGVzAAMBeAVpbnQ2NAF5BWludDY0AXoHdWludDE2PwZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDE2CHJlY2hhcmdlBnVpbnQxNgtlbnRpdHlfaW5mbwAUBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/BG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/DGVudGl0eV9zdGF0ZQACCGxvY2F0aW9uC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MTYOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CGdldGdvb2RzAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQJZ2V0bmVhcmJ5AAMLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wJZ2V0cGxheWVyAAEHYWNjb3VudARuYW1lDGdldHN1bW1hcmllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8EZ29vZAADAmlkBnVpbnQxNgpiYXNlX3ByaWNlBnVpbnQzMgRtYXNzBnVpbnQzMgpnb29kc19pbmZvAAEFZ29vZHMGZ29vZFtdBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NgRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgNbG9jYXRpb25fZ29vZAAFAmlkBnVpbnQxNgVwcmljZQZ1aW50MzIGc3VwcGx5BnVpbnQxNhFyYXJpdHlfbXVsdGlwbGllcgZ1aW50MzITbG9jYXRpb25fbXVsdGlwbGllcgZ1aW50MzINbG9jYXRpb25faW5mbwADBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAVnb29kcw9sb2NhdGlvbl9nb29kW10MbG9jYXRpb25fcm93AAUCaWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBWVwb2NoBnVpbnQ2NAdnb29kX2lkBnVpbnQxNgZzdXBwbHkGdWludDE2CWxvZ2NhbmNlbAABA2xvZwpjYW5jZWxfbG9nCmxvZ3Jlc29sdmUAAQNsb2cLcmVzb2x2ZV9sb2cObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50DGVudGl0eV9zdGF0ZQlwcm9qZWN0ZWQMZW50aXR5X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvB3BheWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAtwbGF5ZXJfaW5mbwALBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NA5hdmFpbGFibGVfbG9hbgZ1aW50NjQPbmV4dF9zaGlwX3ByaWNlBnVpbnQ2NBRuZXh0X3dhcmVob3VzZV9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAQFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NAtwdXJnZXN1cHBseQABCG1heF9yb3dzB3VpbnQ2ND8IcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdyZXNvbHZlAAILZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQLcmVzb2x2ZV9sb2cADQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawpzdGFydGVkX2F0CnRpbWVfcG9pbnQMY29tcGxldGVkX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DG5ld19sb2NhdGlvbgxjb29yZGluYXRlcz8PY2FyZ29tYXNzX2RlbHRhBWludDY0C2NhcmdvX2FkZGVkDGNhcmdvX2l0ZW1bXQ1jYXJnb19yZW1vdmVkDGNhcmdvX2l0ZW1bXQdjcmVkaXRzBmludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQFdWludDgUbmV3X3NjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8Ec2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQlzZWxsZ29vZHMAAwdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIMc2VxdWVuY2Vfcm93AAIDa2V5BG5hbWUFdmFsdWUGdWludDY0CHNoaXBfcm93AAsCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMEbWFzcwZ1aW50MzIIY2FwYWNpdHkGdWludDMyBmVuZXJneQZ1aW50MTYHZW5naW5lcw5tb3ZlbWVudF9zdGF0cwlnZW5lcmF0b3IMZW5lcmd5X3N0YXRzB2xvYWRlcnMMbG9hZGVyX3N0YXRzCHNjaGVkdWxlCXNjaGVkdWxlPwlzdGF0ZV9yb3cABgdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNhbHQGdWludDY0BXNoaXBzBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2BmNvbW1pdAtjaGVja3N1bTI1Ngh0YWtlbG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0BHRhc2sABwR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4CGxvY2F0aW9uDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10GZW50aXR5B3VpbnQ2ND8HY3JlZGl0cwZpbnQ2ND8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdCHRyYW5zZmVyAAYLc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cAAgJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeQx1cGRhdGVjcmVkaXQAAgdhY2NvdW50BG5hbWUGYW1vdW50BWludDY0CnVwZGF0ZWRlYnQAAgdhY2NvdW50BG5hbWUGYW1vdW50BWludDY0DXdhcmVob3VzZV9yb3cABwJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwhsb2NhdGlvbgtjb29yZGluYXRlcwhjYXBhY2l0eQZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACIAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAOFHKvD4IYnV5Z29vZHPdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlnb29kcwpzdW1tYXJ5OiAnQnV5IGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBnb29kcyBhbmQgYWRkIHRoZW0gdG8gYSBzaGlwJ3MgY2FyZ28uAAAAoLqGvT4HYnV5c2hpcMYBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eXNoaXAKc3VtbWFyeTogJ0J1eSBhIG5ldyBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBzaGlwoLCmTV3DvT4MYnV5d2FyZWhvdXNlzAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5d2FyZWhvdXNlCnN1bW1hcnk6ICdCdXkgYSBuZXcgd2FyZWhvdXNlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyB3YXJlaG91c2UgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gV2FyZWhvdXNlcyBwcm92aWRlIGNhcmdvIHN0b3JhZ2Ugd2l0aCBsb2FkaW5nL3VubG9hZGluZyBjYXBhYmlsaXRpZXMgYnV0IGNhbm5vdCBtb3ZlLgAAAABEhaZBBmNhbmNlbMcCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNhbmNlbApzdW1tYXJ5OiAnQ2FuY2VsIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FuY2VsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGZyb20gdGhlIGVuZCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZS4gVGFza3MgdGhhdCBhcmUgaW1tdXRhYmxlIGFuZCBpbiBwcm9ncmVzcyBjYW5ub3QgYmUgY2FuY2VsbGVkLgoKLS0tAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQCwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLgAAADhRyrJiCGdldGdvb2RzqgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Z29vZHMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdHJhZGVhYmxlIGdvb2RzIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgbmFtZSwgYmFzZSBwcmljZSwgYW5kIG1hc3MuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggZ29vZDogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAACICk2DGI0JbG9nY2FuY2VsAACA2pFidRmNCmxvZ3Jlc29sdmUAAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXEAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4KCi0tLQAAAAAAkKPBBHNhbHTdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgoKLS0tAADAiVIWo8IJc2VsbGdvb2Rz1QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2VsbGdvb2RzCnN1bW1hcnk6ICdTZWxsIGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZWxsIGdvb2RzIGZyb20gYSBzaGlwJ3MgY2FyZ28uCgotLS0AAADT0KigyQh0YWtlbG9hbuoBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRha2Vsb2FuCnN1bW1hcnk6ICdDcmVkaXQgTG9hbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQm9ycm93IGNyZWRpdHMgZnJvbSB0aGUgYmFuayB0aGF0IHdpbGwgbmVlZCB0byBiZSByZXBhaWQuAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbMsCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBhIGdpdmVuIGxvY2F0aW9uLpBdUhepbFLVDHVwZGF0ZWNyZWRpdMIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWNyZWRpdApzdW1tYXJ5OiAnREVCVUc6IHVwZGF0ZWNyZWRpdCBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AQD4qqWxS1Qp1cGRhdGVkZWJ0vgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlZGVidApzdW1tYXJ5OiAnREVCVUc6IHVwZGF0ZWRlYnQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0IAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAk7psEI0DaTY0AAAMbG9jYXRpb25fcm93AAAAAFzlTawDaTY0AAAKcGxheWVyX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAQAAAAOFHKvD4MdGFza19yZXN1bHRzAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm8AAAA4UcqyYgpnb29kc19pbmZvACZ12SAas2INbG9jYXRpb25faW5mbwAA8OcaNbNiC25lYXJieV9pbmZvAAC4yptYs2ILcGxheWVyX2luZm+AlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAwIlSFqPCDHRhc2tfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cw=='
29
+ 'DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhUB2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgxidXljb250YWluZXIAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcIYnV5aXRlbXMABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIHYnV5c2hpcAACB2FjY291bnQEbmFtZQRuYW1lBnN0cmluZwxidXl3YXJlaG91c2UAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcGY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NARzZWVkB3VpbnQ2ND8JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CXVuaXRfY29zdAZ1aW50NjQEc2VlZAZ1aW50NjQJY2xlYW5yc3ZwAAIFZXBvY2gGdWludDY0CG1heF9yb3dzBnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2CWNvbmZpZ2xvZwABBmNvbmZpZwtnYW1lX2NvbmZpZw1jb250YWluZXJfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MGdWludDMyCGNhcGFjaXR5BnVpbnQzMgljYXJnb21hc3MGdWludDMyCHNjaGVkdWxlCXNjaGVkdWxlPwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8GZW5hYmxlAAEHZW5hYmxlZARib29sDGVuZXJneV9zdGF0cwACCGNhcGFjaXR5BnVpbnQxNghyZWNoYXJnZQZ1aW50MTYUZW50aXR5X2N1cnJlbnRfc3RhdGUAAgtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kGdWludDE2D2VudGl0eV9kZWZhdWx0cwAPDXNoaXBfaHVsbG1hc3MGdWludDMyDXNoaXBfY2FwYWNpdHkGdWludDMyC3NoaXBfZW5lcmd5BnVpbnQxNgZzaGlwX3oGdWludDE2DHNoaXBfZW5naW5lcw5tb3ZlbWVudF9zdGF0cw5zaGlwX2dlbmVyYXRvcgxlbmVyZ3lfc3RhdHMMc2hpcF9sb2FkZXJzDGxvYWRlcl9zdGF0cwpzaGlwX3RyYWRlC3RyYWRlX3N0YXRzDnNoaXBfZXh0cmFjdG9yD2V4dHJhY3Rvcl9zdGF0cxJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhF3YXJlaG91c2VfbG9hZGVycwxsb2FkZXJfc3RhdHMSY29udGFpbmVyX2h1bGxtYXNzBnVpbnQzMhJjb250YWluZXJfY2FwYWNpdHkGdWludDMyC2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAVBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/CGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8IY2FwYWNpdHkHdWludDMyPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwdpc19pZGxlBGJvb2wMY3VycmVudF90YXNrBXRhc2s/FGN1cnJlbnRfdGFza19lbGFwc2VkBnVpbnQzMhZjdXJyZW50X3Rhc2tfcmVtYWluaW5nBnVpbnQzMg1wZW5kaW5nX3Rhc2tzBnRhc2tbXQdpZGxlX2F0C3RpbWVfcG9pbnQ/CHNjaGVkdWxlCXNjaGVkdWxlPwplbnRpdHlfcmVmAAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkCnRpbWVfcG9pbnQPZW50aXR5Z3JvdXBfcm93AAICaWQGdWludDY0DHBhcnRpY2lwYW50cwxlbnRpdHlfcmVmW10HZXh0cmFjdAAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B3N0cmF0dW0GdWludDE2CHF1YW50aXR5BnVpbnQzMg9leHRyYWN0b3Jfc3RhdHMABQRyYXRlBnVpbnQxNgVkcmFpbgZ1aW50MTYKZWZmaWNpZW5jeQZ1aW50MTYFZGVwdGgGdWludDE2BWRyaWxsBnVpbnQxNgtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdCWdldGNvbmZpZwAAC2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIZ2V0aXRlbXMAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0CWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCWdldHBsYXllcgABB2FjY291bnQEbmFtZQpnZXRzdGFydGVyAAAMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwtncm91cHRyYXZlbAAECGVudGl0aWVzDGVudGl0eV9yZWZbXQF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbARoYXNoAAEFdmFsdWUGc3RyaW5nB2hhc2g1MTIAAQV2YWx1ZQZzdHJpbmcEaW5pdAABBHNlZWQLY2hlY2tzdW0yNTYIaXRlbV9kZWYAAwJpZAZ1aW50MTYKYmFzZV9wcmljZQZ1aW50MzIEbWFzcwZ1aW50MzIKaXRlbXNfaW5mbwABBWl0ZW1zCml0ZW1fZGVmW10Eam9pbgABB2FjY291bnQEbmFtZQxsb2FkZXJfc3RhdHMAAwRtYXNzBnVpbnQzMgZ0aHJ1c3QGdWludDE2CHF1YW50aXR5BXVpbnQ4EGxvY2F0aW9uX2Rlcml2ZWQAAgxzdGF0aWNfcHJvcHMPbG9jYXRpb25fc3RhdGljC2Vwb2NoX3Byb3BzDmxvY2F0aW9uX2Vwb2NoDmxvY2F0aW9uX2Vwb2NoAAMGYWN0aXZlBGJvb2wFc2VlZDAFdWludDgFc2VlZDEFdWludDgNbG9jYXRpb25faW5mbwADBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAVpdGVtcw9sb2NhdGlvbl9pdGVtW10NbG9jYXRpb25faXRlbQAFAmlkBnVpbnQxNgVwcmljZQZ1aW50MzIGc3VwcGx5BnVpbnQxNhFyYXJpdHlfbXVsdGlwbGllcgZ1aW50MzITbG9jYXRpb25fbXVsdGlwbGllcgZ1aW50MzIMbG9jYXRpb25fcm93AAYCaWQGdWludDY0BW93bmVyBG5hbWULY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10Ic2NoZWR1bGUJc2NoZWR1bGU/D2xvY2F0aW9uX3N0YXRpYwAFBmNvb3Jkcwtjb29yZGluYXRlcwR0eXBlDWxvY2F0aW9uX3R5cGUHc3VidHlwZQV1aW50OAVzZWVkMAV1aW50OAVzZWVkMQV1aW50OA5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQHcGF5bG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0C3BsYXllcl9pbmZvAA0Fb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0DmF2YWlsYWJsZV9sb2FuBnVpbnQ2NA9uZXh0X3NoaXBfcHJpY2UGdWludDY0FG5leHRfd2FyZWhvdXNlX3ByaWNlBnVpbnQ2NBRuZXh0X2NvbnRhaW5lcl9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NA9jb250YWluZXJfY291bnQGdWludDY0CnBsYXllcl9yb3cABAVvd25lcgRuYW1lB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0C3B1cmdlc3VwcGx5AAEIbWF4X3Jvd3MHdWludDY0PwhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0C3Jlc2VydmVfcm93AAICaWQGdWludDY0CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/BHNhbHQAAQRzYWx0BnVpbnQ2NAhzY2hlZHVsZQACB3N0YXJ0ZWQKdGltZV9wb2ludAV0YXNrcwZ0YXNrW10Jc2VsbGl0ZW1zAAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyDHNlcXVlbmNlX3JvdwACA2tleQRuYW1lBXZhbHVlBnVpbnQ2NAhzaGlwX3JvdwAOAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIGZW5lcmd5BnVpbnQxNgljYXJnb21hc3MGdWludDMyB2VuZ2luZXMObW92ZW1lbnRfc3RhdHMJZ2VuZXJhdG9yDGVuZXJneV9zdGF0cwdsb2FkZXJzDGxvYWRlcl9zdGF0cwV0cmFkZQx0cmFkZV9zdGF0cz8JZXh0cmFjdG9yEGV4dHJhY3Rvcl9zdGF0cz8Ic2NoZWR1bGUJc2NoZWR1bGU/DHN0YXJ0ZXJfaW5mbwADB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDY0BHNoaXALZW50aXR5X2luZm8Jc3RhdGVfcm93AAYHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzYWx0BnVpbnQ2NAVzaGlwcwZ1aW50MzIEc2VlZAtjaGVja3N1bTI1NgZjb21taXQLY2hlY2tzdW0yNTYKc3VwcGx5X3JvdwAFAmlkBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwVlcG9jaAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYGc3VwcGx5BnVpbnQxNgh0YWtlbG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0BHRhc2sACQR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4C2Nvb3JkaW5hdGVzDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10MZW50aXR5dGFyZ2V0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8HY3JlZGl0cwZpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDE2Pwp0YXNrX2V2ZW50AAkKZXZlbnRfdHlwZQV1aW50OAVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludApuZXdfZW5lcmd5B3VpbnQxNj8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdC3RyYWRlX3N0YXRzAAEGbWFyZ2luBnVpbnQxNgh0cmFuc2ZlcgAGC3NvdXJjZV90eXBlBG5hbWUJc291cmNlX2lkBnVpbnQ2NAlkZXN0X3R5cGUEbmFtZQdkZXN0X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGdHJhdmVsAAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93AAQCaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkRc3RhcnRlcl9pbmZvX3R5cGUMc3RhcnRlcl9pbmZvEGdhbWVfY29uZmlnX3R5cGULZ2FtZV9jb25maWcMdXBkYXRlY3JlZGl0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NAp1cGRhdGVkZWJ0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NA13YXJlaG91c2Vfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIY2FwYWNpdHkGdWludDMyCWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACkAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4ucNV0Jk+KvD4MYnV5Y29udGFpbmVyygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5Y29udGFpbmVyCnN1bW1hcnk6ICdCdXkgYSBuZXcgY29udGFpbmVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBjb250YWluZXIgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gQ29udGFpbmVycyBwcm92aWRlIGNhcmdvIHN0b3JhZ2UgYnV0IGhhdmUgbm8gbG9hZGVycyBhbmQgY2Fubm90IG1vdmUgaW5kZXBlbmRlbnRseS4AAABYquy8PghidXlpdGVtc90BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eWl0ZW1zCnN1bW1hcnk6ICdCdXkgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGl0ZW1zIGFuZCBhZGQgdGhlbSB0byBhIHNoaXAncyBjYXJnby4AAACguoa9PgdidXlzaGlwxgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5c2hpcApzdW1tYXJ5OiAnQnV5IGEgbmV3IHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHNoaXCgsKZNXcO9PgxidXl3YXJlaG91c2XMAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXl3YXJlaG91c2UKc3VtbWFyeTogJ0J1eSBhIG5ldyB3YXJlaG91c2UnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHdhcmVob3VzZSBhdCB0aGUgbG9jYXRpb24gb2YgYW4gaWRsZSBzaGlwLiBXYXJlaG91c2VzIHByb3ZpZGUgY2FyZ28gc3RvcmFnZSB3aXRoIGxvYWRpbmcvdW5sb2FkaW5nIGNhcGFiaWxpdGllcyBidXQgY2Fubm90IG1vdmUuAAAAAESFpkEGY2FuY2VsxwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuCgotLS0AAKgb32lURAljbGVhbnJzdnAAAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAYDQytyZFCWNvbmZpZ2xvZwAAAAAAqHjMVAZlbmFibGXiAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQuCgotLS0AAAAgI3NzVwdleHRyYWN0oQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZXh0cmFjdApzdW1tYXJ5OiAnRXh0cmFjdCByZXNvdXJjZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkV4dHJhY3QgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBleHRyYWN0YWJsZSBsb2NhdGlvbiB0eXBlcy4gU2NoZWR1bGVzIGFuIGV4dHJhY3Rpb24gdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZXh0cmFjdG9yIHN0YXRzIGFuZCB0aGUgbG9jYXRpb24ncyByZXNvdXJjZSBjb21wb3NpdGlvbi4AAGBuTYqyYglnZXRjb25maWcAALBy2eWpsmILZ2V0ZW50aXRpZXOkAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdGllcwpzdW1tYXJ5OiAnR2V0IGFsbCBlbnRpdGllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgZnVsbCBlbnRpdHkgaW5mbyBmb3IgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAPDZ5amyYglnZXRlbnRpdHmiAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRpdHkKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYW4gZW50aXR5IGluY2x1ZGluZyBpZGVudGl0eSwgY2FyZ28sIHNjaGVkdWxlIHN0YXRlLCBhbmQgdHlwZS1zcGVjaWZpYyBmaWVsZHMuAAAAWKrssmIIZ2V0aXRlbXOaAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtcwpzdW1tYXJ5OiAnR2V0IGFsbCBhdmFpbGFibGUgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCBpdGVtcyBpbiB0aGUgZ2FtZSBpbmNsdWRpbmcgdGhlaXIgaWQsIGJhc2UgcHJpY2UsIGFuZCBtYXNzLgAmddkgGrNiC2dldGxvY2F0aW9u4gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jYXRpb24Kc3VtbWFyeTogJ0dldCBsb2NhdGlvbiBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2F0aW9uIGluY2x1ZGluZyB3aGV0aGVyIGEgc3lzdGVtIGV4aXN0cywgYW5kIGZvciBlYWNoIGl0ZW06IHByaWNlLCBzdXBwbHksIHJhcml0eSBtdWx0aXBsaWVyLCBhbmQgbG9jYXRpb24gbXVsdGlwbGllci4AgMkmIRqzYgpnZXRsb2NkYXRh/gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jZGF0YQpzdW1tYXJ5OiAnR2V0IGRlcml2ZWQgbG9jYXRpb24gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBkZXJpdmVkIGxvY2F0aW9uIGRhdGEgaW5jbHVkaW5nIHN0YXRpYyBwcm9wZXJ0aWVzICh0eXBlLCBkaWZmaWN1bHR5LCBzZWVkcykgZnJvbSB0aGUgZ2FtZSBzZWVkIGFuZCBlcG9jaC1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY3RpdmUsIHNlZWRzKSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoIHNlZWQuAADw5xo1s2IJZ2V0bmVhcmJ53gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmVhcmJ5CnN1bW1hcnk6ICdHZXQgbmVhcmJ5IHJlYWNoYWJsZSBzeXN0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIG5lYXJieSBzeXN0ZW1zIHJlYWNoYWJsZSBieSBhbiBlbnRpdHkgZnJvbSBpdHMgcHJvamVjdGVkIGxvY2F0aW9uLiBSZXR1cm5zIGN1cnJlbnQgc3RhdGUgKHdpdGggY29tcGxldGVkIHRhc2tzIHJlc29sdmVkKSwgcHJvamVjdGVkIHN0YXRlIChhZnRlciBhbGwgc2NoZWR1bGVkIHRhc2tzKSwgYW5kIGEgbGlzdCBvZiByZWFjaGFibGUgc3lzdGVtcyB3aXRoIGRpc3RhbmNlLCBlbmVyZ3kgY29zdCwgZmxpZ2h0IHRpbWUsIGFuZCBtYXJrZXQgaW5mb3JtYXRpb24uAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AwFX5moyzYgpnZXRzdGFydGVyhQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3RhcnRlcgpzdW1tYXJ5OiAnR2V0IHN0YXJ0ZXIgc2hpcCBhbmQgYmFsYW5jZSBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgc3RhcnRlciBzaGlwIHN0YXRzIGFuZCBpbml0aWFsIGJhbGFuY2UgYSBuZXcgcGxheWVyIHdvdWxkIHJlY2VpdmUgdXBvbiBqb2luaW5nLiBVc2VkIGZvciBvbmJvYXJkaW5nIFVJIHRvIGRpc3BsYXkgd2hhdCBwbGF5ZXJzIHdpbGwgZ2V0IGJlZm9yZSB0aGV5IHJlZ2lzdGVyLoCVu0ZKjbNiDGdldHN1bW1hcmllc+gCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN1bW1hcmllcwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdW1tYXJpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGxpZ2h0d2VpZ2h0IHN1bW1hcmllcyBvZiBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIgaW5jbHVkaW5nIHR5cGUsIGlkLCBvd25lciwgbmFtZSwgbG9jYXRpb24sIGFuZCBpZGxlIHN0YXR1cy4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXVAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuCgotLS0AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwFJlF6PCCXNlbGxpdGVtc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxpdGVtcwpzdW1tYXJ5OiAnU2VsbCBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBpdGVtcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAA09CooMkIdGFrZWxvYW7qAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0YWtlbG9hbgpzdW1tYXJ5OiAnQ3JlZGl0IExvYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJvcnJvdyBjcmVkaXRzIGZyb20gdGhlIGJhbmsgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVwYWlkLgAAAFctPM3NCHRyYW5zZmVyyAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhbnNmZXIKc3VtbWFyeTogJ1RyYW5zZmVyIGNhcmdvIGJldHdlZW4gZW50aXRpZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZmVyIGNhcmdvIGJldHdlZW4gdHdvIGVudGl0aWVzIGF0IHRoZSBzYW1lIGxvY2F0aW9uLiBCb3RoIGVudGl0aWVzIG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlciBhbmQgYXQgbGVhc3Qgb25lIG11c3QgaGF2ZSBsb2FkZXJzLiBDcmVhdGVzIGxvYWQgYW5kIHVubG9hZCB0YXNrcyBvbiBib3RoIGVudGl0aWVzIHdpdGggZHVyYXRpb24gYmFzZWQgb24gY29tYmluZWQgbG9hZGVyIGNhcGFjaXR5IGFuZCBaLWRpc3RhbmNlIGJldHdlZW4gdGhlbS4AAAAARLXNzQZ0cmF2ZWzLAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgYSBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSB0cmF2ZWwgb2YgYW4gZW50aXR5IGZyb20gaXRzIGN1cnJlbnQgbG9jYXRpb24gdG8gYSBuZXcgZGVzdGluYXRpb24uCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgaXRlbXMgYXQgYSBnaXZlbiBsb2NhdGlvbi6QXVIXqWxS1Qx1cGRhdGVjcmVkaXTCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVjcmVkaXQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVjcmVkaXQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAEA+KqlsUtUKdXBkYXRlZGVidL4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWRlYnQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVkZWJ0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tDAAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAuGo6kydFA2k2NAAADWNvbnRhaW5lcl9yb3cAqqaX+ezyVANpNjQAAA9lbnRpdHlncm91cF9yb3cAAACTumwQjQNpNjQAAAxsb2NhdGlvbl9yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAAD4WKvGA2k2NAAACnN1cHBseV9yb3cAAAAAAKyqzwNpNjQAAAl0eXBlc19yb3cAAFBY06au4QNpNjQAAA13YXJlaG91c2Vfcm93ARFTaGlwbG9hZCAoU2VydmVyKRFTaGlwbG9hZCAoU2VydmVyKQAAABUAAABYquy8Pgx0YXNrX3Jlc3VsdHMAAAAARIWmQQ5jYW5jZWxfcmVzdWx0cwAAACAjc3NXDHRhc2tfcmVzdWx0cwAAYG5NirJiC2dhbWVfY29uZmlnALBy2eWpsmINZW50aXR5X2luZm9bXQAA8NnlqbJiC2VudGl0eV9pbmZvAAAAWKrssmIKaXRlbXNfaW5mbwAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkAADw5xo1s2ILbmVhcmJ5X2luZm8AALjKm1izYgtwbGF5ZXJfaW5mbwDAVfmajLNiDHN0YXJ0ZXJfaW5mb4CVu0ZKjbNiEGVudGl0eV9zdW1tYXJ5W10Aotrm5qrpZQx0YXNrX3Jlc3VsdHMAAAAAANCwaQtjaGVja3N1bTI1NgAAAECE0rBpC2NoZWNrc3VtNTEyAAAAil3TkLoMdGFza19yZXN1bHRzAAAAQO1IsboPcmVzb2x2ZV9yZXN1bHRzAADAUmUXo8IMdGFza19yZXN1bHRzAAAAVy08zc0MdGFza19yZXN1bHRzAAAAAES1zc0MdGFza19yZXN1bHRz'
30
30
  )
31
31
  export const abi = ABI.from(abiBlob)
32
32
  export namespace Types {
@@ -37,12 +37,23 @@ export namespace Types {
37
37
  @Struct.field(Checksum256)
38
38
  declare commit: Checksum256
39
39
  }
40
- @Struct.type('buygoods')
41
- export class buygoods extends Struct {
40
+ @Struct.type('buycontainer')
41
+ export class buycontainer extends Struct {
42
+ @Struct.field(Name)
43
+ declare account: Name
42
44
  @Struct.field(UInt64)
43
45
  declare ship_id: UInt64
46
+ @Struct.field('string')
47
+ declare name: string
48
+ }
49
+ @Struct.type('buyitems')
50
+ export class buyitems extends Struct {
51
+ @Struct.field(Name)
52
+ declare entity_type: Name
53
+ @Struct.field(UInt64)
54
+ declare id: UInt64
44
55
  @Struct.field(UInt16)
45
- declare good_id: UInt16
56
+ declare item_id: UInt16
46
57
  @Struct.field(UInt32)
47
58
  declare quantity: UInt32
48
59
  }
@@ -71,55 +82,12 @@ export namespace Types {
71
82
  @Struct.field(UInt64)
72
83
  declare count: UInt64
73
84
  }
74
- @Struct.type('coordinates')
75
- export class coordinates extends Struct {
76
- @Struct.field(Int64)
77
- declare x: Int64
78
- @Struct.field(Int64)
79
- declare y: Int64
80
- @Struct.field(UInt16, {optional: true})
81
- declare z?: UInt16
82
- }
83
- @Struct.type('cargo_item')
84
- export class cargo_item extends Struct {
85
- @Struct.field(UInt16)
86
- declare good_id: UInt16
87
- @Struct.field(UInt32)
88
- declare quantity: UInt32
89
- @Struct.field(UInt64)
90
- declare unit_cost: UInt64
91
- }
92
- @Struct.type('task')
93
- export class task extends Struct {
94
- @Struct.field(UInt8)
95
- declare type: UInt8
96
- @Struct.field(UInt32)
97
- declare duration: UInt32
98
- @Struct.field(UInt8)
99
- declare cancelable: UInt8
100
- @Struct.field(coordinates, {optional: true})
101
- declare location?: coordinates
102
- @Struct.field(cargo_item, {array: true})
103
- declare cargo: cargo_item[]
104
- @Struct.field(UInt64, {optional: true})
105
- declare entity?: UInt64
106
- @Struct.field(Int64, {optional: true})
107
- declare credits?: Int64
108
- }
109
- @Struct.type('cancel_log')
110
- export class cancel_log extends Struct {
111
- @Struct.field(Name)
112
- declare owner: Name
85
+ @Struct.type('entity_ref')
86
+ export class entity_ref extends Struct {
113
87
  @Struct.field(Name)
114
88
  declare entity_type: Name
115
89
  @Struct.field(UInt64)
116
90
  declare entity_id: UInt64
117
- @Struct.field(UInt8)
118
- declare task_index: UInt8
119
- @Struct.field(task)
120
- declare task: task
121
- @Struct.field(TimePoint)
122
- declare started_at: TimePoint
123
91
  }
124
92
  @Struct.type('cancel_results')
125
93
  export class cancel_results extends Struct {
@@ -131,6 +99,21 @@ export namespace Types {
131
99
  declare cancelled_count: UInt8
132
100
  @Struct.field(TimePoint, {optional: true})
133
101
  declare schedule_started?: TimePoint
102
+ @Struct.field(UInt64, {optional: true})
103
+ declare entitygroup?: UInt64
104
+ @Struct.field(entity_ref, {array: true, optional: true})
105
+ declare group_members?: entity_ref[]
106
+ }
107
+ @Struct.type('cargo_item')
108
+ export class cargo_item extends Struct {
109
+ @Struct.field(UInt16)
110
+ declare item_id: UInt16
111
+ @Struct.field(UInt32)
112
+ declare quantity: UInt32
113
+ @Struct.field(UInt64)
114
+ declare unit_cost: UInt64
115
+ @Struct.field(UInt64, {optional: true})
116
+ declare seed?: UInt64
134
117
  }
135
118
  @Struct.type('cargo_row')
136
119
  export class cargo_row extends Struct {
@@ -139,11 +122,20 @@ export namespace Types {
139
122
  @Struct.field(UInt64)
140
123
  declare entity_id: UInt64
141
124
  @Struct.field(UInt64)
142
- declare good_id: UInt64
125
+ declare item_id: UInt64
143
126
  @Struct.field(UInt64)
144
127
  declare quantity: UInt64
145
128
  @Struct.field(UInt64)
146
129
  declare unit_cost: UInt64
130
+ @Struct.field(UInt64)
131
+ declare seed: UInt64
132
+ }
133
+ @Struct.type('cleanrsvp')
134
+ export class cleanrsvp extends Struct {
135
+ @Struct.field(UInt64)
136
+ declare epoch: UInt64
137
+ @Struct.field(UInt64)
138
+ declare max_rows: UInt64
147
139
  }
148
140
  @Struct.type('cleartable')
149
141
  export class cleartable extends Struct {
@@ -159,10 +151,12 @@ export namespace Types {
159
151
  @Struct.field(Checksum256)
160
152
  declare commit: Checksum256
161
153
  }
162
- @Struct.type('enable')
163
- export class enable extends Struct {
164
- @Struct.field('bool')
165
- declare enabled: boolean
154
+ @Struct.type('movement_stats')
155
+ export class movement_stats extends Struct {
156
+ @Struct.field(UInt32)
157
+ declare thrust: UInt32
158
+ @Struct.field(UInt16)
159
+ declare drain: UInt16
166
160
  }
167
161
  @Struct.type('energy_stats')
168
162
  export class energy_stats extends Struct {
@@ -180,12 +174,114 @@ export namespace Types {
180
174
  @Struct.field(UInt8)
181
175
  declare quantity: UInt8
182
176
  }
183
- @Struct.type('movement_stats')
184
- export class movement_stats extends Struct {
185
- @Struct.field(UInt32)
186
- declare thrust: UInt32
177
+ @Struct.type('trade_stats')
178
+ export class trade_stats extends Struct {
179
+ @Struct.field(UInt16)
180
+ declare margin: UInt16
181
+ }
182
+ @Struct.type('extractor_stats')
183
+ export class extractor_stats extends Struct {
184
+ @Struct.field(UInt16)
185
+ declare rate: UInt16
187
186
  @Struct.field(UInt16)
188
187
  declare drain: UInt16
188
+ @Struct.field(UInt16)
189
+ declare efficiency: UInt16
190
+ @Struct.field(UInt16)
191
+ declare depth: UInt16
192
+ @Struct.field(UInt16)
193
+ declare drill: UInt16
194
+ }
195
+ @Struct.type('warp_stats')
196
+ export class warp_stats extends Struct {
197
+ @Struct.field(UInt32)
198
+ declare range: UInt32
199
+ }
200
+ @Struct.type('entity_defaults')
201
+ export class entity_defaults extends Struct {
202
+ @Struct.field(UInt32)
203
+ declare ship_hullmass: UInt32
204
+ @Struct.field(UInt32)
205
+ declare ship_capacity: UInt32
206
+ @Struct.field(UInt16)
207
+ declare ship_energy: UInt16
208
+ @Struct.field(UInt16)
209
+ declare ship_z: UInt16
210
+ @Struct.field(movement_stats)
211
+ declare ship_engines: movement_stats
212
+ @Struct.field(energy_stats)
213
+ declare ship_generator: energy_stats
214
+ @Struct.field(loader_stats)
215
+ declare ship_loaders: loader_stats
216
+ @Struct.field(trade_stats)
217
+ declare ship_trade: trade_stats
218
+ @Struct.field(extractor_stats)
219
+ declare ship_extractor: extractor_stats
220
+ @Struct.field(UInt32)
221
+ declare warehouse_capacity: UInt32
222
+ @Struct.field(UInt16)
223
+ declare warehouse_z: UInt16
224
+ @Struct.field(loader_stats)
225
+ declare warehouse_loaders: loader_stats
226
+ @Struct.field(UInt32)
227
+ declare container_hullmass: UInt32
228
+ @Struct.field(UInt32)
229
+ declare container_capacity: UInt32
230
+ @Struct.field(UInt16)
231
+ declare container_z: UInt16
232
+ }
233
+ @Struct.type('item_def')
234
+ export class item_def extends Struct {
235
+ @Struct.field(UInt16)
236
+ declare id: UInt16
237
+ @Struct.field(UInt32)
238
+ declare base_price: UInt32
239
+ @Struct.field(UInt32)
240
+ declare mass: UInt32
241
+ }
242
+ @Struct.type('game_config')
243
+ export class game_config extends Struct {
244
+ @Struct.field(UInt32)
245
+ declare version: UInt32
246
+ @Struct.field(entity_defaults)
247
+ declare defaults: entity_defaults
248
+ @Struct.field(item_def, {array: true})
249
+ declare items: item_def[]
250
+ }
251
+ @Struct.type('configlog')
252
+ export class configlog extends Struct {
253
+ @Struct.field(game_config)
254
+ declare config: game_config
255
+ }
256
+ @Struct.type('coordinates')
257
+ export class coordinates extends Struct {
258
+ @Struct.field(Int64)
259
+ declare x: Int64
260
+ @Struct.field(Int64)
261
+ declare y: Int64
262
+ @Struct.field(UInt16, {optional: true})
263
+ declare z?: UInt16
264
+ }
265
+ @Struct.type('task')
266
+ export class task extends Struct {
267
+ @Struct.field(UInt8)
268
+ declare type: UInt8
269
+ @Struct.field(UInt32)
270
+ declare duration: UInt32
271
+ @Struct.field(UInt8)
272
+ declare cancelable: UInt8
273
+ @Struct.field(coordinates, {optional: true})
274
+ declare coordinates?: coordinates
275
+ @Struct.field(cargo_item, {array: true})
276
+ declare cargo: cargo_item[]
277
+ @Struct.field(entity_ref, {optional: true})
278
+ declare entitytarget?: entity_ref
279
+ @Struct.field(UInt64, {optional: true})
280
+ declare entitygroup?: UInt64
281
+ @Struct.field(Int64, {optional: true})
282
+ declare credits?: Int64
283
+ @Struct.field(UInt16, {optional: true})
284
+ declare energy_cost?: UInt16
189
285
  }
190
286
  @Struct.type('schedule')
191
287
  export class schedule extends Struct {
@@ -194,6 +290,37 @@ export namespace Types {
194
290
  @Struct.field(task, {array: true})
195
291
  declare tasks: task[]
196
292
  }
293
+ @Struct.type('container_row')
294
+ export class container_row extends Struct {
295
+ @Struct.field(UInt64)
296
+ declare id: UInt64
297
+ @Struct.field(Name)
298
+ declare owner: Name
299
+ @Struct.field('string')
300
+ declare name: string
301
+ @Struct.field(coordinates)
302
+ declare coordinates: coordinates
303
+ @Struct.field(UInt32)
304
+ declare hullmass: UInt32
305
+ @Struct.field(UInt32)
306
+ declare capacity: UInt32
307
+ @Struct.field(UInt32)
308
+ declare cargomass: UInt32
309
+ @Struct.field(schedule, {optional: true})
310
+ declare schedule?: schedule
311
+ }
312
+ @Struct.type('enable')
313
+ export class enable extends Struct {
314
+ @Struct.field('bool')
315
+ declare enabled: boolean
316
+ }
317
+ @Struct.type('entity_current_state')
318
+ export class entity_current_state extends Struct {
319
+ @Struct.field(coordinates)
320
+ declare coordinates: coordinates
321
+ @Struct.field(UInt16)
322
+ declare energy: UInt16
323
+ }
197
324
  @Struct.type('entity_info')
198
325
  export class entity_info extends Struct {
199
326
  @Struct.field(Name)
@@ -205,7 +332,7 @@ export namespace Types {
205
332
  @Struct.field('string')
206
333
  declare entity_name: string
207
334
  @Struct.field(coordinates)
208
- declare location: coordinates
335
+ declare coordinates: coordinates
209
336
  @Struct.field(UInt32)
210
337
  declare cargomass: UInt32
211
338
  @Struct.field(cargo_item, {array: true})
@@ -215,13 +342,17 @@ export namespace Types {
215
342
  @Struct.field(UInt16, {optional: true})
216
343
  declare energy?: UInt16
217
344
  @Struct.field(UInt32, {optional: true})
218
- declare mass?: UInt32
345
+ declare hullmass?: UInt32
219
346
  @Struct.field(movement_stats, {optional: true})
220
347
  declare engines?: movement_stats
221
348
  @Struct.field(energy_stats, {optional: true})
222
349
  declare generator?: energy_stats
223
350
  @Struct.field(UInt32, {optional: true})
224
351
  declare capacity?: UInt32
352
+ @Struct.field(extractor_stats, {optional: true})
353
+ declare extractor?: extractor_stats
354
+ @Struct.field(warp_stats, {optional: true})
355
+ declare warp?: warp_stats
225
356
  @Struct.field('bool')
226
357
  declare is_idle: boolean
227
358
  @Struct.field(task, {optional: true})
@@ -237,13 +368,6 @@ export namespace Types {
237
368
  @Struct.field(schedule, {optional: true})
238
369
  declare schedule?: schedule
239
370
  }
240
- @Struct.type('entity_state')
241
- export class entity_state extends Struct {
242
- @Struct.field(coordinates)
243
- declare location: coordinates
244
- @Struct.field(UInt16)
245
- declare energy: UInt16
246
- }
247
371
  @Struct.type('entity_summary')
248
372
  export class entity_summary extends Struct {
249
373
  @Struct.field(Name)
@@ -255,7 +379,7 @@ export namespace Types {
255
379
  @Struct.field('string')
256
380
  declare entity_name: string
257
381
  @Struct.field(coordinates)
258
- declare location: coordinates
382
+ declare coordinates: coordinates
259
383
  @Struct.field('bool')
260
384
  declare is_idle: boolean
261
385
  @Struct.field(UInt32)
@@ -274,6 +398,26 @@ export namespace Types {
274
398
  @Struct.field(TimePoint)
275
399
  declare schedule_started: TimePoint
276
400
  }
401
+ @Struct.type('entitygroup_row')
402
+ export class entitygroup_row extends Struct {
403
+ @Struct.field(UInt64)
404
+ declare id: UInt64
405
+ @Struct.field(entity_ref, {array: true})
406
+ declare participants: entity_ref[]
407
+ }
408
+ @Struct.type('extract')
409
+ export class extract extends Struct {
410
+ @Struct.field(Name)
411
+ declare entity_type: Name
412
+ @Struct.field(UInt64)
413
+ declare id: UInt64
414
+ @Struct.field(UInt16)
415
+ declare stratum: UInt16
416
+ @Struct.field(UInt32)
417
+ declare quantity: UInt32
418
+ }
419
+ @Struct.type('getconfig')
420
+ export class getconfig extends Struct {}
277
421
  @Struct.type('getentities')
278
422
  export class getentities extends Struct {
279
423
  @Struct.field(Name)
@@ -288,8 +432,8 @@ export namespace Types {
288
432
  @Struct.field(UInt64)
289
433
  declare entity_id: UInt64
290
434
  }
291
- @Struct.type('getgoods')
292
- export class getgoods extends Struct {}
435
+ @Struct.type('getitems')
436
+ export class getitems extends Struct {}
293
437
  @Struct.type('getlocation')
294
438
  export class getlocation extends Struct {
295
439
  @Struct.field(Int64)
@@ -297,6 +441,13 @@ export namespace Types {
297
441
  @Struct.field(Int64)
298
442
  declare y: Int64
299
443
  }
444
+ @Struct.type('getlocdata')
445
+ export class getlocdata extends Struct {
446
+ @Struct.field(Int64)
447
+ declare x: Int64
448
+ @Struct.field(Int64)
449
+ declare y: Int64
450
+ }
300
451
  @Struct.type('getnearby')
301
452
  export class getnearby extends Struct {
302
453
  @Struct.field(Name)
@@ -311,6 +462,8 @@ export namespace Types {
311
462
  @Struct.field(Name)
312
463
  declare account: Name
313
464
  }
465
+ @Struct.type('getstarter')
466
+ export class getstarter extends Struct {}
314
467
  @Struct.type('getsummaries')
315
468
  export class getsummaries extends Struct {
316
469
  @Struct.field(Name)
@@ -318,19 +471,16 @@ export namespace Types {
318
471
  @Struct.field(Name, {optional: true})
319
472
  declare entity_type?: Name
320
473
  }
321
- @Struct.type('good')
322
- export class good extends Struct {
323
- @Struct.field(UInt16)
324
- declare id: UInt16
325
- @Struct.field(UInt32)
326
- declare base_price: UInt32
327
- @Struct.field(UInt32)
328
- declare mass: UInt32
329
- }
330
- @Struct.type('goods_info')
331
- export class goods_info extends Struct {
332
- @Struct.field(good, {array: true})
333
- declare goods: good[]
474
+ @Struct.type('grouptravel')
475
+ export class grouptravel extends Struct {
476
+ @Struct.field(entity_ref, {array: true})
477
+ declare entities: entity_ref[]
478
+ @Struct.field(Int64)
479
+ declare x: Int64
480
+ @Struct.field(Int64)
481
+ declare y: Int64
482
+ @Struct.field('bool')
483
+ declare recharge: boolean
334
484
  }
335
485
  @Struct.type('hash')
336
486
  export class hash extends Struct {
@@ -347,13 +497,47 @@ export namespace Types {
347
497
  @Struct.field(Checksum256)
348
498
  declare seed: Checksum256
349
499
  }
500
+ @Struct.type('items_info')
501
+ export class items_info extends Struct {
502
+ @Struct.field(item_def, {array: true})
503
+ declare items: item_def[]
504
+ }
350
505
  @Struct.type('join')
351
506
  export class join extends Struct {
352
507
  @Struct.field(Name)
353
508
  declare account: Name
354
509
  }
355
- @Struct.type('location_good')
356
- export class location_good extends Struct {
510
+ @Struct.type('location_static')
511
+ export class location_static extends Struct {
512
+ @Struct.field(coordinates)
513
+ declare coords: coordinates
514
+ @Struct.field(UInt8)
515
+ declare type: UInt8
516
+ @Struct.field(UInt8)
517
+ declare subtype: UInt8
518
+ @Struct.field(UInt8)
519
+ declare seed0: UInt8
520
+ @Struct.field(UInt8)
521
+ declare seed1: UInt8
522
+ }
523
+ @Struct.type('location_epoch')
524
+ export class location_epoch extends Struct {
525
+ @Struct.field('bool')
526
+ declare active: boolean
527
+ @Struct.field(UInt8)
528
+ declare seed0: UInt8
529
+ @Struct.field(UInt8)
530
+ declare seed1: UInt8
531
+ }
532
+ @Struct.type('location_derived')
533
+ export class location_derived extends Struct {
534
+ @Struct.field(location_static)
535
+ declare static_props: location_static
536
+ @Struct.field(location_epoch)
537
+ declare epoch_props: location_epoch
538
+ }
539
+ @Struct.type('location_item')
540
+ export class location_item extends Struct {
357
541
  @Struct.field(UInt16)
358
542
  declare id: UInt16
359
543
  @Struct.field(UInt32)
@@ -371,60 +555,23 @@ export namespace Types {
371
555
  declare coords: coordinates
372
556
  @Struct.field('bool')
373
557
  declare is_system: boolean
374
- @Struct.field(location_good, {array: true})
375
- declare goods: location_good[]
558
+ @Struct.field(location_item, {array: true})
559
+ declare items: location_item[]
376
560
  }
377
561
  @Struct.type('location_row')
378
562
  export class location_row extends Struct {
379
563
  @Struct.field(UInt64)
380
564
  declare id: UInt64
381
- @Struct.field(coordinates)
382
- declare coordinates: coordinates
383
- @Struct.field(UInt64)
384
- declare epoch: UInt64
385
- @Struct.field(UInt16)
386
- declare good_id: UInt16
387
- @Struct.field(UInt16)
388
- declare supply: UInt16
389
- }
390
- @Struct.type('logcancel')
391
- export class logcancel extends Struct {
392
- @Struct.field(cancel_log)
393
- declare log: cancel_log
394
- }
395
- @Struct.type('resolve_log')
396
- export class resolve_log extends Struct {
397
565
  @Struct.field(Name)
398
566
  declare owner: Name
399
- @Struct.field(Name)
400
- declare entity_type: Name
401
- @Struct.field(UInt64)
402
- declare entity_id: UInt64
403
- @Struct.field(UInt8)
404
- declare task_index: UInt8
405
- @Struct.field(task)
406
- declare task: task
407
- @Struct.field(TimePoint)
408
- declare started_at: TimePoint
409
- @Struct.field(TimePoint)
410
- declare completed_at: TimePoint
411
- @Struct.field(UInt16, {optional: true})
412
- declare new_energy?: UInt16
413
- @Struct.field(coordinates, {optional: true})
414
- declare new_location?: coordinates
415
- @Struct.field(Int64)
416
- declare cargomass_delta: Int64
417
- @Struct.field(cargo_item, {array: true})
418
- declare cargo_added: cargo_item[]
567
+ @Struct.field(coordinates)
568
+ declare coordinates: coordinates
569
+ @Struct.field(UInt32)
570
+ declare cargomass: UInt32
419
571
  @Struct.field(cargo_item, {array: true})
420
- declare cargo_removed: cargo_item[]
421
- @Struct.field(Int64, {optional: true})
422
- declare credits?: Int64
423
- }
424
- @Struct.type('logresolve')
425
- export class logresolve extends Struct {
426
- @Struct.field(resolve_log)
427
- declare log: resolve_log
572
+ declare cargo: cargo_item[]
573
+ @Struct.field(schedule, {optional: true})
574
+ declare schedule?: schedule
428
575
  }
429
576
  @Struct.type('nearby_system')
430
577
  export class nearby_system extends Struct {
@@ -441,15 +588,41 @@ export namespace Types {
441
588
  export class nearby_info extends Struct {
442
589
  @Struct.field('bool')
443
590
  declare can_travel: boolean
444
- @Struct.field(entity_state)
445
- declare current: entity_state
446
- @Struct.field(entity_state)
447
- declare projected: entity_state
591
+ @Struct.field(entity_current_state)
592
+ declare current: entity_current_state
593
+ @Struct.field(entity_current_state)
594
+ declare projected: entity_current_state
448
595
  @Struct.field(UInt16)
449
596
  declare max_energy: UInt16
450
597
  @Struct.field(nearby_system, {array: true})
451
598
  declare systems: nearby_system[]
452
599
  }
600
+ @Struct.type('task_event')
601
+ export class task_event extends Struct {
602
+ @Struct.field(UInt8)
603
+ declare event_type: UInt8
604
+ @Struct.field(Name)
605
+ declare owner: Name
606
+ @Struct.field(Name)
607
+ declare entity_type: Name
608
+ @Struct.field(UInt64)
609
+ declare entity_id: UInt64
610
+ @Struct.field(UInt8)
611
+ declare task_index: UInt8
612
+ @Struct.field(task)
613
+ declare task: task
614
+ @Struct.field(TimePoint)
615
+ declare starts_at: TimePoint
616
+ @Struct.field(TimePoint)
617
+ declare completes_at: TimePoint
618
+ @Struct.field(UInt16, {optional: true})
619
+ declare new_energy?: UInt16
620
+ }
621
+ @Struct.type('notify')
622
+ export class notify extends Struct {
623
+ @Struct.field(task_event)
624
+ declare event: task_event
625
+ }
453
626
  @Struct.type('payloan')
454
627
  export class payloan extends Struct {
455
628
  @Struct.field(Name)
@@ -478,9 +651,13 @@ export namespace Types {
478
651
  @Struct.field(UInt64)
479
652
  declare next_warehouse_price: UInt64
480
653
  @Struct.field(UInt64)
654
+ declare next_container_price: UInt64
655
+ @Struct.field(UInt64)
481
656
  declare ship_count: UInt64
482
657
  @Struct.field(UInt64)
483
658
  declare warehouse_count: UInt64
659
+ @Struct.field(UInt64)
660
+ declare container_count: UInt64
484
661
  }
485
662
  @Struct.type('player_row')
486
663
  export class player_row extends Struct {
@@ -505,12 +682,21 @@ export namespace Types {
505
682
  @Struct.field(UInt64)
506
683
  declare id: UInt64
507
684
  }
685
+ @Struct.type('reserve_row')
686
+ export class reserve_row extends Struct {
687
+ @Struct.field(UInt64)
688
+ declare id: UInt64
689
+ @Struct.field(UInt32)
690
+ declare remaining: UInt32
691
+ }
508
692
  @Struct.type('resolve')
509
693
  export class resolve extends Struct {
510
694
  @Struct.field(Name)
511
695
  declare entity_type: Name
512
696
  @Struct.field(UInt64)
513
697
  declare id: UInt64
698
+ @Struct.field(UInt64, {optional: true})
699
+ declare count?: UInt64
514
700
  }
515
701
  @Struct.type('resolve_results')
516
702
  export class resolve_results extends Struct {
@@ -522,18 +708,24 @@ export namespace Types {
522
708
  declare resolved_count: UInt8
523
709
  @Struct.field(TimePoint, {optional: true})
524
710
  declare new_schedule_started?: TimePoint
711
+ @Struct.field(UInt64, {optional: true})
712
+ declare entitygroup?: UInt64
713
+ @Struct.field(entity_ref, {array: true, optional: true})
714
+ declare group_members?: entity_ref[]
525
715
  }
526
716
  @Struct.type('salt')
527
717
  export class salt extends Struct {
528
718
  @Struct.field(UInt64)
529
719
  declare salt: UInt64
530
720
  }
531
- @Struct.type('sellgoods')
532
- export class sellgoods extends Struct {
721
+ @Struct.type('sellitems')
722
+ export class sellitems extends Struct {
723
+ @Struct.field(Name)
724
+ declare entity_type: Name
533
725
  @Struct.field(UInt64)
534
- declare ship_id: UInt64
726
+ declare id: UInt64
535
727
  @Struct.field(UInt16)
536
- declare good_id: UInt16
728
+ declare item_id: UInt16
537
729
  @Struct.field(UInt32)
538
730
  declare quantity: UInt32
539
731
  }
@@ -553,22 +745,39 @@ export namespace Types {
553
745
  @Struct.field('string')
554
746
  declare name: string
555
747
  @Struct.field(coordinates)
556
- declare location: coordinates
748
+ declare coordinates: coordinates
557
749
  @Struct.field(UInt32)
558
- declare mass: UInt32
750
+ declare hullmass: UInt32
559
751
  @Struct.field(UInt32)
560
752
  declare capacity: UInt32
561
753
  @Struct.field(UInt16)
562
754
  declare energy: UInt16
755
+ @Struct.field(UInt32)
756
+ declare cargomass: UInt32
563
757
  @Struct.field(movement_stats)
564
758
  declare engines: movement_stats
565
759
  @Struct.field(energy_stats)
566
760
  declare generator: energy_stats
567
761
  @Struct.field(loader_stats)
568
762
  declare loaders: loader_stats
763
+ @Struct.field(trade_stats, {optional: true})
764
+ declare trade?: trade_stats
765
+ @Struct.field(extractor_stats, {optional: true})
766
+ declare extractor?: extractor_stats
767
+ @Struct.field(warp_stats, {optional: true})
768
+ declare warp?: warp_stats
569
769
  @Struct.field(schedule, {optional: true})
570
770
  declare schedule?: schedule
571
771
  }
772
+ @Struct.type('starter_info')
773
+ export class starter_info extends Struct {
774
+ @Struct.field(UInt64)
775
+ declare balance: UInt64
776
+ @Struct.field(UInt64)
777
+ declare debt: UInt64
778
+ @Struct.field(entity_info)
779
+ declare ship: entity_info
780
+ }
572
781
  @Struct.type('state_row')
573
782
  export class state_row extends Struct {
574
783
  @Struct.field('bool')
@@ -584,6 +793,19 @@ export namespace Types {
584
793
  @Struct.field(Checksum256)
585
794
  declare commit: Checksum256
586
795
  }
796
+ @Struct.type('supply_row')
797
+ export class supply_row extends Struct {
798
+ @Struct.field(UInt64)
799
+ declare id: UInt64
800
+ @Struct.field(coordinates)
801
+ declare coordinates: coordinates
802
+ @Struct.field(UInt64)
803
+ declare epoch: UInt64
804
+ @Struct.field(UInt16)
805
+ declare item_id: UInt16
806
+ @Struct.field(UInt16)
807
+ declare supply: UInt16
808
+ }
587
809
  @Struct.type('takeloan')
588
810
  export class takeloan extends Struct {
589
811
  @Struct.field(Name)
@@ -607,7 +829,7 @@ export namespace Types {
607
829
  @Struct.field(UInt64)
608
830
  declare dest_id: UInt64
609
831
  @Struct.field(UInt16)
610
- declare good_id: UInt16
832
+ declare item_id: UInt16
611
833
  @Struct.field(UInt32)
612
834
  declare quantity: UInt32
613
835
  }
@@ -630,6 +852,10 @@ export namespace Types {
630
852
  declare id: UInt64
631
853
  @Struct.field(entity_summary)
632
854
  declare entity_summary_type: entity_summary
855
+ @Struct.field(starter_info)
856
+ declare starter_info_type: starter_info
857
+ @Struct.field(game_config)
858
+ declare game_config_type: game_config
633
859
  }
634
860
  @Struct.type('updatecredit')
635
861
  export class updatecredit extends Struct {
@@ -654,9 +880,11 @@ export namespace Types {
654
880
  @Struct.field('string')
655
881
  declare name: string
656
882
  @Struct.field(coordinates)
657
- declare location: coordinates
883
+ declare coordinates: coordinates
658
884
  @Struct.field(UInt32)
659
885
  declare capacity: UInt32
886
+ @Struct.field(UInt32)
887
+ declare cargomass: UInt32
660
888
  @Struct.field(loader_stats)
661
889
  declare loaders: loader_stats
662
890
  @Struct.field(schedule, {optional: true})
@@ -669,21 +897,29 @@ export namespace Types {
669
897
  }
670
898
  export const TableMap = {
671
899
  cargo: Types.cargo_row,
900
+ container: Types.container_row,
901
+ entitygroup: Types.entitygroup_row,
672
902
  location: Types.location_row,
673
903
  player: Types.player_row,
904
+ reserve: Types.reserve_row,
674
905
  sequence: Types.sequence_row,
675
906
  ship: Types.ship_row,
676
907
  state: Types.state_row,
908
+ supply: Types.supply_row,
677
909
  types: Types.types_row,
678
910
  warehouse: Types.warehouse_row,
679
911
  }
680
912
  export interface TableTypes {
681
913
  cargo: Types.cargo_row
914
+ container: Types.container_row
915
+ entitygroup: Types.entitygroup_row
682
916
  location: Types.location_row
683
917
  player: Types.player_row
918
+ reserve: Types.reserve_row
684
919
  sequence: Types.sequence_row
685
920
  ship: Types.ship_row
686
921
  state: Types.state_row
922
+ supply: Types.supply_row
687
923
  types: Types.types_row
688
924
  warehouse: Types.warehouse_row
689
925
  }
@@ -691,22 +927,81 @@ export type RowType<T> = T extends keyof TableTypes ? TableTypes[T] : any
691
927
  export type TableNames = keyof TableTypes
692
928
  export namespace ActionParams {
693
929
  export namespace Type {
694
- export interface cancel_log {
930
+ export interface game_config {
931
+ version: UInt32Type
932
+ defaults: Type.entity_defaults
933
+ items: Type.item_def[]
934
+ }
935
+ export interface entity_defaults {
936
+ ship_hullmass: UInt32Type
937
+ ship_capacity: UInt32Type
938
+ ship_energy: UInt16Type
939
+ ship_z: UInt16Type
940
+ ship_engines: Type.movement_stats
941
+ ship_generator: Type.energy_stats
942
+ ship_loaders: Type.loader_stats
943
+ ship_trade: Type.trade_stats
944
+ ship_extractor: Type.extractor_stats
945
+ warehouse_capacity: UInt32Type
946
+ warehouse_z: UInt16Type
947
+ warehouse_loaders: Type.loader_stats
948
+ container_hullmass: UInt32Type
949
+ container_capacity: UInt32Type
950
+ container_z: UInt16Type
951
+ }
952
+ export interface movement_stats {
953
+ thrust: UInt32Type
954
+ drain: UInt16Type
955
+ }
956
+ export interface energy_stats {
957
+ capacity: UInt16Type
958
+ recharge: UInt16Type
959
+ }
960
+ export interface loader_stats {
961
+ mass: UInt32Type
962
+ thrust: UInt16Type
963
+ quantity: UInt8Type
964
+ }
965
+ export interface trade_stats {
966
+ margin: UInt16Type
967
+ }
968
+ export interface extractor_stats {
969
+ rate: UInt16Type
970
+ drain: UInt16Type
971
+ efficiency: UInt16Type
972
+ depth: UInt16Type
973
+ drill: UInt16Type
974
+ }
975
+ export interface item_def {
976
+ id: UInt16Type
977
+ base_price: UInt32Type
978
+ mass: UInt32Type
979
+ }
980
+ export interface entity_ref {
981
+ entity_type: NameType
982
+ entity_id: UInt64Type
983
+ }
984
+ export interface task_event {
985
+ event_type: UInt8Type
695
986
  owner: NameType
696
987
  entity_type: NameType
697
988
  entity_id: UInt64Type
698
989
  task_index: UInt8Type
699
990
  task: Type.task
700
- started_at: TimePointType
991
+ starts_at: TimePointType
992
+ completes_at: TimePointType
993
+ new_energy?: UInt16Type
701
994
  }
702
995
  export interface task {
703
996
  type: UInt8Type
704
997
  duration: UInt32Type
705
998
  cancelable: UInt8Type
706
- location?: Type.coordinates
999
+ coordinates?: Type.coordinates
707
1000
  cargo: Type.cargo_item[]
708
- entity?: UInt64Type
1001
+ entitytarget?: Type.entity_ref
1002
+ entitygroup?: UInt64Type
709
1003
  credits?: Int64Type
1004
+ energy_cost?: UInt16Type
710
1005
  }
711
1006
  export interface coordinates {
712
1007
  x: Int64Type
@@ -714,33 +1009,25 @@ export namespace ActionParams {
714
1009
  z?: UInt16Type
715
1010
  }
716
1011
  export interface cargo_item {
717
- good_id: UInt16Type
1012
+ item_id: UInt16Type
718
1013
  quantity: UInt32Type
719
1014
  unit_cost: UInt64Type
720
- }
721
- export interface resolve_log {
722
- owner: NameType
723
- entity_type: NameType
724
- entity_id: UInt64Type
725
- task_index: UInt8Type
726
- task: Type.task
727
- started_at: TimePointType
728
- completed_at: TimePointType
729
- new_energy?: UInt16Type
730
- new_location?: Type.coordinates
731
- cargomass_delta: Int64Type
732
- cargo_added: Type.cargo_item[]
733
- cargo_removed: Type.cargo_item[]
734
- credits?: Int64Type
1015
+ seed?: UInt64Type
735
1016
  }
736
1017
  }
737
1018
  export interface advance {
738
1019
  reveal: string
739
1020
  commit: Checksum256Type
740
1021
  }
741
- export interface buygoods {
1022
+ export interface buycontainer {
1023
+ account: NameType
742
1024
  ship_id: UInt64Type
743
- good_id: UInt16Type
1025
+ name: string
1026
+ }
1027
+ export interface buyitems {
1028
+ entity_type: NameType
1029
+ id: UInt64Type
1030
+ item_id: UInt16Type
744
1031
  quantity: UInt32Type
745
1032
  }
746
1033
  export interface buyship {
@@ -757,6 +1044,10 @@ export namespace ActionParams {
757
1044
  id: UInt64Type
758
1045
  count: UInt64Type
759
1046
  }
1047
+ export interface cleanrsvp {
1048
+ epoch: UInt64Type
1049
+ max_rows: UInt64Type
1050
+ }
760
1051
  export interface cleartable {
761
1052
  table_name: NameType
762
1053
  scope?: NameType
@@ -765,9 +1056,19 @@ export namespace ActionParams {
765
1056
  export interface commit {
766
1057
  commit: Checksum256Type
767
1058
  }
1059
+ export interface configlog {
1060
+ config: Type.game_config
1061
+ }
768
1062
  export interface enable {
769
1063
  enabled: boolean
770
1064
  }
1065
+ export interface extract {
1066
+ entity_type: NameType
1067
+ id: UInt64Type
1068
+ stratum: UInt16Type
1069
+ quantity: UInt32Type
1070
+ }
1071
+ export interface getconfig {}
771
1072
  export interface getentities {
772
1073
  owner: NameType
773
1074
  entity_type?: NameType
@@ -776,11 +1077,15 @@ export namespace ActionParams {
776
1077
  entity_type: NameType
777
1078
  entity_id: UInt64Type
778
1079
  }
779
- export interface getgoods {}
1080
+ export interface getitems {}
780
1081
  export interface getlocation {
781
1082
  x: Int64Type
782
1083
  y: Int64Type
783
1084
  }
1085
+ export interface getlocdata {
1086
+ x: Int64Type
1087
+ y: Int64Type
1088
+ }
784
1089
  export interface getnearby {
785
1090
  entity_type: NameType
786
1091
  entity_id: UInt64Type
@@ -789,10 +1094,17 @@ export namespace ActionParams {
789
1094
  export interface getplayer {
790
1095
  account: NameType
791
1096
  }
1097
+ export interface getstarter {}
792
1098
  export interface getsummaries {
793
1099
  owner: NameType
794
1100
  entity_type?: NameType
795
1101
  }
1102
+ export interface grouptravel {
1103
+ entities: Type.entity_ref[]
1104
+ x: Int64Type
1105
+ y: Int64Type
1106
+ recharge: boolean
1107
+ }
796
1108
  export interface hash {
797
1109
  value: string
798
1110
  }
@@ -805,11 +1117,8 @@ export namespace ActionParams {
805
1117
  export interface join {
806
1118
  account: NameType
807
1119
  }
808
- export interface logcancel {
809
- log: Type.cancel_log
810
- }
811
- export interface logresolve {
812
- log: Type.resolve_log
1120
+ export interface notify {
1121
+ event: Type.task_event
813
1122
  }
814
1123
  export interface payloan {
815
1124
  account: NameType
@@ -825,13 +1134,15 @@ export namespace ActionParams {
825
1134
  export interface resolve {
826
1135
  entity_type: NameType
827
1136
  id: UInt64Type
1137
+ count?: UInt64Type
828
1138
  }
829
1139
  export interface salt {
830
1140
  salt: UInt64Type
831
1141
  }
832
- export interface sellgoods {
833
- ship_id: UInt64Type
834
- good_id: UInt16Type
1142
+ export interface sellitems {
1143
+ entity_type: NameType
1144
+ id: UInt64Type
1145
+ item_id: UInt16Type
835
1146
  quantity: UInt32Type
836
1147
  }
837
1148
  export interface takeloan {
@@ -843,7 +1154,7 @@ export namespace ActionParams {
843
1154
  source_id: UInt64Type
844
1155
  dest_type: NameType
845
1156
  dest_id: UInt64Type
846
- good_id: UInt16Type
1157
+ item_id: UInt16Type
847
1158
  quantity: UInt32Type
848
1159
  }
849
1160
  export interface travel {
@@ -866,32 +1177,39 @@ export namespace ActionParams {
866
1177
  }
867
1178
  export interface ActionNameParams {
868
1179
  advance: ActionParams.advance
869
- buygoods: ActionParams.buygoods
1180
+ buycontainer: ActionParams.buycontainer
1181
+ buyitems: ActionParams.buyitems
870
1182
  buyship: ActionParams.buyship
871
1183
  buywarehouse: ActionParams.buywarehouse
872
1184
  cancel: ActionParams.cancel
1185
+ cleanrsvp: ActionParams.cleanrsvp
873
1186
  cleartable: ActionParams.cleartable
874
1187
  commit: ActionParams.commit
1188
+ configlog: ActionParams.configlog
875
1189
  enable: ActionParams.enable
1190
+ extract: ActionParams.extract
1191
+ getconfig: ActionParams.getconfig
876
1192
  getentities: ActionParams.getentities
877
1193
  getentity: ActionParams.getentity
878
- getgoods: ActionParams.getgoods
1194
+ getitems: ActionParams.getitems
879
1195
  getlocation: ActionParams.getlocation
1196
+ getlocdata: ActionParams.getlocdata
880
1197
  getnearby: ActionParams.getnearby
881
1198
  getplayer: ActionParams.getplayer
1199
+ getstarter: ActionParams.getstarter
882
1200
  getsummaries: ActionParams.getsummaries
1201
+ grouptravel: ActionParams.grouptravel
883
1202
  hash: ActionParams.hash
884
1203
  hash512: ActionParams.hash512
885
1204
  init: ActionParams.init
886
1205
  join: ActionParams.join
887
- logcancel: ActionParams.logcancel
888
- logresolve: ActionParams.logresolve
1206
+ notify: ActionParams.notify
889
1207
  payloan: ActionParams.payloan
890
1208
  purgesupply: ActionParams.purgesupply
891
1209
  recharge: ActionParams.recharge
892
1210
  resolve: ActionParams.resolve
893
1211
  salt: ActionParams.salt
894
- sellgoods: ActionParams.sellgoods
1212
+ sellitems: ActionParams.sellitems
895
1213
  takeloan: ActionParams.takeloan
896
1214
  transfer: ActionParams.transfer
897
1215
  travel: ActionParams.travel
@@ -902,20 +1220,25 @@ export interface ActionNameParams {
902
1220
  }
903
1221
  export type ActionNames = keyof ActionNameParams
904
1222
  export interface ActionReturnValues {
905
- buygoods: Types.task_results
1223
+ buyitems: Types.task_results
906
1224
  cancel: Types.cancel_results
1225
+ extract: Types.task_results
1226
+ getconfig: Types.game_config
907
1227
  getentities: Types.entity_info[]
908
1228
  getentity: Types.entity_info
909
- getgoods: Types.goods_info
1229
+ getitems: Types.items_info
910
1230
  getlocation: Types.location_info
1231
+ getlocdata: Types.location_derived
911
1232
  getnearby: Types.nearby_info
912
1233
  getplayer: Types.player_info
1234
+ getstarter: Types.starter_info
913
1235
  getsummaries: Types.entity_summary[]
1236
+ grouptravel: Types.task_results
914
1237
  hash: Checksum256
915
1238
  hash512: Checksum512
916
1239
  recharge: Types.task_results
917
1240
  resolve: Types.resolve_results
918
- sellgoods: Types.task_results
1241
+ sellitems: Types.task_results
919
1242
  transfer: Types.task_results
920
1243
  travel: Types.task_results
921
1244
  }