@super-protocol/sdk-js 2.2.0-beta.99 → 3.0.0-beta.0

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 (87) hide show
  1. package/dist/cjs/RIGenerator.d.ts +2 -5
  2. package/dist/cjs/RIGenerator.js +2 -5
  3. package/dist/cjs/TIIGenerator.d.ts +6 -7
  4. package/dist/cjs/TIIGenerator.js +20 -93
  5. package/dist/cjs/TeeInputGeneratorBase.d.ts +3 -7
  6. package/dist/cjs/TeeInputGeneratorBase.js +37 -32
  7. package/dist/cjs/contracts/abi.d.ts +173 -28
  8. package/dist/cjs/contracts/abi.js +218 -33
  9. package/dist/cjs/index.d.ts +3 -0
  10. package/dist/cjs/index.js +7 -3
  11. package/dist/cjs/models/Offer.d.ts +11 -1
  12. package/dist/cjs/models/Offer.js +45 -6
  13. package/dist/cjs/models/TeeOffer.js +9 -6
  14. package/dist/cjs/proto/Compression.d.ts +1 -1
  15. package/dist/cjs/proto/TRI.d.ts +3 -3
  16. package/dist/cjs/proto/TeeProperties.d.ts +5 -5
  17. package/dist/cjs/providers/storage/S3StorageProvider.js +5 -8
  18. package/dist/cjs/providers/storage/StorjCredentialsManager.js +25 -2
  19. package/dist/cjs/providers/storage/StorjStorageProvider.js +25 -2
  20. package/dist/cjs/staticModels/Consensus.d.ts +3 -2
  21. package/dist/cjs/staticModels/Consensus.js +22 -11
  22. package/dist/cjs/staticModels/OfferResources.d.ts +1 -0
  23. package/dist/cjs/staticModels/OfferResources.js +10 -1
  24. package/dist/cjs/staticModels/Offers.js +7 -4
  25. package/dist/cjs/staticModels/TeeOffers.js +2 -2
  26. package/dist/cjs/tee/QuoteParser.js +7 -5
  27. package/dist/cjs/tee/QuoteValidator.d.ts +2 -0
  28. package/dist/cjs/tee/QuoteValidator.js +24 -7
  29. package/dist/cjs/tee/TcbSerializer.d.ts +20 -0
  30. package/dist/cjs/tee/TcbSerializer.js +27 -0
  31. package/dist/cjs/tee/TeeBlockVerifier.d.ts +0 -4
  32. package/dist/cjs/tee/TeeBlockVerifier.js +5 -46
  33. package/dist/cjs/tee/TeeCertificateService.d.ts +13 -0
  34. package/dist/cjs/tee/TeeCertificateService.js +42 -0
  35. package/dist/cjs/tee/helpers.d.ts +1 -1
  36. package/dist/cjs/tee/helpers.js +2 -7
  37. package/dist/cjs/types/Offer.d.ts +14 -4
  38. package/dist/cjs/types/Offer.js +9 -2
  39. package/dist/cjs/types/Order.d.ts +2 -5
  40. package/dist/cjs/utils/schema-validators/index.d.ts +1 -0
  41. package/dist/cjs/utils/schema-validators/index.js +6 -0
  42. package/dist/cjs/utils/schema-validators/validator.d.ts +7 -0
  43. package/dist/cjs/utils/schema-validators/validator.js +49 -0
  44. package/dist/mjs/RIGenerator.d.ts +2 -5
  45. package/dist/mjs/RIGenerator.js +2 -5
  46. package/dist/mjs/TIIGenerator.d.ts +6 -7
  47. package/dist/mjs/TIIGenerator.js +20 -93
  48. package/dist/mjs/TeeInputGeneratorBase.d.ts +3 -7
  49. package/dist/mjs/TeeInputGeneratorBase.js +39 -34
  50. package/dist/mjs/contracts/abi.d.ts +173 -28
  51. package/dist/mjs/contracts/abi.js +216 -31
  52. package/dist/mjs/index.d.ts +3 -0
  53. package/dist/mjs/index.js +4 -1
  54. package/dist/mjs/models/Offer.d.ts +11 -1
  55. package/dist/mjs/models/Offer.js +46 -7
  56. package/dist/mjs/models/TeeOffer.js +9 -6
  57. package/dist/mjs/proto/Compression.d.ts +1 -1
  58. package/dist/mjs/proto/TRI.d.ts +3 -3
  59. package/dist/mjs/proto/TeeProperties.d.ts +5 -5
  60. package/dist/mjs/providers/storage/S3StorageProvider.js +5 -8
  61. package/dist/mjs/providers/storage/StorjCredentialsManager.js +2 -2
  62. package/dist/mjs/providers/storage/StorjStorageProvider.js +2 -2
  63. package/dist/mjs/staticModels/Consensus.d.ts +3 -2
  64. package/dist/mjs/staticModels/Consensus.js +22 -11
  65. package/dist/mjs/staticModels/OfferResources.d.ts +1 -0
  66. package/dist/mjs/staticModels/OfferResources.js +10 -1
  67. package/dist/mjs/staticModels/Offers.js +7 -4
  68. package/dist/mjs/staticModels/TeeOffers.js +2 -2
  69. package/dist/mjs/tee/QuoteParser.js +7 -5
  70. package/dist/mjs/tee/QuoteValidator.d.ts +2 -0
  71. package/dist/mjs/tee/QuoteValidator.js +24 -7
  72. package/dist/mjs/tee/TcbSerializer.d.ts +20 -0
  73. package/dist/mjs/tee/TcbSerializer.js +23 -0
  74. package/dist/mjs/tee/TeeBlockVerifier.d.ts +0 -4
  75. package/dist/mjs/tee/TeeBlockVerifier.js +5 -46
  76. package/dist/mjs/tee/TeeCertificateService.d.ts +13 -0
  77. package/dist/mjs/tee/TeeCertificateService.js +35 -0
  78. package/dist/mjs/tee/helpers.d.ts +1 -1
  79. package/dist/mjs/tee/helpers.js +2 -7
  80. package/dist/mjs/types/Offer.d.ts +14 -4
  81. package/dist/mjs/types/Offer.js +8 -1
  82. package/dist/mjs/types/Order.d.ts +2 -5
  83. package/dist/mjs/utils/schema-validators/index.d.ts +1 -0
  84. package/dist/mjs/utils/schema-validators/index.js +2 -0
  85. package/dist/mjs/utils/schema-validators/validator.d.ts +7 -0
  86. package/dist/mjs/utils/schema-validators/validator.js +45 -0
  87. package/package.json +5 -3
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { EncryptionKey, Hash, Encryption } from '@super-protocol/dto-js';
2
+ import { EncryptionKey, Hash, Encryption, RuntimeInputInfo } from '@super-protocol/dto-js';
3
3
  import { OrderEncryptedInfo, OrderResultInfo } from './types/index.js';
4
4
  import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
5
5
  declare class RIGenerator extends TeeInputGeneratorBase {
@@ -8,10 +8,7 @@ declare class RIGenerator extends TeeInputGeneratorBase {
8
8
  offerId: string;
9
9
  encryptionPrivateKey: EncryptionKey;
10
10
  pccsServiceApiUrl: string;
11
- solutionHashes: Hash[];
12
- dataHashes: Hash[];
13
- imageHashes: Hash[];
14
- linkage?: string;
11
+ runtimeInputInfos: RuntimeInputInfo[];
15
12
  argsHash?: Hash;
16
13
  }): Promise<OrderResultInfo>;
17
14
  static getResultInfo(encryptedResultInfo: Encryption, privateKey: Buffer): Promise<OrderEncryptedInfo>;
@@ -28,10 +28,7 @@ class RIGenerator extends TeeInputGeneratorBase_js_1.default {
28
28
  };
29
29
  const orderInfoToEncrypt = {
30
30
  publicKey: resultEncryption,
31
- solutionHashes: params.solutionHashes || [],
32
- dataHashes: params.dataHashes || [],
33
- imageHashes: params.imageHashes || [],
34
- linkage: params.linkage ?? '',
31
+ runtimeInputInfos: params.runtimeInputInfos,
35
32
  ...(params.argsHash && { argsHash: params.argsHash }),
36
33
  };
37
34
  const encryptedInfo = await this.encryptByTeeBlock(params.offerId, JSON.stringify(orderInfoToEncrypt), params.pccsServiceApiUrl);
@@ -49,4 +46,4 @@ class RIGenerator extends TeeInputGeneratorBase_js_1.default {
49
46
  }
50
47
  }
51
48
  exports.default = RIGenerator;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUklHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUklHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFPZ0M7QUFDaEMsbUNBQW9DO0FBRXBDLGlFQUF1QztBQUN2QywwRkFBK0Q7QUFFL0QsTUFBTSxXQUFZLFNBQVEsa0NBQXFCO0lBQzdDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsbUJBQWtDO1FBQ2xFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxrQkFBTSxDQUFDLFVBQVUsQ0FDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ25FLEVBQUUsUUFBUSxFQUFFLGlCQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxzQkFBYSxDQUFDLE1BQU0sRUFBRSxDQUMxRCxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1lBQzNCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1lBQ3BDLElBQUksRUFBRSx3QkFBZSxDQUFDLEtBQUs7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQVNyQjtRQUNDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sSUFBSSxHQUFHLElBQUEsbUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBSSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEYsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQ2xELFFBQVEsRUFBRSxpQkFBUSxDQUFDLE1BQU07WUFDekIsSUFBSSxFQUFFLHdCQUFlLENBQUMsS0FBSztTQUNkLENBQUM7UUFFaEIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFO1lBQzNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDbkMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN4QixtQkFBK0IsRUFDL0IsVUFBa0I7UUFFbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQixHQUFHLG1CQUFtQjtZQUN0QixHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQUVELGtCQUFlLFdBQVcsQ0FBQyJ9
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUklHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUklHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFRZ0M7QUFDaEMsbUNBQW9DO0FBRXBDLGlFQUF1QztBQUN2QywwRkFBK0Q7QUFFL0QsTUFBTSxXQUFZLFNBQVEsa0NBQXFCO0lBQzdDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsbUJBQWtDO1FBQ2xFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxrQkFBTSxDQUFDLFVBQVUsQ0FDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ25FLEVBQUUsUUFBUSxFQUFFLGlCQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxzQkFBYSxDQUFDLE1BQU0sRUFBRSxDQUMxRCxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1lBQzNCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1lBQ3BDLElBQUksRUFBRSx3QkFBZSxDQUFDLEtBQUs7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQU1yQjtRQUNDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sSUFBSSxHQUFHLElBQUEsbUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBSSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEYsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQ2xELFFBQVEsRUFBRSxpQkFBUSxDQUFDLE1BQU07WUFDekIsSUFBSSxFQUFFLHdCQUFlLENBQUMsS0FBSztTQUNkLENBQUM7UUFFaEIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN4QixtQkFBK0IsRUFDL0IsVUFBa0I7UUFFbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQixHQUFHLG1CQUFtQjtZQUN0QixHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQUVELGtCQUFlLFdBQVcsQ0FBQyJ9
@@ -1,22 +1,21 @@
1
1
  /// <reference types="node" />
2
2
  import { BlockchainId } from './types/index.js';
3
- import { Encryption, Hash, Resource, TeeRunInfo } from '@super-protocol/dto-js';
3
+ import { Encryption, Resource, RuntimeInputInfo, TeeInputInfo, TeeRunInfo } from '@super-protocol/dto-js';
4
4
  import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
5
5
  declare class TIIGenerator extends TeeInputGeneratorBase {
6
- static generateByOffer({ offerId, solutionHashes, imageHashes, linkageString, resource, args, encryption, sgxApiUrl, }: GenerateByOfferParams): Promise<string>;
7
- static generate(orderId: BlockchainId, resource: Resource, args: any, encryption: Encryption, sgxApiUrl: string): Promise<string>;
6
+ protected static buildTII(params: Pick<GenerateByOfferParams, 'offerId' | 'sgxApiUrl' | 'resource' | 'runtimeInputInfos' | 'encryption'>): Promise<TeeInputInfo>;
7
+ static generateByOffer(params: GenerateByOfferParams): Promise<string>;
8
+ static generate(orderId: BlockchainId, resource: Resource, args: unknown, encryption: Encryption, sgxApiUrl: string): Promise<string>;
8
9
  static getTRI(tii: string, decryptionKey: Buffer): Promise<TeeRunInfo>;
9
10
  static getUrl(tii: string, decryptionKey: Buffer): Promise<string>;
10
11
  static getResource<T>(tii: string, decryptionKey: Buffer): Promise<T>;
11
12
  }
12
13
  export type GenerateByOfferParams = {
13
14
  offerId: BlockchainId;
14
- solutionHashes: Hash[];
15
- imageHashes: Hash[];
16
- linkageString: string | undefined;
17
15
  resource: Resource;
18
- args: any;
16
+ args: unknown;
19
17
  encryption: Encryption;
20
18
  sgxApiUrl: string;
19
+ runtimeInputInfos: RuntimeInputInfo[];
21
20
  };
22
21
  export default TIIGenerator;
@@ -3,120 +3,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_gzip_1 = __importDefault(require("node-gzip"));
7
- const Compression_js_1 = require("./proto/Compression.js");
8
- const TRI_js_1 = require("./proto/TRI.js");
9
6
  const index_js_1 = __importDefault(require("./crypto/index.js"));
10
7
  const index_js_2 = require("./models/index.js");
11
- const dto_js_1 = require("@super-protocol/dto-js");
12
8
  const TeeInputGeneratorBase_js_1 = __importDefault(require("./TeeInputGeneratorBase.js"));
13
- const { gzip, ungzip } = node_gzip_1.default;
14
9
  class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
15
- static async generateByOffer({ offerId, solutionHashes, imageHashes, linkageString, resource, args, encryption, sgxApiUrl, }) {
16
- const teeOffer = new index_js_2.TeeOffer(offerId);
10
+ static async buildTII(params) {
11
+ const triEncryption = await this.getVerifiedBlockEncryption(params.offerId, params.sgxApiUrl);
12
+ const teeOffer = new index_js_2.TeeOffer(params.offerId);
17
13
  const teeOfferInfo = await teeOffer.getInfo();
18
- const linkage = linkageString
19
- ? JSON.parse(linkageString)
20
- : {
21
- encoding: dto_js_1.Encoding.base64,
22
- mrenclave: '',
23
- mrsigner: '',
24
- };
25
- const blockEncryption = await this.getVerifiedBlockEncryption(offerId, sgxApiUrl);
26
- // TODO: check env with SP-149
27
- const mac = encryption.authTag || encryption.mac;
28
- const rawTri = {
29
- solutionHashes: solutionHashes.map((hash) => ({
30
- algo: hash.algo,
31
- hash: Buffer.from(hash.hash, hash.encoding),
32
- })),
33
- imageHashes: imageHashes.map((hash) => ({
34
- algo: hash.algo,
35
- hash: Buffer.from(hash.hash, hash.encoding),
36
- })),
37
- mrenclave: Buffer.from(linkage.mrenclave, linkage.encoding),
38
- mrsigner: Buffer.from(linkage.mrsigner, linkage.encoding),
39
- args: JSON.stringify(args || ''),
40
- encryption: {
41
- ...encryption,
42
- ciphertext: encryption.ciphertext
43
- ? Buffer.from(encryption.ciphertext, encryption.encoding)
44
- : undefined,
45
- key: encryption.key ? Buffer.from(encryption.key, encryption.encoding) : undefined,
46
- iv: encryption.iv
47
- ? Buffer.from(encryption.iv, encryption.encoding)
48
- : undefined,
49
- mac: mac ? Buffer.from(mac, encryption.encoding) : undefined,
50
- },
14
+ const resourceEncryption = JSON.parse(teeOfferInfo.argsPublicKey);
15
+ const tri = {
16
+ runtimeInputInfos: params.runtimeInputInfos,
17
+ encryption: params.encryption,
18
+ };
19
+ return {
20
+ encryptedResource: await index_js_1.default.encrypt(JSON.stringify(params.resource), resourceEncryption),
21
+ encryptedTRI: await index_js_1.default.encrypt(JSON.stringify(tri), triEncryption),
51
22
  };
52
- const tri = TRI_js_1.TRI.encode(rawTri).finish();
53
- const compressedTri = Compression_js_1.Compression.encode({
54
- data: await gzip(tri),
55
- type: Compression_js_1.Compression_TYPE.GZIP,
56
- }).finish();
57
- return JSON.stringify({
58
- encryptedResource: await index_js_1.default.encrypt(JSON.stringify(resource), JSON.parse(teeOfferInfo.argsPublicKey)),
59
- tri: await index_js_1.default.encrypt(Buffer.from(compressedTri).toString(dto_js_1.Encoding.base64), blockEncryption),
60
- });
23
+ }
24
+ static async generateByOffer(params) {
25
+ const tii = await this.buildTII(params);
26
+ return JSON.stringify(tii);
61
27
  }
62
28
  static async generate(orderId, resource, args, encryption, sgxApiUrl) {
63
29
  const order = new index_js_2.Order(orderId);
64
30
  const parentOrderId = await order.getParentOrder();
65
31
  const parentOrder = new index_js_2.Order(parentOrderId);
66
32
  const parentOrderInfo = await parentOrder.getOrderInfo();
67
- const { solutionHashes, imageHashes, linkage } = await this.getOffersHashesAndLinkage(parentOrderInfo.args.inputOffersIds);
68
33
  return this.generateByOffer({
69
34
  offerId: parentOrderInfo.offerId,
70
- solutionHashes,
71
- imageHashes,
72
- linkageString: linkage,
73
35
  resource,
74
36
  args,
75
37
  encryption,
76
38
  sgxApiUrl,
39
+ runtimeInputInfos: await this.generateRiiByOfferIds(parentOrderInfo.args.inputOffersIds),
77
40
  });
78
41
  }
79
42
  static async getTRI(tii, decryptionKey) {
80
43
  const tiiObj = JSON.parse(tii);
81
- tiiObj.tri.key = decryptionKey.toString(tiiObj.tri.encoding);
82
- const tri = await index_js_1.default.decrypt(tiiObj.tri);
83
- const compression = Compression_js_1.Compression.decode(Buffer.from(tri, tiiObj.tri.encoding));
84
- let decompressed;
85
- switch (compression.type) {
86
- case Compression_js_1.Compression_TYPE.GZIP:
87
- decompressed = await ungzip(compression.data);
88
- break;
89
- default:
90
- throw Error('Unknown compression method');
91
- }
92
- const decoded = TRI_js_1.TRI.decode(decompressed);
93
- return {
94
- solutionHashes: decoded.solutionHashes.map((hash) => ({
95
- hash: Buffer.from(hash.hash).toString(dto_js_1.Encoding.base64),
96
- algo: hash.algo,
97
- encoding: dto_js_1.Encoding.base64,
98
- })),
99
- imageHashes: decoded.imageHashes.map((hash) => ({
100
- hash: Buffer.from(hash.hash).toString(dto_js_1.Encoding.base64),
101
- algo: hash.algo,
102
- encoding: dto_js_1.Encoding.base64,
103
- })),
104
- linkage: {
105
- encoding: dto_js_1.Encoding.base64,
106
- mrenclave: Buffer.from(decoded.mrenclave).toString(dto_js_1.Encoding.base64),
107
- mrsigner: Buffer.from(decoded.mrsigner).toString(dto_js_1.Encoding.base64),
108
- },
109
- args: decoded.args,
110
- encryption: {
111
- algo: decoded.encryption.algo,
112
- cipher: decoded.encryption.cipher,
113
- encoding: dto_js_1.Encoding.base64,
114
- key: Buffer.from(decoded.encryption.key).toString(dto_js_1.Encoding.base64),
115
- iv: decoded.encryption.iv && Buffer.from(decoded.encryption.iv).toString(dto_js_1.Encoding.base64),
116
- mac: decoded.encryption.mac &&
117
- Buffer.from(decoded.encryption.mac).toString(dto_js_1.Encoding.base64),
118
- },
119
- };
44
+ tiiObj.encryptedTRI.key = decryptionKey.toString(tiiObj.encryptedTRI.encoding);
45
+ const stringTri = await index_js_1.default.decrypt(tiiObj.encryptedTRI);
46
+ return JSON.parse(stringTri);
120
47
  }
121
48
  static async getUrl(tii, decryptionKey) {
122
49
  const res = await TIIGenerator.getResource(tii, decryptionKey);
@@ -130,4 +57,4 @@ class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
130
57
  }
131
58
  }
132
59
  exports.default = TIIGenerator;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUFpQztBQUVqQywyREFBdUU7QUFDdkUsMkNBQXFDO0FBQ3JDLGlFQUF1QztBQUN2QyxnREFBb0Q7QUFFcEQsbURBWWdDO0FBQ2hDLDBGQUErRDtBQUUvRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFRLENBQUM7QUFFbEMsTUFBTSxZQUFhLFNBQVEsa0NBQXFCO0lBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQ2xDLE9BQU8sRUFDUCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFDYixRQUFRLEVBQ1IsSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEdBQ2E7UUFDdEIsTUFBTSxRQUFRLEdBQWEsSUFBSSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFpQixNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1RCxNQUFNLE9BQU8sR0FBWSxhQUFhO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztZQUMzQixDQUFDLENBQUM7Z0JBQ0UsUUFBUSxFQUFFLGlCQUFRLENBQUMsTUFBTTtnQkFDekIsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLEVBQUU7YUFDYixDQUFDO1FBRU4sTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWxGLDhCQUE4QjtRQUM5QixNQUFNLEdBQUcsR0FBSSxVQUFrQixDQUFDLE9BQU8sSUFBSyxVQUFrQyxDQUFDLEdBQUcsQ0FBQztRQUNuRixNQUFNLE1BQU0sR0FBRztZQUNiLGNBQWMsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMs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
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlFQUF1QztBQUN2QyxnREFBb0Q7QUFVcEQsMEZBQStEO0FBRS9ELE1BQU0sWUFBYSxTQUFRLGtDQUFxQjtJQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDN0IsTUFHQztRQUVELE1BQU0sYUFBYSxHQUFlLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUNyRSxNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBYSxJQUFJLG1CQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFpQixNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sR0FBRyxHQUFlO1lBQ3RCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7WUFDM0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQzlCLENBQUM7UUFDRixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxrQkFBa0IsQ0FBQztZQUM1RixZQUFZLEVBQUUsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQztTQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQTZCO1FBQ3hELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUMxQixPQUFxQixFQUNyQixRQUFrQixFQUNsQixJQUFhLEVBQ2IsVUFBc0IsRUFDdEIsU0FBaUI7UUFFakIsTUFBTSxLQUFLLEdBQVUsSUFBSSxnQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sV0FBVyxHQUFVLElBQUksZ0JBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBYyxNQUFNLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDMUIsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1lBQ2hDLFFBQVE7WUFDUixJQUFJO1lBQ0osVUFBVTtZQUNWLFNBQVM7WUFDVCxpQkFBaUIsRUFBRSxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN6RixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzNELE1BQU0sTUFBTSxHQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRSxNQUFNLFNBQVMsR0FBVyxNQUFNLGtCQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVcsRUFBRSxhQUFxQjtRQUNwRCxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxXQUFXLENBQWMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUksR0FBVyxFQUFFLGFBQXFCO1FBQzVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBK0IsQ0FBQztRQUMxRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRSxNQUFNLFFBQVEsR0FBVyxNQUFNLGtCQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBTSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQVdELGtCQUFlLFlBQVksQ0FBQyJ9
@@ -1,12 +1,8 @@
1
- import { Encryption, Hash } from '@super-protocol/dto-js';
1
+ import { Encryption, RuntimeInputInfo } from '@super-protocol/dto-js';
2
2
  import { BlockchainId } from './types/index.js';
3
3
  export default class TeeInputGeneratorBase {
4
- static getOffersHashesAndLinkage(inputOffersIds: BlockchainId[]): Promise<{
5
- solutionHashes: Hash[];
6
- imageHashes: Hash[];
7
- dataHashes: Hash[];
8
- linkage?: string;
9
- }>;
4
+ protected static generateRiiByOfferId(offerId: string): Promise<RuntimeInputInfo | null>;
5
+ static generateRiiByOfferIds(inputOffersIds: BlockchainId[]): Promise<RuntimeInputInfo[]>;
10
6
  static encryptByTeeBlock(offerId: string, data: string, sgxApiUrl: string): Promise<Encryption>;
11
7
  protected static getVerifiedBlockEncryption(offerId: string, sgxApiUrl: string): Promise<Encryption>;
12
8
  }
@@ -10,42 +10,48 @@ const index_js_3 = __importDefault(require("./crypto/index.js"));
10
10
  const TeeBlockVerifier_js_1 = require("./tee/TeeBlockVerifier.js");
11
11
  const constants_js_1 = require("./constants.js");
12
12
  class TeeInputGeneratorBase {
13
- static async getOffersHashesAndLinkage(inputOffersIds) {
14
- const solutionHashes = [];
15
- const dataHashes = [];
16
- const imageHashes = [];
17
- let solutionLinkage;
18
- let anyLinkage;
19
- await Promise.all(inputOffersIds.map(async (offerId) => {
20
- const offer = new index_js_1.Offer(offerId);
21
- const offerInfo = await offer.getInfo();
22
- if (offerInfo.offerType === index_js_2.OfferType.Solution) {
23
- const isBaseImage = await offer.isBaseImage();
24
- const isPublic = await offer.isOfferPublic();
25
- if (!isBaseImage) {
26
- solutionLinkage = offerInfo.linkage;
27
- solutionHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH);
13
+ static async generateRiiByOfferId(offerId) {
14
+ const offer = new index_js_1.Offer(offerId);
15
+ const offerInfo = await offer.getInfo();
16
+ const calcType = (offerType, offer) => {
17
+ switch (offerType) {
18
+ case index_js_2.OfferType.Solution: {
19
+ const isBaseImage = offer.isBaseImage();
20
+ const isOfferPublic = offer.isOfferPublic();
21
+ if (!isBaseImage) {
22
+ return 'Solution';
23
+ }
24
+ else if (!isOfferPublic) {
25
+ return 'Image';
26
+ }
27
+ break;
28
28
  }
29
- else if (!isPublic) {
30
- anyLinkage = offerInfo.linkage;
31
- imageHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH);
32
- }
33
- }
34
- if (offerInfo.offerType === index_js_2.OfferType.Data) {
35
- dataHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH);
29
+ case index_js_2.OfferType.Data:
30
+ return 'Data';
36
31
  }
37
- }));
32
+ };
33
+ const type = calcType(offerInfo.offerType, offer);
34
+ if (!type) {
35
+ return null;
36
+ }
37
+ const hardwareContext = offerInfo.hardwareContext && JSON.parse(offerInfo.hardwareContext);
38
38
  return {
39
- solutionHashes,
40
- dataHashes,
41
- imageHashes,
42
- linkage: solutionLinkage || anyLinkage,
39
+ args: undefined,
40
+ hash: offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH,
41
+ ...(offerInfo.signatureKeyHash && {
42
+ signatureKeyHash: JSON.parse(offerInfo.signatureKeyHash),
43
+ }),
44
+ type,
45
+ ...(hardwareContext && { hardwareContext }),
43
46
  };
44
47
  }
48
+ static async generateRiiByOfferIds(inputOffersIds) {
49
+ const inputs = await Promise.all(inputOffersIds.map(this.generateRiiByOfferId));
50
+ return inputs.filter(Boolean);
51
+ }
45
52
  static async encryptByTeeBlock(offerId, data, sgxApiUrl) {
46
53
  const encryption = await this.getVerifiedBlockEncryption(offerId, sgxApiUrl);
47
- const encryptedInfo = await index_js_3.default.encrypt(data, encryption);
48
- return encryptedInfo;
54
+ return index_js_3.default.encrypt(data, encryption);
49
55
  }
50
56
  static async getVerifiedBlockEncryption(offerId, sgxApiUrl) {
51
57
  const teeOffer = new index_js_1.TeeOffer(offerId);
@@ -57,13 +63,12 @@ class TeeInputGeneratorBase {
57
63
  const { pubKey, quote } = await tcb.getUtilityData();
58
64
  await TeeBlockVerifier_js_1.TeeBlockVerifier.verifyTcb(tcb, quote, pubKey, sgxApiUrl);
59
65
  // TODO: must be 'blockEncryption = JSON.parse(pubKey);'
60
- const encryption = {
66
+ return {
61
67
  algo: dto_js_1.CryptoAlgorithm.ECIES,
62
68
  key: pubKey,
63
69
  encoding: dto_js_1.Encoding.base64,
64
70
  };
65
- return encryption;
66
71
  }
67
72
  }
68
73
  exports.default = TeeInputGeneratorBase;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlSW5wdXRHZW5lcmF0b3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RlZUlucHV0R2VuZXJhdG9yQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUFxRjtBQUNyRixnREFBeUQ7QUFDekQsK0NBQXNFO0FBQ3RFLGlFQUF1QztBQUN2QyxtRUFBNkQ7QUFDN0QsaURBQTJDO0FBRTNDLE1BQXFCLHFCQUFxQjtJQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLGNBQThCO1FBTTFFLE1BQU0sY0FBYyxHQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxXQUFXLEdBQVcsRUFBRSxDQUFDO1FBQy9CLElBQUksZUFBbUMsQ0FBQztRQUN4QyxJQUFJLFVBQThCLENBQUM7UUFFbkMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBaUIsRUFBRTtZQUNsRCxNQUFNLEtBQUssR0FBVSxJQUFJLGdCQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQWMsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFbkQsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLG9CQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFFN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNqQixlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFDcEMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQVMsQ0FBQyxDQUFDO2dCQUMvRSxDQUFDO3FCQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckIsVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7b0JBQy9CLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUFTLENBQUMsQ0FBQztnQkFDNUUsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssb0JBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0MsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQVMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsT0FBTztZQUNMLGNBQWM7WUFDZCxVQUFVO1lBQ1YsV0FBVztZQUNYLE9BQU8sRUFBRSxlQUFlLElBQUksVUFBVTtTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQ25DLE9BQWUsRUFDZixJQUFZLEVBQ1osU0FBaUI7UUFFakIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTdFLE1BQU0sYUFBYSxHQUFHLE1BQU0sa0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUMvQyxPQUFlLEVBQ2YsU0FBaUI7UUFFakIsTUFBTSxRQUFRLEdBQWEsSUFBSSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTlDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksY0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckQsTUFBTSxzQ0FBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFaEUsd0RBQXdEO1FBQ3hELE1BQU0sVUFBVSxHQUFlO1lBQzdCLElBQUksRUFBRSx3QkFBZSxDQUFDLEtBQUs7WUFDM0IsR0FBRyxFQUFFLE1BQU07WUFDWCxRQUFRLEVBQUUsaUJBQVEsQ0FBQyxNQUFNO1NBQzFCLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFqRkQsd0NBaUZDIn0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlSW5wdXRHZW5lcmF0b3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RlZUlucHV0R2VuZXJhdG9yQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQU1nQztBQUNoQyxnREFBeUQ7QUFDekQsK0NBQXNFO0FBQ3RFLGlFQUF1QztBQUN2QyxtRUFBNkQ7QUFDN0QsaURBQTJDO0FBRTNDLE1BQXFCLHFCQUFxQjtJQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQWU7UUFDekQsTUFBTSxLQUFLLEdBQVUsSUFBSSxnQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFjLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBb0IsRUFBRSxLQUFZLEVBQXVCLEVBQUU7WUFDM0UsUUFBUSxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ2pCLE9BQU8sVUFBVSxDQUFDO29CQUNwQixDQUFDO3lCQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDMUIsT0FBTyxPQUFPLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsTUFBTTtnQkFDUixDQUFDO2dCQUNELEtBQUssb0JBQVMsQ0FBQyxJQUFJO29CQUNqQixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQ25CLFNBQVMsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckUsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBUztZQUM3RCxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixJQUFJO2dCQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQzthQUN6RCxDQUFDO1lBQ0YsSUFBSTtZQUNKLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsY0FBOEI7UUFDL0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUVoRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUF1QixDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUM1QixPQUFlLEVBQ2YsSUFBWSxFQUNaLFNBQWlCO1FBRWpCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU3RSxPQUFPLGtCQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FDL0MsT0FBZSxFQUNmLFNBQWlCO1FBRWpCLE1BQU0sUUFBUSxHQUFhLElBQUksbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUU5QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sc0NBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWhFLHdEQUF3RDtRQUN4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLHdCQUFlLENBQUMsS0FBSztZQUMzQixHQUFHLEVBQUUsTUFBTTtZQUNYLFFBQVEsRUFBRSxpQkFBUSxDQUFDLE1BQU07U0FDMUIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTVFRCx3Q0E0RUMifQ==