@zkpassport/sdk 0.9.0 → 0.10.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.
@@ -65,25 +65,22 @@ var import_utils = require("@zkpassport/utils");
65
65
  var import_registry = require("@zkpassport/registry");
66
66
 
67
67
  // src/constants.ts
68
- var VERSION = "0.9.0";
68
+ var VERSION = "0.10.0";
69
69
  var DEFAULT_VALIDITY = 7 * 24 * 60 * 60;
70
70
  var DEFAULT_DATE_VALUE = /* @__PURE__ */ new Date(0);
71
- var ZKPASSPORT_APP_ID_HASH = "0x1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b";
71
+ var ZKPASSPORT_IOS_APP_ID_HASH = "0x1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b";
72
+ var ZKPASSPORT_ANDROID_APP_ID_HASH = "0x24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d";
72
73
  var APPLE_APP_ATTEST_ROOT_KEY_HASH = "0x2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b";
74
+ var GOOGLE_APP_ATTEST_RSA_ROOT_KEY_HASH = "0x16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c211";
73
75
 
74
76
  // src/public-input-checker.ts
75
77
  var PublicInputChecker = class {
76
78
  static checkDiscloseBytesPublicInputs(proof, queryResult) {
77
79
  const queryResultErrors = {};
78
80
  let isCorrect = true;
79
- const disclosedDataPassport = import_utils.DisclosedData.fromDisclosedBytes(
80
- (proof.committedInputs?.disclose_bytes).disclosedBytes,
81
- "passport"
82
- );
83
- const disclosedDataIDCard = import_utils.DisclosedData.fromDisclosedBytes(
84
- (proof.committedInputs?.disclose_bytes).disclosedBytes,
85
- "id_card"
86
- );
81
+ const disclosedBytes = (proof.committedInputs?.disclose_bytes).disclosedBytes ?? (proof.committedInputs?.disclose_bytes_evm).disclosedBytes;
82
+ const disclosedDataPassport = import_utils.DisclosedData.fromDisclosedBytes(disclosedBytes, "passport");
83
+ const disclosedDataIDCard = import_utils.DisclosedData.fromDisclosedBytes(disclosedBytes, "id_card");
87
84
  if (queryResult.document_type) {
88
85
  if (queryResult.document_type.eq && queryResult.document_type.eq.result && queryResult.document_type.eq.expected !== disclosedDataPassport.documentType) {
89
86
  console.warn("Document type does not match the expected document type");
@@ -378,10 +375,10 @@ var PublicInputChecker = class {
378
375
  0
379
376
  );
380
377
  const minAge = (0, import_utils.getMinAgeFromCommittedInputs)(
381
- proof.committedInputs?.compare_age
378
+ proof.committedInputs?.compare_age ?? proof.committedInputs?.compare_age_evm
382
379
  );
383
380
  const maxAge = (0, import_utils.getMaxAgeFromCommittedInputs)(
384
- proof.committedInputs?.compare_age
381
+ proof.committedInputs?.compare_age ?? proof.committedInputs?.compare_age_evm
385
382
  );
386
383
  if (queryResult.age) {
387
384
  if (queryResult.age.gte && queryResult.age.gte.result && minAge !== queryResult.age.gte.expected) {
@@ -469,7 +466,7 @@ var PublicInputChecker = class {
469
466
  };
470
467
  }
471
468
  const currentDate = (0, import_utils.getCurrentDateFromCommittedInputs)(
472
- proof.committedInputs?.compare_age
469
+ proof.committedInputs?.compare_age ?? proof.committedInputs?.compare_age_evm
473
470
  );
474
471
  if (!(0, import_utils.areDatesEqual)(currentDate, today) && !(0, import_utils.areDatesEqual)(currentDate, today.getTime() - 864e5)) {
475
472
  console.warn("Current date in the proof is too old");
@@ -498,15 +495,15 @@ var PublicInputChecker = class {
498
495
  0
499
496
  );
500
497
  const minDate = (0, import_utils.getBirthdateMinDateTimestamp)(
501
- proof.committedInputs?.compare_birthdate,
498
+ proof.committedInputs?.compare_birthdate ?? proof.committedInputs?.compare_birthdate_evm,
502
499
  -1 * import_utils.SECONDS_BETWEEN_1900_AND_1970
503
500
  );
504
501
  const maxDate = (0, import_utils.getBirthdateMaxDateTimestamp)(
505
- proof.committedInputs?.compare_birthdate,
502
+ proof.committedInputs?.compare_birthdate ?? proof.committedInputs?.compare_birthdate_evm,
506
503
  -1 * import_utils.SECONDS_BETWEEN_1900_AND_1970
507
504
  );
508
505
  const currentDate = (0, import_utils.getCurrentDateFromCommittedInputs)(
509
- proof.committedInputs?.compare_birthdate
506
+ proof.committedInputs?.compare_birthdate ?? proof.committedInputs?.compare_birthdate_evm
510
507
  );
511
508
  if (queryResult.birthdate) {
512
509
  if (queryResult.birthdate.gte && queryResult.birthdate.gte.result && !(0, import_utils.areDatesEqual)(minDate, queryResult.birthdate.gte.expected)) {
@@ -608,13 +605,13 @@ var PublicInputChecker = class {
608
605
  0
609
606
  );
610
607
  const minDate = (0, import_utils.getMinDateFromCommittedInputs)(
611
- proof.committedInputs?.compare_expiry
608
+ proof.committedInputs?.compare_expiry ?? proof.committedInputs?.compare_expiry_evm
612
609
  );
613
610
  const maxDate = (0, import_utils.getMaxDateFromCommittedInputs)(
614
- proof.committedInputs?.compare_expiry
611
+ proof.committedInputs?.compare_expiry ?? proof.committedInputs?.compare_expiry_evm
615
612
  );
616
613
  const currentDate = (0, import_utils.getCurrentDateFromCommittedInputs)(
617
- proof.committedInputs?.compare_expiry
614
+ proof.committedInputs?.compare_expiry ?? proof.committedInputs?.compare_expiry_evm
618
615
  );
619
616
  if (queryResult.expiry_date) {
620
617
  if (queryResult.expiry_date.gte && queryResult.expiry_date.gte.result && !(0, import_utils.areDatesEqual)(minDate, queryResult.expiry_date.gte.expected)) {
@@ -996,13 +993,13 @@ var PublicInputChecker = class {
996
993
  let isCorrect = true;
997
994
  let queryResultErrors = {};
998
995
  if (queryResult.facematch && queryResult.facematch.passed) {
999
- if (facematchCommittedInputs.rootKeyLeaf !== APPLE_APP_ATTEST_ROOT_KEY_HASH) {
996
+ if (facematchCommittedInputs.rootKeyLeaf !== APPLE_APP_ATTEST_ROOT_KEY_HASH && facematchCommittedInputs.rootKeyLeaf !== GOOGLE_APP_ATTEST_RSA_ROOT_KEY_HASH) {
1000
997
  console.warn("Invalid facematch root key hash");
1001
998
  isCorrect = false;
1002
999
  queryResultErrors.facematch = {
1003
1000
  ...queryResultErrors.facematch,
1004
1001
  eq: {
1005
- expected: APPLE_APP_ATTEST_ROOT_KEY_HASH,
1002
+ expected: `${APPLE_APP_ATTEST_ROOT_KEY_HASH} (iOS) or ${GOOGLE_APP_ATTEST_RSA_ROOT_KEY_HASH} (Android)`,
1006
1003
  received: facematchCommittedInputs.rootKeyLeaf,
1007
1004
  message: "Invalid facematch root key hash"
1008
1005
  }
@@ -1021,7 +1018,7 @@ var PublicInputChecker = class {
1021
1018
  }
1022
1019
  };
1023
1020
  }
1024
- if (facematchCommittedInputs.appId !== ZKPASSPORT_APP_ID_HASH) {
1021
+ if (facematchCommittedInputs.appIdHash !== ZKPASSPORT_IOS_APP_ID_HASH && facematchCommittedInputs.appIdHash !== ZKPASSPORT_ANDROID_APP_ID_HASH) {
1025
1022
  console.warn(
1026
1023
  "Invalid facematch app id hash, the attestation should be coming from the ZKPassport app"
1027
1024
  );
@@ -1029,8 +1026,8 @@ var PublicInputChecker = class {
1029
1026
  queryResultErrors.facematch = {
1030
1027
  ...queryResultErrors.facematch,
1031
1028
  eq: {
1032
- expected: ZKPASSPORT_APP_ID_HASH,
1033
- received: facematchCommittedInputs.appId,
1029
+ expected: `${ZKPASSPORT_IOS_APP_ID_HASH} (iOS) or ${ZKPASSPORT_ANDROID_APP_ID_HASH} (Android)`,
1030
+ received: facematchCommittedInputs.appIdHash,
1034
1031
  message: "Invalid facematch app id hash, the attestation should be coming from the ZKPassport app"
1035
1032
  }
1036
1033
  };
@@ -1163,8 +1160,8 @@ var PublicInputChecker = class {
1163
1160
  }
1164
1161
  };
1165
1162
  }
1166
- if (!!committedInputs?.compare_age) {
1167
- const ageCommittedInputs = committedInputs?.compare_age;
1163
+ if (!!committedInputs?.compare_age || !!committedInputs?.compare_age_evm) {
1164
+ const ageCommittedInputs = committedInputs?.compare_age ?? committedInputs?.compare_age_evm;
1168
1165
  const ageParameterCommitment = isForEVM ? await (0, import_utils.getAgeEVMParameterCommitment)(
1169
1166
  ageCommittedInputs.currentDateTimestamp,
1170
1167
  ageCommittedInputs.minAge,
@@ -1192,8 +1189,9 @@ var PublicInputChecker = class {
1192
1189
  ...queryResultErrors,
1193
1190
  ...queryResultErrorsAge
1194
1191
  };
1195
- } else if (!!committedInputs?.compare_birthdate) {
1196
- const birthdateCommittedInputs = committedInputs?.compare_birthdate;
1192
+ }
1193
+ if (!!committedInputs?.compare_birthdate || !!committedInputs?.compare_birthdate_evm) {
1194
+ const birthdateCommittedInputs = committedInputs?.compare_birthdate ?? committedInputs?.compare_birthdate_evm;
1197
1195
  const birthdateParameterCommitment = isForEVM ? await (0, import_utils.getDateEVMParameterCommitment)(
1198
1196
  import_utils.ProofType.BIRTHDATE,
1199
1197
  birthdateCommittedInputs.currentDateTimestamp,
@@ -1225,8 +1223,9 @@ var PublicInputChecker = class {
1225
1223
  ...queryResultErrors,
1226
1224
  ...queryResultErrorsBirthdate
1227
1225
  };
1228
- } else if (!!committedInputs?.compare_expiry) {
1229
- const expiryCommittedInputs = committedInputs?.compare_expiry;
1226
+ }
1227
+ if (!!committedInputs?.compare_expiry || !!committedInputs?.compare_expiry_evm) {
1228
+ const expiryCommittedInputs = committedInputs?.compare_expiry ?? committedInputs?.compare_expiry_evm;
1230
1229
  const expiryParameterCommitment = isForEVM ? await (0, import_utils.getDateEVMParameterCommitment)(
1231
1230
  import_utils.ProofType.EXPIRY_DATE,
1232
1231
  expiryCommittedInputs.currentDateTimestamp,
@@ -1256,8 +1255,9 @@ var PublicInputChecker = class {
1256
1255
  ...queryResultErrors,
1257
1256
  ...queryResultErrorsExpiryDate
1258
1257
  };
1259
- } else if (!!committedInputs?.disclose_bytes) {
1260
- const discloseCommittedInputs = committedInputs?.disclose_bytes;
1258
+ }
1259
+ if (!!committedInputs?.disclose_bytes || !!committedInputs?.disclose_bytes_evm) {
1260
+ const discloseCommittedInputs = committedInputs?.disclose_bytes ?? committedInputs?.disclose_bytes_evm;
1261
1261
  const discloseParameterCommitment = isForEVM ? await (0, import_utils.getDiscloseEVMParameterCommitment)(
1262
1262
  discloseCommittedInputs.discloseMask,
1263
1263
  discloseCommittedInputs.disclosedBytes
@@ -1283,8 +1283,9 @@ var PublicInputChecker = class {
1283
1283
  ...queryResultErrors,
1284
1284
  ...queryResultErrorsDisclose
1285
1285
  };
1286
- } else if (!!committedInputs?.inclusion_check_nationality) {
1287
- const inclusionCheckNationalityCommittedInputs = committedInputs?.inclusion_check_nationality;
1286
+ }
1287
+ if (!!committedInputs?.inclusion_check_nationality || !!committedInputs?.inclusion_check_nationality_evm) {
1288
+ const inclusionCheckNationalityCommittedInputs = committedInputs?.inclusion_check_nationality ?? committedInputs?.inclusion_check_nationality_evm;
1288
1289
  const inclusionCheckNationalityParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1289
1290
  import_utils.ProofType.NATIONALITY_INCLUSION,
1290
1291
  inclusionCheckNationalityCommittedInputs.countries
@@ -1314,8 +1315,9 @@ var PublicInputChecker = class {
1314
1315
  ...queryResultErrors,
1315
1316
  ...queryResultErrorsNationalityInclusion
1316
1317
  };
1317
- } else if (!!committedInputs?.inclusion_check_issuing_country) {
1318
- const inclusionCheckIssuingCountryCommittedInputs = committedInputs?.inclusion_check_issuing_country;
1318
+ }
1319
+ if (!!committedInputs?.inclusion_check_issuing_country || !!committedInputs?.inclusion_check_issuing_country_evm) {
1320
+ const inclusionCheckIssuingCountryCommittedInputs = committedInputs?.inclusion_check_issuing_country ?? committedInputs?.inclusion_check_issuing_country_evm;
1319
1321
  const inclusionCheckIssuingCountryParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1320
1322
  import_utils.ProofType.ISSUING_COUNTRY_INCLUSION,
1321
1323
  inclusionCheckIssuingCountryCommittedInputs.countries
@@ -1345,8 +1347,9 @@ var PublicInputChecker = class {
1345
1347
  ...queryResultErrors,
1346
1348
  ...queryResultErrorsIssuingCountryInclusion
1347
1349
  };
1348
- } else if (!!committedInputs?.exclusion_check_nationality) {
1349
- const exclusionCheckNationalityCommittedInputs = committedInputs?.exclusion_check_nationality;
1350
+ }
1351
+ if (!!committedInputs?.exclusion_check_nationality || !!committedInputs?.exclusion_check_nationality_evm) {
1352
+ const exclusionCheckNationalityCommittedInputs = committedInputs?.exclusion_check_nationality ?? committedInputs?.exclusion_check_nationality_evm;
1350
1353
  const exclusionCheckNationalityParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1351
1354
  import_utils.ProofType.NATIONALITY_EXCLUSION,
1352
1355
  exclusionCheckNationalityCommittedInputs.countries
@@ -1376,8 +1379,9 @@ var PublicInputChecker = class {
1376
1379
  ...queryResultErrors,
1377
1380
  ...queryResultErrorsNationalityExclusion
1378
1381
  };
1379
- } else if (!!committedInputs?.exclusion_check_issuing_country) {
1380
- const exclusionCheckIssuingCountryCommittedInputs = committedInputs?.exclusion_check_issuing_country;
1382
+ }
1383
+ if (!!committedInputs?.exclusion_check_issuing_country || !!committedInputs?.exclusion_check_issuing_country_evm) {
1384
+ const exclusionCheckIssuingCountryCommittedInputs = committedInputs?.exclusion_check_issuing_country ?? committedInputs?.exclusion_check_issuing_country_evm;
1381
1385
  const exclusionCheckIssuingCountryParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1382
1386
  import_utils.ProofType.ISSUING_COUNTRY_EXCLUSION,
1383
1387
  exclusionCheckIssuingCountryCommittedInputs.countries
@@ -1407,8 +1411,9 @@ var PublicInputChecker = class {
1407
1411
  ...queryResultErrors,
1408
1412
  ...queryResultErrorsIssuingCountryExclusion
1409
1413
  };
1410
- } else if (!!committedInputs?.bind) {
1411
- const bindCommittedInputs = committedInputs?.bind;
1414
+ }
1415
+ if (!!committedInputs?.bind || !!committedInputs?.bind_evm) {
1416
+ const bindCommittedInputs = committedInputs?.bind ?? committedInputs?.bind_evm;
1412
1417
  const bindParameterCommitment = isForEVM ? await (0, import_utils.getBindEVMParameterCommitment)((0, import_utils.formatBoundData)(bindCommittedInputs.data)) : await (0, import_utils.getBindParameterCommitment)((0, import_utils.formatBoundData)(bindCommittedInputs.data));
1413
1418
  if (!paramCommitments.includes(bindParameterCommitment)) {
1414
1419
  console.warn("This proof does not verify the bound data");
@@ -1428,9 +1433,10 @@ var PublicInputChecker = class {
1428
1433
  ...queryResultErrors,
1429
1434
  ...queryResultErrorsBind
1430
1435
  };
1431
- } else if (!!committedInputs?.exclusion_check_sanctions) {
1436
+ }
1437
+ if (!!committedInputs?.exclusion_check_sanctions || !!committedInputs?.exclusion_check_sanctions_evm) {
1432
1438
  const sanctionsBuilder = await import_utils.SanctionsBuilder.create();
1433
- const exclusionCheckSanctionsCommittedInputs = committedInputs?.exclusion_check_sanctions;
1439
+ const exclusionCheckSanctionsCommittedInputs = committedInputs?.exclusion_check_sanctions ?? committedInputs?.exclusion_check_sanctions_evm;
1434
1440
  const exclusionCheckSanctionsParameterCommitment = isForEVM ? await sanctionsBuilder.getSanctionsEvmParameterCommitment() : await sanctionsBuilder.getSanctionsParameterCommitment();
1435
1441
  if (!paramCommitments.includes(exclusionCheckSanctionsParameterCommitment)) {
1436
1442
  console.warn("This proof does not verify the exclusion from the sanction lists");
@@ -1457,22 +1463,19 @@ var PublicInputChecker = class {
1457
1463
  ...queryResultErrors,
1458
1464
  ...queryResultErrorsSanctionsExclusion
1459
1465
  };
1460
- } else if (!!committedInputs?.facematch) {
1461
- const facematchCommittedInputs = committedInputs?.facematch;
1466
+ }
1467
+ if (!!committedInputs?.facematch || !!committedInputs?.facematch_evm) {
1468
+ const facematchCommittedInputs = committedInputs?.facematch ?? committedInputs?.facematch_evm;
1462
1469
  const facematchParameterCommitment = isForEVM ? await (0, import_utils.getFacematchEvmParameterCommitment)(
1463
1470
  BigInt(facematchCommittedInputs.rootKeyLeaf),
1464
1471
  facematchCommittedInputs.environment === "development" ? 0n : 1n,
1465
- BigInt(facematchCommittedInputs.appId),
1466
- // TODO: Uncomment this when the facematch mode is properly supported
1467
- // facematchCommittedInputs.mode === "regular" ? 1n : 2n,
1468
- 1n
1472
+ BigInt(facematchCommittedInputs.appIdHash),
1473
+ facematchCommittedInputs.mode === "regular" ? 1n : 2n
1469
1474
  ) : await (0, import_utils.getFacematchParameterCommitment)(
1470
1475
  BigInt(facematchCommittedInputs.rootKeyLeaf),
1471
1476
  facematchCommittedInputs.environment === "development" ? 0n : 1n,
1472
- BigInt(facematchCommittedInputs.appId),
1473
- // TODO: Uncomment this when the facematch mode is properly supported
1474
- // facematchCommittedInputs.mode === "regular" ? 1n : 2n,
1475
- 1n
1477
+ BigInt(facematchCommittedInputs.appIdHash),
1478
+ facematchCommittedInputs.mode === "regular" ? 1n : 2n
1476
1479
  );
1477
1480
  if (!paramCommitments.includes(facematchParameterCommitment)) {
1478
1481
  console.warn("This proof does not verify FaceMatch");
@@ -2055,16 +2058,14 @@ var PublicInputChecker = class {
2055
2058
  };
2056
2059
  uniqueIdentifier = (0, import_utils.getNullifierFromDisclosureProof)(proofData).toString(10);
2057
2060
  uniqueIdentifierType = (0, import_utils.getNullifierTypeFromDisclosureProof)(proofData);
2058
- } else if (proof.name === "facematch") {
2061
+ } else if (proof.name?.startsWith("facematch") && !proof.name?.endsWith("_evm")) {
2059
2062
  const facematchCommittedInputs = proof.committedInputs?.facematch;
2060
2063
  const paramCommittment = (0, import_utils.getParameterCommitmentFromDisclosureProof)(proofData);
2061
2064
  const calculatedParamCommitment = await (0, import_utils.getFacematchParameterCommitment)(
2062
2065
  BigInt(facematchCommittedInputs.rootKeyLeaf),
2063
2066
  facematchCommittedInputs.environment === "development" ? 0n : 1n,
2064
- BigInt(facematchCommittedInputs.appId),
2065
- // TODO: Uncomment this when the facematch mode is properly supported
2066
- // facematchCommittedInputs.mode === "regular" ? 1n : 2n,
2067
- 1n
2067
+ BigInt(facematchCommittedInputs.appIdHash),
2068
+ facematchCommittedInputs.mode === "regular" ? 1n : 2n
2068
2069
  );
2069
2070
  if (paramCommittment !== calculatedParamCommitment) {
2070
2071
  console.warn("The FaceMatch verification does not match the ones from the proof");
@@ -2148,19 +2149,12 @@ var ZKPassportVerifier_default = {
2148
2149
  name: "enforceSanctionsRoot",
2149
2150
  inputs: [
2150
2151
  {
2151
- name: "params",
2152
+ name: "commitments",
2152
2153
  type: "tuple",
2153
- internalType: "struct ProofVerificationParams",
2154
+ internalType: "struct Commitments",
2154
2155
  components: [
2155
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2156
- { name: "proof", type: "bytes", internalType: "bytes" },
2157
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2158
2156
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2159
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2160
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2161
- { name: "domain", type: "string", internalType: "string" },
2162
- { name: "scope", type: "string", internalType: "string" },
2163
- { name: "devMode", type: "bool", internalType: "bool" }
2157
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2164
2158
  ]
2165
2159
  }
2166
2160
  ],
@@ -2172,19 +2166,12 @@ var ZKPassportVerifier_default = {
2172
2166
  name: "getBoundData",
2173
2167
  inputs: [
2174
2168
  {
2175
- name: "params",
2169
+ name: "commitments",
2176
2170
  type: "tuple",
2177
- internalType: "struct ProofVerificationParams",
2171
+ internalType: "struct Commitments",
2178
2172
  components: [
2179
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2180
- { name: "proof", type: "bytes", internalType: "bytes" },
2181
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2182
2173
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2183
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2184
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2185
- { name: "domain", type: "string", internalType: "string" },
2186
- { name: "scope", type: "string", internalType: "string" },
2187
- { name: "devMode", type: "bool", internalType: "bool" }
2174
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2188
2175
  ]
2189
2176
  }
2190
2177
  ],
@@ -2207,19 +2194,12 @@ var ZKPassportVerifier_default = {
2207
2194
  name: "getDisclosedData",
2208
2195
  inputs: [
2209
2196
  {
2210
- name: "params",
2197
+ name: "commitments",
2211
2198
  type: "tuple",
2212
- internalType: "struct ProofVerificationParams",
2199
+ internalType: "struct Commitments",
2213
2200
  components: [
2214
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2215
- { name: "proof", type: "bytes", internalType: "bytes" },
2216
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2217
2201
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2218
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2219
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2220
- { name: "domain", type: "string", internalType: "string" },
2221
- { name: "scope", type: "string", internalType: "string" },
2222
- { name: "devMode", type: "bool", internalType: "bool" }
2202
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2223
2203
  ]
2224
2204
  },
2225
2205
  { name: "isIDCard", type: "bool", internalType: "bool" }
@@ -2249,15 +2229,19 @@ var ZKPassportVerifier_default = {
2249
2229
  inputs: [
2250
2230
  { name: "minAge", type: "uint8", internalType: "uint8" },
2251
2231
  {
2252
- name: "params",
2232
+ name: "commitments",
2253
2233
  type: "tuple",
2254
- internalType: "struct ProofVerificationParams",
2234
+ internalType: "struct Commitments",
2255
2235
  components: [
2256
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2257
- { name: "proof", type: "bytes", internalType: "bytes" },
2258
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2259
2236
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2260
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2237
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2238
+ ]
2239
+ },
2240
+ {
2241
+ name: "serviceConfig",
2242
+ type: "tuple",
2243
+ internalType: "struct ServiceConfig",
2244
+ components: [
2261
2245
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2262
2246
  { name: "domain", type: "string", internalType: "string" },
2263
2247
  { name: "scope", type: "string", internalType: "string" },
@@ -2274,15 +2258,19 @@ var ZKPassportVerifier_default = {
2274
2258
  inputs: [
2275
2259
  { name: "minAge", type: "uint8", internalType: "uint8" },
2276
2260
  {
2277
- name: "params",
2261
+ name: "commitments",
2278
2262
  type: "tuple",
2279
- internalType: "struct ProofVerificationParams",
2263
+ internalType: "struct Commitments",
2280
2264
  components: [
2281
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2282
- { name: "proof", type: "bytes", internalType: "bytes" },
2283
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2284
2265
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2285
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2266
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2267
+ ]
2268
+ },
2269
+ {
2270
+ name: "serviceConfig",
2271
+ type: "tuple",
2272
+ internalType: "struct ServiceConfig",
2273
+ components: [
2286
2274
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2287
2275
  { name: "domain", type: "string", internalType: "string" },
2288
2276
  { name: "scope", type: "string", internalType: "string" },
@@ -2299,15 +2287,19 @@ var ZKPassportVerifier_default = {
2299
2287
  inputs: [
2300
2288
  { name: "maxAge", type: "uint8", internalType: "uint8" },
2301
2289
  {
2302
- name: "params",
2290
+ name: "commitments",
2303
2291
  type: "tuple",
2304
- internalType: "struct ProofVerificationParams",
2292
+ internalType: "struct Commitments",
2305
2293
  components: [
2306
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2307
- { name: "proof", type: "bytes", internalType: "bytes" },
2308
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2309
2294
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2310
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2295
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2296
+ ]
2297
+ },
2298
+ {
2299
+ name: "serviceConfig",
2300
+ type: "tuple",
2301
+ internalType: "struct ServiceConfig",
2302
+ components: [
2311
2303
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2312
2304
  { name: "domain", type: "string", internalType: "string" },
2313
2305
  { name: "scope", type: "string", internalType: "string" },
@@ -2324,15 +2316,19 @@ var ZKPassportVerifier_default = {
2324
2316
  inputs: [
2325
2317
  { name: "maxAge", type: "uint8", internalType: "uint8" },
2326
2318
  {
2327
- name: "params",
2319
+ name: "commitments",
2328
2320
  type: "tuple",
2329
- internalType: "struct ProofVerificationParams",
2321
+ internalType: "struct Commitments",
2330
2322
  components: [
2331
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2332
- { name: "proof", type: "bytes", internalType: "bytes" },
2333
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2334
2323
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2335
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2324
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2325
+ ]
2326
+ },
2327
+ {
2328
+ name: "serviceConfig",
2329
+ type: "tuple",
2330
+ internalType: "struct ServiceConfig",
2331
+ components: [
2336
2332
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2337
2333
  { name: "domain", type: "string", internalType: "string" },
2338
2334
  { name: "scope", type: "string", internalType: "string" },
@@ -2350,15 +2346,19 @@ var ZKPassportVerifier_default = {
2350
2346
  { name: "minAge", type: "uint8", internalType: "uint8" },
2351
2347
  { name: "maxAge", type: "uint8", internalType: "uint8" },
2352
2348
  {
2353
- name: "params",
2349
+ name: "commitments",
2354
2350
  type: "tuple",
2355
- internalType: "struct ProofVerificationParams",
2351
+ internalType: "struct Commitments",
2356
2352
  components: [
2357
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2358
- { name: "proof", type: "bytes", internalType: "bytes" },
2359
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2360
2353
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2361
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2354
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2355
+ ]
2356
+ },
2357
+ {
2358
+ name: "serviceConfig",
2359
+ type: "tuple",
2360
+ internalType: "struct ServiceConfig",
2361
+ components: [
2362
2362
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2363
2363
  { name: "domain", type: "string", internalType: "string" },
2364
2364
  { name: "scope", type: "string", internalType: "string" },
@@ -2375,15 +2375,19 @@ var ZKPassportVerifier_default = {
2375
2375
  inputs: [
2376
2376
  { name: "age", type: "uint8", internalType: "uint8" },
2377
2377
  {
2378
- name: "params",
2378
+ name: "commitments",
2379
2379
  type: "tuple",
2380
- internalType: "struct ProofVerificationParams",
2380
+ internalType: "struct Commitments",
2381
2381
  components: [
2382
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2383
- { name: "proof", type: "bytes", internalType: "bytes" },
2384
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2385
2382
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2386
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2383
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2384
+ ]
2385
+ },
2386
+ {
2387
+ name: "serviceConfig",
2388
+ type: "tuple",
2389
+ internalType: "struct ServiceConfig",
2390
+ components: [
2387
2391
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2388
2392
  { name: "domain", type: "string", internalType: "string" },
2389
2393
  { name: "scope", type: "string", internalType: "string" },
@@ -2400,15 +2404,19 @@ var ZKPassportVerifier_default = {
2400
2404
  inputs: [
2401
2405
  { name: "minDate", type: "uint256", internalType: "uint256" },
2402
2406
  {
2403
- name: "params",
2407
+ name: "commitments",
2404
2408
  type: "tuple",
2405
- internalType: "struct ProofVerificationParams",
2409
+ internalType: "struct Commitments",
2406
2410
  components: [
2407
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2408
- { name: "proof", type: "bytes", internalType: "bytes" },
2409
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2410
2411
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2411
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2412
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2413
+ ]
2414
+ },
2415
+ {
2416
+ name: "serviceConfig",
2417
+ type: "tuple",
2418
+ internalType: "struct ServiceConfig",
2419
+ components: [
2412
2420
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2413
2421
  { name: "domain", type: "string", internalType: "string" },
2414
2422
  { name: "scope", type: "string", internalType: "string" },
@@ -2425,15 +2433,19 @@ var ZKPassportVerifier_default = {
2425
2433
  inputs: [
2426
2434
  { name: "minDate", type: "uint256", internalType: "uint256" },
2427
2435
  {
2428
- name: "params",
2436
+ name: "commitments",
2429
2437
  type: "tuple",
2430
- internalType: "struct ProofVerificationParams",
2438
+ internalType: "struct Commitments",
2431
2439
  components: [
2432
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2433
- { name: "proof", type: "bytes", internalType: "bytes" },
2434
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2435
2440
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2436
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2441
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2442
+ ]
2443
+ },
2444
+ {
2445
+ name: "serviceConfig",
2446
+ type: "tuple",
2447
+ internalType: "struct ServiceConfig",
2448
+ components: [
2437
2449
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2438
2450
  { name: "domain", type: "string", internalType: "string" },
2439
2451
  { name: "scope", type: "string", internalType: "string" },
@@ -2450,15 +2462,19 @@ var ZKPassportVerifier_default = {
2450
2462
  inputs: [
2451
2463
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2452
2464
  {
2453
- name: "params",
2465
+ name: "commitments",
2454
2466
  type: "tuple",
2455
- internalType: "struct ProofVerificationParams",
2467
+ internalType: "struct Commitments",
2456
2468
  components: [
2457
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2458
- { name: "proof", type: "bytes", internalType: "bytes" },
2459
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2460
2469
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2461
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2470
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2471
+ ]
2472
+ },
2473
+ {
2474
+ name: "serviceConfig",
2475
+ type: "tuple",
2476
+ internalType: "struct ServiceConfig",
2477
+ components: [
2462
2478
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2463
2479
  { name: "domain", type: "string", internalType: "string" },
2464
2480
  { name: "scope", type: "string", internalType: "string" },
@@ -2475,15 +2491,19 @@ var ZKPassportVerifier_default = {
2475
2491
  inputs: [
2476
2492
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2477
2493
  {
2478
- name: "params",
2494
+ name: "commitments",
2479
2495
  type: "tuple",
2480
- internalType: "struct ProofVerificationParams",
2496
+ internalType: "struct Commitments",
2481
2497
  components: [
2482
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2483
- { name: "proof", type: "bytes", internalType: "bytes" },
2484
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2485
2498
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2486
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2499
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2500
+ ]
2501
+ },
2502
+ {
2503
+ name: "serviceConfig",
2504
+ type: "tuple",
2505
+ internalType: "struct ServiceConfig",
2506
+ components: [
2487
2507
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2488
2508
  { name: "domain", type: "string", internalType: "string" },
2489
2509
  { name: "scope", type: "string", internalType: "string" },
@@ -2501,15 +2521,19 @@ var ZKPassportVerifier_default = {
2501
2521
  { name: "minDate", type: "uint256", internalType: "uint256" },
2502
2522
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2503
2523
  {
2504
- name: "params",
2524
+ name: "commitments",
2505
2525
  type: "tuple",
2506
- internalType: "struct ProofVerificationParams",
2526
+ internalType: "struct Commitments",
2507
2527
  components: [
2508
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2509
- { name: "proof", type: "bytes", internalType: "bytes" },
2510
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2511
2528
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2512
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2529
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2530
+ ]
2531
+ },
2532
+ {
2533
+ name: "serviceConfig",
2534
+ type: "tuple",
2535
+ internalType: "struct ServiceConfig",
2536
+ components: [
2513
2537
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2514
2538
  { name: "domain", type: "string", internalType: "string" },
2515
2539
  { name: "scope", type: "string", internalType: "string" },
@@ -2526,15 +2550,19 @@ var ZKPassportVerifier_default = {
2526
2550
  inputs: [
2527
2551
  { name: "date", type: "uint256", internalType: "uint256" },
2528
2552
  {
2529
- name: "params",
2553
+ name: "commitments",
2530
2554
  type: "tuple",
2531
- internalType: "struct ProofVerificationParams",
2555
+ internalType: "struct Commitments",
2532
2556
  components: [
2533
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2534
- { name: "proof", type: "bytes", internalType: "bytes" },
2535
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2536
2557
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2537
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2558
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2559
+ ]
2560
+ },
2561
+ {
2562
+ name: "serviceConfig",
2563
+ type: "tuple",
2564
+ internalType: "struct ServiceConfig",
2565
+ components: [
2538
2566
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2539
2567
  { name: "domain", type: "string", internalType: "string" },
2540
2568
  { name: "scope", type: "string", internalType: "string" },
@@ -2551,15 +2579,19 @@ var ZKPassportVerifier_default = {
2551
2579
  inputs: [
2552
2580
  { name: "minDate", type: "uint256", internalType: "uint256" },
2553
2581
  {
2554
- name: "params",
2582
+ name: "commitments",
2555
2583
  type: "tuple",
2556
- internalType: "struct ProofVerificationParams",
2584
+ internalType: "struct Commitments",
2557
2585
  components: [
2558
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2559
- { name: "proof", type: "bytes", internalType: "bytes" },
2560
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2561
2586
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2562
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2587
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2588
+ ]
2589
+ },
2590
+ {
2591
+ name: "serviceConfig",
2592
+ type: "tuple",
2593
+ internalType: "struct ServiceConfig",
2594
+ components: [
2563
2595
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2564
2596
  { name: "domain", type: "string", internalType: "string" },
2565
2597
  { name: "scope", type: "string", internalType: "string" },
@@ -2576,15 +2608,19 @@ var ZKPassportVerifier_default = {
2576
2608
  inputs: [
2577
2609
  { name: "minDate", type: "uint256", internalType: "uint256" },
2578
2610
  {
2579
- name: "params",
2611
+ name: "commitments",
2580
2612
  type: "tuple",
2581
- internalType: "struct ProofVerificationParams",
2613
+ internalType: "struct Commitments",
2582
2614
  components: [
2583
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2584
- { name: "proof", type: "bytes", internalType: "bytes" },
2585
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2586
2615
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2587
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2616
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2617
+ ]
2618
+ },
2619
+ {
2620
+ name: "serviceConfig",
2621
+ type: "tuple",
2622
+ internalType: "struct ServiceConfig",
2623
+ components: [
2588
2624
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2589
2625
  { name: "domain", type: "string", internalType: "string" },
2590
2626
  { name: "scope", type: "string", internalType: "string" },
@@ -2601,15 +2637,19 @@ var ZKPassportVerifier_default = {
2601
2637
  inputs: [
2602
2638
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2603
2639
  {
2604
- name: "params",
2640
+ name: "commitments",
2605
2641
  type: "tuple",
2606
- internalType: "struct ProofVerificationParams",
2642
+ internalType: "struct Commitments",
2607
2643
  components: [
2608
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2609
- { name: "proof", type: "bytes", internalType: "bytes" },
2610
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2611
2644
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2612
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2645
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2646
+ ]
2647
+ },
2648
+ {
2649
+ name: "serviceConfig",
2650
+ type: "tuple",
2651
+ internalType: "struct ServiceConfig",
2652
+ components: [
2613
2653
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2614
2654
  { name: "domain", type: "string", internalType: "string" },
2615
2655
  { name: "scope", type: "string", internalType: "string" },
@@ -2626,15 +2666,19 @@ var ZKPassportVerifier_default = {
2626
2666
  inputs: [
2627
2667
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2628
2668
  {
2629
- name: "params",
2669
+ name: "commitments",
2630
2670
  type: "tuple",
2631
- internalType: "struct ProofVerificationParams",
2671
+ internalType: "struct Commitments",
2632
2672
  components: [
2633
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2634
- { name: "proof", type: "bytes", internalType: "bytes" },
2635
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2636
2673
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2637
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2674
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2675
+ ]
2676
+ },
2677
+ {
2678
+ name: "serviceConfig",
2679
+ type: "tuple",
2680
+ internalType: "struct ServiceConfig",
2681
+ components: [
2638
2682
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2639
2683
  { name: "domain", type: "string", internalType: "string" },
2640
2684
  { name: "scope", type: "string", internalType: "string" },
@@ -2652,15 +2696,19 @@ var ZKPassportVerifier_default = {
2652
2696
  { name: "minDate", type: "uint256", internalType: "uint256" },
2653
2697
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2654
2698
  {
2655
- name: "params",
2699
+ name: "commitments",
2656
2700
  type: "tuple",
2657
- internalType: "struct ProofVerificationParams",
2701
+ internalType: "struct Commitments",
2658
2702
  components: [
2659
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2660
- { name: "proof", type: "bytes", internalType: "bytes" },
2661
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2662
2703
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2663
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2704
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2705
+ ]
2706
+ },
2707
+ {
2708
+ name: "serviceConfig",
2709
+ type: "tuple",
2710
+ internalType: "struct ServiceConfig",
2711
+ components: [
2664
2712
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2665
2713
  { name: "domain", type: "string", internalType: "string" },
2666
2714
  { name: "scope", type: "string", internalType: "string" },
@@ -2677,15 +2725,19 @@ var ZKPassportVerifier_default = {
2677
2725
  inputs: [
2678
2726
  { name: "date", type: "uint256", internalType: "uint256" },
2679
2727
  {
2680
- name: "params",
2728
+ name: "commitments",
2681
2729
  type: "tuple",
2682
- internalType: "struct ProofVerificationParams",
2730
+ internalType: "struct Commitments",
2683
2731
  components: [
2684
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2685
- { name: "proof", type: "bytes", internalType: "bytes" },
2686
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2687
2732
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2688
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2733
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2734
+ ]
2735
+ },
2736
+ {
2737
+ name: "serviceConfig",
2738
+ type: "tuple",
2739
+ internalType: "struct ServiceConfig",
2740
+ components: [
2689
2741
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2690
2742
  { name: "domain", type: "string", internalType: "string" },
2691
2743
  { name: "scope", type: "string", internalType: "string" },
@@ -2701,16 +2753,21 @@ var ZKPassportVerifier_default = {
2701
2753
  name: "isFaceMatchVerified",
2702
2754
  inputs: [
2703
2755
  { name: "faceMatchMode", type: "uint8", internalType: "enum FaceMatchMode" },
2756
+ { name: "os", type: "uint8", internalType: "enum OS" },
2704
2757
  {
2705
- name: "params",
2758
+ name: "commitments",
2706
2759
  type: "tuple",
2707
- internalType: "struct ProofVerificationParams",
2760
+ internalType: "struct Commitments",
2708
2761
  components: [
2709
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2710
- { name: "proof", type: "bytes", internalType: "bytes" },
2711
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2712
2762
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2713
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2763
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2764
+ ]
2765
+ },
2766
+ {
2767
+ name: "serviceConfig",
2768
+ type: "tuple",
2769
+ internalType: "struct ServiceConfig",
2770
+ components: [
2714
2771
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2715
2772
  { name: "domain", type: "string", internalType: "string" },
2716
2773
  { name: "scope", type: "string", internalType: "string" },
@@ -2727,19 +2784,12 @@ var ZKPassportVerifier_default = {
2727
2784
  inputs: [
2728
2785
  { name: "countryList", type: "string[]", internalType: "string[]" },
2729
2786
  {
2730
- name: "params",
2787
+ name: "commitments",
2731
2788
  type: "tuple",
2732
- internalType: "struct ProofVerificationParams",
2789
+ internalType: "struct Commitments",
2733
2790
  components: [
2734
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2735
- { name: "proof", type: "bytes", internalType: "bytes" },
2736
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2737
2791
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2738
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2739
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2740
- { name: "domain", type: "string", internalType: "string" },
2741
- { name: "scope", type: "string", internalType: "string" },
2742
- { name: "devMode", type: "bool", internalType: "bool" }
2792
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2743
2793
  ]
2744
2794
  }
2745
2795
  ],
@@ -2752,19 +2802,12 @@ var ZKPassportVerifier_default = {
2752
2802
  inputs: [
2753
2803
  { name: "countryList", type: "string[]", internalType: "string[]" },
2754
2804
  {
2755
- name: "params",
2805
+ name: "commitments",
2756
2806
  type: "tuple",
2757
- internalType: "struct ProofVerificationParams",
2807
+ internalType: "struct Commitments",
2758
2808
  components: [
2759
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2760
- { name: "proof", type: "bytes", internalType: "bytes" },
2761
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2762
2809
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2763
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2764
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2765
- { name: "domain", type: "string", internalType: "string" },
2766
- { name: "scope", type: "string", internalType: "string" },
2767
- { name: "devMode", type: "bool", internalType: "bool" }
2810
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2768
2811
  ]
2769
2812
  }
2770
2813
  ],
@@ -2777,19 +2820,12 @@ var ZKPassportVerifier_default = {
2777
2820
  inputs: [
2778
2821
  { name: "countryList", type: "string[]", internalType: "string[]" },
2779
2822
  {
2780
- name: "params",
2823
+ name: "commitments",
2781
2824
  type: "tuple",
2782
- internalType: "struct ProofVerificationParams",
2825
+ internalType: "struct Commitments",
2783
2826
  components: [
2784
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2785
- { name: "proof", type: "bytes", internalType: "bytes" },
2786
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2787
2827
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2788
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2789
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2790
- { name: "domain", type: "string", internalType: "string" },
2791
- { name: "scope", type: "string", internalType: "string" },
2792
- { name: "devMode", type: "bool", internalType: "bool" }
2828
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2793
2829
  ]
2794
2830
  }
2795
2831
  ],
@@ -2802,19 +2838,12 @@ var ZKPassportVerifier_default = {
2802
2838
  inputs: [
2803
2839
  { name: "countryList", type: "string[]", internalType: "string[]" },
2804
2840
  {
2805
- name: "params",
2841
+ name: "commitments",
2806
2842
  type: "tuple",
2807
- internalType: "struct ProofVerificationParams",
2843
+ internalType: "struct Commitments",
2808
2844
  components: [
2809
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2810
- { name: "proof", type: "bytes", internalType: "bytes" },
2811
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2812
2845
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2813
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2814
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2815
- { name: "domain", type: "string", internalType: "string" },
2816
- { name: "scope", type: "string", internalType: "string" },
2817
- { name: "devMode", type: "bool", internalType: "bool" }
2846
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2818
2847
  ]
2819
2848
  }
2820
2849
  ],
@@ -2872,15 +2901,36 @@ var ZKPassportVerifier_default = {
2872
2901
  type: "tuple",
2873
2902
  internalType: "struct ProofVerificationParams",
2874
2903
  components: [
2875
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2876
- { name: "proof", type: "bytes", internalType: "bytes" },
2877
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2878
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
2879
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2880
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2881
- { name: "domain", type: "string", internalType: "string" },
2882
- { name: "scope", type: "string", internalType: "string" },
2883
- { name: "devMode", type: "bool", internalType: "bool" }
2904
+ {
2905
+ name: "proofVerificationData",
2906
+ type: "tuple",
2907
+ internalType: "struct ProofVerificationData",
2908
+ components: [
2909
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2910
+ { name: "proof", type: "bytes", internalType: "bytes" },
2911
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" }
2912
+ ]
2913
+ },
2914
+ {
2915
+ name: "commitments",
2916
+ type: "tuple",
2917
+ internalType: "struct Commitments",
2918
+ components: [
2919
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
2920
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2921
+ ]
2922
+ },
2923
+ {
2924
+ name: "serviceConfig",
2925
+ type: "tuple",
2926
+ internalType: "struct ServiceConfig",
2927
+ components: [
2928
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2929
+ { name: "domain", type: "string", internalType: "string" },
2930
+ { name: "scope", type: "string", internalType: "string" },
2931
+ { name: "devMode", type: "bool", internalType: "bool" }
2932
+ ]
2933
+ }
2884
2934
  ]
2885
2935
  }
2886
2936
  ],
@@ -2990,47 +3040,47 @@ var ZKPassportVerifier_default = {
2990
3040
  }
2991
3041
  ],
2992
3042
  bytecode: {
2993
- object: "0x608060405234801561000f575f5ffd5b50604051613ab3380380613ab383398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b613983806101305f395ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e3541461053e578063e718bc3214610551578063ec46f77414610564578063f851a44014610577578063f87e19b114610589575f5ffd5b8063c4560786146104c8578063cfd9464a146104db578063d3f6ffff146104ee578063d7bf616a14610501578063deb7c0591461052b575f5ffd5b8063a88f1cef116100fa578063a88f1cef14610469578063aa1346ea1461047c578063b96b161c1461048f578063bf73c26c146104a2578063c0940ebd146104b5575f5ffd5b80638163f231146103dd578063847755e31461041d5780638d6937b814610430578063921076c714610443578063a6df2c0114610456575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610394578063653cfd811461039c5780636c40d5d6146103af578063704876d6146103b757806375829def146103ca575f5ffd5b80634c1274281461032857806354dbe4d11461033b57806359545f451461034e5780635c975abb1461036e57806362067c8214610381575f5ffd5b80632e27242c116102075780632e27242c146102c657806337889655146102d95780633a86bd3d146102ec57806341a0e2c2146102ff57806346bd0a1614610315575f5ffd5b806304951b86146102435780630b90581b1461026b57806316c38b3c1461027e57806318677f2a146102935780631e26a9dc146102a6575b5f5ffd5b610256610251366004612987565b61059c565b60405190151581526020015b60405180910390f35b610256610279366004612987565b6105be565b61029161028c3660046129d7565b6105cc565b005b6102916102a1366004612a06565b610655565b6102b96102b4366004612a21565b610702565b6040516102629190612a9d565b6102566102d4366004612ba1565b610865565b6102566102e7366004612be5565b6109b7565b6102566102fa366004612cb6565b6109cc565b610307600181565b604051908152602001610262565b610256610323366004612dbe565b6109d9565b610256610336366004612987565b6109f1565b610256610349366004612be5565b6109fe565b61036161035c366004612e09565b610b4f565b6040516102629190612e3a565b5f5461025690600160a01b900460ff1681565b61025661038f366004612e70565b610c95565b610307600381565b6102916103aa366004612e09565b610f06565b610307600281565b6102566103c5366004612987565b610fa8565b6102916103d8366004612a06565b610fb5565b6104056103eb366004612eb7565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b61025661042b366004612f52565b611083565b61029161043e366004612fee565b61124b565b610256610451366004612987565b61130b565b61029161046436600461302c565b611324565b610256610477366004612987565b61144e565b61025661048a366004612be5565b611467565b600254610405906001600160a01b031681565b6102566104b0366004612be5565b6115b8565b6102566104c3366004612be5565b61161f565b6102566104d6366004612dbe565b61162b565b6102566104e9366004612987565b611639565b6102566104fc366004612987565b611647565b61051461050f366004612e09565b611660565b604080519215158352602083019190915201610262565b610256610539366004612987565b611bda565b61025661054c366004612cb6565b611be7565b61025661055f366004612987565b611bf4565b610256610572366004612cb6565b611c01565b5f54610405906001600160a01b031681565b610256610597366004612cb6565b611c0e565b5f6105b56105ad84620151806130aa565b600284611c1b565b90505b92915050565b5f6105b58384600285611e76565b5f546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105f5906130bd565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061064a90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461067e5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166106e05760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105f5565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61074a60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec961077260608701876130f4565b61077f6080890189613136565b6040518563ffffffff1660e01b815260040161079e94939291906131d3565b5f60405180830381865af41580156107b8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107df9190810190613248565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae9061081c90849087906004016132a1565b5f60405180830381865af4158015610836573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261085d91908101906132c4565b949350505050565b5f8080808073__$144f4fe859debe4776cdef2b99f7b97a42$__63c802bad161089160608901896130f4565b61089e60808b018b613136565b6040518563ffffffff1660e01b81526004016108bd94939291906131d3565b608060405180830381865af41580156108d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc9190613455565b929650909450925090505f600184600181111561091b5761091b6134a1565b1490505f886002811115610931576109316134a1565b836002811115610943576109436134a1565b1490507f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b86147f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b85148380156109965750825b801561099f5750815b80156109a85750805b9b9a5050505050505050505050565b5f6105b56109c68460016134b5565b836109fe565b5f6105b5836007846121b4565b5f6109e78484600385611e76565b90505b9392505050565b5f6105b583600384611c1b565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610a2960608801886130f4565b610a3660808a018a613136565b6040518563ffffffff1660e01b8152600401610a5594939291906131d3565b606060405180830381865af4158015610a70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9491906134ce565b925092509250610aa8838660a001356122de565b610ac45760405162461bcd60e51b81526004016105f59061350f565b60ff811615610b3d576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610b9260608601866130f4565b610b9f6080880188613136565b6040518563ffffffff1660e01b8152600401610bbe94939291906131d3565b5f60405180830381865af4158015610bd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bff9190810190613580565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610c399084906004016135b1565b5f60405180830381865af4158015610c53573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c7a91908101906135c3565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610cc060608801886130f4565b610ccd60808a018a613136565b6040518563ffffffff1660e01b8152600401610cec94939291906131d3565b606060405180830381865af4158015610d07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b91906134ce565b925092509250610d3f838660a001356122de565b610d5b5760405162461bcd60e51b81526004016105f59061350f565b8560ff168760ff161115610dc75760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105f5565b8160ff165f03610e545760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8060ff165f03610ee15760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8160ff168760ff16148015610efb57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610f2e60608501856130f4565b610f3b6080870187613136565b6040518563ffffffff1660e01b8152600401610f5a94939291906131d3565b602060405180830381865af4158015610f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f99919061360e565b9050610fa48161230b565b5050565b5f6105b583600284611c1b565b5f546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105f5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f6110c386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b61113d576008600287876040516020016110de929190613625565b60408051601f19818403018152908290526110f891613634565b602060405180830381855afa158015611113573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611136919061360e565b901c61113f565b5f5b90505f61118085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b6111fa5760086002868660405160200161119b929190613625565b60408051601f19818403018152908290526111b591613634565b602060405180830381855afa1580156111d0573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906111f3919061360e565b901c6111fc565b5f5b905081898960038181106112125761121261364a565b9050602002013514801561123e575080898960048181106112355761123561364a565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146112745760405162461bcd60e51b81526004016105f5906130bd565b5f5b818110156113065760015f8484848181106112935761129361364a565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106112cb576112cb61364a565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611276565b505050565b5f6105b561131c620151808561365e565b6002846123d1565b5f546001600160a01b0316331461134d5760405162461bcd60e51b81526004016105f5906130bd565b5f5b83811015611447578282828181106113695761136961364a565b905060200201602081019061137e9190612a06565b60015f8787858181106113935761139361364a565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106113dc576113dc61364a565b90506020020160208101906113f19190612a06565b6001600160a01b031685858381811061140c5761140c61364a565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a360010161134f565b5050505050565b5f6105b561145f620151808561365e565b6003846123d1565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c61149260608801886130f4565b61149f60808a018a613136565b6040518563ffffffff1660e01b81526004016114be94939291906131d3565b606060405180830381865af41580156114d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fd91906134ce565b925092509250611511838660a001356122de565b61152d5760405162461bcd60e51b81526004016105f59061350f565b60ff8216156115a6576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b60ff8681169116149250505092915050565b5f5f8360ff161161160b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105f5565b6105b5611619600185613671565b83611467565b5f6105b5838484610c95565b5f6109e78484600285611e76565b5f6105b58384600385611e76565b5f6105b561165884620151806130aa565b600384611c1b565b5f80548190600160a01b900460ff16156116b15760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105f5565b5f6116bc84356125d5565b90506116ea6116ce6040860186613136565b5f8181106116de576116de61364a565b9050602002013561262e565b6117176116fa6040860186613136565b600181811061170b5761170b61364a565b905060200201356126f6565b6117616117276040860186613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08601356127b4565b6117c95760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105f5565b6117f36117d96040860186613136565b6117e660c08801886130f4565b61042b60e08a018a6130f4565b61183f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105f5565b6118fa61184f6040860186613136565b600590600161186160408a018a613136565b61186c92915061365e565b926118799392919061368a565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506118b79250505060608701876130f4565b6118c46080890189613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506127df92505050565b5f6119086040860186613136565b60026119176040890189613136565b61192292915061365e565b8181106119315761193161364a565b905060200201355f1c600381111561194b5761194b6134a1565b90506002816003811115611961576119616134a1565b141580156119815750600381600381111561197e5761197e6134a1565b14155b806119995750611999610120860161010087016129d7565b6119f65760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105f5565b5f816003811115611a0957611a096134a1565b1480611a225750611a22610120860161010087016129d7565b611a825760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016105f5565b6007611a916040870187613136565b611a9c92915061365e565b611aa96080870187613136565b905014611b065760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105f5565b6001600160a01b03821663ea50d0e4611b2260208801886130f4565b611b2f60408a018a613136565b6040518563ffffffff1660e01b8152600401611b4e94939291906131d3565b602060405180830381865afa158015611b69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8d91906136b5565b93505f6001611b9f6040880188613136565b611baa92915061365e565b9050611bb96040870187613136565b82818110611bc957611bc961364a565b905060200201359350505050915091565b5f6105b5836002846123d1565b5f6105b5836005846121b4565b5f6105b5836003846123d1565b5f6105b5836006846121b4565b5f6105b5836004846121b4565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c4660608801886130f4565b611c5360808a018a613136565b8b6040518663ffffffff1660e01b8152600401611c749594939291906136d0565b606060405180830381865af4158015611c8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190613725565b925092509250611cc7838660a001356122de565b611ce35760405162461bcd60e51b81526004016105f59061350f565b600286600a811115611cf757611cf76134a1565b1480611d145750600386600a811115611d1257611d126134a1565b145b611d305760405162461bcd60e51b81526004016105f590613750565b600286600a811115611d4457611d446134a1565b03611de6578015611dcc5760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105f5565b611dda6383aa7e808361365e565b871493505050506109ea565b8015611e6a5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105f5565b50851491506109ea9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611ea160608801886130f4565b611eae60808a018a613136565b8b6040518663ffffffff1660e01b8152600401611ecf9594939291906136d0565b606060405180830381865af4158015611eea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0e9190613725565b925092509250611f22838660a001356122de565b611f3e5760405162461bcd60e51b81526004016105f59061350f565b86881115611fa65760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105f5565b600286600a811115611fba57611fba6134a1565b1480611fd75750600386600a811115611fd557611fd56134a1565b145b611ff35760405162461bcd60e51b81526004016105f590613750565b600286600a811115612007576120076134a1565b036120ed57815f0361209c5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105f5565b805f036120bb5760405162461bcd60e51b81526004016105f59061377c565b6120c96383aa7e808361365e565b881480156120e357506120e06383aa7e808261365e565b87145b935050505061085d565b815f0361217e5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105f5565b805f0361219d5760405162461bcd60e51b81526004016105f5906137f4565b81881480156120e357509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca06121de60608701876130f4565b6121eb6080890189613136565b8a6040518663ffffffff1660e01b815260040161220c9594939291906136d0565b5f60405180830381865af4158015612226573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261224d919081019061386d565b9150915080865114612263575f925050506109ea565b5f5b818110156122d1576122ba8782815181106122825761228261364a565b602002602001015184838151811061229c5761229c61364a565b60200260200101518051602091820120825192909101919091201490565b6122c9575f93505050506109ea565b600101612265565b5060019695505050505050565b5f806122ea83856130aa565b90508342101580156122fb57508381115b801561085d575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237d91906136b5565b6123c95760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105f5565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926123fc60608801886130f4565b61240960808a018a613136565b8b6040518663ffffffff1660e01b815260040161242a9594939291906136d0565b606060405180830381865af4158015612445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124699190613725565b92509250925061247d838660a001356122de565b6124995760405162461bcd60e51b81526004016105f59061350f565b81156125175760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105f5565b600286600a81111561252b5761252b6134a1565b14806125485750600386600a811115612546576125466134a1565b145b6125645760405162461bcd60e51b81526004016105f590613750565b600286600a811115612578576125786134a1565b036125aa57805f0361259c5760405162461bcd60e51b81526004016105f59061377c565b611dda6383aa7e808261365e565b805f036125c95760405162461bcd60e51b81526004016105f5906137f4565b861492506109ea915050565b5f818152600160205260408120546001600160a01b0316806105b85760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105f5565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561267c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a091906136b5565b6123c95760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105f5565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612744573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276891906136b5565b6123c95760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105f5565b5f5f836002815181106127c9576127c961364a565b60200260200101515f1c905061085d81846122de565b5f805b8251811015612920575f60086002878786908887815181106128065761280661364a565b60200260200101518861281991906130aa565b9261282693929190613926565b604051602001612837929190613625565b60408051601f198184030181529082905261285191613634565b602060405180830381855afa15801561286c573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061288f919061360e565b901c90508682815181106128a5576128a561364a565b602002602001015181146128f05760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105f5565b8382815181106129025761290261364a565b60200260200101518361291591906130aa565b9250506001016127e2565b508083146114475760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105f5565b5f6101208284031215612981575f5ffd5b50919050565b5f5f60408385031215612998575f5ffd5b8235915060208301356001600160401b038111156129b4575f5ffd5b6129c085828601612970565b9150509250929050565b80151581146123c9575f5ffd5b5f602082840312156129e7575f5ffd5b81356109ea816129ca565b6001600160a01b03811681146123c9575f5ffd5b5f60208284031215612a16575f5ffd5b81356109ea816129f2565b5f5f60408385031215612a32575f5ffd5b82356001600160401b03811115612a47575f5ffd5b612a5385828601612970565b9250506020830135612a64816129ca565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f82516101006020840152612aba610120840182612a6f565b90506020840151601f19848303016040850152612ad78282612a6f565b9150506040840151601f19848303016060850152612af58282612a6f565b9150506060840151601f19848303016080850152612b138282612a6f565b9150506080840151601f198483030160a0850152612b318282612a6f565b91505060a0840151601f198483030160c0850152612b4f8282612a6f565b91505060c0840151601f198483030160e0850152612b6d8282612a6f565b91505060e0840151601f1984830301610100850152612b8c8282612a6f565b95945050505050565b600381106123c9575f5ffd5b5f5f60408385031215612bb2575f5ffd5b8235612bbd81612b95565b915060208301356001600160401b038111156129b4575f5ffd5b60ff811681146123c9575f5ffd5b5f5f60408385031215612bf6575f5ffd5b8235612bbd81612bd7565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612c3857612c38612c01565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c6657612c66612c01565b604052919050565b5f6001600160401b03821115612c8657612c86612c01565b5060051b60200190565b5f6001600160401b03821115612ca857612ca8612c01565b50601f01601f191660200190565b5f5f60408385031215612cc7575f5ffd5b82356001600160401b03811115612cdc575f5ffd5b8301601f81018513612cec575f5ffd5b8035612cff612cfa82612c6e565b612c3e565b8082825260208201915060208360051b850101925087831115612d20575f5ffd5b602084015b83811015612da05780356001600160401b03811115612d42575f5ffd5b8501603f81018a13612d52575f5ffd5b6020810135612d63612cfa82612c90565b8181526040838301018c1015612d77575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612d25565b50945050505060208301356001600160401b038111156129b4575f5ffd5b5f5f5f60608486031215612dd0575f5ffd5b833592506020840135915060408401356001600160401b03811115612df3575f5ffd5b612dff86828701612970565b9150509250925092565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b61085d84828501612970565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261085d6080840182612a6f565b5f5f5f60608486031215612e82575f5ffd5b8335612e8d81612bd7565b92506020840135612e9d81612bd7565b915060408401356001600160401b03811115612df3575f5ffd5b5f60208284031215612ec7575f5ffd5b5035919050565b5f5f83601f840112612ede575f5ffd5b5081356001600160401b03811115612ef4575f5ffd5b6020830191508360208260051b8501011115612f0e575f5ffd5b9250929050565b5f5f83601f840112612f25575f5ffd5b5081356001600160401b03811115612f3b575f5ffd5b602083019150836020828501011115612f0e575f5ffd5b5f5f5f5f5f5f60608789031215612f67575f5ffd5b86356001600160401b03811115612f7c575f5ffd5b612f8889828a01612ece565b90975095505060208701356001600160401b03811115612fa6575f5ffd5b612fb289828a01612f15565b90955093505060408701356001600160401b03811115612fd0575f5ffd5b612fdc89828a01612f15565b979a9699509497509295939492505050565b5f5f60208385031215612fff575f5ffd5b82356001600160401b03811115613014575f5ffd5b61302085828601612ece565b90969095509350505050565b5f5f5f5f6040858703121561303f575f5ffd5b84356001600160401b03811115613054575f5ffd5b61306087828801612ece565b90955093505060208501356001600160401b0381111561307e575f5ffd5b61308a87828801612ece565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105b8576105b8613096565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112613109575f5ffd5b8301803591506001600160401b03821115613122575f5ffd5b602001915036819003821315612f0e575f5ffd5b5f5f8335601e1984360301811261314b575f5ffd5b8301803591506001600160401b03821115613164575f5ffd5b6020019150600581901b3603821315612f0e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b038311156131ba575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f6131e660408301868861317b565b8281036020840152610efb8185876131a3565b5f82601f830112613208575f5ffd5b8151602083015f61321b612cfa84612c90565b905082815285838301111561322e575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215613259575f5ffd5b82516001600160401b0381111561326e575f5ffd5b61327a858286016131f9565b92505060208301516001600160401b03811115613295575f5ffd5b6129c0858286016131f9565b604081525f6132b36040830185612a6f565b905082151560208301529392505050565b5f602082840312156132d4575f5ffd5b81516001600160401b038111156132e9575f5ffd5b820161010081850312156132fb575f5ffd5b613303612c15565b81516001600160401b03811115613318575f5ffd5b613324868285016131f9565b82525060208201516001600160401b0381111561333f575f5ffd5b61334b868285016131f9565b60208301525060408201516001600160401b03811115613369575f5ffd5b613375868285016131f9565b60408301525060608201516001600160401b03811115613393575f5ffd5b61339f868285016131f9565b60608301525060808201516001600160401b038111156133bd575f5ffd5b6133c9868285016131f9565b60808301525060a08201516001600160401b038111156133e7575f5ffd5b6133f3868285016131f9565b60a08301525060c08201516001600160401b03811115613411575f5ffd5b61341d868285016131f9565b60c08301525060e08201516001600160401b0381111561343b575f5ffd5b613447868285016131f9565b60e083015250949350505050565b5f5f5f5f60808587031215613468575f5ffd5b845160208601519094506002811061347e575f5ffd5b60408601516060870151919450925061349681612b95565b939692955090935050565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156105b8576105b8613096565b5f5f5f606084860312156134e0575f5ffd5b835160208501519093506134f381612bd7565b604085015190925061350481612bd7565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f60208284031215613590575f5ffd5b81516001600160401b038111156135a5575f5ffd5b61085d848285016131f9565b602081525f6105b56020830184612a6f565b5f5f5f606084860312156135d5575f5ffd5b83516135e0816129f2565b6020850151604086015191945092506001600160401b03811115613602575f5ffd5b612dff868287016131f9565b5f6020828403121561361e575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156105b8576105b8613096565b60ff82811682821603908111156105b8576105b8613096565b5f5f85851115613698575f5ffd5b838611156136a4575f5ffd5b5050600583901b0193919092039150565b5f602082840312156136c5575f5ffd5b81516109ea816129ca565b606081525f6136e360608301878961317b565b82810360208401526136f68186886131a3565b915050600b831061371557634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613737575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f6040838503121561387e575f5ffd5b82516001600160401b03811115613893575f5ffd5b8301601f810185136138a3575f5ffd5b80516138b1612cfa82612c6e565b8082825260208201915060208360051b8501019250878311156138d2575f5ffd5b602084015b838110156139125780516001600160401b038111156138f4575f5ffd5b6139038a6020838901016131f9565b845250602092830192016138d7565b506020969096015195979596505050505050565b5f5f85851115613934575f5ffd5b83861115613940575f5ffd5b505082019391909203915056fea2646970667358221220623aa0f5d6fd1ed4b32bdfd3907fb8b21b1ba73e0a28815b6397c145a04864b764736f6c634300081d0033",
2994
- sourceMap: "674:28697:26:-:0;;;1816:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1865:27:26;;1857:76;;;;-1:-1:-1;;;1857:76:26;;511:2:34;1857:76:26;;;493:21:34;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:34;;;633:34;684:19;;1857:76:26;;;;;;;;1939:5;:18;;1947:10;-1:-1:-1;;;;;;1939:18:26;;;;;;;;1963:12;:43;;;;;-1:-1:-1;;;;;1963:43:26;;;;;2017:50;;2051:15;860:25:34;;2017:50:26;;848:2:34;833:18;2017:50:26;;;;;;;1816:256;674:28697;;14:290:34;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:34;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:34:o;714:177::-;674:28697:26;;;;;;",
3043
+ object: "0x608060405234801561000f575f5ffd5b50604051613e06380380613e0683398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b613cd6806101305f395ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638d6937b811610135578063c3fa6f22116100b4578063ddd8f8e311610079578063ddd8f8e31461051a578063ec8e07291461052d578063f3757ad414610557578063f851a44014610577578063ff20370714610589575f5ffd5b8063c3fa6f22146104bb578063ca4051f2146104ce578063cf515d37146104e1578063d39a5cf9146104f4578063d4932b4e14610507575f5ffd5b8063ac20d678116100fa578063ac20d6781461045c578063b8bd48791461046f578063b96b161c14610482578063c04fa6fe14610495578063c1b77162146104a8575f5ffd5b80638d6937b8146103f05780638e2e2e621461040357806398e73ac3146104165780639c1a81a314610436578063a6df2c0114610449575f5ffd5b80635b7ab929116101c15780637e5a88f3116101865780637e5a88f3146103645780638163f23114610377578063818694f1146103b7578063847755e3146103ca5780638b2ec611146103dd575f5ffd5b80635b7ab9291461031b5780635c975abb1461032e578063652ba33d146103415780636c40d5d61461034957806375829def14610351575f5ffd5b8063311a335c11610207578063311a335c146102b9578063320d3b55146102cc5780633d6ed975146102df57806341a0e2c2146102f257806346b758a014610308575f5ffd5b806316c38b3c1461024357806316e3d7291461025857806318677f2a1461026b5780631fac43451461027e5780632e5ce77f146102a6575b5f5ffd5b610256610251366004612b12565b61059c565b005b610256610266366004612b43565b610625565b610256610279366004612b88565b6106ac565b61029161028c366004612bb3565b610759565b60405190151581526020015b60405180910390f35b6102916102b4366004612c2c565b610771565b6102916102c7366004612c63565b6108a5565b6102916102da366004612bb3565b6108bf565b6102916102ed366004612c63565b6108ce565b6102fa600181565b60405190815260200161029d565b610291610316366004612d8d565b6108dd565b610291610329366004612d8d565b6108f3565b5f5461029190600160a01b900460ff1681565b6102fa600381565b6102fa600281565b61025661035f366004612b88565b610900565b610291610372366004612d8d565b6109ce565b61039f610385366004612eab565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161029d565b6102916103c5366004612c2c565b6109db565b6102916103d8366004612f46565b610a43565b6102916103eb366004612bb3565b610c0b565b6102566103fe366004612fe2565b610c1a565b610291610411366004612bb3565b610cda565b610429610424366004612b43565b610ce8565b60405161029d919061304e565b610291610444366004612bb3565b610e13565b610256610457366004613084565b610e2d565b61029161046a366004612bb3565b610f57565b61029161047d366004612bb3565b610f71565b60025461039f906001600160a01b031681565b6102916104a33660046130fa565b610f8b565b6102916104b6366004612bb3565b6112a1565b6102916104c9366004612c2c565b6112af565b6102916104dc366004612bb3565b6112c5565b6102916104ef366004613142565b6112d3565b610291610502366004612d8d565b611527565b610291610515366004612c2c565b611534565b610291610528366004612bb3565b611668565b61054061053b366004613170565b611682565b60408051921515835260208301919091520161029d565b61056a6105653660046131a6565b611ca2565b60405161029d91906131f4565b5f5461039f906001600160a01b031681565b610291610597366004612c2c565b611de2565b5f546001600160a01b031633146105ce5760405162461bcd60e51b81526004016105c5906132e3565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061061a90831515815260200190565b60405180910390a150565b604051632988ebc960e21b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a623af249061065e908590600401613421565b602060405180830381865af4158015610679573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d9190613433565b90506106a881611def565b5050565b5f546001600160a01b031633146106d55760405162461bcd60e51b81526004016105c5906132e3565b6001600160a01b0381166107375760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105c5565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6107678460028585611eb0565b90505b9392505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b81526004016107ac9190613421565b606060405180830381865af41580156107c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107eb919061344a565b919450925090506107fd8386356120a2565b6108195760405162461bcd60e51b81526004016105c59061348b565b60ff811615610892576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105c5565b5060ff8681169116149150509392505050565b5f6108b48585600286866120cf565b90505b949350505050565b5f6107678485600286866120cf565b5f6108b48585600386866120cf565b5f6108ea836004846123f2565b90505b92915050565b5f6108ea836007846123f2565b5f546001600160a01b031633146109295760405162461bcd60e51b81526004016105c5906132e3565b6001600160a01b03811661097f5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105c5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f6108ea836006846123f2565b5f5f8460ff1611610a2e5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105c5565b610767610a3c600186613510565b8484611534565b5f5f610a8386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061250092505050565b610afd57600860028787604051602001610a9e929190613529565b60408051601f1981840301815290829052610ab891613538565b602060405180830381855afa158015610ad3573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610af69190613433565b901c610aff565b5f5b90505f610b4085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061250092505050565b610bba57600860028686604051602001610b5b929190613529565b60408051601f1981840301815290829052610b7591613538565b602060405180830381855afa158015610b90573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610bb39190613433565b901c610bbc565b5f5b90508189896003818110610bd257610bd261354e565b90506020020135148015610bfe57508089896004818110610bf557610bf561354e565b90506020020135145b9998505050505050505050565b5f6107678485600386866120cf565b5f546001600160a01b03163314610c435760405162461bcd60e51b81526004016105c5906132e3565b5f5b81811015610cd55760015f848484818110610c6257610c6261354e565b602090810292909201358352508101919091526040015f2080546001600160a01b0319169055828282818110610c9a57610c9a61354e565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101610c45565b505050565b5f6107678460038585611eb0565b60408051606080820183525f80835260208301529181019190915260405163dfda037960e01b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063dfda037990610d3c908690600401613421565b5f60405180830381865af4158015610d56573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d7d91908101906135b1565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610db79084906004016135e2565b5f60405180830381865af4158015610dd1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610df891908101906135f4565b604085015260208401526001600160a01b0316825250919050565b5f610767610e24620151808661363f565b60028585611eb0565b5f546001600160a01b03163314610e565760405162461bcd60e51b81526004016105c5906132e3565b5f5b83811015610f5057828282818110610e7257610e7261354e565b9050602002016020810190610e879190612b88565b60015f878785818110610e9c57610e9c61354e565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828282818110610ee557610ee561354e565b9050602002016020810190610efa9190612b88565b6001600160a01b0316858583818110610f1557610f1561354e565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a3600101610e58565b5050505050565b5f610767610f688562015180613652565b60038585612505565b5f610767610f828562015180613652565b60028585612505565b5f5f5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63defa8ed9896040518263ffffffff1660e01b8152600401610fc89190613421565b60a060405180830381865af4158015610fe3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110079190613665565b9398509196509450925090505f6001856001811115611028576110286136bd565b1490505f8b600281111561103e5761103e6136bd565b836002811115611050576110506136bd565b1490505f7f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b881480156110ae575060018c6002811115611092576110926136bd565b14806110ae57505f8c60028111156110ac576110ac6136bd565b145b8061110e57507f16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c2118814801561110e575060028c60028111156110f2576110f26136bd565b148061110e57505f8c600281111561110c5761110c6136bd565b145b90505f7f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b8714801561116b575060018d600281111561114f5761114f6136bd565b148061116b57505f8d6002811115611169576111696136bd565b145b806111cb57507f24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d871480156111cb575060028d60028111156111af576111af6136bd565b14806111cb57505f8d60028111156111c9576111c96136bd565b145b90505f86158015611207575060018e60028111156111eb576111eb6136bd565b148061120757505f8e6002811115611205576112056136bd565b145b8061126757507f12e3dc7cc8fec0205b51ff21825630865028f3be5bc64a6eec9ee5e71221319f87148015611267575060028e600281111561124b5761124b6136bd565b148061126757505f8e6002811115611265576112656136bd565b145b90508480156112735750835b801561127c5750825b80156112855750815b801561128e5750805b9f9e505050505050505050505050505050565b5f6107678460028585612505565b5f6107676112be8560016136d1565b8484610771565b5f6107678460038585612505565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b815260040161130e9190613421565b606060405180830381865af4158015611329573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134d919061344a565b9194509250905061135f8386356120a2565b61137b5760405162461bcd60e51b81526004016105c59061348b565b8660ff168860ff1611156113e75760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105c5565b8160ff165f036114745760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105c5565b8060ff165f036115015760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105c5565b8160ff168860ff1614801561151b57508060ff168760ff16145b98975050505050505050565b5f6108ea836005846123f2565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b815260040161156f9190613421565b606060405180830381865af415801561158a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ae919061344a565b919450925090506115c08386356120a2565b6115dc5760405162461bcd60e51b81526004016105c59061348b565b60ff821615611655576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105c5565b60ff878116911614925050509392505050565b5f610767611679620151808661363f565b60038585611eb0565b5f80548190600160a01b900460ff16156116d35760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105c5565b5f6116e76116e185806136ea565b35612736565b90506117206116f685806136ea565b611704906040810190613708565b5f8181106117145761171461354e565b9050602002013561278f565b61175861172d85806136ea565b61173b906040810190613708565b600181811061174c5761174c61354e565b90506020020135612857565b6117b761176585806136ea565b611773906040810190613708565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506117b192505050604087018761374d565b35612915565b61181f5760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105c5565b61187061182c85806136ea565b61183a906040810190613708565b611847604088018861374d565b611855906020810190613761565b61186260408a018a61374d565b6103d8906040810190613761565b6118bc5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105c5565b61194f6118c985806136ea565b6118d7906040810190613708565b60059060016118e689806136ea565b6118f4906040810190613708565b6118ff92915061363f565b9261190c939291906137a3565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061194a9250505060208701876137ce565b612940565b5f61195a85806136ea565b611968906040810190613708565b600261197488806136ea565b611982906040810190613708565b61198d92915061363f565b81811061199c5761199c61354e565b905060200201355f1c60038111156119b6576119b66136bd565b905060028160038111156119cc576119cc6136bd565b141580156119ec575060038160038111156119e9576119e96136bd565b14155b80611a1057506119ff604086018661374d565b611a10906080810190606001612b12565b611a6d5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105c5565b5f816003811115611a8057611a806136bd565b1480611aa55750611a94604086018661374d565b611aa5906080810190606001612b12565b611b055760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016105c5565b6007611b1186806136ea565b611b1f906040810190613708565b611b2a92915061363f565b611b3760208701876137ce565b611b45906020810190613708565b905014611ba25760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105c5565b6001600160a01b03821663ea50d0e4611bbb87806136ea565b611bc9906020810190613761565b611bd389806136ea565b611be1906040810190613708565b6040518563ffffffff1660e01b8152600401611c0094939291906137e2565b602060405180830381865afa158015611c1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3f9190613813565b93505f6001611c4e87806136ea565b611c5c906040810190613708565b611c6792915061363f565b9050611c7386806136ea565b611c81906040810190613708565b82818110611c9157611c9161354e565b905060200201359350505050915091565b611cea60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604051635450abb360e11b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a8a1576690611d23908790600401613421565b5f60405180830381865af4158015611d3d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d64919081019061382e565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae90611da19084908790600401613887565b5f60405180830381865af4158015611dbb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108b791908101906138aa565b5f610767848585856112d3565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015611e3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e619190613813565b611ead5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105c5565b50565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b8152600401611eed929190613a3b565b606060405180830381865af4158015611f08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2c9190613a78565b91945092509050611f3e8386356120a2565b611f5a5760405162461bcd60e51b81526004016105c59061348b565b8115611fd85760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105c5565b600287600a811115611fec57611fec6136bd565b14806120095750600387600a811115612007576120076136bd565b145b6120255760405162461bcd60e51b81526004016105c590613aa3565b600287600a811115612039576120396136bd565b0361207757805f0361205d5760405162461bcd60e51b81526004016105c590613acf565b61206b6383aa7e808261363f565b881493505050506108b7565b805f036120965760405162461bcd60e51b81526004016105c590613b47565b871492506108b7915050565b5f806120ae8385613652565b90508342101580156120bf57508381115b80156108b7575042109392505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b815260040161210c929190613a3b565b606060405180830381865af4158015612127573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214b9190613a78565b9194509250905061215d8386356120a2565b6121795760405162461bcd60e51b81526004016105c59061348b565b878911156121e15760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105c5565b600287600a8111156121f5576121f56136bd565b14806122125750600387600a811115612210576122106136bd565b145b61222e5760405162461bcd60e51b81526004016105c590613aa3565b600287600a811115612242576122426136bd565b0361232857815f036122d75760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105c5565b805f036122f65760405162461bcd60e51b81526004016105c590613acf565b6123046383aa7e808361363f565b8914801561231e575061231b6383aa7e808261363f565b88145b93505050506123e9565b815f036123b95760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105c5565b805f036123d85760405162461bcd60e51b81526004016105c590613b47565b818914801561231e57508714925050505b95945050505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63dc8c5e9a85876040518363ffffffff1660e01b815260040161242e929190613a3b565b5f60405180830381865af4158015612448573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261246f9190810190613bc0565b9150915080865114612485575f9250505061076a565b5f5b818110156124f3576124dc8782815181106124a4576124a461354e565b60200260200101518483815181106124be576124be61354e565b60200260200101518051602091820120825192909101919091201490565b6124eb575f935050505061076a565b600101612487565b5060019695505050505050565b511590565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b8152600401612542929190613a3b565b606060405180830381865af415801561255d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125819190613a78565b919450925090506125938386356120a2565b6125af5760405162461bcd60e51b81526004016105c59061348b565b600287600a8111156125c3576125c36136bd565b14806125e05750600387600a8111156125de576125de6136bd565b145b6125fc5760405162461bcd60e51b81526004016105c590613aa3565b600287600a811115612610576126106136bd565b036126a65780156126985760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105c5565b61206b6383aa7e808361363f565b801561272a5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105c5565b50861491506108b79050565b5f818152600160205260408120546001600160a01b0316806108ed5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105c5565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa1580156127dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128019190613813565b611ead5760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105c5565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa1580156128a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c99190613813565b611ead5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105c5565b5f5f8360028151811061292a5761292a61354e565b60200260200101515f1c90506108b781846120a2565b5f805b6129506020840184613708565b9050811015612aaa575f600860026129688680613761565b869061297760208a018a613708565b888181106129875761298761354e565b90506020020135886129999190613652565b926129a693929190613c79565b6040516020016129b7929190613529565b60408051601f19818403018152908290526129d191613538565b602060405180830381855afa1580156129ec573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a0f9190613433565b901c9050848281518110612a2557612a2561354e565b60200260200101518114612a705760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105c5565b612a7d6020850185613708565b83818110612a8d57612a8d61354e565b9050602002013583612a9f9190613652565b925050600101612943565b50612ab58280613761565b90508114610cd55760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105c5565b8015158114611ead575f5ffd5b5f60208284031215612b22575f5ffd5b813561076a81612b05565b5f60408284031215612b3d575f5ffd5b50919050565b5f60208284031215612b53575f5ffd5b81356001600160401b03811115612b68575f5ffd5b6108b784828501612b2d565b6001600160a01b0381168114611ead575f5ffd5b5f60208284031215612b98575f5ffd5b813561076a81612b74565b5f60808284031215612b3d575f5ffd5b5f5f5f60608486031215612bc5575f5ffd5b8335925060208401356001600160401b03811115612be1575f5ffd5b612bed86828701612b2d565b92505060408401356001600160401b03811115612c08575f5ffd5b612c1486828701612ba3565b9150509250925092565b60ff81168114611ead575f5ffd5b5f5f5f60608486031215612c3e575f5ffd5b8335612c4981612c1e565b925060208401356001600160401b03811115612be1575f5ffd5b5f5f5f5f60808587031215612c76575f5ffd5b843593506020850135925060408501356001600160401b03811115612c99575f5ffd5b612ca587828801612b2d565b92505060608501356001600160401b03811115612cc0575f5ffd5b612ccc87828801612ba3565b91505092959194509250565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612d0f57612d0f612cd8565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d3d57612d3d612cd8565b604052919050565b5f6001600160401b03821115612d5d57612d5d612cd8565b5060051b60200190565b5f6001600160401b03821115612d7f57612d7f612cd8565b50601f01601f191660200190565b5f5f60408385031215612d9e575f5ffd5b82356001600160401b03811115612db3575f5ffd5b8301601f81018513612dc3575f5ffd5b8035612dd6612dd182612d45565b612d15565b8082825260208201915060208360051b850101925087831115612df7575f5ffd5b602084015b83811015612e775780356001600160401b03811115612e19575f5ffd5b8501603f81018a13612e29575f5ffd5b6020810135612e3a612dd182612d67565b8181526040838301018c1015612e4e575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612dfc565b50945050505060208301356001600160401b03811115612e95575f5ffd5b612ea185828601612b2d565b9150509250929050565b5f60208284031215612ebb575f5ffd5b5035919050565b5f5f83601f840112612ed2575f5ffd5b5081356001600160401b03811115612ee8575f5ffd5b6020830191508360208260051b8501011115612f02575f5ffd5b9250929050565b5f5f83601f840112612f19575f5ffd5b5081356001600160401b03811115612f2f575f5ffd5b602083019150836020828501011115612f02575f5ffd5b5f5f5f5f5f5f60608789031215612f5b575f5ffd5b86356001600160401b03811115612f70575f5ffd5b612f7c89828a01612ec2565b90975095505060208701356001600160401b03811115612f9a575f5ffd5b612fa689828a01612f09565b90955093505060408701356001600160401b03811115612fc4575f5ffd5b612fd089828a01612f09565b979a9699509497509295939492505050565b5f5f60208385031215612ff3575f5ffd5b82356001600160401b03811115613008575f5ffd5b61301485828601612ec2565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b038251166020820152602082015160408201525f60408301516060808401526108b76080840182613020565b5f5f5f5f60408587031215613097575f5ffd5b84356001600160401b038111156130ac575f5ffd5b6130b887828801612ec2565b90955093505060208501356001600160401b038111156130d6575f5ffd5b6130e287828801612ec2565b95989497509550505050565b60038110611ead575f5ffd5b5f5f5f5f6080858703121561310d575f5ffd5b8435613118816130ee565b93506020850135613128816130ee565b925060408501356001600160401b03811115612c99575f5ffd5b5f5f5f5f60808587031215613155575f5ffd5b843561316081612c1e565b9350602085013561312881612c1e565b5f60208284031215613180575f5ffd5b81356001600160401b03811115613195575f5ffd5b82016060818503121561076a575f5ffd5b5f5f604083850312156131b7575f5ffd5b82356001600160401b038111156131cc575f5ffd5b6131d885828601612b2d565b92505060208301356131e981612b05565b809150509250929050565b602081525f82516101006020840152613211610120840182613020565b90506020840151601f1984830301604085015261322e8282613020565b9150506040840151601f1984830301606085015261324c8282613020565b9150506060840151601f1984830301608085015261326a8282613020565b9150506080840151601f198483030160a08501526132888282613020565b91505060a0840151601f198483030160c08501526132a68282613020565b91505060c0840151601f198483030160e08501526132c48282613020565b91505060e0840151601f19848303016101008501526123e98282613020565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115613359575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8135601e1983360301808212613387575f5ffd5b602091840191820191356001600160401b038111156133a4575f5ffd5b8036038313156133b2575f5ffd5b604086526133c460408701828561331a565b92505060208401358181126133d7575f5ffd5b8401602081019150356001600160401b038111156133f3575f5ffd5b8060051b3603821315613404575f5ffd5b8583036020870152613417838284613342565b9695505050505050565b602081525f6108ea6020830184613372565b5f60208284031215613443575f5ffd5b5051919050565b5f5f5f6060848603121561345c575f5ffd5b8351602085015190935061346f81612c1e565b604085015190925061348081612c1e565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156108ed576108ed6134fc565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b5f82601f830112613571575f5ffd5b8151602083015f613584612dd184612d67565b9050828152858383011115613597575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f602082840312156135c1575f5ffd5b81516001600160401b038111156135d6575f5ffd5b6108b784828501613562565b602081525f6108ea6020830184613020565b5f5f5f60608486031215613606575f5ffd5b835161361181612b74565b6020850151604086015191945092506001600160401b03811115613633575f5ffd5b612c1486828701613562565b818103818111156108ed576108ed6134fc565b808201808211156108ed576108ed6134fc565b5f5f5f5f5f60a08688031215613679575f5ffd5b855160208701519095506002811061368f575f5ffd5b60408701516060880151608089015192965090945092506136af816130ee565b809150509295509295909350565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156108ed576108ed6134fc565b5f8235605e198336030181126136fe575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261371d575f5ffd5b8301803591506001600160401b03821115613736575f5ffd5b6020019150600581901b3603821315612f02575f5ffd5b5f8235607e198336030181126136fe575f5ffd5b5f5f8335601e19843603018112613776575f5ffd5b8301803591506001600160401b0382111561378f575f5ffd5b602001915036819003821315612f02575f5ffd5b5f5f858511156137b1575f5ffd5b838611156137bd575f5ffd5b5050600583901b0193919092039150565b5f8235603e198336030181126136fe575f5ffd5b604081525f6137f560408301868861331a565b8281036020840152613808818587613342565b979650505050505050565b5f60208284031215613823575f5ffd5b815161076a81612b05565b5f5f6040838503121561383f575f5ffd5b82516001600160401b03811115613854575f5ffd5b61386085828601613562565b92505060208301516001600160401b0381111561387b575f5ffd5b612ea185828601613562565b604081525f6138996040830185613020565b905082151560208301529392505050565b5f602082840312156138ba575f5ffd5b81516001600160401b038111156138cf575f5ffd5b820161010081850312156138e1575f5ffd5b6138e9612cec565b81516001600160401b038111156138fe575f5ffd5b61390a86828501613562565b82525060208201516001600160401b03811115613925575f5ffd5b61393186828501613562565b60208301525060408201516001600160401b0381111561394f575f5ffd5b61395b86828501613562565b60408301525060608201516001600160401b03811115613979575f5ffd5b61398586828501613562565b60608301525060808201516001600160401b038111156139a3575f5ffd5b6139af86828501613562565b60808301525060a08201516001600160401b038111156139cd575f5ffd5b6139d986828501613562565b60a08301525060c08201516001600160401b038111156139f7575f5ffd5b613a0386828501613562565b60c08301525060e08201516001600160401b03811115613a21575f5ffd5b613a2d86828501613562565b60e083015250949350505050565b604081525f613a4d6040830185613372565b9050600b8310613a6b57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f5f5f60608486031215613a8a575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f60408385031215613bd1575f5ffd5b82516001600160401b03811115613be6575f5ffd5b8301601f81018513613bf6575f5ffd5b8051613c04612dd182612d45565b8082825260208201915060208360051b850101925087831115613c25575f5ffd5b602084015b83811015613c655780516001600160401b03811115613c47575f5ffd5b613c568a602083890101613562565b84525060209283019201613c2a565b506020969096015195979596505050505050565b5f5f85851115613c87575f5ffd5b83861115613c93575f5ffd5b505082019391909203915056fea264697066735822122003976ad8bc435d1afd265436a8ca6c800493492d2b2a0afcb7cacd312db60e3f64736f6c634300081d0033",
3044
+ sourceMap: "706:31108:26:-:0;;;1848:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1897:27:26;;1889:76;;;;-1:-1:-1;;;1889:76:26;;511:2:33;1889:76:26;;;493:21:33;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:33;;;633:34;684:19;;1889:76:26;;;;;;;;1971:5;:18;;1979:10;-1:-1:-1;;;;;;1971:18:26;;;;;;;;1995:12;:43;;;;;-1:-1:-1;;;;;1995:43:26;;;;;2049:50;;2083:15;860:25:33;;2049:50:26;;848:2:33;833:18;2049:50:26;;;;;;;1848:256;706:31108;;14:290:33;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:33;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:33:o;714:177::-;706:31108:26;;;;;;",
2995
3045
  linkReferences: {
2996
3046
  "src/InputsExtractor.sol": {
2997
3047
  InputsExtractor: [
2998
- { start: 2173, length: 20 },
2999
- { start: 2337, length: 20 },
3000
- { start: 2460, length: 20 },
3001
- { start: 2868, length: 20 },
3002
- { start: 3229, length: 20 },
3003
- { start: 3393, length: 20 },
3004
- { start: 3531, length: 20 },
3005
- { start: 4153, length: 20 },
3006
- { start: 5533, length: 20 },
3007
- { start: 7505, length: 20 },
3008
- { start: 8108, length: 20 },
3009
- { start: 8937, length: 20 },
3010
- { start: 9479, length: 20 }
3048
+ { start: 1894, length: 20 },
3049
+ { start: 2215, length: 20 },
3050
+ { start: 3652, length: 20 },
3051
+ { start: 3775, length: 20 },
3052
+ { start: 4291, length: 20 },
3053
+ { start: 5129, length: 20 },
3054
+ { start: 5738, length: 20 },
3055
+ { start: 7723, length: 20 },
3056
+ { start: 7846, length: 20 },
3057
+ { start: 8166, length: 20 },
3058
+ { start: 8709, length: 20 },
3059
+ { start: 9511, length: 20 },
3060
+ { start: 9787, length: 20 }
3011
3061
  ]
3012
3062
  }
3013
3063
  }
3014
3064
  },
3015
3065
  deployedBytecode: {
3016
- object: "0x608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e3541461053e578063e718bc3214610551578063ec46f77414610564578063f851a44014610577578063f87e19b114610589575f5ffd5b8063c4560786146104c8578063cfd9464a146104db578063d3f6ffff146104ee578063d7bf616a14610501578063deb7c0591461052b575f5ffd5b8063a88f1cef116100fa578063a88f1cef14610469578063aa1346ea1461047c578063b96b161c1461048f578063bf73c26c146104a2578063c0940ebd146104b5575f5ffd5b80638163f231146103dd578063847755e31461041d5780638d6937b814610430578063921076c714610443578063a6df2c0114610456575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610394578063653cfd811461039c5780636c40d5d6146103af578063704876d6146103b757806375829def146103ca575f5ffd5b80634c1274281461032857806354dbe4d11461033b57806359545f451461034e5780635c975abb1461036e57806362067c8214610381575f5ffd5b80632e27242c116102075780632e27242c146102c657806337889655146102d95780633a86bd3d146102ec57806341a0e2c2146102ff57806346bd0a1614610315575f5ffd5b806304951b86146102435780630b90581b1461026b57806316c38b3c1461027e57806318677f2a146102935780631e26a9dc146102a6575b5f5ffd5b610256610251366004612987565b61059c565b60405190151581526020015b60405180910390f35b610256610279366004612987565b6105be565b61029161028c3660046129d7565b6105cc565b005b6102916102a1366004612a06565b610655565b6102b96102b4366004612a21565b610702565b6040516102629190612a9d565b6102566102d4366004612ba1565b610865565b6102566102e7366004612be5565b6109b7565b6102566102fa366004612cb6565b6109cc565b610307600181565b604051908152602001610262565b610256610323366004612dbe565b6109d9565b610256610336366004612987565b6109f1565b610256610349366004612be5565b6109fe565b61036161035c366004612e09565b610b4f565b6040516102629190612e3a565b5f5461025690600160a01b900460ff1681565b61025661038f366004612e70565b610c95565b610307600381565b6102916103aa366004612e09565b610f06565b610307600281565b6102566103c5366004612987565b610fa8565b6102916103d8366004612a06565b610fb5565b6104056103eb366004612eb7565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b61025661042b366004612f52565b611083565b61029161043e366004612fee565b61124b565b610256610451366004612987565b61130b565b61029161046436600461302c565b611324565b610256610477366004612987565b61144e565b61025661048a366004612be5565b611467565b600254610405906001600160a01b031681565b6102566104b0366004612be5565b6115b8565b6102566104c3366004612be5565b61161f565b6102566104d6366004612dbe565b61162b565b6102566104e9366004612987565b611639565b6102566104fc366004612987565b611647565b61051461050f366004612e09565b611660565b604080519215158352602083019190915201610262565b610256610539366004612987565b611bda565b61025661054c366004612cb6565b611be7565b61025661055f366004612987565b611bf4565b610256610572366004612cb6565b611c01565b5f54610405906001600160a01b031681565b610256610597366004612cb6565b611c0e565b5f6105b56105ad84620151806130aa565b600284611c1b565b90505b92915050565b5f6105b58384600285611e76565b5f546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105f5906130bd565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061064a90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461067e5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166106e05760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105f5565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61074a60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec961077260608701876130f4565b61077f6080890189613136565b6040518563ffffffff1660e01b815260040161079e94939291906131d3565b5f60405180830381865af41580156107b8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107df9190810190613248565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae9061081c90849087906004016132a1565b5f60405180830381865af4158015610836573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261085d91908101906132c4565b949350505050565b5f8080808073__$144f4fe859debe4776cdef2b99f7b97a42$__63c802bad161089160608901896130f4565b61089e60808b018b613136565b6040518563ffffffff1660e01b81526004016108bd94939291906131d3565b608060405180830381865af41580156108d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc9190613455565b929650909450925090505f600184600181111561091b5761091b6134a1565b1490505f886002811115610931576109316134a1565b836002811115610943576109436134a1565b1490507f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b86147f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b85148380156109965750825b801561099f5750815b80156109a85750805b9b9a5050505050505050505050565b5f6105b56109c68460016134b5565b836109fe565b5f6105b5836007846121b4565b5f6109e78484600385611e76565b90505b9392505050565b5f6105b583600384611c1b565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610a2960608801886130f4565b610a3660808a018a613136565b6040518563ffffffff1660e01b8152600401610a5594939291906131d3565b606060405180830381865af4158015610a70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9491906134ce565b925092509250610aa8838660a001356122de565b610ac45760405162461bcd60e51b81526004016105f59061350f565b60ff811615610b3d576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610b9260608601866130f4565b610b9f6080880188613136565b6040518563ffffffff1660e01b8152600401610bbe94939291906131d3565b5f60405180830381865af4158015610bd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bff9190810190613580565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610c399084906004016135b1565b5f60405180830381865af4158015610c53573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c7a91908101906135c3565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610cc060608801886130f4565b610ccd60808a018a613136565b6040518563ffffffff1660e01b8152600401610cec94939291906131d3565b606060405180830381865af4158015610d07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b91906134ce565b925092509250610d3f838660a001356122de565b610d5b5760405162461bcd60e51b81526004016105f59061350f565b8560ff168760ff161115610dc75760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105f5565b8160ff165f03610e545760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8060ff165f03610ee15760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8160ff168760ff16148015610efb57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610f2e60608501856130f4565b610f3b6080870187613136565b6040518563ffffffff1660e01b8152600401610f5a94939291906131d3565b602060405180830381865af4158015610f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f99919061360e565b9050610fa48161230b565b5050565b5f6105b583600284611c1b565b5f546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105f5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f6110c386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b61113d576008600287876040516020016110de929190613625565b60408051601f19818403018152908290526110f891613634565b602060405180830381855afa158015611113573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611136919061360e565b901c61113f565b5f5b90505f61118085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b6111fa5760086002868660405160200161119b929190613625565b60408051601f19818403018152908290526111b591613634565b602060405180830381855afa1580156111d0573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906111f3919061360e565b901c6111fc565b5f5b905081898960038181106112125761121261364a565b9050602002013514801561123e575080898960048181106112355761123561364a565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146112745760405162461bcd60e51b81526004016105f5906130bd565b5f5b818110156113065760015f8484848181106112935761129361364a565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106112cb576112cb61364a565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611276565b505050565b5f6105b561131c620151808561365e565b6002846123d1565b5f546001600160a01b0316331461134d5760405162461bcd60e51b81526004016105f5906130bd565b5f5b83811015611447578282828181106113695761136961364a565b905060200201602081019061137e9190612a06565b60015f8787858181106113935761139361364a565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106113dc576113dc61364a565b90506020020160208101906113f19190612a06565b6001600160a01b031685858381811061140c5761140c61364a565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a360010161134f565b5050505050565b5f6105b561145f620151808561365e565b6003846123d1565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c61149260608801886130f4565b61149f60808a018a613136565b6040518563ffffffff1660e01b81526004016114be94939291906131d3565b606060405180830381865af41580156114d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fd91906134ce565b925092509250611511838660a001356122de565b61152d5760405162461bcd60e51b81526004016105f59061350f565b60ff8216156115a6576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b60ff8681169116149250505092915050565b5f5f8360ff161161160b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105f5565b6105b5611619600185613671565b83611467565b5f6105b5838484610c95565b5f6109e78484600285611e76565b5f6105b58384600385611e76565b5f6105b561165884620151806130aa565b600384611c1b565b5f80548190600160a01b900460ff16156116b15760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105f5565b5f6116bc84356125d5565b90506116ea6116ce6040860186613136565b5f8181106116de576116de61364a565b9050602002013561262e565b6117176116fa6040860186613136565b600181811061170b5761170b61364a565b905060200201356126f6565b6117616117276040860186613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08601356127b4565b6117c95760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105f5565b6117f36117d96040860186613136565b6117e660c08801886130f4565b61042b60e08a018a6130f4565b61183f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105f5565b6118fa61184f6040860186613136565b600590600161186160408a018a613136565b61186c92915061365e565b926118799392919061368a565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506118b79250505060608701876130f4565b6118c46080890189613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506127df92505050565b5f6119086040860186613136565b60026119176040890189613136565b61192292915061365e565b8181106119315761193161364a565b905060200201355f1c600381111561194b5761194b6134a1565b90506002816003811115611961576119616134a1565b141580156119815750600381600381111561197e5761197e6134a1565b14155b806119995750611999610120860161010087016129d7565b6119f65760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105f5565b5f816003811115611a0957611a096134a1565b1480611a225750611a22610120860161010087016129d7565b611a825760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016105f5565b6007611a916040870187613136565b611a9c92915061365e565b611aa96080870187613136565b905014611b065760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105f5565b6001600160a01b03821663ea50d0e4611b2260208801886130f4565b611b2f60408a018a613136565b6040518563ffffffff1660e01b8152600401611b4e94939291906131d3565b602060405180830381865afa158015611b69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8d91906136b5565b93505f6001611b9f6040880188613136565b611baa92915061365e565b9050611bb96040870187613136565b82818110611bc957611bc961364a565b905060200201359350505050915091565b5f6105b5836002846123d1565b5f6105b5836005846121b4565b5f6105b5836003846123d1565b5f6105b5836006846121b4565b5f6105b5836004846121b4565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c4660608801886130f4565b611c5360808a018a613136565b8b6040518663ffffffff1660e01b8152600401611c749594939291906136d0565b606060405180830381865af4158015611c8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190613725565b925092509250611cc7838660a001356122de565b611ce35760405162461bcd60e51b81526004016105f59061350f565b600286600a811115611cf757611cf76134a1565b1480611d145750600386600a811115611d1257611d126134a1565b145b611d305760405162461bcd60e51b81526004016105f590613750565b600286600a811115611d4457611d446134a1565b03611de6578015611dcc5760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105f5565b611dda6383aa7e808361365e565b871493505050506109ea565b8015611e6a5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105f5565b50851491506109ea9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611ea160608801886130f4565b611eae60808a018a613136565b8b6040518663ffffffff1660e01b8152600401611ecf9594939291906136d0565b606060405180830381865af4158015611eea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0e9190613725565b925092509250611f22838660a001356122de565b611f3e5760405162461bcd60e51b81526004016105f59061350f565b86881115611fa65760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105f5565b600286600a811115611fba57611fba6134a1565b1480611fd75750600386600a811115611fd557611fd56134a1565b145b611ff35760405162461bcd60e51b81526004016105f590613750565b600286600a811115612007576120076134a1565b036120ed57815f0361209c5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105f5565b805f036120bb5760405162461bcd60e51b81526004016105f59061377c565b6120c96383aa7e808361365e565b881480156120e357506120e06383aa7e808261365e565b87145b935050505061085d565b815f0361217e5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105f5565b805f0361219d5760405162461bcd60e51b81526004016105f5906137f4565b81881480156120e357509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca06121de60608701876130f4565b6121eb6080890189613136565b8a6040518663ffffffff1660e01b815260040161220c9594939291906136d0565b5f60405180830381865af4158015612226573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261224d919081019061386d565b9150915080865114612263575f925050506109ea565b5f5b818110156122d1576122ba8782815181106122825761228261364a565b602002602001015184838151811061229c5761229c61364a565b60200260200101518051602091820120825192909101919091201490565b6122c9575f93505050506109ea565b600101612265565b5060019695505050505050565b5f806122ea83856130aa565b90508342101580156122fb57508381115b801561085d575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237d91906136b5565b6123c95760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105f5565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926123fc60608801886130f4565b61240960808a018a613136565b8b6040518663ffffffff1660e01b815260040161242a9594939291906136d0565b606060405180830381865af4158015612445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124699190613725565b92509250925061247d838660a001356122de565b6124995760405162461bcd60e51b81526004016105f59061350f565b81156125175760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105f5565b600286600a81111561252b5761252b6134a1565b14806125485750600386600a811115612546576125466134a1565b145b6125645760405162461bcd60e51b81526004016105f590613750565b600286600a811115612578576125786134a1565b036125aa57805f0361259c5760405162461bcd60e51b81526004016105f59061377c565b611dda6383aa7e808261365e565b805f036125c95760405162461bcd60e51b81526004016105f5906137f4565b861492506109ea915050565b5f818152600160205260408120546001600160a01b0316806105b85760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105f5565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561267c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a091906136b5565b6123c95760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105f5565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612744573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276891906136b5565b6123c95760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105f5565b5f5f836002815181106127c9576127c961364a565b60200260200101515f1c905061085d81846122de565b5f805b8251811015612920575f60086002878786908887815181106128065761280661364a565b60200260200101518861281991906130aa565b9261282693929190613926565b604051602001612837929190613625565b60408051601f198184030181529082905261285191613634565b602060405180830381855afa15801561286c573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061288f919061360e565b901c90508682815181106128a5576128a561364a565b602002602001015181146128f05760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105f5565b8382815181106129025761290261364a565b60200260200101518361291591906130aa565b9250506001016127e2565b508083146114475760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105f5565b5f6101208284031215612981575f5ffd5b50919050565b5f5f60408385031215612998575f5ffd5b8235915060208301356001600160401b038111156129b4575f5ffd5b6129c085828601612970565b9150509250929050565b80151581146123c9575f5ffd5b5f602082840312156129e7575f5ffd5b81356109ea816129ca565b6001600160a01b03811681146123c9575f5ffd5b5f60208284031215612a16575f5ffd5b81356109ea816129f2565b5f5f60408385031215612a32575f5ffd5b82356001600160401b03811115612a47575f5ffd5b612a5385828601612970565b9250506020830135612a64816129ca565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f82516101006020840152612aba610120840182612a6f565b90506020840151601f19848303016040850152612ad78282612a6f565b9150506040840151601f19848303016060850152612af58282612a6f565b9150506060840151601f19848303016080850152612b138282612a6f565b9150506080840151601f198483030160a0850152612b318282612a6f565b91505060a0840151601f198483030160c0850152612b4f8282612a6f565b91505060c0840151601f198483030160e0850152612b6d8282612a6f565b91505060e0840151601f1984830301610100850152612b8c8282612a6f565b95945050505050565b600381106123c9575f5ffd5b5f5f60408385031215612bb2575f5ffd5b8235612bbd81612b95565b915060208301356001600160401b038111156129b4575f5ffd5b60ff811681146123c9575f5ffd5b5f5f60408385031215612bf6575f5ffd5b8235612bbd81612bd7565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612c3857612c38612c01565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c6657612c66612c01565b604052919050565b5f6001600160401b03821115612c8657612c86612c01565b5060051b60200190565b5f6001600160401b03821115612ca857612ca8612c01565b50601f01601f191660200190565b5f5f60408385031215612cc7575f5ffd5b82356001600160401b03811115612cdc575f5ffd5b8301601f81018513612cec575f5ffd5b8035612cff612cfa82612c6e565b612c3e565b8082825260208201915060208360051b850101925087831115612d20575f5ffd5b602084015b83811015612da05780356001600160401b03811115612d42575f5ffd5b8501603f81018a13612d52575f5ffd5b6020810135612d63612cfa82612c90565b8181526040838301018c1015612d77575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612d25565b50945050505060208301356001600160401b038111156129b4575f5ffd5b5f5f5f60608486031215612dd0575f5ffd5b833592506020840135915060408401356001600160401b03811115612df3575f5ffd5b612dff86828701612970565b9150509250925092565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b61085d84828501612970565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261085d6080840182612a6f565b5f5f5f60608486031215612e82575f5ffd5b8335612e8d81612bd7565b92506020840135612e9d81612bd7565b915060408401356001600160401b03811115612df3575f5ffd5b5f60208284031215612ec7575f5ffd5b5035919050565b5f5f83601f840112612ede575f5ffd5b5081356001600160401b03811115612ef4575f5ffd5b6020830191508360208260051b8501011115612f0e575f5ffd5b9250929050565b5f5f83601f840112612f25575f5ffd5b5081356001600160401b03811115612f3b575f5ffd5b602083019150836020828501011115612f0e575f5ffd5b5f5f5f5f5f5f60608789031215612f67575f5ffd5b86356001600160401b03811115612f7c575f5ffd5b612f8889828a01612ece565b90975095505060208701356001600160401b03811115612fa6575f5ffd5b612fb289828a01612f15565b90955093505060408701356001600160401b03811115612fd0575f5ffd5b612fdc89828a01612f15565b979a9699509497509295939492505050565b5f5f60208385031215612fff575f5ffd5b82356001600160401b03811115613014575f5ffd5b61302085828601612ece565b90969095509350505050565b5f5f5f5f6040858703121561303f575f5ffd5b84356001600160401b03811115613054575f5ffd5b61306087828801612ece565b90955093505060208501356001600160401b0381111561307e575f5ffd5b61308a87828801612ece565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105b8576105b8613096565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112613109575f5ffd5b8301803591506001600160401b03821115613122575f5ffd5b602001915036819003821315612f0e575f5ffd5b5f5f8335601e1984360301811261314b575f5ffd5b8301803591506001600160401b03821115613164575f5ffd5b6020019150600581901b3603821315612f0e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b038311156131ba575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f6131e660408301868861317b565b8281036020840152610efb8185876131a3565b5f82601f830112613208575f5ffd5b8151602083015f61321b612cfa84612c90565b905082815285838301111561322e575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215613259575f5ffd5b82516001600160401b0381111561326e575f5ffd5b61327a858286016131f9565b92505060208301516001600160401b03811115613295575f5ffd5b6129c0858286016131f9565b604081525f6132b36040830185612a6f565b905082151560208301529392505050565b5f602082840312156132d4575f5ffd5b81516001600160401b038111156132e9575f5ffd5b820161010081850312156132fb575f5ffd5b613303612c15565b81516001600160401b03811115613318575f5ffd5b613324868285016131f9565b82525060208201516001600160401b0381111561333f575f5ffd5b61334b868285016131f9565b60208301525060408201516001600160401b03811115613369575f5ffd5b613375868285016131f9565b60408301525060608201516001600160401b03811115613393575f5ffd5b61339f868285016131f9565b60608301525060808201516001600160401b038111156133bd575f5ffd5b6133c9868285016131f9565b60808301525060a08201516001600160401b038111156133e7575f5ffd5b6133f3868285016131f9565b60a08301525060c08201516001600160401b03811115613411575f5ffd5b61341d868285016131f9565b60c08301525060e08201516001600160401b0381111561343b575f5ffd5b613447868285016131f9565b60e083015250949350505050565b5f5f5f5f60808587031215613468575f5ffd5b845160208601519094506002811061347e575f5ffd5b60408601516060870151919450925061349681612b95565b939692955090935050565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156105b8576105b8613096565b5f5f5f606084860312156134e0575f5ffd5b835160208501519093506134f381612bd7565b604085015190925061350481612bd7565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f60208284031215613590575f5ffd5b81516001600160401b038111156135a5575f5ffd5b61085d848285016131f9565b602081525f6105b56020830184612a6f565b5f5f5f606084860312156135d5575f5ffd5b83516135e0816129f2565b6020850151604086015191945092506001600160401b03811115613602575f5ffd5b612dff868287016131f9565b5f6020828403121561361e575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156105b8576105b8613096565b60ff82811682821603908111156105b8576105b8613096565b5f5f85851115613698575f5ffd5b838611156136a4575f5ffd5b5050600583901b0193919092039150565b5f602082840312156136c5575f5ffd5b81516109ea816129ca565b606081525f6136e360608301878961317b565b82810360208401526136f68186886131a3565b915050600b831061371557634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613737575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f6040838503121561387e575f5ffd5b82516001600160401b03811115613893575f5ffd5b8301601f810185136138a3575f5ffd5b80516138b1612cfa82612c6e565b8082825260208201915060208360051b8501019250878311156138d2575f5ffd5b602084015b838110156139125780516001600160401b038111156138f4575f5ffd5b6139038a6020838901016131f9565b845250602092830192016138d7565b506020969096015195979596505050505050565b5f5f85851115613934575f5ffd5b83861115613940575f5ffd5b505082019391909203915056fea2646970667358221220623aa0f5d6fd1ed4b32bdfd3907fb8b21b1ba73e0a28815b6397c145a04864b764736f6c634300081d0033",
3017
- sourceMap: "674:28697:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12985:206;;;;;;:::i;:::-;;:::i;:::-;;;864:14:34;;857:22;839:41;;827:2;812:18;12985:206:26;;;;;;;;15024:192;;;;;;:::i;:::-;;:::i;2495:118::-;;;;;;:::i;:::-;;:::i;:::-;;3146:206;;;;;;:::i;:::-;;:::i;3887:369::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22499:700::-;;;;;;:::i;:::-;;:::i;5317:169::-;;;;;;:::i;:::-;;:::i;21021:230::-;;;;;;:::i;:::-;;:::i;706:69::-;;772:1;706:69;;;;;8483:25:34;;;8471:2;8456:18;706:69:26;8337:177:34;16569:227:26;;;;;;:::i;:::-;;:::i;15522:207::-;;;;;;:::i;:::-;;:::i;4534:541::-;;;;;;:::i;:::-;;:::i;21417:347::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;944:18::-;;;;;-1:-1:-1;;;944:18:26;;;;;;5811:766;;;;;;:::i;:::-;;:::i;848:67::-;;912:1;848:67;;21915:271;;;;;;:::i;:::-;;:::i;779:65::-;;841:1;779:65;;12517:204;;;;;;:::i;:::-;;:::i;2262:229::-;;;;;;:::i;:::-;;:::i;1052:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1052:53:26;;;;;;-1:-1:-1;;;;;11049:32:34;;;11031:51;;11019:2;11004:18;1052:53:26;10885:203:34;23538:706:26;;;;;;:::i;:::-;;:::i;2911:231::-;;;;;;:::i;:::-;;:::i;14544:210::-;;;;;;:::i;:::-;;:::i;2617:290::-;;;;;;:::i;:::-;;:::i;17587:211::-;;;;;;:::i;:::-;;:::i;6855:541::-;;;;;;:::i;:::-;;:::i;1179:33::-;;;;;-1:-1:-1;;;;;1179:33:26;;;7638:228;;;;;;:::i;:::-;;:::i;8114:159::-;;;;;;:::i;:::-;;:::i;13544:224::-;;;;;;:::i;:::-;;:::i;18074:195::-;;;;;;:::i;:::-;;:::i;15999:209::-;;;;;;:::i;:::-;;:::i;26163:3206::-;;;;;;:::i;:::-;;:::i;:::-;;;;14509:14:34;;14502:22;14484:41;;14556:2;14541:18;;14534:34;;;;14457:18;26163:3206:26;14316:258:34;14071:206:26;;;;;;:::i;:::-;;:::i;20388:223::-;;;;;;:::i;:::-;;:::i;17105:209::-;;;;;;:::i;:::-;;:::i;19757:229::-;;;;;;:::i;:::-;;:::i;920:20::-;;;;;-1:-1:-1;;;;;920:20:26;;;19203:222;;;;;;:::i;:::-;;:::i;12985:206::-;13102:4;13121:65;13140:16;:7;13150:6;13140:16;:::i;:::-;13158:19;13179:6;13121:18;:65::i;:::-;13114:72;;12985:206;;;;;:::o;15024:192::-;15138:4;15157:54;15171:4;15177;15183:19;15204:6;15157:13;:54::i;2495:118::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;;;;;;;;;2553:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2553:16:26::1;-1:-1:-1::0;;;;2553:16:26;;::::1;;::::0;;2580:28:::1;::::0;::::1;::::0;::::1;::::0;2562:7;864:14:34;857:22;839:41;;827:2;812:18;;699:187;2580:28:26::1;;;;;;;;2495:118:::0;:::o;3146:206::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3230:27:26;::::1;3222:76;;;::::0;-1:-1:-1;;;3222:76:26;;15398:2:34;3222:76:26::1;::::0;::::1;15380:21:34::0;15437:2;15417:18;;;15410:30;15476:34;15456:18;;;15449:62;-1:-1:-1;;;15527:18:34;;;15520:34;15571:19;;3222:76:26::1;15196:400:34::0;3222:76:26::1;3304:12;:43:::0;;-1:-1:-1;;;;;;3304:43:26::1;-1:-1:-1::0;;;;;3304:43:26;;;::::1;::::0;;;::::1;::::0;;3146:206::o;3887:369::-;4006:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:34:26;4051:26;4081:15;:38;4120:22;;;;:6;:22;:::i;:::-;4144:27;;;;:6;:27;:::i;:::-;4081:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4081:91:26;;;;;;;;;;;;:::i;:::-;4194:57;;-1:-1:-1;;;4194:57:26;;4048:124;;-1:-1:-1;4194:15:26;;-1:-1:-1;4194:32:26;;:57;;4048:124;;4242:8;;4194:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4194:57:26;;;;;;;;;;;;:::i;:::-;4178:73;3887:369;-1:-1:-1;;;;3887:369:26:o;22499:700::-;22631:4;;;;;22745:15;:39;22785:22;;;;:6;:22;:::i;:::-;22809:27;;;;:6;:27;:::i;:::-;22745:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22643:194;;-1:-1:-1;22643:194:26;;-1:-1:-1;22643:194:26;-1:-1:-1;22643:194:26;-1:-1:-1;22843:17:26;22878:22;22863:11;:37;;;;;;;;:::i;:::-;;22843:57;;22906:18;22953:13;22927:39;;;;;;;;:::i;:::-;:22;:39;;;;;;;;:::i;:::-;;;-1:-1:-1;5043:66:19;23000:44:26;;4934:66:19;23076:30:26;;23119:12;:29;;;;;23135:13;23119:29;:53;;;;;23152:20;23119:53;:75;;;;;23176:18;23119:75;23112:82;22499:700;-1:-1:-1;;;;;;;;;;;22499:700:26:o;5317:169::-;5425:4;5444:37;5462:10;:6;5471:1;5462:10;:::i;:::-;5474:6;5444:17;:37::i;21021:230::-;21153:4;21172:74;21189:11;21202:35;21239:6;21172:16;:74::i;16569:227::-;16710:4;16729:62;16743:7;16752;16761:21;16784:6;16729:13;:62::i;:::-;16722:69;;16569:227;;;;;;:::o;15522:207::-;15647:4;15666:58;15685:7;15694:21;15717:6;15666:18;:58::i;4534:541::-;4649:4;;;;4707:15;:33;4741:22;;;;:6;:22;:::i;:::-;4765:27;;;;:6;:27;:::i;:::-;4707:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4661:132;;;;;;4807:66;4829:11;4842:6;:30;;;4807:21;:66::i;:::-;4799:154;;;;-1:-1:-1;;;4799:154:26;;;;;;;:::i;:::-;4967:8;;;;4959:85;;;;;-1:-1:-1;;;4959:85:26;;23257:2:34;4959:85:26;;;23239:21:34;23276:18;;;23269:30;;;;23335:34;23315:18;;;23308:62;23406:34;23386:18;;;23379:62;23458:19;;4959:85:26;23055:428:34;4959:85:26;-1:-1:-1;5057:13:26;;;;;;;;-1:-1:-1;;4534:541:26;;;;:::o;21417:347::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21543:17:26;21563:15;:34;21598:22;;;;:6;:22;:::i;:::-;21622:27;;;;:6;:27;:::i;:::-;21563:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21563:87:26;;;;;;;;;;;;:::i;:::-;21725:34;;-1:-1:-1;;;21725:34:26;;21543:107;;-1:-1:-1;21725:15:26;;:28;;:34;;21543:107;;21725:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21725:34:26;;;;;;;;;;;;:::i;:::-;21701:20;;;21656:103;21682:17;;;21656:103;-1:-1:-1;;;;;21656:103:26;;;-1:-1:-1;21657:9:26;21417:347;-1:-1:-1;21417:347:26:o;5811:766::-;5939:4;;;;5997:15;:33;6031:22;;;;:6;:22;:::i;:::-;6055:27;;;;:6;:27;:::i;:::-;5997:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5951:132;;;;;;6097:66;6119:11;6132:6;:30;;;6097:21;:66::i;:::-;6089:154;;;;-1:-1:-1;;;6089:154:26;;;;;;;:::i;:::-;6267:6;6257:16;;:6;:16;;;;6249:74;;;;-1:-1:-1;;;6249:74:26;;24843:2:34;6249:74:26;;;24825:21:34;24882:2;24862:18;;;24855:30;24921:34;24901:18;;;24894:62;-1:-1:-1;;;24972:18:34;;;24965:43;25025:19;;6249:74:26;24641:409:34;6249:74:26;6337:3;:8;;6344:1;6337:8;6329:97;;;;-1:-1:-1;;;6329:97:26;;25257:2:34;6329:97:26;;;25239:21:34;25296:2;25276:18;;;25269:30;25335:34;25315:18;;;25308:62;25406:34;25386:18;;;25379:62;-1:-1:-1;;;25457:19:34;;;25450:43;25510:19;;6329:97:26;25055:480:34;6329:97:26;6440:3;:8;;6447:1;6440:8;6432:97;;;;-1:-1:-1;;;6432:97:26;;25742:2:34;6432:97:26;;;25724:21:34;25781:2;25761:18;;;25754:30;25820:34;25800:18;;;25793:62;25891:34;25871:18;;;25864:62;-1:-1:-1;;;25942:19:34;;;25935:43;25995:19;;6432:97:26;25540:480:34;6432:97:26;6552:3;6542:13;;:6;:13;;;:30;;;;;6569:3;6559:13;;:6;:13;;;6542:30;6535:37;5811:766;-1:-1:-1;;;;;;;5811:766:26:o;21915:271::-;22012:26;22041:15;:39;22081:22;;;;:6;:22;:::i;:::-;22105:27;;;;:6;:27;:::i;:::-;22041:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22012:121;;22139:42;22162:18;22139:22;:42::i;:::-;22006:180;21915:271;:::o;12517:204::-;12641:4;12660:56;12679:7;12688:19;12709:6;12660:18;:56::i;2262:229::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2336:22:26;::::1;2328:63;;;::::0;-1:-1:-1;;;2328:63:26;;26462:2:34;2328:63:26::1;::::0;::::1;26444:21:34::0;26501:2;26481:18;;;26474:30;26540;26520:18;;;26513:58;26588:18;;2328:63:26::1;26260:352:34::0;2328:63:26::1;2397:16;2416:5:::0;;-1:-1:-1;;;;;2427:16:26;;::::1;-1:-1:-1::0;;;;;;2427:16:26;::::1;::::0;::::1;::::0;;2454:32:::1;::::0;2416:5;;;::::1;::::0;;;2454:32:::1;::::0;2397:16;2454:32:::1;2322:169;2262:229:::0;:::o;23538:706::-;23677:4;23791:17;23811:27;23831:6;;23811:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23811:19:26;;-1:-1:-1;;;23811:27:26:i;:::-;:92;;23902:1;23866:32;23890:6;;23873:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23873:24:26;;;;;;;;;;23866:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;23811:92;;;23855:1;23811:92;23791:112;;24003:20;24026:26;24046:5;;24026:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24026:19:26;;-1:-1:-1;;;24026:26:26:i;:::-;:90;;24115:1;24080:31;24104:5;;24087:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;24087:23:26;;;;;;;;;;24080:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;24026:90;;;24069:1;24026:90;24003:113;;24170:9;24129:12;;1108:1:19;24129:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;24227:12;24183;;1147:1:19;24183:40:26;;;;;;;:::i;:::-;;;;;;;:56;24129:110;24122:117;23538:706;-1:-1:-1;;;;;;;;;23538:706:26:o;2911:231::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;2997:9:::1;2992:146;3012:21:::0;;::::1;2992:146;;;3055:18;:33;3074:10;;3085:1;3074:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3055:33:::0;;-1:-1:-1;3055:33:26;::::1;::::0;;;;;;-1:-1:-1;3055:33:26;3048:40;;-1:-1:-1;;;;;;3048:40:26::1;::::0;;3117:10;;3128:1;3117:13;;::::1;;;;;:::i;:::-;;;;;;;3101:30;;;;;;;;;;3035:3;;2992:146;;;;2911:231:::0;;:::o;14544:210::-;14664:4;14683:66;14703:16;14713:6;14703:7;:16;:::i;:::-;14721:19;14742:6;14683:19;:66::i;2617:290::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;2742:9:::1;2737:166;2757:21:::0;;::::1;2737:166;;;2829:9;;2839:1;2829:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2793:18;:33;2812:10;;2823:1;2812:13;;;;;;;:::i;:::-;;;;;;;2793:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2793:48:26::1;;;;;-1:-1:-1::0;;;;;2793:48:26::1;;;;;;2883:9;;2893:1;2883:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2854:42:26::1;2868:10;;2879:1;2868:13;;;;;;;:::i;:::-;;;;;;;2854:42;;;;;;;;;;2780:3;;2737:166;;;;2617:290:::0;;;;:::o;17587:211::-;17706:4;17725:68;17745:16;17755:6;17745:7;:16;:::i;:::-;17763:21;17786:6;17725:19;:68::i;6855:541::-;6970:4;;;;7028:15;:33;7062:22;;;;:6;:22;:::i;:::-;7086:27;;;;:6;:27;:::i;:::-;7028:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6982:132;;;;;;7128:66;7150:11;7163:6;:30;;;7128:21;:66::i;:::-;7120:154;;;;-1:-1:-1;;;7120:154:26;;;;;;;:::i;:::-;7288:8;;;;7280:85;;;;;-1:-1:-1;;;7280:85:26;;27668:2:34;7280:85:26;;;27650:21:34;27687:18;;;27680:30;;;;27746:34;27726:18;;;27719:62;27817:34;27797:18;;;27790:62;27869:19;;7280:85:26;27466:428:34;7280:85:26;7378:13;;;;;;;;-1:-1:-1;;;6855:541:26;;;;:::o;7638:228::-;7746:4;7775:1;7766:6;:10;;;7758:53;;;;-1:-1:-1;;;7758:53:26;;28101:2:34;7758:53:26;;;28083:21:34;28140:2;28120:18;;;28113:30;28179:32;28159:18;;;28152:60;28229:18;;7758:53:26;27899:354:34;7758:53:26;7824:37;7842:10;7851:1;7842:6;:10;:::i;:::-;7854:6;7824:17;:37::i;8114:159::-;8219:4;8238:30;8251:3;8256;8261:6;8238:12;:30::i;13544:224::-;13684:4;13703:60;13717:7;13726;13735:19;13756:6;13703:13;:60::i;18074:195::-;18189:4;18208:56;18222:4;18228;18234:21;18257:6;18208:13;:56::i;15999:209::-;16117:4;16136:67;16155:16;:7;16165:6;16155:16;:::i;:::-;16173:21;16196:6;16136:18;:67::i;26163:3206::-;26270:12;2217:6;;26270:12;;-1:-1:-1;;;2217:6:26;;;;2216:7;2208:38;;;;-1:-1:-1;;;2208:38:26;;28616:2:34;2208:38:26;;;28598:21:34;28655:2;28635:18;;;28628:30;-1:-1:-1;;;28674:18:34;;;28667:48;28732:18;;2208:38:26;28414:342:34;2208:38:26;26393:16:::1;26412:29;26425:15:::0;::::1;26412:12;:29::i;:::-;26393:48:::0;-1:-1:-1;26490:90:26::1;26515:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;977:1:19;26515:64:26;;;;;;;:::i;:::-;;;;;;;26490:24;:90::i;:::-;26625:82;26646:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;1029:1:19;26646:60:26;;;;;;;:::i;:::-;;;;;;;26625:20;:82::i;:::-;26765:62;26775:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;26765:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;26796:30:26::1;::::0;::::1;;26765:9;:62::i;:::-;26750:144;;;::::0;-1:-1:-1;;;26750:144:26;;29513:2:34;26750:144:26::1;::::0;::::1;29495:21:34::0;29552:2;29532:18;;;29525:30;29591:34;29571:18;;;29564:62;-1:-1:-1;;;29642:18:34;;;29635:49;29701:19;;26750:144:26::1;29311:415:34::0;26750:144:26::1;27238:62;27251:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27272:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;27287:12;;::::0;::::1;:6:::0;:12:::1;:::i;27238:62::-;27230:98;;;::::0;-1:-1:-1;;;27230:98:26;;30460:2:34;27230:98:26::1;::::0;::::1;30442:21:34::0;30499:2;30479:18;;;30472:30;30538:25;30518:18;;;30511:53;30581:18;;27230:98:26::1;30258:347:34::0;27230:98:26::1;27396:244;27482:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;1195:1:19;::::0;27567::26::1;27538:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;27538:30:26::1;:::i;:::-;27482:87;;;;;;;:::i;:::-;27396:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27577:22:26::1;::::0;-1:-1:-1;;;27577:22:26::1;::::0;::::1;::::0;::::1;:::i;:::-;27607:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;27396:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27396:21:26::1;::::0;-1:-1:-1;;;27396:244:26:i:1;:::-;27647:27;27699:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27748:1;27719:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;27719:30:26::1;:::i;:::-;27699:51;;;;;;;:::i;:::-;;;;;;;27691:60;;27677:75;;;;;;;;:::i;:::-;27647:105:::0;-1:-1:-1;28016:39:26::1;27999:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;28076:35:26::1;28059:13;:52;;;;;;;;:::i;:::-;;;27999:112;27998:138;;;-1:-1:-1::0;28122:14:26::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;27983:209;;;::::0;-1:-1:-1;;;27983:209:26;;31172:2:34;27983:209:26::1;::::0;::::1;31154:21:34::0;31211:2;31191:18;;;31184:30;31250:34;31230:18;;;31223:62;-1:-1:-1;;;31301:18:34;;;31294:38;31349:19;;27983:209:26::1;30970:404:34::0;27983:209:26::1;28423:34;28406:13;:51;;;;;;;;:::i;:::-;;:69;;;-1:-1:-1::0;28461:14:26::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;28391:143;;;::::0;-1:-1:-1;;;28391:143:26;;31581:2:34;28391:143:26::1;::::0;::::1;31563:21:34::0;31620:2;31600:18;;;31593:30;31659:34;31639:18;;;31632:62;-1:-1:-1;;;31710:18:34;;;31703:41;31761:19;;28391:143:26::1;31379:407:34::0;28391:143:26::1;1337:1:19;28752:19:26;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:89;::::0;;-1:-1:-1;28752:89:26::1;:::i;:::-;28714:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;:34;;:127;28706:177;;;::::0;-1:-1:-1;;;28706:177:26;;31993:2:34;28706:177:26::1;::::0;::::1;31975:21:34::0;32032:2;32012:18;;;32005:30;32071:34;32051:18;;;32044:62;-1:-1:-1;;;32122:18:34;;;32115:35;32167:19;;28706:177:26::1;31791:401:34::0;28706:177:26::1;-1:-1:-1::0;;;;;29002:26:26;::::1;;29029:12;;::::0;::::1;:6:::0;:12:::1;:::i;:::-;29043:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;29002:61;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28992:71:::0;-1:-1:-1;29126:29:26::1;29187:1;29158:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;29158:30:26::1;:::i;:::-;29126:62:::0;-1:-1:-1;29213:19:26::1;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;29233:21;29213:42;;;;;;;:::i;:::-;;;;;;;29194:61;;29330:34;;;26163:3206:::0;;;:::o;14071:206::-;14196:4;14215:57;14235:7;14244:19;14265:6;14215:19;:57::i;20388:223::-;20517:4;20536:70;20553:11;20566:31;20599:6;20536:16;:70::i;17105:209::-;17231:4;17250:59;17270:7;17279:21;17302:6;17250:19;:59::i;19757:229::-;19888:4;19907:74;19924:11;19937:35;19974:6;19907:16;:74::i;19203:222::-;19331:4;19350:70;19367:11;19380:31;19413:6;19350:16;:70::i;8277:1133::-;8422:4;;;;8484:15;:34;8519:22;;;;:6;:22;:::i;:::-;8543:27;;;;:6;:27;:::i;:::-;8572:9;8484:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8434:148;;;;;;8596:66;8618:11;8631:6;:30;;;8596:21;:66::i;:::-;8588:154;;;;-1:-1:-1;;;8588:154:26;;;;;;;:::i;:::-;8769:19;8756:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;8805:21:26;8792:9;:34;;;;;;;;:::i;:::-;;8756:70;8748:101;;;;-1:-1:-1;;;8748:101:26;;;;;;;:::i;:::-;8872:19;8859:9;:32;;;;;;;;:::i;:::-;;8855:551;;8909:8;;8901:91;;;;-1:-1:-1;;;8901:91:26;;34663:2:34;8901:91:26;;;34645:21:34;34702:2;34682:18;;;34675:30;34741:34;34721:18;;;34714:62;34812:34;34792:18;;;34785:62;-1:-1:-1;;;34863:19:34;;;34856:37;34910:19;;8901:91:26;34461:474:34;8901:91:26;9222:35;144:10:19;9222:3:26;:35;:::i;:::-;9211:7;:46;9204:53;;;;;;;8855:551;9286:8;;9278:92;;;;-1:-1:-1;;;9278:92:26;;35142:2:34;9278:92:26;;;35124:21:34;35181:2;35161:18;;;35154:30;35220:34;35200:18;;;35193:62;35291:34;35271:18;;;35264:62;-1:-1:-1;;;35342:19:34;;;35335:38;35390:19;;9278:92:26;34940:475:34;9278:92:26;-1:-1:-1;9385:14:26;;;-1:-1:-1;9378:21:26;;-1:-1:-1;9378:21:26;9414:1549;9575:4;;;;9637:15;:34;9672:22;;;;:6;:22;:::i;:::-;9696:27;;;;:6;:27;:::i;:::-;9725:9;9637:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9587:148;;;;;;9749:66;9771:11;9784:6;:30;;;9749:21;:66::i;:::-;9741:154;;;;-1:-1:-1;;;9741:154:26;;;;;;;:::i;:::-;9920:7;9909;:18;;9901:78;;;;-1:-1:-1;;;9901:78:26;;35622:2:34;9901:78:26;;;35604:21:34;35661:2;35641:18;;;35634:30;35700:34;35680:18;;;35673:62;-1:-1:-1;;;35751:18:34;;;35744:45;35806:19;;9901:78:26;35420:411:34;9901:78:26;10006:19;9993:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;10042:21:26;10029:9;:34;;;;;;;;:::i;:::-;;9993:70;9985:101;;;;-1:-1:-1;;;9985:101:26;;;;;;;:::i;:::-;10109:19;10096:9;:32;;;;;;;;:::i;:::-;;10092:867;;10146:3;10153:1;10146:8;10138:103;;;;-1:-1:-1;;;10138:103:26;;36038:2:34;10138:103:26;;;36020:21:34;36077:2;36057:18;;;36050:30;36116:34;36096:18;;;36089:62;36187:34;36167:18;;;36160:62;-1:-1:-1;;;36238:19:34;;;36231:49;36297:19;;10138:103:26;35836:486:34;10138:103:26;10257:3;10264:1;10257:8;10249:103;;;;-1:-1:-1;;;10249:103:26;;;;;;;:::i;:::-;10583:35;144:10:19;10583:3:26;:35;:::i;:::-;10572:7;:46;:96;;;;-1:-1:-1;10633:35:26;144:10:19;10633:3:26;:35;:::i;:::-;10622:7;:46;10572:96;10565:103;;;;;;;10092:867;10697:3;10704:1;10697:8;10689:104;;;;-1:-1:-1;;;10689:104:26;;37020:2:34;10689:104:26;;;37002:21:34;37059:2;37039:18;;;37032:30;37098:34;37078:18;;;37071:62;37169:34;37149:18;;;37142:62;-1:-1:-1;;;37220:19:34;;;37213:50;37280:19;;10689:104:26;36818:487:34;10689:104:26;10809:3;10816:1;10809:8;10801:104;;;;-1:-1:-1;;;10801:104:26;;;;;;;:::i;:::-;10931:3;10920:7;:14;:32;;;;-1:-1:-1;10938:14:26;;;;9414:1549;-1:-1:-1;;;;;;9414:1549:26:o;18273:606::-;18428:4;;;18509:15;:37;18547:22;;;;:6;:22;:::i;:::-;18571:27;;;;:6;:27;:::i;:::-;18600:9;18509:101;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18509:101:26;;;;;;;;;;;;:::i;:::-;18440:170;;;;18642:22;18620:11;:18;:44;18616:77;;18681:5;18674:12;;;;;;18616:77;18703:9;18698:160;18722:22;18718:1;:26;18698:160;;;18764:55;18783:11;18795:1;18783:14;;;;;;;;:::i;:::-;;;;;;;18799:16;18816:1;18799:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;18764:55:26;18759:93;;18838:5;18831:12;;;;;;;18759:93;18746:3;;18698:160;;;-1:-1:-1;18870:4:26;;18273:606;-1:-1:-1;;;;;;18273:606:26:o;392:337:20:-;500:4;;546:35;558:23;546:9;:35;:::i;:::-;512:69;;619:9;600:15;:28;;:73;;;;;664:9;638:23;:35;600:73;:124;;;;-1:-1:-1;709:15:20;-1:-1:-1;683:41:20;392:337;-1:-1:-1;;;392:337:20:o;25666:204:26:-;25756:12;;:62;;-1:-1:-1;;;25756:62:26;;912:1;25756:62;;;39154:25:34;39195:18;;;39188:34;;;-1:-1:-1;;;;;25756:12:26;;;;:24;;39127:18:34;;25756:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25741:124;;;;-1:-1:-1;;;25741:124:26;;39435:2:34;25741:124:26;;;39417:21:34;39474:2;39454:18;;;39447:30;39513:33;39493:18;;;39486:61;39564:18;;25741:124:26;39233:355:34;25741:124:26;25666:204;:::o;262:101:24:-;338:15;:20;;262:101::o;10967:1250:26:-;11113:4;;;;11175:15;:34;11210:22;;;;:6;:22;:::i;:::-;11234:27;;;;:6;:27;:::i;:::-;11263:9;11175:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11125:148;;;;;;11287:66;11309:11;11322:6;:30;;;11287:21;:66::i;:::-;11279:154;;;;-1:-1:-1;;;11279:154:26;;;;;;;:::i;:::-;11447:8;;11439:86;;;;-1:-1:-1;;;11439:86:26;;39795:2:34;11439:86:26;;;39777:21:34;39834:2;39814:18;;;39807:30;39873:34;39853:18;;;39846:62;39944:34;39924:18;;;39917:62;-1:-1:-1;;;39995:19:34;;;39988:32;40037:19;;11439:86:26;39593:469:34;11439:86:26;11552:19;11539:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;11588:21:26;11575:9;:34;;;;;;;;:::i;:::-;;11539:70;11531:101;;;;-1:-1:-1;;;11531:101:26;;;;;;;:::i;:::-;11655:19;11642:9;:32;;;;;;;;:::i;:::-;;11638:575;;11692:3;11699:1;11692:8;11684:103;;;;-1:-1:-1;;;11684:103:26;;;;;;;:::i;:::-;12017:35;144:10:19;12017:3:26;:35;:::i;11638:575::-;12081:3;12088:1;12081:8;12073:104;;;;-1:-1:-1;;;12073:104:26;;;;;;;:::i;:::-;12192:14;;;-1:-1:-1;12185:21:26;;-1:-1:-1;;12185:21:26;25036:210;25099:7;25133:28;;;:18;:28;;;;;;-1:-1:-1;;;;;25133:28:26;;25167:53;;;;-1:-1:-1;;;25167:53:26;;40269:2:34;25167:53:26;;;40251:21:34;40308:2;40288:18;;;40281:30;-1:-1:-1;;;40327:18:34;;;40320:48;40385:18;;25167:53:26;40067:342:34;25250:214:26;25344:12;;:66;;-1:-1:-1;;;25344:66:26;;:12;:66;;;39154:25:34;39195:18;;;39188:34;;;-1:-1:-1;;;;;25344:12:26;;;;:24;;39127:18:34;;25344:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25329:130;;;;-1:-1:-1;;;25329:130:26;;40616:2:34;25329:130:26;;;40598:21:34;40655:2;40635:18;;;40628:30;40694:34;40674:18;;;40667:62;-1:-1:-1;;;40745:18:34;;;40738:31;40786:19;;25329:130:26;40414:397:34;25468:194:26;25554:12;;;:58;;-1:-1:-1;;;25554:58:26;;;;;39154:25:34;;;;39195:18;;;39188:34;;;-1:-1:-1;;;;;25554:12:26;;:24;;39127:18:34;;25554:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25539:118;;;;-1:-1:-1;;;25539:118:26;;41018:2:34;25539:118:26;;;41000:21:34;41057:2;41037:18;;;41030:30;41096:31;41076:18;;;41069:59;41145:18;;25539:118:26;40816:353:34;3356:300:26;3474:4;3486:28;3525:12;1072:1:19;3525:44:26;;;;;;;;:::i;:::-;;;;;;;3517:53;;3486:84;;3583:68;3605:20;3627:23;3583:21;:68::i;24248:784::-;24421:14;;24445:410;24469:20;:27;24465:1;:31;24445:410;;;24591:28;24724:1;24622:98;24655:15;;24671:6;24655:56;24687:20;24708:1;24687:23;;;;;;;;:::i;:::-;;;;;;;24678:6;:32;;;;:::i;:::-;24655:56;;;;;;;:::i;:::-;24638:74;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;24638:74:26;;;;;;;;;;24622:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;;24591:134;;24765:16;24782:1;24765:19;;;;;;;;:::i;:::-;;;;;;;24741:20;:43;24733:74;;;;-1:-1:-1;;;24733:74:26;;41994:2:34;24733:74:26;;;41976:21:34;42033:2;42013:18;;;42006:30;-1:-1:-1;;;42052:18:34;;;42045:48;42110:18;;24733:74:26;41792:342:34;24733:74:26;24825:20;24846:1;24825:23;;;;;;;;:::i;:::-;;;;;;;24815:33;;;;;:::i;:::-;;-1:-1:-1;;24498:3:26;;24445:410;;;-1:-1:-1;24959:32:26;;;24951:76;;;;-1:-1:-1;;;24951:76:26;;42341:2:34;24951:76:26;;;42323:21:34;42380:2;42360:18;;;42353:30;42419:33;42399:18;;;42392:61;42470:18;;24951:76:26;42139:355:34;14:172;90:5;135:3;126:6;121:3;117:16;113:26;110:46;;;152:1;149;142:12;110:46;-1:-1:-1;174:6:34;14:172;-1:-1:-1;14:172:34:o;191:503::-;303:6;311;364:2;352:9;343:7;339:23;335:32;332:52;;;380:1;377;370:12;332:52;425:23;;;-1:-1:-1;523:2:34;508:18;;495:32;-1:-1:-1;;;;;539:30:34;;536:50;;;582:1;579;572:12;536:50;605:83;680:7;671:6;660:9;656:22;605:83;:::i;:::-;595:93;;;191:503;;;;;:::o;891:118::-;977:5;970:13;963:21;956:5;953:32;943:60;;999:1;996;989:12;1014:241;1070:6;1123:2;1111:9;1102:7;1098:23;1094:32;1091:52;;;1139:1;1136;1129:12;1091:52;1178:9;1165:23;1197:28;1219:5;1197:28;:::i;1260:131::-;-1:-1:-1;;;;;1335:31:34;;1325:42;;1315:70;;1381:1;1378;1371:12;1396:247;1455:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:52;;;1524:1;1521;1514:12;1476:52;1563:9;1550:23;1582:31;1607:5;1582:31;:::i;1648:518::-;1757:6;1765;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1874:9;1861:23;-1:-1:-1;;;;;1899:6:34;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:83;2037:7;2028:6;2017:9;2013:22;1962:83;:::i;:::-;1952:93;;;2095:2;2084:9;2080:18;2067:32;2108:28;2130:5;2108:28;:::i;:::-;2155:5;2145:15;;;1648:518;;;;;:::o;2171:289::-;2213:3;2251:5;2245:12;2278:6;2273:3;2266:19;2334:6;2327:4;2320:5;2316:16;2309:4;2304:3;2300:14;2294:47;2386:1;2379:4;2370:6;2365:3;2361:16;2357:27;2350:38;2449:4;2442:2;2438:7;2433:2;2425:6;2421:15;2417:29;2412:3;2408:39;2404:50;2397:57;;;2171:289;;;;:::o;2465:1698::-;2658:2;2647:9;2640:21;2621:4;2696:6;2690:13;2739:6;2734:2;2723:9;2719:18;2712:34;2769:52;2816:3;2805:9;2801:19;2787:12;2769:52;:::i;:::-;2755:66;;2870:2;2862:6;2858:15;2852:22;2942:2;2938:7;2926:9;2918:6;2914:22;2910:36;2905:2;2894:9;2890:18;2883:64;2970:41;3004:6;2988:14;2970:41;:::i;:::-;2956:55;;;3060:2;3052:6;3048:15;3042:22;3132:2;3128:7;3116:9;3108:6;3104:22;3100:36;3095:2;3084:9;3080:18;3073:64;3160:41;3194:6;3178:14;3160:41;:::i;:::-;3146:55;;;3250:2;3242:6;3238:15;3232:22;3323:2;3319:7;3307:9;3299:6;3295:22;3291:36;3285:3;3274:9;3270:19;3263:65;3351:41;3385:6;3369:14;3351:41;:::i;:::-;3337:55;;;3441:3;3433:6;3429:16;3423:23;3515:2;3511:7;3499:9;3491:6;3487:22;3483:36;3477:3;3466:9;3462:19;3455:65;3543:41;3577:6;3561:14;3543:41;:::i;:::-;3529:55;;;3633:3;3625:6;3621:16;3615:23;3707:2;3703:7;3691:9;3683:6;3679:22;3675:36;3669:3;3658:9;3654:19;3647:65;3735:41;3769:6;3753:14;3735:41;:::i;:::-;3721:55;;;3825:3;3817:6;3813:16;3807:23;3899:2;3895:7;3883:9;3875:6;3871:22;3867:36;3861:3;3850:9;3846:19;3839:65;3927:41;3961:6;3945:14;3927:41;:::i;:::-;3913:55;;;4017:3;4009:6;4005:16;3999:23;4094:2;4090:7;4078:9;4070:6;4066:22;4062:36;4053:6;4042:9;4038:22;4031:68;4116:41;4150:6;4134:14;4116:41;:::i;:::-;4108:49;2465:1698;-1:-1:-1;;;;;2465:1698:34:o;4168:112::-;4254:1;4247:5;4244:12;4234:40;;4270:1;4267;4260:12;4285:554;4416:6;4424;4477:2;4465:9;4456:7;4452:23;4448:32;4445:52;;;4493:1;4490;4483:12;4445:52;4532:9;4519:23;4551:42;4587:5;4551:42;:::i;:::-;4612:5;-1:-1:-1;4668:2:34;4653:18;;4640:32;-1:-1:-1;;;;;4684:30:34;;4681:50;;;4727:1;4724;4717:12;4844:114;4928:4;4921:5;4917:16;4910:5;4907:27;4897:55;;4948:1;4945;4938:12;4963:520;5073:6;5081;5134:2;5122:9;5113:7;5109:23;5105:32;5102:52;;;5150:1;5147;5140:12;5102:52;5189:9;5176:23;5208:29;5231:5;5208:29;:::i;5488:127::-;5549:10;5544:3;5540:20;5537:1;5530:31;5580:4;5577:1;5570:15;5604:4;5601:1;5594:15;5620:255;5692:2;5686:9;5734:6;5722:19;;-1:-1:-1;;;;;5756:34:34;;5792:22;;;5753:62;5750:88;;;5818:18;;:::i;:::-;5854:2;5847:22;5620:255;:::o;5880:275::-;5951:2;5945:9;6016:2;5997:13;;-1:-1:-1;;5993:27:34;5981:40;;-1:-1:-1;;;;;6036:34:34;;6072:22;;;6033:62;6030:88;;;6098:18;;:::i;:::-;6134:2;6127:22;5880:275;;-1:-1:-1;5880:275:34:o;6160:182::-;6219:4;-1:-1:-1;;;;;6244:6:34;6241:30;6238:56;;;6274:18;;:::i;:::-;-1:-1:-1;6319:1:34;6315:14;6331:4;6311:25;;6160:182::o;6347:187::-;6396:4;-1:-1:-1;;;;;6421:6:34;6418:30;6415:56;;;6451:18;;:::i;:::-;-1:-1:-1;6517:2:34;6496:15;-1:-1:-1;;6492:29:34;6523:4;6488:40;;6347:187::o;6539:1793::-;6686:6;6694;6747:2;6735:9;6726:7;6722:23;6718:32;6715:52;;;6763:1;6760;6753:12;6715:52;6803:9;6790:23;-1:-1:-1;;;;;6828:6:34;6825:30;6822:50;;;6868:1;6865;6858:12;6822:50;6891:22;;6944:4;6936:13;;6932:27;-1:-1:-1;6922:55:34;;6973:1;6970;6963:12;6922:55;7013:2;7000:16;7036:63;7052:46;7091:6;7052:46;:::i;:::-;7036:63;:::i;:::-;7121:3;7145:6;7140:3;7133:19;7177:4;7172:3;7168:14;7161:21;;7234:4;7224:6;7221:1;7217:14;7213:2;7209:23;7205:34;7191:48;;7262:7;7254:6;7251:19;7248:39;;;7283:1;7280;7273:12;7248:39;7315:4;7311:2;7307:13;7329:749;7345:6;7340:3;7337:15;7329:749;;;7433:3;7420:17;-1:-1:-1;;;;;7456:11:34;7453:35;7450:55;;;7501:1;7498;7491:12;7450:55;7528:20;;7583:2;7575:11;;7571:25;-1:-1:-1;7561:53:34;;7610:1;7607;7600:12;7561:53;7664:4;7660:2;7656:13;7643:27;7698:55;7714:38;7743:8;7714:38;:::i;7698:55::-;7766:25;;;7810:39;7818:17;;;7810:39;7807:52;-1:-1:-1;7804:72:34;;;7872:1;7869;7862:12;7804:72;7935:8;7930:2;7926;7922:11;7915:4;7906:7;7902:18;7889:55;7999:1;7992:4;7981:8;7972:7;7968:22;7964:33;7957:44;8026:7;8021:3;8014:20;;;;8063:4;8058:3;8054:14;8047:21;;7371:4;7366:3;7362:14;7355:21;;7329:749;;;-1:-1:-1;8097:5:34;-1:-1:-1;;;;8155:4:34;8140:20;;8127:34;-1:-1:-1;;;;;8173:32:34;;8170:52;;;8218:1;8215;8208:12;8519:623;8640:6;8648;8656;8709:2;8697:9;8688:7;8684:23;8680:32;8677:52;;;8725:1;8722;8715:12;8677:52;8770:23;;;-1:-1:-1;8890:2:34;8875:18;;8862:32;;-1:-1:-1;8971:2:34;8956:18;;8943:32;-1:-1:-1;;;;;8987:30:34;;8984:50;;;9030:1;9027;9020:12;8984:50;9053:83;9128:7;9119:6;9108:9;9104:22;9053:83;:::i;:::-;9043:93;;;8519:623;;;;;:::o;9147:389::-;9250:6;9303:2;9291:9;9282:7;9278:23;9274:32;9271:52;;;9319:1;9316;9309:12;9271:52;9359:9;9346:23;-1:-1:-1;;;;;9384:6:34;9381:30;9378:50;;;9424:1;9421;9414:12;9378:50;9447:83;9522:7;9513:6;9502:9;9498:22;9447:83;:::i;9541:492::-;9726:2;9715:9;9708:21;9801:1;9797;9792:3;9788:11;9784:19;9775:6;9769:13;9765:39;9760:2;9749:9;9745:18;9738:67;9859:2;9851:6;9847:15;9841:22;9836:2;9825:9;9821:18;9814:50;9689:4;9911:2;9903:6;9899:15;9893:22;9953:4;9946;9935:9;9931:20;9924:34;9975:52;10022:3;10011:9;10007:19;9993:12;9975:52;:::i;10038:657::-;10155:6;10163;10171;10224:2;10212:9;10203:7;10199:23;10195:32;10192:52;;;10240:1;10237;10230:12;10192:52;10279:9;10266:23;10298:29;10321:5;10298:29;:::i;:::-;10346:5;-1:-1:-1;10403:2:34;10388:18;;10375:32;10416:31;10375:32;10416:31;:::i;:::-;10466:7;-1:-1:-1;10524:2:34;10509:18;;10496:32;-1:-1:-1;;;;;10540:30:34;;10537:50;;;10583:1;10580;10573:12;10700:180;10759:6;10812:2;10800:9;10791:7;10787:23;10783:32;10780:52;;;10828:1;10825;10818:12;10780:52;-1:-1:-1;10851:23:34;;10700:180;-1:-1:-1;10700:180:34:o;11093:367::-;11156:8;11166:6;11220:3;11213:4;11205:6;11201:17;11197:27;11187:55;;11238:1;11235;11228:12;11187:55;-1:-1:-1;11261:20:34;;-1:-1:-1;;;;;11293:30:34;;11290:50;;;11336:1;11333;11326:12;11290:50;11373:4;11365:6;11361:17;11349:29;;11433:3;11426:4;11416:6;11413:1;11409:14;11401:6;11397:27;11393:38;11390:47;11387:67;;;11450:1;11447;11440:12;11387:67;11093:367;;;;;:::o;11465:348::-;11517:8;11527:6;11581:3;11574:4;11566:6;11562:17;11558:27;11548:55;;11599:1;11596;11589:12;11548:55;-1:-1:-1;11622:20:34;;-1:-1:-1;;;;;11654:30:34;;11651:50;;;11697:1;11694;11687:12;11651:50;11734:4;11726:6;11722:17;11710:29;;11786:3;11779:4;11770:6;11762;11758:19;11754:30;11751:39;11748:59;;;11803:1;11800;11793:12;11818:1047;11946:6;11954;11962;11970;11978;11986;12039:2;12027:9;12018:7;12014:23;12010:32;12007:52;;;12055:1;12052;12045:12;12007:52;12095:9;12082:23;-1:-1:-1;;;;;12120:6:34;12117:30;12114:50;;;12160:1;12157;12150:12;12114:50;12199:70;12261:7;12252:6;12241:9;12237:22;12199:70;:::i;:::-;12288:8;;-1:-1:-1;12173:96:34;-1:-1:-1;;12376:2:34;12361:18;;12348:32;-1:-1:-1;;;;;12392:32:34;;12389:52;;;12437:1;12434;12427:12;12389:52;12476:61;12529:7;12518:8;12507:9;12503:24;12476:61;:::i;:::-;12556:8;;-1:-1:-1;12450:87:34;-1:-1:-1;;12644:2:34;12629:18;;12616:32;-1:-1:-1;;;;;12660:32:34;;12657:52;;;12705:1;12702;12695:12;12657:52;12744:61;12797:7;12786:8;12775:9;12771:24;12744:61;:::i;:::-;11818:1047;;;;-1:-1:-1;11818:1047:34;;-1:-1:-1;11818:1047:34;;12824:8;;11818:1047;-1:-1:-1;;;11818:1047:34:o;12870:437::-;12956:6;12964;13017:2;13005:9;12996:7;12992:23;12988:32;12985:52;;;13033:1;13030;13023:12;12985:52;13073:9;13060:23;-1:-1:-1;;;;;13098:6:34;13095:30;13092:50;;;13138:1;13135;13128:12;13092:50;13177:70;13239:7;13230:6;13219:9;13215:22;13177:70;:::i;:::-;13266:8;;13151:96;;-1:-1:-1;12870:437:34;-1:-1:-1;;;;12870:437:34:o;13312:768::-;13434:6;13442;13450;13458;13511:2;13499:9;13490:7;13486:23;13482:32;13479:52;;;13527:1;13524;13517:12;13479:52;13567:9;13554:23;-1:-1:-1;;;;;13592:6:34;13589:30;13586:50;;;13632:1;13629;13622:12;13586:50;13671:70;13733:7;13724:6;13713:9;13709:22;13671:70;:::i;:::-;13760:8;;-1:-1:-1;13645:96:34;-1:-1:-1;;13848:2:34;13833:18;;13820:32;-1:-1:-1;;;;;13864:32:34;;13861:52;;;13909:1;13906;13899:12;13861:52;13948:72;14012:7;14001:8;13990:9;13986:24;13948:72;:::i;:::-;13312:768;;;;-1:-1:-1;14039:8:34;-1:-1:-1;;;;13312:768:34:o;14579:127::-;14640:10;14635:3;14631:20;14628:1;14621:31;14671:4;14668:1;14661:15;14695:4;14692:1;14685:15;14711:125;14776:9;;;14797:10;;;14794:36;;;14810:18;;:::i;14841:350::-;15043:2;15025:21;;;15082:2;15062:18;;;15055:30;15121:28;15116:2;15101:18;;15094:56;15182:2;15167:18;;14841:350::o;15601:521::-;15678:4;15684:6;15744:11;15731:25;15838:2;15834:7;15823:8;15807:14;15803:29;15799:43;15779:18;15775:68;15765:96;;15857:1;15854;15847:12;15765:96;15884:33;;15936:20;;;-1:-1:-1;;;;;;15968:30:34;;15965:50;;;16011:1;16008;16001:12;15965:50;16044:4;16032:17;;-1:-1:-1;16075:14:34;16071:27;;;16061:38;;16058:58;;;16112:1;16109;16102:12;16127:545;16220:4;16226:6;16286:11;16273:25;16380:2;16376:7;16365:8;16349:14;16345:29;16341:43;16321:18;16317:68;16307:96;;16399:1;16396;16389:12;16307:96;16426:33;;16478:20;;;-1:-1:-1;;;;;;16510:30:34;;16507:50;;;16553:1;16550;16543:12;16507:50;16586:4;16574:17;;-1:-1:-1;16637:1:34;16633:14;;;16617;16613:35;16603:46;;16600:66;;;16662:1;16659;16652:12;16677:266;16765:6;16760:3;16753:19;16817:6;16810:5;16803:4;16798:3;16794:14;16781:43;-1:-1:-1;16869:1:34;16844:16;;;16862:4;16840:27;;;16833:38;;;;16925:2;16904:15;;;-1:-1:-1;;16900:29:34;16891:39;;;16887:50;;16677:266::o;16948:311::-;17036:19;;;17018:3;-1:-1:-1;;;;;17067:31:34;;17064:51;;;17111:1;17108;17101:12;17064:51;17147:6;17144:1;17140:14;17199:8;17192:5;17185:4;17180:3;17176:14;17163:45;17228:18;;;;17248:4;17224:29;;16948:311;-1:-1:-1;;;16948:311:34:o;17264:483::-;17517:2;17506:9;17499:21;17480:4;17543:61;17600:2;17589:9;17585:18;17577:6;17569;17543:61;:::i;:::-;17652:9;17644:6;17640:22;17635:2;17624:9;17620:18;17613:50;17680:61;17734:6;17726;17718;17680:61;:::i;17752:514::-;17805:5;17858:3;17851:4;17843:6;17839:17;17835:27;17825:55;;17876:1;17873;17866:12;17825:55;17909:6;17903:13;17948:4;17940:6;17936:17;17977:1;17998:53;18014:36;18043:6;18014:36;:::i;17998:53::-;17987:64;;18076:6;18067:7;18060:23;18116:3;18107:6;18102:3;18098:16;18095:25;18092:45;;;18133:1;18130;18123:12;18092:45;18177:6;18172:3;18165:4;18156:7;18152:18;18146:38;18233:1;18204:20;;;18226:4;18200:31;18193:42;;;;-1:-1:-1;18208:7:34;17752:514;-1:-1:-1;;;17752:514:34:o;18271:553::-;18368:6;18376;18429:2;18417:9;18408:7;18404:23;18400:32;18397:52;;;18445:1;18442;18435:12;18397:52;18478:9;18472:16;-1:-1:-1;;;;;18503:6:34;18500:30;18497:50;;;18543:1;18540;18533:12;18497:50;18566:60;18618:7;18609:6;18598:9;18594:22;18566:60;:::i;:::-;18556:70;;;18672:2;18661:9;18657:18;18651:25;-1:-1:-1;;;;;18691:8:34;18688:32;18685:52;;;18733:1;18730;18723:12;18685:52;18756:62;18810:7;18799:8;18788:9;18784:24;18756:62;:::i;18829:307::-;19006:2;18995:9;18988:21;18969:4;19026:45;19067:2;19056:9;19052:18;19044:6;19026:45;:::i;:::-;19018:53;;19121:6;19114:14;19107:22;19102:2;19091:9;19087:18;19080:50;18829:307;;;;;:::o;19141:1972::-;19243:6;19296:2;19284:9;19275:7;19271:23;19267:32;19264:52;;;19312:1;19309;19302:12;19264:52;19345:9;19339:16;-1:-1:-1;;;;;19370:6:34;19367:30;19364:50;;;19410:1;19407;19400:12;19364:50;19433:22;;19489:6;19471:16;;;19467:29;19464:49;;;19509:1;19506;19499:12;19464:49;19535:22;;:::i;:::-;19588:2;19582:9;-1:-1:-1;;;;;19606:8:34;19603:32;19600:52;;;19648:1;19645;19638:12;19600:52;19675:55;19722:7;19711:8;19707:2;19703:17;19675:55;:::i;:::-;19668:5;19661:70;;19770:2;19766;19762:11;19756:18;-1:-1:-1;;;;;19789:8:34;19786:32;19783:52;;;19831:1;19828;19821:12;19783:52;19867:55;19914:7;19903:8;19899:2;19895:17;19867:55;:::i;:::-;19862:2;19855:5;19851:14;19844:79;;19962:2;19958;19954:11;19948:18;-1:-1:-1;;;;;19981:8:34;19978:32;19975:52;;;20023:1;20020;20013:12;19975:52;20059:55;20106:7;20095:8;20091:2;20087:17;20059:55;:::i;:::-;20054:2;20047:5;20043:14;20036:79;;20154:2;20150;20146:11;20140:18;-1:-1:-1;;;;;20173:8:34;20170:32;20167:52;;;20215:1;20212;20205:12;20167:52;20251:55;20298:7;20287:8;20283:2;20279:17;20251:55;:::i;:::-;20246:2;20239:5;20235:14;20228:79;;20346:3;20342:2;20338:12;20332:19;-1:-1:-1;;;;;20366:8:34;20363:32;20360:52;;;20408:1;20405;20398:12;20360:52;20445:55;20492:7;20481:8;20477:2;20473:17;20445:55;:::i;:::-;20439:3;20432:5;20428:15;20421:80;;20540:3;20536:2;20532:12;20526:19;-1:-1:-1;;;;;20560:8:34;20557:32;20554:52;;;20602:1;20599;20592:12;20554:52;20639:55;20686:7;20675:8;20671:2;20667:17;20639:55;:::i;:::-;20633:3;20626:5;20622:15;20615:80;;20734:3;20730:2;20726:12;20720:19;-1:-1:-1;;;;;20754:8:34;20751:32;20748:52;;;20796:1;20793;20786:12;20748:52;20833:55;20880:7;20869:8;20865:2;20861:17;20833:55;:::i;:::-;20827:3;20820:5;20816:15;20809:80;;20928:3;20924:2;20920:12;20914:19;-1:-1:-1;;;;;20948:8:34;20945:32;20942:52;;;20990:1;20987;20980:12;20942:52;21027:55;21074:7;21063:8;21059:2;21055:17;21027:55;:::i;:::-;21021:3;21010:15;;21003:80;-1:-1:-1;21014:5:34;19141:1972;-1:-1:-1;;;;19141:1972:34:o;21118:668::-;21251:6;21259;21267;21275;21328:3;21316:9;21307:7;21303:23;21299:33;21296:53;;;21345:1;21342;21335:12;21296:53;21390:16;;21475:2;21460:18;;21454:25;21390:16;;-1:-1:-1;21510:1:34;21498:14;;21488:42;;21526:1;21523;21516:12;21488:42;21622:2;21607:18;;21601:25;21697:2;21682:18;;21676:25;21549:7;;-1:-1:-1;21601:25:34;-1:-1:-1;21710:44:34;21676:25;21710:44;:::i;:::-;21118:668;;;;-1:-1:-1;21118:668:34;;-1:-1:-1;;21118:668:34:o;21791:127::-;21852:10;21847:3;21843:20;21840:1;21833:31;21883:4;21880:1;21873:15;21907:4;21904:1;21897:15;21923:148;22011:4;21990:12;;;22004;;;21986:31;;22029:13;;22026:39;;;22045:18;;:::i;22076:490::-;22160:6;22168;22176;22229:2;22217:9;22208:7;22204:23;22200:32;22197:52;;;22245:1;22242;22235:12;22197:52;22290:16;;22375:2;22360:18;;22354:25;22290:16;;-1:-1:-1;22388:31:34;22354:25;22388:31;:::i;:::-;22490:2;22475:18;;22469:25;22438:7;;-1:-1:-1;22503:31:34;22469:25;22503:31;:::i;:::-;22553:7;22543:17;;;22076:490;;;;;:::o;22571:479::-;22773:2;22755:21;;;22812:2;22792:18;;;22785:30;22851:34;22846:2;22831:18;;22824:62;22922:34;22917:2;22902:18;;22895:62;-1:-1:-1;;;22988:3:34;22973:19;;22966:42;23040:3;23025:19;;22571:479::o;23488:335::-;23567:6;23620:2;23608:9;23599:7;23595:23;23591:32;23588:52;;;23636:1;23633;23626:12;23588:52;23669:9;23663:16;-1:-1:-1;;;;;23694:6:34;23691:30;23688:50;;;23734:1;23731;23724:12;23688:50;23757:60;23809:7;23800:6;23789:9;23785:22;23757:60;:::i;23828:226::-;23983:2;23972:9;23965:21;23946:4;24003:45;24044:2;24033:9;24029:18;24021:6;24003:45;:::i;24059:577::-;24157:6;24165;24173;24226:2;24214:9;24205:7;24201:23;24197:32;24194:52;;;24242:1;24239;24232:12;24194:52;24274:9;24268:16;24293:31;24318:5;24293:31;:::i;:::-;24414:2;24399:18;;24393:25;24488:2;24473:18;;24467:25;24343:5;;-1:-1:-1;24393:25:34;-1:-1:-1;;;;;;24504:30:34;;24501:50;;;24547:1;24544;24537:12;24501:50;24570:60;24622:7;24613:6;24602:9;24598:22;24570:60;:::i;26025:230::-;26095:6;26148:2;26136:9;26127:7;26123:23;26119:32;26116:52;;;26164:1;26161;26154:12;26116:52;-1:-1:-1;26209:16:34;;26025:230;-1:-1:-1;26025:230:34:o;26617:273::-;26802:6;26794;26789:3;26776:33;26758:3;26828:16;;26853:13;;;26828:16;26617:273;-1:-1:-1;26617:273:34:o;26895:301::-;27024:3;27062:6;27056:13;27108:6;27101:4;27093:6;27089:17;27084:3;27078:37;27170:1;27134:16;;27159:13;;;-1:-1:-1;27134:16:34;26895:301;-1:-1:-1;26895:301:34:o;27201:127::-;27262:10;27257:3;27253:20;27250:1;27243:31;27293:4;27290:1;27283:15;27317:4;27314:1;27307:15;27333:128;27400:9;;;27421:11;;;27418:37;;;27435:18;;:::i;28258:151::-;28348:4;28341:12;;;28327;;;28323:31;;28366:14;;28363:40;;;28383:18;;:::i;30610:355::-;30731:9;30742;30784:8;30772:10;30769:24;30766:44;;;30806:1;30803;30796:12;30766:44;30835:6;30825:8;30822:20;30819:40;;;30855:1;30852;30845:12;30819:40;-1:-1:-1;;30897:1:34;30893:18;;;30881:31;;30934:25;;;;;-1:-1:-1;30610:355:34:o;32677:245::-;32744:6;32797:2;32785:9;32776:7;32772:23;32768:32;32765:52;;;32813:1;32810;32803:12;32765:52;32845:9;32839:16;32864:28;32886:5;32864:28;:::i;32927:721::-;33221:2;33210:9;33203:21;33184:4;33247:61;33304:2;33293:9;33289:18;33281:6;33273;33247:61;:::i;:::-;33356:9;33348:6;33344:22;33339:2;33328:9;33324:18;33317:50;33384:61;33438:6;33430;33422;33384:61;:::i;:::-;33376:69;;;33475:2;33467:6;33464:14;33454:145;;33521:10;33516:3;33512:20;33509:1;33502:31;33556:4;33553:1;33546:15;33584:4;33581:1;33574:15;33454:145;33635:6;33630:2;33619:9;33615:18;33608:34;32927:721;;;;;;;;:::o;33653:456::-;33741:6;33749;33757;33810:2;33798:9;33789:7;33785:23;33781:32;33778:52;;;33826:1;33823;33816:12;33778:52;-1:-1:-1;;33871:16:34;;33977:2;33962:18;;33956:25;34073:2;34058:18;;;34052:25;33871:16;;33956:25;;-1:-1:-1;34052:25:34;33653:456;-1:-1:-1;33653:456:34:o;34114:342::-;34316:2;34298:21;;;34355:2;34335:18;;;34328:30;-1:-1:-1;;;34389:2:34;34374:18;;34367:48;34447:2;34432:18;;34114:342::o;36327:486::-;36529:2;36511:21;;;36568:2;36548:18;;;36541:30;36607:34;36602:2;36587:18;;36580:62;36678:34;36673:2;36658:18;;36651:62;-1:-1:-1;;;36744:3:34;36729:19;;36722:49;36803:3;36788:19;;36327:486::o;37310:487::-;37512:2;37494:21;;;37551:2;37531:18;;;37524:30;37590:34;37585:2;37570:18;;37563:62;37661:34;37656:2;37641:18;;37634:62;-1:-1:-1;;;37727:3:34;37712:19;;37705:50;37787:3;37772:19;;37310:487::o;37802:1173::-;37916:6;37924;37977:2;37965:9;37956:7;37952:23;37948:32;37945:52;;;37993:1;37990;37983:12;37945:52;38026:9;38020:16;-1:-1:-1;;;;;38051:6:34;38048:30;38045:50;;;38091:1;38088;38081:12;38045:50;38114:22;;38167:4;38159:13;;38155:27;-1:-1:-1;38145:55:34;;38196:1;38193;38186:12;38145:55;38229:2;38223:9;38252:63;38268:46;38307:6;38268:46;:::i;38252:63::-;38337:3;38361:6;38356:3;38349:19;38393:4;38388:3;38384:14;38377:21;;38450:4;38440:6;38437:1;38433:14;38429:2;38425:23;38421:34;38407:48;;38478:7;38470:6;38467:19;38464:39;;;38499:1;38496;38489:12;38464:39;38531:4;38527:2;38523:13;38545:308;38561:6;38556:3;38553:15;38545:308;;;38642:3;38636:10;-1:-1:-1;;;;;38665:11:34;38662:35;38659:55;;;38710:1;38707;38700:12;38659:55;38739:69;38800:7;38793:4;38779:11;38775:2;38771:20;38767:31;38739:69;:::i;:::-;38727:82;;-1:-1:-1;38838:4:34;38829:14;;;;38578;38545:308;;;-1:-1:-1;38939:4:34;38924:20;;;;38918:27;38872:5;;38918:27;;-1:-1:-1;;;;;;37802:1173:34:o;41174:331::-;41279:9;41290;41332:8;41320:10;41317:24;41314:44;;;41354:1;41351;41344:12;41314:44;41383:6;41373:8;41370:20;41367:40;;;41403:1;41400;41393:12;41367:40;-1:-1:-1;;41429:23:34;;;41474:25;;;;;-1:-1:-1;41174:331:34:o",
3066
+ object: "0x608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638d6937b811610135578063c3fa6f22116100b4578063ddd8f8e311610079578063ddd8f8e31461051a578063ec8e07291461052d578063f3757ad414610557578063f851a44014610577578063ff20370714610589575f5ffd5b8063c3fa6f22146104bb578063ca4051f2146104ce578063cf515d37146104e1578063d39a5cf9146104f4578063d4932b4e14610507575f5ffd5b8063ac20d678116100fa578063ac20d6781461045c578063b8bd48791461046f578063b96b161c14610482578063c04fa6fe14610495578063c1b77162146104a8575f5ffd5b80638d6937b8146103f05780638e2e2e621461040357806398e73ac3146104165780639c1a81a314610436578063a6df2c0114610449575f5ffd5b80635b7ab929116101c15780637e5a88f3116101865780637e5a88f3146103645780638163f23114610377578063818694f1146103b7578063847755e3146103ca5780638b2ec611146103dd575f5ffd5b80635b7ab9291461031b5780635c975abb1461032e578063652ba33d146103415780636c40d5d61461034957806375829def14610351575f5ffd5b8063311a335c11610207578063311a335c146102b9578063320d3b55146102cc5780633d6ed975146102df57806341a0e2c2146102f257806346b758a014610308575f5ffd5b806316c38b3c1461024357806316e3d7291461025857806318677f2a1461026b5780631fac43451461027e5780632e5ce77f146102a6575b5f5ffd5b610256610251366004612b12565b61059c565b005b610256610266366004612b43565b610625565b610256610279366004612b88565b6106ac565b61029161028c366004612bb3565b610759565b60405190151581526020015b60405180910390f35b6102916102b4366004612c2c565b610771565b6102916102c7366004612c63565b6108a5565b6102916102da366004612bb3565b6108bf565b6102916102ed366004612c63565b6108ce565b6102fa600181565b60405190815260200161029d565b610291610316366004612d8d565b6108dd565b610291610329366004612d8d565b6108f3565b5f5461029190600160a01b900460ff1681565b6102fa600381565b6102fa600281565b61025661035f366004612b88565b610900565b610291610372366004612d8d565b6109ce565b61039f610385366004612eab565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161029d565b6102916103c5366004612c2c565b6109db565b6102916103d8366004612f46565b610a43565b6102916103eb366004612bb3565b610c0b565b6102566103fe366004612fe2565b610c1a565b610291610411366004612bb3565b610cda565b610429610424366004612b43565b610ce8565b60405161029d919061304e565b610291610444366004612bb3565b610e13565b610256610457366004613084565b610e2d565b61029161046a366004612bb3565b610f57565b61029161047d366004612bb3565b610f71565b60025461039f906001600160a01b031681565b6102916104a33660046130fa565b610f8b565b6102916104b6366004612bb3565b6112a1565b6102916104c9366004612c2c565b6112af565b6102916104dc366004612bb3565b6112c5565b6102916104ef366004613142565b6112d3565b610291610502366004612d8d565b611527565b610291610515366004612c2c565b611534565b610291610528366004612bb3565b611668565b61054061053b366004613170565b611682565b60408051921515835260208301919091520161029d565b61056a6105653660046131a6565b611ca2565b60405161029d91906131f4565b5f5461039f906001600160a01b031681565b610291610597366004612c2c565b611de2565b5f546001600160a01b031633146105ce5760405162461bcd60e51b81526004016105c5906132e3565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061061a90831515815260200190565b60405180910390a150565b604051632988ebc960e21b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a623af249061065e908590600401613421565b602060405180830381865af4158015610679573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d9190613433565b90506106a881611def565b5050565b5f546001600160a01b031633146106d55760405162461bcd60e51b81526004016105c5906132e3565b6001600160a01b0381166107375760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105c5565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6107678460028585611eb0565b90505b9392505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b81526004016107ac9190613421565b606060405180830381865af41580156107c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107eb919061344a565b919450925090506107fd8386356120a2565b6108195760405162461bcd60e51b81526004016105c59061348b565b60ff811615610892576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105c5565b5060ff8681169116149150509392505050565b5f6108b48585600286866120cf565b90505b949350505050565b5f6107678485600286866120cf565b5f6108b48585600386866120cf565b5f6108ea836004846123f2565b90505b92915050565b5f6108ea836007846123f2565b5f546001600160a01b031633146109295760405162461bcd60e51b81526004016105c5906132e3565b6001600160a01b03811661097f5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105c5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f6108ea836006846123f2565b5f5f8460ff1611610a2e5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105c5565b610767610a3c600186613510565b8484611534565b5f5f610a8386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061250092505050565b610afd57600860028787604051602001610a9e929190613529565b60408051601f1981840301815290829052610ab891613538565b602060405180830381855afa158015610ad3573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610af69190613433565b901c610aff565b5f5b90505f610b4085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061250092505050565b610bba57600860028686604051602001610b5b929190613529565b60408051601f1981840301815290829052610b7591613538565b602060405180830381855afa158015610b90573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610bb39190613433565b901c610bbc565b5f5b90508189896003818110610bd257610bd261354e565b90506020020135148015610bfe57508089896004818110610bf557610bf561354e565b90506020020135145b9998505050505050505050565b5f6107678485600386866120cf565b5f546001600160a01b03163314610c435760405162461bcd60e51b81526004016105c5906132e3565b5f5b81811015610cd55760015f848484818110610c6257610c6261354e565b602090810292909201358352508101919091526040015f2080546001600160a01b0319169055828282818110610c9a57610c9a61354e565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101610c45565b505050565b5f6107678460038585611eb0565b60408051606080820183525f80835260208301529181019190915260405163dfda037960e01b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063dfda037990610d3c908690600401613421565b5f60405180830381865af4158015610d56573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d7d91908101906135b1565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610db79084906004016135e2565b5f60405180830381865af4158015610dd1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610df891908101906135f4565b604085015260208401526001600160a01b0316825250919050565b5f610767610e24620151808661363f565b60028585611eb0565b5f546001600160a01b03163314610e565760405162461bcd60e51b81526004016105c5906132e3565b5f5b83811015610f5057828282818110610e7257610e7261354e565b9050602002016020810190610e879190612b88565b60015f878785818110610e9c57610e9c61354e565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828282818110610ee557610ee561354e565b9050602002016020810190610efa9190612b88565b6001600160a01b0316858583818110610f1557610f1561354e565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a3600101610e58565b5050505050565b5f610767610f688562015180613652565b60038585612505565b5f610767610f828562015180613652565b60028585612505565b5f5f5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63defa8ed9896040518263ffffffff1660e01b8152600401610fc89190613421565b60a060405180830381865af4158015610fe3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110079190613665565b9398509196509450925090505f6001856001811115611028576110286136bd565b1490505f8b600281111561103e5761103e6136bd565b836002811115611050576110506136bd565b1490505f7f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b881480156110ae575060018c6002811115611092576110926136bd565b14806110ae57505f8c60028111156110ac576110ac6136bd565b145b8061110e57507f16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c2118814801561110e575060028c60028111156110f2576110f26136bd565b148061110e57505f8c600281111561110c5761110c6136bd565b145b90505f7f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b8714801561116b575060018d600281111561114f5761114f6136bd565b148061116b57505f8d6002811115611169576111696136bd565b145b806111cb57507f24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d871480156111cb575060028d60028111156111af576111af6136bd565b14806111cb57505f8d60028111156111c9576111c96136bd565b145b90505f86158015611207575060018e60028111156111eb576111eb6136bd565b148061120757505f8e6002811115611205576112056136bd565b145b8061126757507f12e3dc7cc8fec0205b51ff21825630865028f3be5bc64a6eec9ee5e71221319f87148015611267575060028e600281111561124b5761124b6136bd565b148061126757505f8e6002811115611265576112656136bd565b145b90508480156112735750835b801561127c5750825b80156112855750815b801561128e5750805b9f9e505050505050505050505050505050565b5f6107678460028585612505565b5f6107676112be8560016136d1565b8484610771565b5f6107678460038585612505565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b815260040161130e9190613421565b606060405180830381865af4158015611329573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134d919061344a565b9194509250905061135f8386356120a2565b61137b5760405162461bcd60e51b81526004016105c59061348b565b8660ff168860ff1611156113e75760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105c5565b8160ff165f036114745760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105c5565b8060ff165f036115015760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105c5565b8160ff168860ff1614801561151b57508060ff168760ff16145b98975050505050505050565b5f6108ea836005846123f2565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b815260040161156f9190613421565b606060405180830381865af415801561158a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ae919061344a565b919450925090506115c08386356120a2565b6115dc5760405162461bcd60e51b81526004016105c59061348b565b60ff821615611655576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105c5565b60ff878116911614925050509392505050565b5f610767611679620151808661363f565b60038585611eb0565b5f80548190600160a01b900460ff16156116d35760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105c5565b5f6116e76116e185806136ea565b35612736565b90506117206116f685806136ea565b611704906040810190613708565b5f8181106117145761171461354e565b9050602002013561278f565b61175861172d85806136ea565b61173b906040810190613708565b600181811061174c5761174c61354e565b90506020020135612857565b6117b761176585806136ea565b611773906040810190613708565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506117b192505050604087018761374d565b35612915565b61181f5760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105c5565b61187061182c85806136ea565b61183a906040810190613708565b611847604088018861374d565b611855906020810190613761565b61186260408a018a61374d565b6103d8906040810190613761565b6118bc5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105c5565b61194f6118c985806136ea565b6118d7906040810190613708565b60059060016118e689806136ea565b6118f4906040810190613708565b6118ff92915061363f565b9261190c939291906137a3565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061194a9250505060208701876137ce565b612940565b5f61195a85806136ea565b611968906040810190613708565b600261197488806136ea565b611982906040810190613708565b61198d92915061363f565b81811061199c5761199c61354e565b905060200201355f1c60038111156119b6576119b66136bd565b905060028160038111156119cc576119cc6136bd565b141580156119ec575060038160038111156119e9576119e96136bd565b14155b80611a1057506119ff604086018661374d565b611a10906080810190606001612b12565b611a6d5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105c5565b5f816003811115611a8057611a806136bd565b1480611aa55750611a94604086018661374d565b611aa5906080810190606001612b12565b611b055760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016105c5565b6007611b1186806136ea565b611b1f906040810190613708565b611b2a92915061363f565b611b3760208701876137ce565b611b45906020810190613708565b905014611ba25760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105c5565b6001600160a01b03821663ea50d0e4611bbb87806136ea565b611bc9906020810190613761565b611bd389806136ea565b611be1906040810190613708565b6040518563ffffffff1660e01b8152600401611c0094939291906137e2565b602060405180830381865afa158015611c1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3f9190613813565b93505f6001611c4e87806136ea565b611c5c906040810190613708565b611c6792915061363f565b9050611c7386806136ea565b611c81906040810190613708565b82818110611c9157611c9161354e565b905060200201359350505050915091565b611cea60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604051635450abb360e11b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a8a1576690611d23908790600401613421565b5f60405180830381865af4158015611d3d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d64919081019061382e565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae90611da19084908790600401613887565b5f60405180830381865af4158015611dbb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108b791908101906138aa565b5f610767848585856112d3565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015611e3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e619190613813565b611ead5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105c5565b50565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b8152600401611eed929190613a3b565b606060405180830381865af4158015611f08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2c9190613a78565b91945092509050611f3e8386356120a2565b611f5a5760405162461bcd60e51b81526004016105c59061348b565b8115611fd85760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105c5565b600287600a811115611fec57611fec6136bd565b14806120095750600387600a811115612007576120076136bd565b145b6120255760405162461bcd60e51b81526004016105c590613aa3565b600287600a811115612039576120396136bd565b0361207757805f0361205d5760405162461bcd60e51b81526004016105c590613acf565b61206b6383aa7e808261363f565b881493505050506108b7565b805f036120965760405162461bcd60e51b81526004016105c590613b47565b871492506108b7915050565b5f806120ae8385613652565b90508342101580156120bf57508381115b80156108b7575042109392505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b815260040161210c929190613a3b565b606060405180830381865af4158015612127573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214b9190613a78565b9194509250905061215d8386356120a2565b6121795760405162461bcd60e51b81526004016105c59061348b565b878911156121e15760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105c5565b600287600a8111156121f5576121f56136bd565b14806122125750600387600a811115612210576122106136bd565b145b61222e5760405162461bcd60e51b81526004016105c590613aa3565b600287600a811115612242576122426136bd565b0361232857815f036122d75760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105c5565b805f036122f65760405162461bcd60e51b81526004016105c590613acf565b6123046383aa7e808361363f565b8914801561231e575061231b6383aa7e808261363f565b88145b93505050506123e9565b815f036123b95760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105c5565b805f036123d85760405162461bcd60e51b81526004016105c590613b47565b818914801561231e57508714925050505b95945050505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63dc8c5e9a85876040518363ffffffff1660e01b815260040161242e929190613a3b565b5f60405180830381865af4158015612448573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261246f9190810190613bc0565b9150915080865114612485575f9250505061076a565b5f5b818110156124f3576124dc8782815181106124a4576124a461354e565b60200260200101518483815181106124be576124be61354e565b60200260200101518051602091820120825192909101919091201490565b6124eb575f935050505061076a565b600101612487565b5060019695505050505050565b511590565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b8152600401612542929190613a3b565b606060405180830381865af415801561255d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125819190613a78565b919450925090506125938386356120a2565b6125af5760405162461bcd60e51b81526004016105c59061348b565b600287600a8111156125c3576125c36136bd565b14806125e05750600387600a8111156125de576125de6136bd565b145b6125fc5760405162461bcd60e51b81526004016105c590613aa3565b600287600a811115612610576126106136bd565b036126a65780156126985760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105c5565b61206b6383aa7e808361363f565b801561272a5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105c5565b50861491506108b79050565b5f818152600160205260408120546001600160a01b0316806108ed5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105c5565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa1580156127dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128019190613813565b611ead5760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105c5565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa1580156128a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c99190613813565b611ead5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105c5565b5f5f8360028151811061292a5761292a61354e565b60200260200101515f1c90506108b781846120a2565b5f805b6129506020840184613708565b9050811015612aaa575f600860026129688680613761565b869061297760208a018a613708565b888181106129875761298761354e565b90506020020135886129999190613652565b926129a693929190613c79565b6040516020016129b7929190613529565b60408051601f19818403018152908290526129d191613538565b602060405180830381855afa1580156129ec573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a0f9190613433565b901c9050848281518110612a2557612a2561354e565b60200260200101518114612a705760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105c5565b612a7d6020850185613708565b83818110612a8d57612a8d61354e565b9050602002013583612a9f9190613652565b925050600101612943565b50612ab58280613761565b90508114610cd55760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105c5565b8015158114611ead575f5ffd5b5f60208284031215612b22575f5ffd5b813561076a81612b05565b5f60408284031215612b3d575f5ffd5b50919050565b5f60208284031215612b53575f5ffd5b81356001600160401b03811115612b68575f5ffd5b6108b784828501612b2d565b6001600160a01b0381168114611ead575f5ffd5b5f60208284031215612b98575f5ffd5b813561076a81612b74565b5f60808284031215612b3d575f5ffd5b5f5f5f60608486031215612bc5575f5ffd5b8335925060208401356001600160401b03811115612be1575f5ffd5b612bed86828701612b2d565b92505060408401356001600160401b03811115612c08575f5ffd5b612c1486828701612ba3565b9150509250925092565b60ff81168114611ead575f5ffd5b5f5f5f60608486031215612c3e575f5ffd5b8335612c4981612c1e565b925060208401356001600160401b03811115612be1575f5ffd5b5f5f5f5f60808587031215612c76575f5ffd5b843593506020850135925060408501356001600160401b03811115612c99575f5ffd5b612ca587828801612b2d565b92505060608501356001600160401b03811115612cc0575f5ffd5b612ccc87828801612ba3565b91505092959194509250565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612d0f57612d0f612cd8565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d3d57612d3d612cd8565b604052919050565b5f6001600160401b03821115612d5d57612d5d612cd8565b5060051b60200190565b5f6001600160401b03821115612d7f57612d7f612cd8565b50601f01601f191660200190565b5f5f60408385031215612d9e575f5ffd5b82356001600160401b03811115612db3575f5ffd5b8301601f81018513612dc3575f5ffd5b8035612dd6612dd182612d45565b612d15565b8082825260208201915060208360051b850101925087831115612df7575f5ffd5b602084015b83811015612e775780356001600160401b03811115612e19575f5ffd5b8501603f81018a13612e29575f5ffd5b6020810135612e3a612dd182612d67565b8181526040838301018c1015612e4e575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612dfc565b50945050505060208301356001600160401b03811115612e95575f5ffd5b612ea185828601612b2d565b9150509250929050565b5f60208284031215612ebb575f5ffd5b5035919050565b5f5f83601f840112612ed2575f5ffd5b5081356001600160401b03811115612ee8575f5ffd5b6020830191508360208260051b8501011115612f02575f5ffd5b9250929050565b5f5f83601f840112612f19575f5ffd5b5081356001600160401b03811115612f2f575f5ffd5b602083019150836020828501011115612f02575f5ffd5b5f5f5f5f5f5f60608789031215612f5b575f5ffd5b86356001600160401b03811115612f70575f5ffd5b612f7c89828a01612ec2565b90975095505060208701356001600160401b03811115612f9a575f5ffd5b612fa689828a01612f09565b90955093505060408701356001600160401b03811115612fc4575f5ffd5b612fd089828a01612f09565b979a9699509497509295939492505050565b5f5f60208385031215612ff3575f5ffd5b82356001600160401b03811115613008575f5ffd5b61301485828601612ec2565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b038251166020820152602082015160408201525f60408301516060808401526108b76080840182613020565b5f5f5f5f60408587031215613097575f5ffd5b84356001600160401b038111156130ac575f5ffd5b6130b887828801612ec2565b90955093505060208501356001600160401b038111156130d6575f5ffd5b6130e287828801612ec2565b95989497509550505050565b60038110611ead575f5ffd5b5f5f5f5f6080858703121561310d575f5ffd5b8435613118816130ee565b93506020850135613128816130ee565b925060408501356001600160401b03811115612c99575f5ffd5b5f5f5f5f60808587031215613155575f5ffd5b843561316081612c1e565b9350602085013561312881612c1e565b5f60208284031215613180575f5ffd5b81356001600160401b03811115613195575f5ffd5b82016060818503121561076a575f5ffd5b5f5f604083850312156131b7575f5ffd5b82356001600160401b038111156131cc575f5ffd5b6131d885828601612b2d565b92505060208301356131e981612b05565b809150509250929050565b602081525f82516101006020840152613211610120840182613020565b90506020840151601f1984830301604085015261322e8282613020565b9150506040840151601f1984830301606085015261324c8282613020565b9150506060840151601f1984830301608085015261326a8282613020565b9150506080840151601f198483030160a08501526132888282613020565b91505060a0840151601f198483030160c08501526132a68282613020565b91505060c0840151601f198483030160e08501526132c48282613020565b91505060e0840151601f19848303016101008501526123e98282613020565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115613359575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8135601e1983360301808212613387575f5ffd5b602091840191820191356001600160401b038111156133a4575f5ffd5b8036038313156133b2575f5ffd5b604086526133c460408701828561331a565b92505060208401358181126133d7575f5ffd5b8401602081019150356001600160401b038111156133f3575f5ffd5b8060051b3603821315613404575f5ffd5b8583036020870152613417838284613342565b9695505050505050565b602081525f6108ea6020830184613372565b5f60208284031215613443575f5ffd5b5051919050565b5f5f5f6060848603121561345c575f5ffd5b8351602085015190935061346f81612c1e565b604085015190925061348081612c1e565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156108ed576108ed6134fc565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b5f82601f830112613571575f5ffd5b8151602083015f613584612dd184612d67565b9050828152858383011115613597575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f602082840312156135c1575f5ffd5b81516001600160401b038111156135d6575f5ffd5b6108b784828501613562565b602081525f6108ea6020830184613020565b5f5f5f60608486031215613606575f5ffd5b835161361181612b74565b6020850151604086015191945092506001600160401b03811115613633575f5ffd5b612c1486828701613562565b818103818111156108ed576108ed6134fc565b808201808211156108ed576108ed6134fc565b5f5f5f5f5f60a08688031215613679575f5ffd5b855160208701519095506002811061368f575f5ffd5b60408701516060880151608089015192965090945092506136af816130ee565b809150509295509295909350565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156108ed576108ed6134fc565b5f8235605e198336030181126136fe575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261371d575f5ffd5b8301803591506001600160401b03821115613736575f5ffd5b6020019150600581901b3603821315612f02575f5ffd5b5f8235607e198336030181126136fe575f5ffd5b5f5f8335601e19843603018112613776575f5ffd5b8301803591506001600160401b0382111561378f575f5ffd5b602001915036819003821315612f02575f5ffd5b5f5f858511156137b1575f5ffd5b838611156137bd575f5ffd5b5050600583901b0193919092039150565b5f8235603e198336030181126136fe575f5ffd5b604081525f6137f560408301868861331a565b8281036020840152613808818587613342565b979650505050505050565b5f60208284031215613823575f5ffd5b815161076a81612b05565b5f5f6040838503121561383f575f5ffd5b82516001600160401b03811115613854575f5ffd5b61386085828601613562565b92505060208301516001600160401b0381111561387b575f5ffd5b612ea185828601613562565b604081525f6138996040830185613020565b905082151560208301529392505050565b5f602082840312156138ba575f5ffd5b81516001600160401b038111156138cf575f5ffd5b820161010081850312156138e1575f5ffd5b6138e9612cec565b81516001600160401b038111156138fe575f5ffd5b61390a86828501613562565b82525060208201516001600160401b03811115613925575f5ffd5b61393186828501613562565b60208301525060408201516001600160401b0381111561394f575f5ffd5b61395b86828501613562565b60408301525060608201516001600160401b03811115613979575f5ffd5b61398586828501613562565b60608301525060808201516001600160401b038111156139a3575f5ffd5b6139af86828501613562565b60808301525060a08201516001600160401b038111156139cd575f5ffd5b6139d986828501613562565b60a08301525060c08201516001600160401b038111156139f7575f5ffd5b613a0386828501613562565b60c08301525060e08201516001600160401b03811115613a21575f5ffd5b613a2d86828501613562565b60e083015250949350505050565b604081525f613a4d6040830185613372565b9050600b8310613a6b57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f5f5f60608486031215613a8a575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f60408385031215613bd1575f5ffd5b82516001600160401b03811115613be6575f5ffd5b8301601f81018513613bf6575f5ffd5b8051613c04612dd182612d45565b8082825260208201915060208360051b850101925087831115613c25575f5ffd5b602084015b83811015613c655780516001600160401b03811115613c47575f5ffd5b613c568a602083890101613562565b84525060209283019201613c2a565b506020969096015195979596505050505050565b5f5f85851115613c87575f5ffd5b83861115613c93575f5ffd5b505082019391909203915056fea264697066735822122003976ad8bc435d1afd265436a8ca6c800493492d2b2a0afcb7cacd312db60e3f64736f6c634300081d0033",
3067
+ sourceMap: "706:31108:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2527:118;;;;;;:::i;:::-;;:::i;:::-;;23118:224;;;;;;:::i;:::-;;:::i;3178:206::-;;;;;;:::i;:::-;;:::i;14705:261::-;;;;;;:::i;:::-;;:::i;:::-;;;2384:14:33;;2377:22;2359:41;;2347:2;2332:18;14705:261:26;;;;;;;;4538:543;;;;;;:::i;:::-;;:::i;14091:279::-;;;;;;:::i;:::-;;:::i;15830:247::-;;;;;;:::i;:::-;;:::i;17636:282::-;;;;;;:::i;:::-;;:::i;738:69::-;;804:1;738:69;;;;;4308:25:33;;;4296:2;4281:18;738:69:26;4162:177:33;20526:220:26;;;;;;:::i;:::-;;:::i;22299:228::-;;;;;;:::i;:::-;;:::i;976:18::-;;;;;-1:-1:-1;;;976:18:26;;;;;;880:67;;944:1;880:67;;811:65;;873:1;811:65;;2294:229;;;;;;:::i;:::-;;:::i;21065:227::-;;;;;;:::i;:::-;;:::i;1084:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1084:53:26;;;;;;-1:-1:-1;;;;;7518:32:33;;;7500:51;;7488:2;7473:18;1084:53:26;7354:203:33;7831:283:26;;;;;;:::i;:::-;;:::i;25611:706::-;;;;;;:::i;:::-;;:::i;19402:250::-;;;;;;:::i;:::-;;:::i;2943:231::-;;;;;;:::i;:::-;;:::i;18259:264::-;;;;;;:::i;:::-;;:::i;22680:300::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15265:263::-;;;;;;:::i;:::-;;:::i;2649:290::-;;;;;;:::i;:::-;;:::i;16979:264::-;;;;;;:::i;:::-;;:::i;13445:261::-;;;;;;:::i;:::-;;:::i;1211:33::-;;;;;-1:-1:-1;;;;;1211:33:26;;;23801:1471;;;;;;:::i;:::-;;:::i;12890:259::-;;;;;;:::i;:::-;;:::i;5355:224::-;;;;;;:::i;:::-;;:::i;16415:262::-;;;;;;:::i;:::-;;:::i;5936:768::-;;;;;;:::i;:::-;;:::i;21681:221::-;;;;;;:::i;:::-;;:::i;7014:543::-;;;;;;:::i;:::-;;:::i;18828:266::-;;;;;;:::i;:::-;;:::i;28255:3557::-;;;;;;:::i;:::-;;:::i;:::-;;;;14155:14:33;;14148:22;14130:41;;14202:2;14187:18;;14180:34;;;;14103:18;28255:3557:26;13962:258:33;3906:322:26;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;952:20::-;;;;;-1:-1:-1;;;;;952:20:26;;;8394:214;;;;;;:::i;:::-;;:::i;2527:118::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;;;;;;;;;2585:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2585:16:26::1;-1:-1:-1::0;;;;2585:16:26;;::::1;;::::0;;2612:28:::1;::::0;::::1;::::0;::::1;::::0;2594:7;2384:14:33;2377:22;2359:41;;2347:2;2332:18;;2219:187;2612:28:26::1;;;;;;;;2527:118:::0;:::o;23118:224::-;23237:52;;-1:-1:-1;;;23237:52:26;;23208:26;;23237:15;;:39;;:52;;23277:11;;23237:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23208:81;;23295:42;23318:18;23295:22;:42::i;:::-;23202:140;23118:224;:::o;3178:206::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3262:27:26;::::1;3254:76;;;::::0;-1:-1:-1;;;3254:76:26;;19279:2:33;3254:76:26::1;::::0;::::1;19261:21:33::0;19318:2;19298:18;;;19291:30;19357:34;19337:18;;;19330:62;-1:-1:-1;;;19408:18:33;;;19401:34;19452:19;;3254:76:26::1;19077:400:33::0;3254:76:26::1;3336:12;:43:::0;;-1:-1:-1;;;;;;3336:43:26::1;-1:-1:-1::0;;;;;3336:43:26;;;::::1;::::0;;;::::1;::::0;;3178:206::o;14705:261::-;14865:4;14884:77;14904:7;14913:19;14934:11;14947:13;14884:19;:77::i;:::-;14877:84;;14705:261;;;;;;:::o;4538:543::-;4688:4;4701:19;4722:9;4733;4746:15;:33;4780:11;4746:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4700:92;;-1:-1:-1;4700:92:26;-1:-1:-1;4700:92:26;-1:-1:-1;4806:73:26;4700:92;4841:37;;4806:21;:73::i;:::-;4798:161;;;;-1:-1:-1;;;4798:161:26;;;;;;;:::i;:::-;4973:8;;;;4965:85;;;;;-1:-1:-1;;;4965:85:26;;20663:2:33;4965:85:26;;;20645:21:33;20682:18;;;20675:30;;;;20741:34;20721:18;;;20714:62;20812:34;20792:18;;;20785:62;20864:19;;4965:85:26;20461:428:33;4965:85:26;-1:-1:-1;5063:13:26;;;;;;;;-1:-1:-1;;4538:543:26;;;;;:::o;14091:279::-;14266:4;14285:80;14299:7;14308;14317:19;14338:11;14351:13;14285;:80::i;:::-;14278:87;;14091:279;;;;;;;:::o;15830:247::-;15979:4;15998:74;16012:4;16018;16024:19;16045:11;16058:13;15998;:74::i;17636:282::-;17812:4;17831:82;17845:7;17854;17863:21;17886:11;17899:13;17831;:82::i;20526:220::-;20647:4;20666:75;20683:11;20696:31;20729:11;20666:16;:75::i;:::-;20659:82;;20526:220;;;;;:::o;22299:228::-;22424:4;22443:79;22460:11;22473:35;22510:11;22443:16;:79::i;2294:229::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2368:22:26;::::1;2360:63;;;::::0;-1:-1:-1;;;2360:63:26;;21096:2:33;2360:63:26::1;::::0;::::1;21078:21:33::0;21135:2;21115:18;;;21108:30;21174;21154:18;;;21147:58;21222:18;;2360:63:26::1;20894:352:33::0;2360:63:26::1;2429:16;2448:5:::0;;-1:-1:-1;;;;;2459:16:26;;::::1;-1:-1:-1::0;;;;;;2459:16:26;::::1;::::0;::::1;::::0;;2486:32:::1;::::0;2448:5;;;::::1;::::0;;;2486:32:::1;::::0;2429:16;2486:32:::1;2354:169;2294:229:::0;:::o;21065:227::-;21189:4;21208:79;21225:11;21238:35;21275:11;21208:16;:79::i;7831:283::-;7974:4;8003:1;7994:6;:10;;;7986:53;;;;-1:-1:-1;;;7986:53:26;;21453:2:33;7986:53:26;;;21435:21:33;21492:2;21472:18;;;21465:30;21531:32;21511:18;;;21504:60;21581:18;;7986:53:26;21251:354:33;7986:53:26;8052:57;8070:10;8079:1;8070:6;:10;:::i;:::-;8082:11;8095:13;8052:17;:57::i;25611:706::-;25750:4;25864:17;25884:27;25904:6;;25884:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25884:19:26;;-1:-1:-1;;;25884:27:26:i;:::-;:92;;25975:1;25939:32;25963:6;;25946:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;25946:24:26;;;;;;;;;;25939:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;25884:92;;;25928:1;25884:92;25864:112;;26076:20;26099:26;26119:5;;26099:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26099:19:26;;-1:-1:-1;;;26099:26:26:i;:::-;:90;;26188:1;26153:31;26177:5;;26160:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26160:23:26;;;;;;;;;;26153:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;26099:90;;;26142:1;26099:90;26076:113;;26243:9;26202:12;;1108:1:19;26202:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;26300:12;26256;;1147:1:19;26256:40:26;;;;;;;:::i;:::-;;;;;;;:56;26202:110;26195:117;25611:706;-1:-1:-1;;;;;;;;;25611:706:26:o;19402:250::-;19552:4;19571:76;19585:4;19591;19597:21;19620:11;19633:13;19571;:76::i;2943:231::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;3029:9:::1;3024:146;3044:21:::0;;::::1;3024:146;;;3087:18;:33;3106:10;;3117:1;3106:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3087:33:::0;;-1:-1:-1;3087:33:26;::::1;::::0;;;;;;-1:-1:-1;3087:33:26;3080:40;;-1:-1:-1;;;;;;3080:40:26::1;::::0;;3149:10;;3160:1;3149:13;;::::1;;;;;:::i;:::-;;;;;;;3133:30;;;;;;;;;;3067:3;;3024:146;;;;2943:231:::0;;:::o;18259:264::-;18420:4;18439:79;18459:7;18468:21;18491:11;18504:13;18439:19;:79::i;22680:300::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;22819:47:26;;-1:-1:-1;;;22819:47:26;;22799:17;;22819:15;;:34;;:47;;22854:11;;22819:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22819:47:26;;;;;;;;;;;;:::i;:::-;22941:34;;-1:-1:-1;;;22941:34:26;;22799:67;;-1:-1:-1;22941:15:26;;:28;;:34;;22799:67;;22941:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22941:34:26;;;;;;;;;;;;:::i;:::-;22917:20;;;22872:103;22898:17;;;22872:103;-1:-1:-1;;;;;22872:103:26;;;-1:-1:-1;22873:9:26;22680:300;-1:-1:-1;22680:300:26:o;15265:263::-;15418:4;15437:86;15457:16;15467:6;15457:7;:16;:::i;:::-;15475:19;15496:11;15509:13;15437:19;:86::i;2649:290::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;2774:9:::1;2769:166;2789:21:::0;;::::1;2769:166;;;2861:9;;2871:1;2861:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2825:18;:33;2844:10;;2855:1;2844:13;;;;;;;:::i;:::-;;;;;;;2825:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2825:48:26::1;;;;;-1:-1:-1::0;;;;;2825:48:26::1;;;;;;2915:9;;2925:1;2915:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2886:42:26::1;2900:10;;2911:1;2900:13;;;;;;;:::i;:::-;;;;;;;2886:42;;;;;;;;;;2812:3;;2769:166;;;;2649:290:::0;;;;:::o;16979:264::-;17132:4;17151:87;17170:16;:7;17180:6;17170:16;:::i;:::-;17188:21;17211:11;17224:13;17151:18;:87::i;13445:261::-;13597:4;13616:85;13635:16;:7;13645:6;13635:16;:::i;:::-;13653:19;13674:11;13687:13;13616:18;:85::i;23801:1471::-;24100:4;24113:19;24134:23;24159:17;24178:30;24210:36;24250:15;:39;24290:11;24250:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24112:190;;-1:-1:-1;24112:190:26;;-1:-1:-1;24112:190:26;-1:-1:-1;24112:190:26;-1:-1:-1;24112:190:26;-1:-1:-1;24308:17:26;24343:22;24328:11;:37;;;;;;;;:::i;:::-;;24308:57;;24371:18;24418:13;24392:39;;;;;;;;:::i;:::-;:22;:39;;;;;;;;:::i;:::-;;;-1:-1:-1;24437:25:26;5336:66:19;24466:44:26;;:78;;;;-1:-1:-1;24521:6:26;24515:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;24537:6:26;24531:2;:12;;;;;;;;:::i;:::-;;24515:28;24465:173;;;-1:-1:-1;5508:66:19;24550:49:26;;:87;;;;-1:-1:-1;24610:10:26;24604:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;24630:6:26;24624:2;:12;;;;;;;;:::i;:::-;;24604:32;24437:201;-1:-1:-1;24644:23:26;4953:66:19;24671:38:26;;:72;;;;-1:-1:-1;24720:6:26;24714:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;24736:6:26;24730:2;:12;;;;;;;;:::i;:::-;;24714:28;24670:160;;;-1:-1:-1;5174:66:19;24749:42:26;;:80;;;;-1:-1:-1;24802:10:26;24796:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;24822:6:26;24816:2;:12;;;;;;;;:::i;:::-;;24796:32;24644:186;-1:-1:-1;24920:36:26;24960;;:70;;;;-1:-1:-1;25007:6:26;25001:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;25023:6:26;25017:2;:12;;;;;;;;:::i;:::-;;25001:28;24959:185;;;-1:-1:-1;5681:66:19;25036:69:26;;:107;;;;-1:-1:-1;25116:10:26;25110:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;25136:6:26;25130:2;:12;;;;;;;;:::i;:::-;;25110:32;24920:224;;25157:12;:29;;;;;25173:13;25157:29;:53;;;;;25190:20;25157:53;:75;;;;;25214:18;25157:75;:110;;;;;25236:31;25157:110;25150:117;23801:1471;-1:-1:-1;;;;;;;;;;;;;;;23801:1471:26:o;12890:259::-;13049:4;13068:76;13087:7;13096:19;13117:11;13130:13;13068:18;:76::i;5355:224::-;5498:4;5517:57;5535:10;:6;5544:1;5535:10;:::i;:::-;5547:11;5560:13;5517:17;:57::i;16415:262::-;16575:4;16594:78;16613:7;16622:21;16645:11;16658:13;16594:18;:78::i;5936:768::-;6099:4;6112:19;6133:9;6144;6157:15;:33;6191:11;6157:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6111:92;;-1:-1:-1;6111:92:26;-1:-1:-1;6111:92:26;-1:-1:-1;6217:73:26;6111:92;6252:37;;6217:21;:73::i;:::-;6209:161;;;;-1:-1:-1;;;6209:161:26;;;;;;;:::i;:::-;6394:6;6384:16;;:6;:16;;;;6376:74;;;;-1:-1:-1;;;6376:74:26;;25823:2:33;6376:74:26;;;25805:21:33;25862:2;25842:18;;;25835:30;25901:34;25881:18;;;25874:62;-1:-1:-1;;;25952:18:33;;;25945:43;26005:19;;6376:74:26;25621:409:33;6376:74:26;6464:3;:8;;6471:1;6464:8;6456:97;;;;-1:-1:-1;;;6456:97:26;;26237:2:33;6456:97:26;;;26219:21:33;26276:2;26256:18;;;26249:30;26315:34;26295:18;;;26288:62;26386:34;26366:18;;;26359:62;-1:-1:-1;;;26437:19:33;;;26430:43;26490:19;;6456:97:26;26035:480:33;6456:97:26;6567:3;:8;;6574:1;6567:8;6559:97;;;;-1:-1:-1;;;6559:97:26;;26722:2:33;6559:97:26;;;26704:21:33;26761:2;26741:18;;;26734:30;26800:34;26780:18;;;26773:62;26871:34;26851:18;;;26844:62;-1:-1:-1;;;26922:19:33;;;26915:43;26975:19;;6559:97:26;26520:480:33;6559:97:26;6679:3;6669:13;;:6;:13;;;:30;;;;;6696:3;6686:13;;:6;:13;;;6669:30;6662:37;5936:768;-1:-1:-1;;;;;;;;5936:768:26:o;21681:221::-;21803:4;21822:75;21839:11;21852:31;21885:11;21822:16;:75::i;7014:543::-;7164:4;7177:19;7198:9;7209;7222:15;:33;7256:11;7222:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7176:92;;-1:-1:-1;7176:92:26;-1:-1:-1;7176:92:26;-1:-1:-1;7282:73:26;7176:92;7317:37;;7282:21;:73::i;:::-;7274:161;;;;-1:-1:-1;;;7274:161:26;;;;;;;:::i;:::-;7449:8;;;;7441:85;;;;;-1:-1:-1;;;7441:85:26;;27207:2:33;7441:85:26;;;27189:21:33;27226:18;;;27219:30;;;;27285:34;27265:18;;;27258:62;27356:34;27336:18;;;27329:62;27408:19;;7441:85:26;27005:428:33;7441:85:26;7539:13;;;;;;;;-1:-1:-1;;;7014:543:26;;;;;:::o;18828:266::-;18982:4;19001:88;19021:16;19031:6;19021:7;:16;:::i;:::-;19039:21;19062:11;19075:13;19001:19;:88::i;28255:3557::-;28362:12;2249:6;;28362:12;;-1:-1:-1;;;2249:6:26;;;;2248:7;2240:38;;;;-1:-1:-1;;;2240:38:26;;27640:2:33;2240:38:26;;;27622:21:33;27679:2;27659:18;;;27652:30;-1:-1:-1;;;27698:18:33;;;27691:48;27756:18;;2240:38:26;27438:342:33;2240:38:26;28485:16:::1;28504:51;28517:28;:6:::0;;:28:::1;:::i;:::-;:37;28504:12;:51::i;:::-;28485:70:::0;-1:-1:-1;28604:112:26::1;28629:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;977:1:19;28629:86:26;;;;;;;:::i;:::-;;;;;;;28604:24;:112::i;:::-;28761:104;28782:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1029:1:19;28782:82:26;;;;;;;:::i;:::-;;;;;;;28761:20;:104::i;:::-;28923:98;28933:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28923:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28976:20:26::1;::::0;-1:-1:-1;;;28976:20:26::1;::::0;::::1;::::0;::::1;:::i;:::-;:44;28923:9;:98::i;:::-;28908:180;;;::::0;-1:-1:-1;;;28908:180:26;;29218:2:33;28908:180:26::1;::::0;::::1;29200:21:33::0;29257:2;29237:18;;;29230:30;29296:34;29276:18;;;29269:62;-1:-1:-1;;;29347:18:33;;;29340:49;29406:19;;28908:180:26::1;29016:415:33::0;28908:180:26::1;29432:112;29445:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;29488:20;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:27;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;29517:20;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:26;::::0;::::1;::::0;::::1;::::0;::::1;:::i;29432:112::-;29424:148;;;::::0;-1:-1:-1;;;29424:148:26;;30165:2:33;29424:148:26::1;::::0;::::1;30147:21:33::0;30204:2;30184:18;;;30177:30;30243:25;30223:18;;;30216:53;30286:18;;29424:148:26::1;29963:347:33::0;29424:148:26::1;29640:249;29726:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1195:1:19;::::0;29855::26::1;29804:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;29804:52:26::1;:::i;:::-;29726:131;;;;;;;:::i;:::-;29640:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29865:18:26::1;::::0;-1:-1:-1;;;29865:18:26::1;::::0;::::1;::::0;::::1;:::i;:::-;29640:21;:249::i;:::-;29896:27;29948:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;30041:1;29990:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;29990:52:26::1;:::i;:::-;29948:95;;;;;;;:::i;:::-;;;;;;;29940:104;;29926:119;;;;;;;;:::i;:::-;29896:149:::0;-1:-1:-1;30309:39:26::1;30292:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;30369:35:26::1;30352:13;:52;;;;;;;;:::i;:::-;;;30292:112;30291:152;;;-1:-1:-1::0;30415:20:26::1;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:28;::::0;;;;;::::1;;;:::i;:::-;30276:223;;;::::0;-1:-1:-1;;;30276:223:26;;31211:2:33;30276:223:26::1;::::0;::::1;31193:21:33::0;31250:2;31230:18;;;31223:30;31289:34;31269:18;;;31262:62;-1:-1:-1;;;31340:18:33;;;31333:38;31388:19;;30276:223:26::1;31009:404:33::0;30276:223:26::1;30730:34;30713:13;:51;;;;;;;;:::i;:::-;;:83;;;-1:-1:-1::0;30768:20:26::1;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:28;::::0;;;;;::::1;;;:::i;:::-;30698:157;;;::::0;-1:-1:-1;;;30698:157:26;;31620:2:33;30698:157:26::1;::::0;::::1;31602:21:33::0;31659:2;31639:18;;;31632:30;31698:34;31678:18;;;31671:62;-1:-1:-1;;;31749:18:33;;;31742:41;31800:19;;30698:157:26::1;31418:407:33::0;30698:157:26::1;1337:1:19;31085:28:26;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:111;::::0;;-1:-1:-1;31085:111:26::1;:::i;:::-;31035:18;;::::0;::::1;:6:::0;:18:::1;:::i;:::-;:39;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:46;;:161;31027:211;;;::::0;-1:-1:-1;;;31027:211:26;;32582:2:33;31027:211:26::1;::::0;::::1;32564:21:33::0;32621:2;32601:18;;;32594:30;32660:34;32640:18;;;32633:62;-1:-1:-1;;;32711:18:33;;;32704:35;32756:19;;31027:211:26::1;32380:401:33::0;31027:211:26::1;-1:-1:-1::0;;;;;31357:26:26;::::1;;31384:28;:6:::0;;:28:::1;:::i;:::-;:34;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;31420:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;31357:105;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31347:115:::0;-1:-1:-1;31525:29:26::1;31608:1;31557:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;31557:52:26::1;:::i;:::-;31525:84:::0;-1:-1:-1;31634:28:26::1;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;31676:21;31634:64;;;;;;;:::i;:::-;;;;;;;31615:83;;31773:34;;;28255:3557:::0;;;:::o;3906:322::-;4018:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:34:26;4093:51;;-1:-1:-1;;;4093:51:26;;4063:26;;4093:15;;:38;;:51;;4132:11;;4093:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4093:51:26;;;;;;;;;;;;:::i;:::-;4166:57;;-1:-1:-1;;;4166:57:26;;4060:84;;-1:-1:-1;4166:15:26;;-1:-1:-1;4166:32:26;;:57;;4060:84;;4214:8;;4166:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:57:26;;;;;;;;;;;;:::i;8394:214::-;8534:4;8553:50;8566:3;8571;8576:11;8589:13;8553:12;:50::i;27758:204::-;27848:12;;:62;;-1:-1:-1;;;27848:62:26;;944:1;27848:62;;;37063:25:33;37104:18;;;37097:34;;;-1:-1:-1;;;;;27848:12:26;;;;:24;;37036:18:33;;27848:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27833:124;;;;-1:-1:-1;;;27833:124:26;;37344:2:33;27833:124:26;;;37326:21:33;37383:2;37363:18;;;37356:30;37422:33;37402:18;;;37395:61;37473:18;;27833:124:26;37142:355:33;27833:124:26;27758:204;:::o;11306:1252::-;11487:4;11500:19;11521:11;11534;11549:15;:34;11584:11;11597:9;11549:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11499:108;;-1:-1:-1;11499:108:26;-1:-1:-1;11499:108:26;-1:-1:-1;11621:73:26;11499:108;11656:37;;11621:21;:73::i;:::-;11613:161;;;;-1:-1:-1;;;11613:161:26;;;;;;;:::i;:::-;11788:8;;11780:86;;;;-1:-1:-1;;;11780:86:26;;38699:2:33;11780:86:26;;;38681:21:33;38738:2;38718:18;;;38711:30;38777:34;38757:18;;;38750:62;38848:34;38828:18;;;38821:62;-1:-1:-1;;;38899:19:33;;;38892:32;38941:19;;11780:86:26;38497:469:33;11780:86:26;11893:19;11880:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;11929:21:26;11916:9;:34;;;;;;;;:::i;:::-;;11880:70;11872:101;;;;-1:-1:-1;;;11872:101:26;;;;;;;:::i;:::-;11996:19;11983:9;:32;;;;;;;;:::i;:::-;;11979:575;;12033:3;12040:1;12033:8;12025:103;;;;-1:-1:-1;;;12025:103:26;;;;;;;:::i;:::-;12358:35;144:10:19;12358:3:26;:35;:::i;:::-;12347:7;:46;12340:53;;;;;;;11979:575;12422:3;12429:1;12422:8;12414:104;;;;-1:-1:-1;;;12414:104:26;;;;;;;:::i;:::-;12533:14;;;-1:-1:-1;12526:21:26;;-1:-1:-1;;12526:21:26;392:337:20;500:4;;546:35;558:23;546:9;:35;:::i;:::-;512:69;;619:9;600:15;:28;;:73;;;;;664:9;638:23;:35;600:73;:124;;;;-1:-1:-1;709:15:20;-1:-1:-1;683:41:20;392:337;-1:-1:-1;;;392:337:20:o;9751:1551:26:-;9947:4;9960:19;9981:11;9994;10009:15;:34;10044:11;10057:9;10009:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9959:108;;-1:-1:-1;9959:108:26;-1:-1:-1;9959:108:26;-1:-1:-1;10081:73:26;9959:108;10116:37;;10081:21;:73::i;:::-;10073:161;;;;-1:-1:-1;;;10073:161:26;;;;;;;:::i;:::-;10259:7;10248;:18;;10240:78;;;;-1:-1:-1;;;10240:78:26;;40503:2:33;10240:78:26;;;40485:21:33;40542:2;40522:18;;;40515:30;40581:34;40561:18;;;40554:62;-1:-1:-1;;;40632:18:33;;;40625:45;40687:19;;10240:78:26;40301:411:33;10240:78:26;10345:19;10332:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;10381:21:26;10368:9;:34;;;;;;;;:::i;:::-;;10332:70;10324:101;;;;-1:-1:-1;;;10324:101:26;;;;;;;:::i;:::-;10448:19;10435:9;:32;;;;;;;;:::i;:::-;;10431:867;;10485:3;10492:1;10485:8;10477:103;;;;-1:-1:-1;;;10477:103:26;;40919:2:33;10477:103:26;;;40901:21:33;40958:2;40938:18;;;40931:30;40997:34;40977:18;;;40970:62;41068:34;41048:18;;;41041:62;-1:-1:-1;;;41119:19:33;;;41112:49;41178:19;;10477:103:26;40717:486:33;10477:103:26;10596:3;10603:1;10596:8;10588:103;;;;-1:-1:-1;;;10588:103:26;;;;;;;:::i;:::-;10922:35;144:10:19;10922:3:26;:35;:::i;:::-;10911:7;:46;:96;;;;-1:-1:-1;10972:35:26;144:10:19;10972:3:26;:35;:::i;:::-;10961:7;:46;10911:96;10904:103;;;;;;;10431:867;11036:3;11043:1;11036:8;11028:104;;;;-1:-1:-1;;;11028:104:26;;41410:2:33;11028:104:26;;;41392:21:33;41449:2;41429:18;;;41422:30;41488:34;41468:18;;;41461:62;41559:34;41539:18;;;41532:62;-1:-1:-1;;;41610:19:33;;;41603:50;41670:19;;11028:104:26;41208:487:33;11028:104:26;11148:3;11155:1;11148:8;11140:104;;;;-1:-1:-1;;;11140:104:26;;;;;;;:::i;:::-;11270:3;11259:7;:14;:32;;;;-1:-1:-1;11277:14:26;;;-1:-1:-1;;;9751:1551:26;;;;;;;;:::o;19656:559::-;19804:4;19817:32;19851:30;19885:15;:37;19923:11;19936:9;19885:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19885:61:26;;;;;;;;;;;;:::i;:::-;19816:130;;;;19978:22;19956:11;:18;:44;19952:77;;20017:5;20010:12;;;;;;19952:77;20039:9;20034:160;20058:22;20054:1;:26;20034:160;;;20100:55;20119:11;20131:1;20119:14;;;;;;;;:::i;:::-;;;;;;;20135:16;20152:1;20135:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;20100:55:26;20095:93;;20174:5;20167:12;;;;;;;20095:93;20082:3;;20034:160;;;-1:-1:-1;20206:4:26;;19656:559;-1:-1:-1;;;;;;19656:559:26:o;262:101:24:-;338:15;:20;;262:101::o;8612:1135:26:-;8792:4;8805:19;8826:11;8839;8854:15;:34;8889:11;8902:9;8854:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8804:108;;-1:-1:-1;8804:108:26;-1:-1:-1;8804:108:26;-1:-1:-1;8926:73:26;8804:108;8961:37;;8926:21;:73::i;:::-;8918:161;;;;-1:-1:-1;;;8918:161:26;;;;;;;:::i;:::-;9106:19;9093:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;9142:21:26;9129:9;:34;;;;;;;;:::i;:::-;;9093:70;9085:101;;;;-1:-1:-1;;;9085:101:26;;;;;;;:::i;:::-;9209:19;9196:9;:32;;;;;;;;:::i;:::-;;9192:551;;9246:8;;9238:91;;;;-1:-1:-1;;;9238:91:26;;43080:2:33;9238:91:26;;;43062:21:33;43119:2;43099:18;;;43092:30;43158:34;43138:18;;;43131:62;43229:34;43209:18;;;43202:62;-1:-1:-1;;;43280:19:33;;;43273:37;43327:19;;9238:91:26;42878:474:33;9238:91:26;9559:35;144:10:19;9559:3:26;:35;:::i;9192:551::-;9623:8;;9615:92;;;;-1:-1:-1;;;9615:92:26;;43559:2:33;9615:92:26;;;43541:21:33;43598:2;43578:18;;;43571:30;43637:34;43617:18;;;43610:62;43708:34;43688:18;;;43681:62;-1:-1:-1;;;43759:19:33;;;43752:38;43807:19;;9615:92:26;43357:475:33;9615:92:26;-1:-1:-1;9722:14:26;;;-1:-1:-1;9715:21:26;;-1:-1:-1;9715:21:26;27128:210;27191:7;27225:28;;;:18;:28;;;;;;-1:-1:-1;;;;;27225:28:26;;27259:53;;;;-1:-1:-1;;;27259:53:26;;44039:2:33;27259:53:26;;;44021:21:33;44078:2;44058:18;;;44051:30;-1:-1:-1;;;44097:18:33;;;44090:48;44155:18;;27259:53:26;43837:342:33;27342:214:26;27436:12;;:66;;-1:-1:-1;;;27436:66:26;;:12;:66;;;37063:25:33;37104:18;;;37097:34;;;-1:-1:-1;;;;;27436:12:26;;;;:24;;37036:18:33;;27436:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27421:130;;;;-1:-1:-1;;;27421:130:26;;44386:2:33;27421:130:26;;;44368:21:33;44425:2;44405:18;;;44398:30;44464:34;44444:18;;;44437:62;-1:-1:-1;;;44515:18:33;;;44508:31;44556:19;;27421:130:26;44184:397:33;27560:194:26;27646:12;;;:58;;-1:-1:-1;;;27646:58:26;;;;;37063:25:33;;;;37104:18;;;37097:34;;;-1:-1:-1;;;;;27646:12:26;;:24;;37036:18:33;;27646:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27631:118;;;;-1:-1:-1;;;27631:118:26;;44788:2:33;27631:118:26;;;44770:21:33;44827:2;44807:18;;;44800:30;44866:31;44846:18;;;44839:59;44915:18;;27631:118:26;44586:353:33;3388:300:26;3506:4;3518:28;3557:12;1072:1:19;3557:44:26;;;;;;;;:::i;:::-;;;;;;;3549:53;;3518:84;;3615:68;3637:20;3659:23;3615:21;:68::i;26321:803::-;26453:14;;26477:458;26501:32;;;;:11;:32;:::i;:::-;:39;;26497:1;:43;26477:458;;;26635:28;26792:1;26666:122;26699:27;:11;;:27;:::i;:::-;26727:6;;26743:32;;;;:11;:32;:::i;:::-;26776:1;26743:35;;;;;;;:::i;:::-;;;;;;;26734:6;:44;;;;:::i;:::-;26699:80;;;;;;;:::i;:::-;26682:98;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26682:98:26;;;;;;;;;;26666:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:127;;26635:158;;26833:16;26850:1;26833:19;;;;;;;;:::i;:::-;;;;;;;26809:20;:43;26801:74;;;;-1:-1:-1;;;26801:74:26;;45764:2:33;26801:74:26;;;45746:21:33;45803:2;45783:18;;;45776:30;-1:-1:-1;;;45822:18:33;;;45815:48;45880:18;;26801:74:26;45562:342:33;26801:74:26;26893:32;;;;:11;:32;:::i;:::-;26926:1;26893:35;;;;;;;:::i;:::-;;;;;;;26883:45;;;;;:::i;:::-;;-1:-1:-1;;26542:3:26;;26477:458;;;-1:-1:-1;27049:27:26;:11;;:27;:::i;:::-;:34;;27039:6;:44;27031:88;;;;-1:-1:-1;;;27031:88:26;;46111:2:33;27031:88:26;;;46093:21:33;46150:2;46130:18;;;46123:30;46189:33;46169:18;;;46162:61;46240:18;;27031:88:26;45909:355:33;14:118;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;383:159::-;447:5;492:2;483:6;478:3;474:16;470:25;467:45;;;508:1;505;498:12;467:45;-1:-1:-1;530:6:33;383:159;-1:-1:-1;383:159:33:o;547:365::-;638:6;691:2;679:9;670:7;666:23;662:32;659:52;;;707:1;704;697:12;659:52;747:9;734:23;-1:-1:-1;;;;;772:6:33;769:30;766:50;;;812:1;809;802:12;766:50;835:71;898:7;889:6;878:9;874:22;835:71;:::i;917:131::-;-1:-1:-1;;;;;992:31:33;;982:42;;972:70;;1038:1;1035;1028:12;1053:247;1112:6;1165:2;1153:9;1144:7;1140:23;1136:32;1133:52;;;1181:1;1178;1171:12;1133:52;1220:9;1207:23;1239:31;1264:5;1239:31;:::i;1305:162::-;1371:5;1416:3;1407:6;1402:3;1398:16;1394:26;1391:46;;;1433:1;1430;1423:12;1472:742;1615:6;1623;1631;1684:2;1672:9;1663:7;1659:23;1655:32;1652:52;;;1700:1;1697;1690:12;1652:52;1745:23;;;-1:-1:-1;1843:2:33;1828:18;;1815:32;-1:-1:-1;;;;;1859:30:33;;1856:50;;;1902:1;1899;1892:12;1856:50;1925:71;1988:7;1979:6;1968:9;1964:22;1925:71;:::i;:::-;1915:81;;;2049:2;2038:9;2034:18;2021:32;-1:-1:-1;;;;;2068:8:33;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:75;2200:7;2189:8;2178:9;2174:24;2133:75;:::i;:::-;2123:85;;;1472:742;;;;;:::o;2411:114::-;2495:4;2488:5;2484:16;2477:5;2474:27;2464:55;;2515:1;2512;2505:12;2530:759;2671:6;2679;2687;2740:2;2728:9;2719:7;2715:23;2711:32;2708:52;;;2756:1;2753;2746:12;2708:52;2795:9;2782:23;2814:29;2837:5;2814:29;:::i;:::-;2862:5;-1:-1:-1;2918:2:33;2903:18;;2890:32;-1:-1:-1;;;;;2934:30:33;;2931:50;;;2977:1;2974;2967:12;3294:863;3446:6;3454;3462;3470;3523:3;3511:9;3502:7;3498:23;3494:33;3491:53;;;3540:1;3537;3530:12;3491:53;3585:23;;;-1:-1:-1;3705:2:33;3690:18;;3677:32;;-1:-1:-1;3786:2:33;3771:18;;3758:32;-1:-1:-1;;;;;3802:30:33;;3799:50;;;3845:1;3842;3835:12;3799:50;3868:71;3931:7;3922:6;3911:9;3907:22;3868:71;:::i;:::-;3858:81;;;3992:2;3981:9;3977:18;3964:32;-1:-1:-1;;;;;4011:8:33;4008:32;4005:52;;;4053:1;4050;4043:12;4005:52;4076:75;4143:7;4132:8;4121:9;4117:24;4076:75;:::i;:::-;4066:85;;;3294:863;;;;;;;:::o;4344:127::-;4405:10;4400:3;4396:20;4393:1;4386:31;4436:4;4433:1;4426:15;4460:4;4457:1;4450:15;4476:255;4548:2;4542:9;4590:6;4578:19;;-1:-1:-1;;;;;4612:34:33;;4648:22;;;4609:62;4606:88;;;4674:18;;:::i;:::-;4710:2;4703:22;4476:255;:::o;4736:275::-;4807:2;4801:9;4872:2;4853:13;;-1:-1:-1;;4849:27:33;4837:40;;-1:-1:-1;;;;;4892:34:33;;4928:22;;;4889:62;4886:88;;;4954:18;;:::i;:::-;4990:2;4983:22;4736:275;;-1:-1:-1;4736:275:33:o;5016:182::-;5075:4;-1:-1:-1;;;;;5100:6:33;5097:30;5094:56;;;5130:18;;:::i;:::-;-1:-1:-1;5175:1:33;5171:14;5187:4;5167:25;;5016:182::o;5203:187::-;5252:4;-1:-1:-1;;;;;5277:6:33;5274:30;5271:56;;;5307:18;;:::i;:::-;-1:-1:-1;5373:2:33;5352:15;-1:-1:-1;;5348:29:33;5379:4;5344:40;;5203:187::o;5395:1769::-;5530:6;5538;5591:2;5579:9;5570:7;5566:23;5562:32;5559:52;;;5607:1;5604;5597:12;5559:52;5647:9;5634:23;-1:-1:-1;;;;;5672:6:33;5669:30;5666:50;;;5712:1;5709;5702:12;5666:50;5735:22;;5788:4;5780:13;;5776:27;-1:-1:-1;5766:55:33;;5817:1;5814;5807:12;5766:55;5857:2;5844:16;5880:63;5896:46;5935:6;5896:46;:::i;:::-;5880:63;:::i;:::-;5965:3;5989:6;5984:3;5977:19;6021:4;6016:3;6012:14;6005:21;;6078:4;6068:6;6065:1;6061:14;6057:2;6053:23;6049:34;6035:48;;6106:7;6098:6;6095:19;6092:39;;;6127:1;6124;6117:12;6092:39;6159:4;6155:2;6151:13;6173:749;6189:6;6184:3;6181:15;6173:749;;;6277:3;6264:17;-1:-1:-1;;;;;6300:11:33;6297:35;6294:55;;;6345:1;6342;6335:12;6294:55;6372:20;;6427:2;6419:11;;6415:25;-1:-1:-1;6405:53:33;;6454:1;6451;6444:12;6405:53;6508:4;6504:2;6500:13;6487:27;6542:55;6558:38;6587:8;6558:38;:::i;6542:55::-;6610:25;;;6654:39;6662:17;;;6654:39;6651:52;-1:-1:-1;6648:72:33;;;6716:1;6713;6706:12;6648:72;6779:8;6774:2;6770;6766:11;6759:4;6750:7;6746:18;6733:55;6843:1;6836:4;6825:8;6816:7;6812:22;6808:33;6801:44;6870:7;6865:3;6858:20;;;;6907:4;6902:3;6898:14;6891:21;;6215:4;6210:3;6206:14;6199:21;;6173:749;;;-1:-1:-1;6941:5:33;-1:-1:-1;;;;6999:4:33;6984:20;;6971:34;-1:-1:-1;;;;;7017:32:33;;7014:52;;;7062:1;7059;7052:12;7014:52;7085:73;7150:7;7139:8;7128:9;7124:24;7085:73;:::i;:::-;7075:83;;;5395:1769;;;;;:::o;7169:180::-;7228:6;7281:2;7269:9;7260:7;7256:23;7252:32;7249:52;;;7297:1;7294;7287:12;7249:52;-1:-1:-1;7320:23:33;;7169:180;-1:-1:-1;7169:180:33:o;7562:367::-;7625:8;7635:6;7689:3;7682:4;7674:6;7670:17;7666:27;7656:55;;7707:1;7704;7697:12;7656:55;-1:-1:-1;7730:20:33;;-1:-1:-1;;;;;7762:30:33;;7759:50;;;7805:1;7802;7795:12;7759:50;7842:4;7834:6;7830:17;7818:29;;7902:3;7895:4;7885:6;7882:1;7878:14;7870:6;7866:27;7862:38;7859:47;7856:67;;;7919:1;7916;7909:12;7856:67;7562:367;;;;;:::o;7934:348::-;7986:8;7996:6;8050:3;8043:4;8035:6;8031:17;8027:27;8017:55;;8068:1;8065;8058:12;8017:55;-1:-1:-1;8091:20:33;;-1:-1:-1;;;;;8123:30:33;;8120:50;;;8166:1;8163;8156:12;8120:50;8203:4;8195:6;8191:17;8179:29;;8255:3;8248:4;8239:6;8231;8227:19;8223:30;8220:39;8217:59;;;8272:1;8269;8262:12;8287:1047;8415:6;8423;8431;8439;8447;8455;8508:2;8496:9;8487:7;8483:23;8479:32;8476:52;;;8524:1;8521;8514:12;8476:52;8564:9;8551:23;-1:-1:-1;;;;;8589:6:33;8586:30;8583:50;;;8629:1;8626;8619:12;8583:50;8668:70;8730:7;8721:6;8710:9;8706:22;8668:70;:::i;:::-;8757:8;;-1:-1:-1;8642:96:33;-1:-1:-1;;8845:2:33;8830:18;;8817:32;-1:-1:-1;;;;;8861:32:33;;8858:52;;;8906:1;8903;8896:12;8858:52;8945:61;8998:7;8987:8;8976:9;8972:24;8945:61;:::i;:::-;9025:8;;-1:-1:-1;8919:87:33;-1:-1:-1;;9113:2:33;9098:18;;9085:32;-1:-1:-1;;;;;9129:32:33;;9126:52;;;9174:1;9171;9164:12;9126:52;9213:61;9266:7;9255:8;9244:9;9240:24;9213:61;:::i;:::-;8287:1047;;;;-1:-1:-1;8287:1047:33;;-1:-1:-1;8287:1047:33;;9293:8;;8287:1047;-1:-1:-1;;;8287:1047:33:o;9339:437::-;9425:6;9433;9486:2;9474:9;9465:7;9461:23;9457:32;9454:52;;;9502:1;9499;9492:12;9454:52;9542:9;9529:23;-1:-1:-1;;;;;9567:6:33;9564:30;9561:50;;;9607:1;9604;9597:12;9561:50;9646:70;9708:7;9699:6;9688:9;9684:22;9646:70;:::i;:::-;9735:8;;9620:96;;-1:-1:-1;9339:437:33;-1:-1:-1;;;;9339:437:33:o;9781:289::-;9823:3;9861:5;9855:12;9888:6;9883:3;9876:19;9944:6;9937:4;9930:5;9926:16;9919:4;9914:3;9910:14;9904:47;9996:1;9989:4;9980:6;9975:3;9971:16;9967:27;9960:38;10059:4;10052:2;10048:7;10043:2;10035:6;10031:15;10027:29;10022:3;10018:39;10014:50;10007:57;;;9781:289;;;;:::o;10075:492::-;10260:2;10249:9;10242:21;10335:1;10331;10326:3;10322:11;10318:19;10309:6;10303:13;10299:39;10294:2;10283:9;10279:18;10272:67;10393:2;10385:6;10381:15;10375:22;10370:2;10359:9;10355:18;10348:50;10223:4;10445:2;10437:6;10433:15;10427:22;10487:4;10480;10469:9;10465:20;10458:34;10509:52;10556:3;10545:9;10541:19;10527:12;10509:52;:::i;10572:768::-;10694:6;10702;10710;10718;10771:2;10759:9;10750:7;10746:23;10742:32;10739:52;;;10787:1;10784;10777:12;10739:52;10827:9;10814:23;-1:-1:-1;;;;;10852:6:33;10849:30;10846:50;;;10892:1;10889;10882:12;10846:50;10931:70;10993:7;10984:6;10973:9;10969:22;10931:70;:::i;:::-;11020:8;;-1:-1:-1;10905:96:33;-1:-1:-1;;11108:2:33;11093:18;;11080:32;-1:-1:-1;;;;;11124:32:33;;11121:52;;;11169:1;11166;11159:12;11121:52;11208:72;11272:7;11261:8;11250:9;11246:24;11208:72;:::i;:::-;10572:768;;;;-1:-1:-1;11299:8:33;-1:-1:-1;;;;10572:768:33:o;11576:112::-;11662:1;11655:5;11652:12;11642:40;;11678:1;11675;11668:12;11693:954;11872:6;11880;11888;11896;11949:3;11937:9;11928:7;11924:23;11920:33;11917:53;;;11966:1;11963;11956:12;11917:53;12005:9;11992:23;12024:42;12060:5;12024:42;:::i;:::-;12085:5;-1:-1:-1;12142:2:33;12127:18;;12114:32;12155:44;12114:32;12155:44;:::i;:::-;12218:7;-1:-1:-1;12276:2:33;12261:18;;12248:32;-1:-1:-1;;;;;12292:30:33;;12289:50;;;12335:1;12332;12325:12;12652:897;12800:6;12808;12816;12824;12877:3;12865:9;12856:7;12852:23;12848:33;12845:53;;;12894:1;12891;12884:12;12845:53;12933:9;12920:23;12952:29;12975:5;12952:29;:::i;:::-;13000:5;-1:-1:-1;13057:2:33;13042:18;;13029:32;13070:31;13029:32;13070:31;:::i;13554:403::-;13657:6;13710:2;13698:9;13689:7;13685:23;13681:32;13678:52;;;13726:1;13723;13716:12;13678:52;13766:9;13753:23;-1:-1:-1;;;;;13791:6:33;13788:30;13785:50;;;13831:1;13828;13821:12;13785:50;13854:22;;13910:2;13892:16;;;13888:25;13885:45;;;13926:1;13923;13916:12;14225:494;14322:6;14330;14383:2;14371:9;14362:7;14358:23;14354:32;14351:52;;;14399:1;14396;14389:12;14351:52;14439:9;14426:23;-1:-1:-1;;;;;14464:6:33;14461:30;14458:50;;;14504:1;14501;14494:12;14458:50;14527:71;14590:7;14581:6;14570:9;14566:22;14527:71;:::i;:::-;14517:81;;;14648:2;14637:9;14633:18;14620:32;14661:28;14683:5;14661:28;:::i;:::-;14708:5;14698:15;;;14225:494;;;;;:::o;14724:1698::-;14917:2;14906:9;14899:21;14880:4;14955:6;14949:13;14998:6;14993:2;14982:9;14978:18;14971:34;15028:52;15075:3;15064:9;15060:19;15046:12;15028:52;:::i;:::-;15014:66;;15129:2;15121:6;15117:15;15111:22;15201:2;15197:7;15185:9;15177:6;15173:22;15169:36;15164:2;15153:9;15149:18;15142:64;15229:41;15263:6;15247:14;15229:41;:::i;:::-;15215:55;;;15319:2;15311:6;15307:15;15301:22;15391:2;15387:7;15375:9;15367:6;15363:22;15359:36;15354:2;15343:9;15339:18;15332:64;15419:41;15453:6;15437:14;15419:41;:::i;:::-;15405:55;;;15509:2;15501:6;15497:15;15491:22;15582:2;15578:7;15566:9;15558:6;15554:22;15550:36;15544:3;15533:9;15529:19;15522:65;15610:41;15644:6;15628:14;15610:41;:::i;:::-;15596:55;;;15700:3;15692:6;15688:16;15682:23;15774:2;15770:7;15758:9;15750:6;15746:22;15742:36;15736:3;15725:9;15721:19;15714:65;15802:41;15836:6;15820:14;15802:41;:::i;:::-;15788:55;;;15892:3;15884:6;15880:16;15874:23;15966:2;15962:7;15950:9;15942:6;15938:22;15934:36;15928:3;15917:9;15913:19;15906:65;15994:41;16028:6;16012:14;15994:41;:::i;:::-;15980:55;;;16084:3;16076:6;16072:16;16066:23;16158:2;16154:7;16142:9;16134:6;16130:22;16126:36;16120:3;16109:9;16105:19;16098:65;16186:41;16220:6;16204:14;16186:41;:::i;:::-;16172:55;;;16276:3;16268:6;16264:16;16258:23;16353:2;16349:7;16337:9;16329:6;16325:22;16321:36;16312:6;16301:9;16297:22;16290:68;16375:41;16409:6;16393:14;16375:41;:::i;16427:350::-;16629:2;16611:21;;;16668:2;16648:18;;;16641:30;16707:28;16702:2;16687:18;;16680:56;16768:2;16753:18;;16427:350::o;16782:266::-;16870:6;16865:3;16858:19;16922:6;16915:5;16908:4;16903:3;16899:14;16886:43;-1:-1:-1;16974:1:33;16949:16;;;16967:4;16945:27;;;16938:38;;;;17030:2;17009:15;;;-1:-1:-1;;17005:29:33;16996:39;;;16992:50;;16782:266::o;17053:311::-;17141:19;;;17123:3;-1:-1:-1;;;;;17172:31:33;;17169:51;;;17216:1;17213;17206:12;17169:51;17252:6;17249:1;17245:14;17304:8;17297:5;17290:4;17285:3;17281:14;17268:45;17333:18;;;;17353:4;17329:29;;17053:311;-1:-1:-1;;;17053:311:33:o;17369:1172::-;17432:3;17489:5;17476:19;17550:2;17546:7;17538:5;17522:14;17518:26;17514:40;17597:2;17577:18;17573:27;17563:55;;17614:1;17611;17604:12;17563:55;17753:4;17642:30;;;17740:18;;;;17695:21;-1:-1:-1;;;;;17770:30:33;;17767:50;;;17813:1;17810;17803:12;17767:50;17862:6;17846:14;17842:27;17833:7;17829:41;17826:61;;;17883:1;17880;17873:12;17826:61;17908:4;17903:3;17896:17;17934:58;17986:4;17981:3;17977:14;17969:6;17960:7;17934:58;:::i;:::-;17922:70;;;18053:4;18046:5;18042:16;18029:30;18104:2;18082:20;18078:29;18068:57;;18121:1;18118;18111:12;18068:57;18149:32;;18264:4;18251:18;;;-1:-1:-1;18206:21:33;-1:-1:-1;;;;;18281:32:33;;18278:52;;;18326:1;18323;18316:12;18278:52;18382:8;18379:1;18375:16;18359:14;18355:37;18346:7;18342:51;18339:71;;;18406:1;18403;18396:12;18339:71;18452:3;18446:4;18442:14;18435:4;18430:3;18426:14;18419:38;18473:62;18530:4;18520:8;18511:7;18473:62;:::i;:::-;18466:69;17369:1172;-1:-1:-1;;;;;;17369:1172:33:o;18546:291::-;18745:2;18734:9;18727:21;18708:4;18765:66;18827:2;18816:9;18812:18;18804:6;18765:66;:::i;18842:230::-;18912:6;18965:2;18953:9;18944:7;18940:23;18936:32;18933:52;;;18981:1;18978;18971:12;18933:52;-1:-1:-1;19026:16:33;;18842:230;-1:-1:-1;18842:230:33:o;19482:490::-;19566:6;19574;19582;19635:2;19623:9;19614:7;19610:23;19606:32;19603:52;;;19651:1;19648;19641:12;19603:52;19696:16;;19781:2;19766:18;;19760:25;19696:16;;-1:-1:-1;19794:31:33;19760:25;19794:31;:::i;:::-;19896:2;19881:18;;19875:25;19844:7;;-1:-1:-1;19909:31:33;19875:25;19909:31;:::i;:::-;19959:7;19949:17;;;19482:490;;;;;:::o;19977:479::-;20179:2;20161:21;;;20218:2;20198:18;;;20191:30;20257:34;20252:2;20237:18;;20230:62;20328:34;20323:2;20308:18;;20301:62;-1:-1:-1;;;20394:3:33;20379:19;;20372:42;20446:3;20431:19;;19977:479::o;21610:127::-;21671:10;21666:3;21662:20;21659:1;21652:31;21702:4;21699:1;21692:15;21726:4;21723:1;21716:15;21742:151;21832:4;21825:12;;;21811;;;21807:31;;21850:14;;21847:40;;;21867:18;;:::i;21898:273::-;22083:6;22075;22070:3;22057:33;22039:3;22109:16;;22134:13;;;22109:16;21898:273;-1:-1:-1;21898:273:33:o;22176:301::-;22305:3;22343:6;22337:13;22389:6;22382:4;22374:6;22370:17;22365:3;22359:37;22451:1;22415:16;;22440:13;;;-1:-1:-1;22415:16:33;22176:301;-1:-1:-1;22176:301:33:o;22482:127::-;22543:10;22538:3;22534:20;22531:1;22524:31;22574:4;22571:1;22564:15;22598:4;22595:1;22588:15;22614:514;22667:5;22720:3;22713:4;22705:6;22701:17;22697:27;22687:55;;22738:1;22735;22728:12;22687:55;22771:6;22765:13;22810:4;22802:6;22798:17;22839:1;22860:53;22876:36;22905:6;22876:36;:::i;22860:53::-;22849:64;;22938:6;22929:7;22922:23;22978:3;22969:6;22964:3;22960:16;22957:25;22954:45;;;22995:1;22992;22985:12;22954:45;23039:6;23034:3;23027:4;23018:7;23014:18;23008:38;23095:1;23066:20;;;23088:4;23062:31;23055:42;;;;-1:-1:-1;23070:7:33;22614:514;-1:-1:-1;;;22614:514:33:o;23133:335::-;23212:6;23265:2;23253:9;23244:7;23240:23;23236:32;23233:52;;;23281:1;23278;23271:12;23233:52;23314:9;23308:16;-1:-1:-1;;;;;23339:6:33;23336:30;23333:50;;;23379:1;23376;23369:12;23333:50;23402:60;23454:7;23445:6;23434:9;23430:22;23402:60;:::i;23473:226::-;23628:2;23617:9;23610:21;23591:4;23648:45;23689:2;23678:9;23674:18;23666:6;23648:45;:::i;23704:577::-;23802:6;23810;23818;23871:2;23859:9;23850:7;23846:23;23842:32;23839:52;;;23887:1;23884;23877:12;23839:52;23919:9;23913:16;23938:31;23963:5;23938:31;:::i;:::-;24059:2;24044:18;;24038:25;24133:2;24118:18;;24112:25;23988:5;;-1:-1:-1;24038:25:33;-1:-1:-1;;;;;;24149:30:33;;24146:50;;;24192:1;24189;24182:12;24146:50;24215:60;24267:7;24258:6;24247:9;24243:22;24215:60;:::i;24286:128::-;24353:9;;;24374:11;;;24371:37;;;24388:18;;:::i;24419:125::-;24484:9;;;24505:10;;;24502:36;;;24518:18;;:::i;24549:782::-;24691:6;24699;24707;24715;24723;24776:3;24764:9;24755:7;24751:23;24747:33;24744:53;;;24793:1;24790;24783:12;24744:53;24838:16;;24923:2;24908:18;;24902:25;24838:16;;-1:-1:-1;24958:1:33;24946:14;;24936:42;;24974:1;24971;24964:12;24936:42;25070:2;25055:18;;25049:25;25166:2;25151:18;;25145:25;25241:3;25226:19;;25220:26;24997:7;;-1:-1:-1;25049:25:33;;-1:-1:-1;25145:25:33;-1:-1:-1;25255:44:33;25220:26;25255:44;:::i;:::-;25318:7;25308:17;;;24549:782;;;;;;;;:::o;25336:127::-;25397:10;25392:3;25388:20;25385:1;25378:31;25428:4;25425:1;25418:15;25452:4;25449:1;25442:15;25468:148;25556:4;25535:12;;;25549;;;25531:31;;25574:13;;25571:39;;;25590:18;;:::i;27785:339::-;27893:4;27951:11;27938:25;28045:2;28041:7;28030:8;28014:14;28010:29;28006:43;27986:18;27982:68;27972:96;;28064:1;28061;28054:12;27972:96;28085:33;;;;;27785:339;-1:-1:-1;;27785:339:33:o;28129:545::-;28222:4;28228:6;28288:11;28275:25;28382:2;28378:7;28367:8;28351:14;28347:29;28343:43;28323:18;28319:68;28309:96;;28401:1;28398;28391:12;28309:96;28428:33;;28480:20;;;-1:-1:-1;;;;;;28512:30:33;;28509:50;;;28555:1;28552;28545:12;28509:50;28588:4;28576:17;;-1:-1:-1;28639:1:33;28635:14;;;28619;28615:35;28605:46;;28602:66;;;28664:1;28661;28654:12;28679:332;28779:4;28837:11;28824:25;28931:3;28927:8;28916;28900:14;28896:29;28892:44;28872:18;28868:69;28858:97;;28951:1;28948;28941:12;29436:522;29514:4;29520:6;29580:11;29567:25;29674:2;29670:7;29659:8;29643:14;29639:29;29635:43;29615:18;29611:68;29601:96;;29693:1;29690;29683:12;29601:96;29720:33;;29772:20;;;-1:-1:-1;;;;;;29804:30:33;;29801:50;;;29847:1;29844;29837:12;29801:50;29880:4;29868:17;;-1:-1:-1;29911:14:33;29907:27;;;29897:38;;29894:58;;;29948:1;29945;29938:12;30315:355;30436:9;30447;30489:8;30477:10;30474:24;30471:44;;;30511:1;30508;30501:12;30471:44;30540:6;30530:8;30527:20;30524:40;;;30560:1;30557;30550:12;30524:40;-1:-1:-1;;30602:1:33;30598:18;;;30586:31;;30639:25;;;;;-1:-1:-1;30315:355:33:o;30675:329::-;30773:4;30831:11;30818:25;30925:2;30921:7;30910:8;30894:14;30890:29;30886:43;30866:18;30862:68;30852:96;;30944:1;30941;30934:12;33312:475;33557:2;33546:9;33539:21;33520:4;33583:61;33640:2;33629:9;33625:18;33617:6;33609;33583:61;:::i;:::-;33692:9;33684:6;33680:22;33675:2;33664:9;33660:18;33653:50;33720:61;33774:6;33766;33758;33720:61;:::i;:::-;33712:69;33312:475;-1:-1:-1;;;;;;;33312:475:33:o;33792:245::-;33859:6;33912:2;33900:9;33891:7;33887:23;33883:32;33880:52;;;33928:1;33925;33918:12;33880:52;33960:9;33954:16;33979:28;34001:5;33979:28;:::i;34042:553::-;34139:6;34147;34200:2;34188:9;34179:7;34175:23;34171:32;34168:52;;;34216:1;34213;34206:12;34168:52;34249:9;34243:16;-1:-1:-1;;;;;34274:6:33;34271:30;34268:50;;;34314:1;34311;34304:12;34268:50;34337:60;34389:7;34380:6;34369:9;34365:22;34337:60;:::i;:::-;34327:70;;;34443:2;34432:9;34428:18;34422:25;-1:-1:-1;;;;;34462:8:33;34459:32;34456:52;;;34504:1;34501;34494:12;34456:52;34527:62;34581:7;34570:8;34559:9;34555:24;34527:62;:::i;34600:307::-;34777:2;34766:9;34759:21;34740:4;34797:45;34838:2;34827:9;34823:18;34815:6;34797:45;:::i;:::-;34789:53;;34892:6;34885:14;34878:22;34873:2;34862:9;34858:18;34851:50;34600:307;;;;;:::o;34912:1972::-;35014:6;35067:2;35055:9;35046:7;35042:23;35038:32;35035:52;;;35083:1;35080;35073:12;35035:52;35116:9;35110:16;-1:-1:-1;;;;;35141:6:33;35138:30;35135:50;;;35181:1;35178;35171:12;35135:50;35204:22;;35260:6;35242:16;;;35238:29;35235:49;;;35280:1;35277;35270:12;35235:49;35306:22;;:::i;:::-;35359:2;35353:9;-1:-1:-1;;;;;35377:8:33;35374:32;35371:52;;;35419:1;35416;35409:12;35371:52;35446:55;35493:7;35482:8;35478:2;35474:17;35446:55;:::i;:::-;35439:5;35432:70;;35541:2;35537;35533:11;35527:18;-1:-1:-1;;;;;35560:8:33;35557:32;35554:52;;;35602:1;35599;35592:12;35554:52;35638:55;35685:7;35674:8;35670:2;35666:17;35638:55;:::i;:::-;35633:2;35626:5;35622:14;35615:79;;35733:2;35729;35725:11;35719:18;-1:-1:-1;;;;;35752:8:33;35749:32;35746:52;;;35794:1;35791;35784:12;35746:52;35830:55;35877:7;35866:8;35862:2;35858:17;35830:55;:::i;:::-;35825:2;35818:5;35814:14;35807:79;;35925:2;35921;35917:11;35911:18;-1:-1:-1;;;;;35944:8:33;35941:32;35938:52;;;35986:1;35983;35976:12;35938:52;36022:55;36069:7;36058:8;36054:2;36050:17;36022:55;:::i;:::-;36017:2;36010:5;36006:14;35999:79;;36117:3;36113:2;36109:12;36103:19;-1:-1:-1;;;;;36137:8:33;36134:32;36131:52;;;36179:1;36176;36169:12;36131:52;36216:55;36263:7;36252:8;36248:2;36244:17;36216:55;:::i;:::-;36210:3;36203:5;36199:15;36192:80;;36311:3;36307:2;36303:12;36297:19;-1:-1:-1;;;;;36331:8:33;36328:32;36325:52;;;36373:1;36370;36363:12;36325:52;36410:55;36457:7;36446:8;36442:2;36438:17;36410:55;:::i;:::-;36404:3;36397:5;36393:15;36386:80;;36505:3;36501:2;36497:12;36491:19;-1:-1:-1;;;;;36525:8:33;36522:32;36519:52;;;36567:1;36564;36557:12;36519:52;36604:55;36651:7;36640:8;36636:2;36632:17;36604:55;:::i;:::-;36598:3;36591:5;36587:15;36580:80;;36699:3;36695:2;36691:12;36685:19;-1:-1:-1;;;;;36719:8:33;36716:32;36713:52;;;36761:1;36758;36751:12;36713:52;36798:55;36845:7;36834:8;36830:2;36826:17;36798:55;:::i;:::-;36792:3;36781:15;;36774:80;-1:-1:-1;36785:5:33;34912:1972;-1:-1:-1;;;;34912:1972:33:o;37502:529::-;37742:2;37731:9;37724:21;37705:4;37762:66;37824:2;37813:9;37809:18;37801:6;37762:66;:::i;:::-;37754:74;;37858:2;37850:6;37847:14;37837:145;;37904:10;37899:3;37895:20;37892:1;37885:31;37939:4;37936:1;37929:15;37967:4;37964:1;37957:15;37837:145;38018:6;38013:2;38002:9;37998:18;37991:34;37502:529;;;;;:::o;38036:456::-;38124:6;38132;38140;38193:2;38181:9;38172:7;38168:23;38164:32;38161:52;;;38209:1;38206;38199:12;38161:52;-1:-1:-1;;38254:16:33;;38360:2;38345:18;;38339:25;38456:2;38441:18;;;38435:25;38254:16;;38339:25;;-1:-1:-1;38435:25:33;38036:456;-1:-1:-1;38036:456:33:o;38971:342::-;39173:2;39155:21;;;39212:2;39192:18;;;39185:30;-1:-1:-1;;;39246:2:33;39231:18;;39224:48;39304:2;39289:18;;38971:342::o;39318:486::-;39520:2;39502:21;;;39559:2;39539:18;;;39532:30;39598:34;39593:2;39578:18;;39571:62;39669:34;39664:2;39649:18;;39642:62;-1:-1:-1;;;39735:3:33;39720:19;;39713:49;39794:3;39779:19;;39318:486::o;39809:487::-;40011:2;39993:21;;;40050:2;40030:18;;;40023:30;40089:34;40084:2;40069:18;;40062:62;40160:34;40155:2;40140:18;;40133:62;-1:-1:-1;;;40226:3:33;40211:19;;40204:50;40286:3;40271:19;;39809:487::o;41700:1173::-;41814:6;41822;41875:2;41863:9;41854:7;41850:23;41846:32;41843:52;;;41891:1;41888;41881:12;41843:52;41924:9;41918:16;-1:-1:-1;;;;;41949:6:33;41946:30;41943:50;;;41989:1;41986;41979:12;41943:50;42012:22;;42065:4;42057:13;;42053:27;-1:-1:-1;42043:55:33;;42094:1;42091;42084:12;42043:55;42127:2;42121:9;42150:63;42166:46;42205:6;42166:46;:::i;42150:63::-;42235:3;42259:6;42254:3;42247:19;42291:4;42286:3;42282:14;42275:21;;42348:4;42338:6;42335:1;42331:14;42327:2;42323:23;42319:34;42305:48;;42376:7;42368:6;42365:19;42362:39;;;42397:1;42394;42387:12;42362:39;42429:4;42425:2;42421:13;42443:308;42459:6;42454:3;42451:15;42443:308;;;42540:3;42534:10;-1:-1:-1;;;;;42563:11:33;42560:35;42557:55;;;42608:1;42605;42598:12;42557:55;42637:69;42698:7;42691:4;42677:11;42673:2;42669:20;42665:31;42637:69;:::i;:::-;42625:82;;-1:-1:-1;42736:4:33;42727:14;;;;42476;42443:308;;;-1:-1:-1;42837:4:33;42822:20;;;;42816:27;42770:5;;42816:27;;-1:-1:-1;;;;;;41700:1173:33:o;44944:331::-;45049:9;45060;45102:8;45090:10;45087:24;45084:44;;;45124:1;45121;45114:12;45084:44;45153:6;45143:8;45140:20;45137:40;;;45173:1;45170;45163:12;45137:40;-1:-1:-1;;45199:23:33;;;45244:25;;;;;-1:-1:-1;44944:331:33:o",
3018
3068
  linkReferences: {
3019
3069
  "src/InputsExtractor.sol": {
3020
3070
  InputsExtractor: [
3021
- { start: 1869, length: 20 },
3022
- { start: 2033, length: 20 },
3023
- { start: 2156, length: 20 },
3024
- { start: 2564, length: 20 },
3025
- { start: 2925, length: 20 },
3026
- { start: 3089, length: 20 },
3027
- { start: 3227, length: 20 },
3028
- { start: 3849, length: 20 },
3029
- { start: 5229, length: 20 },
3030
- { start: 7201, length: 20 },
3031
- { start: 7804, length: 20 },
3032
- { start: 8633, length: 20 },
3033
- { start: 9175, length: 20 }
3071
+ { start: 1590, length: 20 },
3072
+ { start: 1911, length: 20 },
3073
+ { start: 3348, length: 20 },
3074
+ { start: 3471, length: 20 },
3075
+ { start: 3987, length: 20 },
3076
+ { start: 4825, length: 20 },
3077
+ { start: 5434, length: 20 },
3078
+ { start: 7419, length: 20 },
3079
+ { start: 7542, length: 20 },
3080
+ { start: 7862, length: 20 },
3081
+ { start: 8405, length: 20 },
3082
+ { start: 9207, length: 20 },
3083
+ { start: 9483, length: 20 }
3034
3084
  ]
3035
3085
  }
3036
3086
  }
@@ -3041,43 +3091,43 @@ var ZKPassportVerifier_default = {
3041
3091
  "SANCTIONS_REGISTRY_ID()": "652ba33d",
3042
3092
  "addVerifiers(bytes32[],address[])": "a6df2c01",
3043
3093
  "admin()": "f851a440",
3044
- "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "653cfd81",
3045
- "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "59545f45",
3046
- "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": "1e26a9dc",
3047
- "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "37889655",
3048
- "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "54dbe4d1",
3049
- "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "bf73c26c",
3050
- "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "aa1346ea",
3051
- "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "62067c82",
3052
- "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c0940ebd",
3053
- "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "04951b86",
3054
- "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "704876d6",
3055
- "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "921076c7",
3056
- "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "deb7c059",
3057
- "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c4560786",
3058
- "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "0b90581b",
3059
- "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d3f6ffff",
3060
- "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "4c127428",
3061
- "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "a88f1cef",
3062
- "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e718bc32",
3063
- "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "46bd0a16",
3064
- "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "cfd9464a",
3065
- "isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "2e27242c",
3066
- "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "ec46f774",
3067
- "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "3a86bd3d",
3068
- "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "f87e19b1",
3069
- "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e420e354",
3094
+ "enforceSanctionsRoot((bytes,uint256[]))": "16e3d729",
3095
+ "getBoundData((bytes,uint256[]))": "98e73ac3",
3096
+ "getDisclosedData((bytes,uint256[]),bool)": "f3757ad4",
3097
+ "isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "c3fa6f22",
3098
+ "isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "2e5ce77f",
3099
+ "isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "818694f1",
3100
+ "isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "d4932b4e",
3101
+ "isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": "cf515d37",
3102
+ "isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "ff203707",
3103
+ "isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "b8bd4879",
3104
+ "isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "c1b77162",
3105
+ "isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "9c1a81a3",
3106
+ "isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "1fac4345",
3107
+ "isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": "311a335c",
3108
+ "isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "320d3b55",
3109
+ "isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "ac20d678",
3110
+ "isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "ca4051f2",
3111
+ "isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "ddd8f8e3",
3112
+ "isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "8e2e2e62",
3113
+ "isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": "3d6ed975",
3114
+ "isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "8b2ec611",
3115
+ "isFaceMatchVerified(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": "c04fa6fe",
3116
+ "isIssuingCountryIn(string[],(bytes,uint256[]))": "7e5a88f3",
3117
+ "isIssuingCountryOut(string[],(bytes,uint256[]))": "5b7ab929",
3118
+ "isNationalityIn(string[],(bytes,uint256[]))": "46b758a0",
3119
+ "isNationalityOut(string[],(bytes,uint256[]))": "d39a5cf9",
3070
3120
  "paused()": "5c975abb",
3071
3121
  "removeVerifiers(bytes32[])": "8d6937b8",
3072
3122
  "rootRegistry()": "b96b161c",
3073
3123
  "setPaused(bool)": "16c38b3c",
3074
3124
  "transferAdmin(address)": "75829def",
3075
3125
  "updateRootRegistry(address)": "18677f2a",
3076
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d7bf616a",
3126
+ "verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))": "ec8e0729",
3077
3127
  "verifyScopes(bytes32[],string,string)": "847755e3",
3078
3128
  "vkeyHashToVerifier(bytes32)": "8163f231"
3079
3129
  },
3080
- rawMetadata: '{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_sanctionsTreesRoot","type":"bytes32"}],"name":"SanctionsTreesRootUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"}],"name":"VerifierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ZKPassportVerifierDeployed","type":"event"},{"inputs":[],"name":"CERTIFICATE_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CIRCUIT_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SANCTIONS_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"},{"internalType":"address[]","name":"verifiers","type":"address[]"}],"name":"addVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"getBoundData","outputs":[{"components":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"string","name":"customData","type":"string"}],"internalType":"struct BoundData","name":"boundData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"},{"internalType":"bool","name":"isIDCard","type":"bool"}],"name":"getDisclosedData","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}],"internalType":"struct DisclosedData","name":"disclosedData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeAbove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeAboveOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBelowOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"age","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum FaceMatchMode","name":"faceMatchMode","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isFaceMatchVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isIssuingCountryIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isIssuingCountryOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isNationalityIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isNationalityOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"name":"removeVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootRegistry","outputs":[{"internalType":"contract IRootRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"name":"updateRootRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"}],"name":"verifyScopes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"vkeyHashToVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor"},"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"}},"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"boundData":"The data bound to the proof"}},"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)":{"params":{"isIDCard":"Whether the proof is an ID card","params":"The proof verification parameters"},"returns":{"disclosedData":"The data disclosed by the proof"}},"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minAge":"The age must be above this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is above the given age, false otherwise"}},"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minAge":"The age must be above or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is above or equal to the given age, false otherwise"}},"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be below this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is below the given age, false otherwise"}},"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be below or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is below or equal to the given age, false otherwise"}},"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be less than or equal to this age","minAge":"The age must be greater than or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is in the given range, false otherwise"}},"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"age":"The age must be equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is equal to the given age, false otherwise"}},"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The birthdate must be after this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is after the given date, false otherwise"}},"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The birthdate must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is after or equal to the given date, false otherwise"}},"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is before the given date, false otherwise"}},"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is before or equal to the given date, false otherwise"}},"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before or equal to this date","minDate":"The birthdate must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is between the given dates, false otherwise"}},"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"date":"The birthdate must be equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is equal to the given date, false otherwise"}},"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The expiry date must be after this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is after the given date, false otherwise"}},"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The expiry date must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is after or equal to the given date, false otherwise"}},"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is before the given date, false otherwise"}},"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is before or equal to the given date, false otherwise"}},"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before or equal to this date","minDate":"The expiry date must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is between the given dates, false otherwise"}},"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"date":"The expiry date must be equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is equal to the given date, false otherwise"}},"isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"faceMatchMode":"The FaceMatch mode expected to be used in the verification","params":"The proof verification parameters"},"returns":{"_0":"True if the proof is tied to a valid FaceMatch verification, false otherwise"}},"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof)","params":"The proof verification parameters"},"returns":{"_0":"True if the issuing country is in the list of countries, false otherwise"}},"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order","params":"The proof verification parameters"},"returns":{"_0":"True if the issuing country is not in the list of countries, false otherwise"}},"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof)","params":"The proof verification parameters"},"returns":{"_0":"True if the nationality is in the list of countries, false otherwise"}},"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order","params":"The proof verification parameters"},"returns":{"_0":"True if the nationality is not in the list of countries, false otherwise"}},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}},"verifyScopes(bytes32[],string,string)":{"params":{"domain":"The domain to check against","publicInputs":"The public inputs of the proof","scope":"The scope to check against"},"returns":{"_0":"True if the proof was generated for the given domain and scope, false otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Enforces that the proof checks against the expected sanction list(s)"},"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Gets the data bound to the proof"},"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)":{"notice":"Gets the data disclosed by the proof"},"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is above the given age"},"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is above or equal to the given age"},"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is below the given age"},"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is below or equal to the given age"},"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is in the given range"},"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is equal to the given age"},"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is after the given date"},"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is after or equal to the given date"},"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is before the given date"},"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is before or equal to the given date"},"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is between the given dates"},"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is equal to the given date"},"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is after the given date"},"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is after or equal to the given date"},"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is before the given date"},"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is before or equal to the given date"},"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is between the given dates"},"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is equal to the given date"},"isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the proof is tied to a FaceMatch verification"},"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the issuing country is in the list of countries"},"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the issuing country is not in the list of countries"},"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the nationality is in the list of countries"},"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the nationality is not in the list of countries"},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Verifies a proof from ZKPassport"},"verifyScopes(bytes32[],string,string)":{"notice":"Verifies that the proof was generated for the given domain and scope"}},"version":1}},"settings":{"compilationTarget":{"src/ZKPassportVerifier.sol":"ZKPassportVerifier"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":forge-std/=lib/forge-std/src/"]},"sources":{"src/Constants.sol":{"keccak256":"0xedfdbd23c885320a6400c29a47cfd2e359fa67feaa7e72eb576a36ab47757126","license":"Apache-2.0","urls":["bzz-raw://752ce1099ed498206732837c776e1f364cb89a18356601f92c8c23c5b176a2cb","dweb:/ipfs/QmdnGyvFCHvtm2FVAAYUoTRRXUC1nLWXjz3pkHpAnM9rfn"]},"src/DateUtils.sol":{"keccak256":"0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77","license":"Apache-2.0","urls":["bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833","dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"]},"src/IRootRegistry.sol":{"keccak256":"0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516","license":"MIT","urls":["bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d","dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"]},"src/InputsExtractor.sol":{"keccak256":"0xfcf678bb8fead1820159845e47c2efefdca16452ab2f30b1704efc13253512eb","license":"Apache-2.0","urls":["bzz-raw://aa83383e296a2b748c093b017e12719aeb1897ca3a677f3def76929951440111","dweb:/ipfs/QmYSCdnm5EuQwrF2mnpRVtTLg4uPH1uUJQxYKyJtjEwq3y"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0x96820d882e9fbdfe5b8d28992a59c4df49733c39fa811282f42b6550fa0d4fe9","license":"Apache-2.0","urls":["bzz-raw://c1cc625bfa759185e433b71f5fc22eef47236f57d217354d180beef91077dcc1","dweb:/ipfs/QmXh6MDGjMx7AL4FjstCEtqNLHp9sCExw5CEzFpD8orYh2"]},"src/ZKPassportVerifier.sol":{"keccak256":"0xcb976ea606732493b4497f5f12e2c6296f397735b1286a8bb1477e7cde195e43","license":"Apache-2.0","urls":["bzz-raw://d186a469d3e30743ddbb719a1ecf71c9787359b2a8287e86c9ac294a17e6db38","dweb:/ipfs/QmSxzqPo33R3EhPzm8fF4k4ShUSp58Nr7qzBVadHWBXxMr"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0xc0b2358f1cb49d10ab783b6ccf321e8bde6eb8ce70efe325fdf49987f1688b94","license":"Apache-2.0","urls":["bzz-raw://c5ddd3b3c3e2522e766c5ab95d2559ce4e79fe54e9aeb50b1c995ad1d8ed18ee","dweb:/ipfs/Qmcu7WhWMk3TPxb3HuwEPiXF95F6eD8KmJ12RXxFBdCYgM"]}},"version":1}',
3130
+ rawMetadata: '{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_sanctionsTreesRoot","type":"bytes32"}],"name":"SanctionsTreesRootUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"}],"name":"VerifierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ZKPassportVerifierDeployed","type":"event"},{"inputs":[],"name":"CERTIFICATE_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CIRCUIT_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SANCTIONS_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"},{"internalType":"address[]","name":"verifiers","type":"address[]"}],"name":"addVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"getBoundData","outputs":[{"components":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"string","name":"customData","type":"string"}],"internalType":"struct BoundData","name":"boundData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"internalType":"bool","name":"isIDCard","type":"bool"}],"name":"getDisclosedData","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}],"internalType":"struct DisclosedData","name":"disclosedData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeAbove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeAboveOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeBelowOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"age","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum FaceMatchMode","name":"faceMatchMode","type":"uint8"},{"internalType":"enum OS","name":"os","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isFaceMatchVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isIssuingCountryIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isIssuingCountryOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isNationalityIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isNationalityOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"name":"removeVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootRegistry","outputs":[{"internalType":"contract IRootRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"name":"updateRootRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}],"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"}],"name":"verifyScopes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"vkeyHashToVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor"},"enforceSanctionsRoot((bytes,uint256[]))":{"params":{"commitments":"The commitments"}},"getBoundData((bytes,uint256[]))":{"params":{"commitments":"The commitments"},"returns":{"boundData":"The data bound to the proof"}},"getDisclosedData((bytes,uint256[]),bool)":{"params":{"commitments":"The commitments","isIDCard":"Whether the proof is an ID card"},"returns":{"disclosedData":"The data disclosed by the proof"}},"isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minAge":"The age must be above this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is above the given age, false otherwise"}},"isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minAge":"The age must be above or equal to this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is above or equal to the given age, false otherwise"}},"isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxAge":"The age must be below this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is below the given age, false otherwise"}},"isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxAge":"The age must be below or equal to this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is below or equal to the given age, false otherwise"}},"isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxAge":"The age must be less than or equal to this age","minAge":"The age must be greater than or equal to this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is in the given range, false otherwise"}},"isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"age":"The age must be equal to this age","commitments":"The commitments","serviceConfig":"The service config"},"returns":{"_0":"True if the age is equal to the given age, false otherwise"}},"isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The birthdate must be after this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is after the given date, false otherwise"}},"isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The birthdate must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is after or equal to the given date, false otherwise"}},"isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is before the given date, false otherwise"}},"isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is before or equal to the given date, false otherwise"}},"isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before or equal to this date","minDate":"The birthdate must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is between the given dates, false otherwise"}},"isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","date":"The birthdate must be equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is equal to the given date, false otherwise"}},"isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The expiry date must be after this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is after the given date, false otherwise"}},"isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The expiry date must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is after or equal to the given date, false otherwise"}},"isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is before the given date, false otherwise"}},"isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is before or equal to the given date, false otherwise"}},"isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before or equal to this date","minDate":"The expiry date must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is between the given dates, false otherwise"}},"isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","date":"The expiry date must be equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is equal to the given date, false otherwise"}},"isFaceMatchVerified(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","faceMatchMode":"The FaceMatch mode expected to be used in the verification","os":"The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2))","serviceConfig":"The service config"},"returns":{"_0":"True if the proof is tied to a valid FaceMatch verification, false otherwise"}},"isIssuingCountryIn(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof)"},"returns":{"_0":"True if the issuing country is in the list of countries, false otherwise"}},"isIssuingCountryOut(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"},"returns":{"_0":"True if the issuing country is not in the list of countries, false otherwise"}},"isNationalityIn(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof)"},"returns":{"_0":"True if the nationality is in the list of countries, false otherwise"}},"isNationalityOut(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"},"returns":{"_0":"True if the nationality is not in the list of countries, false otherwise"}},"verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))":{"params":{"params":"The proof verification parameters"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}},"verifyScopes(bytes32[],string,string)":{"params":{"domain":"The domain to check against","publicInputs":"The public inputs of the proof","scope":"The scope to check against"},"returns":{"_0":"True if the proof was generated for the given domain and scope, false otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"enforceSanctionsRoot((bytes,uint256[]))":{"notice":"Enforces that the proof checks against the expected sanction list(s)"},"getBoundData((bytes,uint256[]))":{"notice":"Gets the data bound to the proof"},"getDisclosedData((bytes,uint256[]),bool)":{"notice":"Gets the data disclosed by the proof"},"isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is above the given age"},"isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is above or equal to the given age"},"isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is below the given age"},"isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is below or equal to the given age"},"isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is in the given range"},"isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is equal to the given age"},"isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is after the given date"},"isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is after or equal to the given date"},"isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is before the given date"},"isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is before or equal to the given date"},"isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is between the given dates"},"isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is equal to the given date"},"isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is after the given date"},"isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is after or equal to the given date"},"isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is before the given date"},"isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is before or equal to the given date"},"isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is between the given dates"},"isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is equal to the given date"},"isFaceMatchVerified(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the proof is tied to a FaceMatch verification"},"isIssuingCountryIn(string[],(bytes,uint256[]))":{"notice":"Checks if the issuing country is in the list of countries"},"isIssuingCountryOut(string[],(bytes,uint256[]))":{"notice":"Checks if the issuing country is not in the list of countries"},"isNationalityIn(string[],(bytes,uint256[]))":{"notice":"Checks if the nationality is in the list of countries"},"isNationalityOut(string[],(bytes,uint256[]))":{"notice":"Checks if the nationality is not in the list of countries"},"verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))":{"notice":"Verifies a proof from ZKPassport"},"verifyScopes(bytes32[],string,string)":{"notice":"Verifies that the proof was generated for the given domain and scope"}},"version":1}},"settings":{"compilationTarget":{"src/ZKPassportVerifier.sol":"ZKPassportVerifier"},"evmVersion":"prague","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":forge-std/=lib/forge-std/src/"]},"sources":{"src/Constants.sol":{"keccak256":"0x9028200b38f4ec17533664ed4d04e16c500b68ef398d0935811a16409bd9d84f","license":"Apache-2.0","urls":["bzz-raw://065da1a99b9be089622088760a46cf5ec6a0bbece388cb722d12fd4f67237ce4","dweb:/ipfs/Qmdqt9UV9ecPBTdVsudSDVszwgu3U2DG3e9DZ4AJt7Zghm"]},"src/DateUtils.sol":{"keccak256":"0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77","license":"Apache-2.0","urls":["bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833","dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"]},"src/IRootRegistry.sol":{"keccak256":"0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516","license":"MIT","urls":["bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d","dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"]},"src/InputsExtractor.sol":{"keccak256":"0x85df2d9d89bb8538bd3d7168c30d8ace823a3710ee83ef3a8fbc1f59a7720473","license":"Apache-2.0","urls":["bzz-raw://7681a82ac614eafba56b8a9c1b7943f0d66cce6a5319124fb214a13f00535f07","dweb:/ipfs/QmPoj2DXmCeuYGZpAf4MWUwc5buMRqwykUc1B8mryQrPqT"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0x1cb492c099b71287da0349afef0c72c430e2476ad7373a0ea1456e7145207a06","license":"Apache-2.0","urls":["bzz-raw://a158753948b82917aa802c4b475a1ffb4b5f09b2a86ebcb64db11437ab297047","dweb:/ipfs/QmPgGhT59MzcG4TA5PmKjzaoNMZ4VRmcLJH6w5LkWQYjxV"]},"src/ZKPassportVerifier.sol":{"keccak256":"0xc1a8e1598a279af7a72f60c684531a3cb43e81f65a394dd2ea12da78dae27cc5","license":"Apache-2.0","urls":["bzz-raw://9b6a3ebc79fa7ed343f5a46730a4c24431768d2276fe0295fed3814d795eab1b","dweb:/ipfs/QmboGSLvn9BFNEikCzoBTVrqoXLQKUKN8eMn5VZqyFP2Q9"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0x0f0d75a82f697db2db5f689acd8fbd603940a2e2d862601a16316a3a21a6f916","license":"Apache-2.0","urls":["bzz-raw://b2306e16c0265d824e0a5aa4cd1fea70a1322af74a4e8b34df1444c0e47ed345","dweb:/ipfs/QmRaEPoyvBX2n1VV9SoXPmoEEXzRyFGB9obQUuYuuXAMAR"]}},"version":1}',
3081
3131
  metadata: {
3082
3132
  compiler: { version: "0.8.29+commit.ab55807c" },
3083
3133
  language: "Solidity",
@@ -3210,23 +3260,12 @@ var ZKPassportVerifier_default = {
3210
3260
  {
3211
3261
  inputs: [
3212
3262
  {
3213
- internalType: "struct ProofVerificationParams",
3214
- name: "params",
3263
+ internalType: "struct Commitments",
3264
+ name: "commitments",
3215
3265
  type: "tuple",
3216
3266
  components: [
3217
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3218
- { internalType: "bytes", name: "proof", type: "bytes" },
3219
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3220
3267
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3221
- {
3222
- internalType: "uint256[]",
3223
- name: "committedInputCounts",
3224
- type: "uint256[]"
3225
- },
3226
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3227
- { internalType: "string", name: "domain", type: "string" },
3228
- { internalType: "string", name: "scope", type: "string" },
3229
- { internalType: "bool", name: "devMode", type: "bool" }
3268
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3230
3269
  ]
3231
3270
  }
3232
3271
  ],
@@ -3237,23 +3276,12 @@ var ZKPassportVerifier_default = {
3237
3276
  {
3238
3277
  inputs: [
3239
3278
  {
3240
- internalType: "struct ProofVerificationParams",
3241
- name: "params",
3279
+ internalType: "struct Commitments",
3280
+ name: "commitments",
3242
3281
  type: "tuple",
3243
3282
  components: [
3244
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3245
- { internalType: "bytes", name: "proof", type: "bytes" },
3246
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3247
3283
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3248
- {
3249
- internalType: "uint256[]",
3250
- name: "committedInputCounts",
3251
- type: "uint256[]"
3252
- },
3253
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3254
- { internalType: "string", name: "domain", type: "string" },
3255
- { internalType: "string", name: "scope", type: "string" },
3256
- { internalType: "bool", name: "devMode", type: "bool" }
3284
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3257
3285
  ]
3258
3286
  }
3259
3287
  ],
@@ -3276,23 +3304,12 @@ var ZKPassportVerifier_default = {
3276
3304
  {
3277
3305
  inputs: [
3278
3306
  {
3279
- internalType: "struct ProofVerificationParams",
3280
- name: "params",
3307
+ internalType: "struct Commitments",
3308
+ name: "commitments",
3281
3309
  type: "tuple",
3282
3310
  components: [
3283
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3284
- { internalType: "bytes", name: "proof", type: "bytes" },
3285
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3286
3311
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3287
- {
3288
- internalType: "uint256[]",
3289
- name: "committedInputCounts",
3290
- type: "uint256[]"
3291
- },
3292
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3293
- { internalType: "string", name: "domain", type: "string" },
3294
- { internalType: "string", name: "scope", type: "string" },
3295
- { internalType: "bool", name: "devMode", type: "bool" }
3312
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3296
3313
  ]
3297
3314
  },
3298
3315
  { internalType: "bool", name: "isIDCard", type: "bool" }
@@ -3322,19 +3339,19 @@ var ZKPassportVerifier_default = {
3322
3339
  inputs: [
3323
3340
  { internalType: "uint8", name: "minAge", type: "uint8" },
3324
3341
  {
3325
- internalType: "struct ProofVerificationParams",
3326
- name: "params",
3342
+ internalType: "struct Commitments",
3343
+ name: "commitments",
3327
3344
  type: "tuple",
3328
3345
  components: [
3329
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3330
- { internalType: "bytes", name: "proof", type: "bytes" },
3331
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3332
3346
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3333
- {
3334
- internalType: "uint256[]",
3335
- name: "committedInputCounts",
3336
- type: "uint256[]"
3337
- },
3347
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3348
+ ]
3349
+ },
3350
+ {
3351
+ internalType: "struct ServiceConfig",
3352
+ name: "serviceConfig",
3353
+ type: "tuple",
3354
+ components: [
3338
3355
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3339
3356
  { internalType: "string", name: "domain", type: "string" },
3340
3357
  { internalType: "string", name: "scope", type: "string" },
@@ -3351,19 +3368,19 @@ var ZKPassportVerifier_default = {
3351
3368
  inputs: [
3352
3369
  { internalType: "uint8", name: "minAge", type: "uint8" },
3353
3370
  {
3354
- internalType: "struct ProofVerificationParams",
3355
- name: "params",
3371
+ internalType: "struct Commitments",
3372
+ name: "commitments",
3356
3373
  type: "tuple",
3357
3374
  components: [
3358
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3359
- { internalType: "bytes", name: "proof", type: "bytes" },
3360
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3361
3375
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3362
- {
3363
- internalType: "uint256[]",
3364
- name: "committedInputCounts",
3365
- type: "uint256[]"
3366
- },
3376
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3377
+ ]
3378
+ },
3379
+ {
3380
+ internalType: "struct ServiceConfig",
3381
+ name: "serviceConfig",
3382
+ type: "tuple",
3383
+ components: [
3367
3384
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3368
3385
  { internalType: "string", name: "domain", type: "string" },
3369
3386
  { internalType: "string", name: "scope", type: "string" },
@@ -3380,19 +3397,19 @@ var ZKPassportVerifier_default = {
3380
3397
  inputs: [
3381
3398
  { internalType: "uint8", name: "maxAge", type: "uint8" },
3382
3399
  {
3383
- internalType: "struct ProofVerificationParams",
3384
- name: "params",
3400
+ internalType: "struct Commitments",
3401
+ name: "commitments",
3385
3402
  type: "tuple",
3386
3403
  components: [
3387
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3388
- { internalType: "bytes", name: "proof", type: "bytes" },
3389
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3390
3404
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3391
- {
3392
- internalType: "uint256[]",
3393
- name: "committedInputCounts",
3394
- type: "uint256[]"
3395
- },
3405
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3406
+ ]
3407
+ },
3408
+ {
3409
+ internalType: "struct ServiceConfig",
3410
+ name: "serviceConfig",
3411
+ type: "tuple",
3412
+ components: [
3396
3413
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3397
3414
  { internalType: "string", name: "domain", type: "string" },
3398
3415
  { internalType: "string", name: "scope", type: "string" },
@@ -3409,19 +3426,19 @@ var ZKPassportVerifier_default = {
3409
3426
  inputs: [
3410
3427
  { internalType: "uint8", name: "maxAge", type: "uint8" },
3411
3428
  {
3412
- internalType: "struct ProofVerificationParams",
3413
- name: "params",
3429
+ internalType: "struct Commitments",
3430
+ name: "commitments",
3414
3431
  type: "tuple",
3415
3432
  components: [
3416
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3417
- { internalType: "bytes", name: "proof", type: "bytes" },
3418
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3419
3433
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3420
- {
3421
- internalType: "uint256[]",
3422
- name: "committedInputCounts",
3423
- type: "uint256[]"
3424
- },
3434
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3435
+ ]
3436
+ },
3437
+ {
3438
+ internalType: "struct ServiceConfig",
3439
+ name: "serviceConfig",
3440
+ type: "tuple",
3441
+ components: [
3425
3442
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3426
3443
  { internalType: "string", name: "domain", type: "string" },
3427
3444
  { internalType: "string", name: "scope", type: "string" },
@@ -3439,19 +3456,19 @@ var ZKPassportVerifier_default = {
3439
3456
  { internalType: "uint8", name: "minAge", type: "uint8" },
3440
3457
  { internalType: "uint8", name: "maxAge", type: "uint8" },
3441
3458
  {
3442
- internalType: "struct ProofVerificationParams",
3443
- name: "params",
3459
+ internalType: "struct Commitments",
3460
+ name: "commitments",
3444
3461
  type: "tuple",
3445
3462
  components: [
3446
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3447
- { internalType: "bytes", name: "proof", type: "bytes" },
3448
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3449
3463
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3450
- {
3451
- internalType: "uint256[]",
3452
- name: "committedInputCounts",
3453
- type: "uint256[]"
3454
- },
3464
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3465
+ ]
3466
+ },
3467
+ {
3468
+ internalType: "struct ServiceConfig",
3469
+ name: "serviceConfig",
3470
+ type: "tuple",
3471
+ components: [
3455
3472
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3456
3473
  { internalType: "string", name: "domain", type: "string" },
3457
3474
  { internalType: "string", name: "scope", type: "string" },
@@ -3468,19 +3485,19 @@ var ZKPassportVerifier_default = {
3468
3485
  inputs: [
3469
3486
  { internalType: "uint8", name: "age", type: "uint8" },
3470
3487
  {
3471
- internalType: "struct ProofVerificationParams",
3472
- name: "params",
3488
+ internalType: "struct Commitments",
3489
+ name: "commitments",
3473
3490
  type: "tuple",
3474
3491
  components: [
3475
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3476
- { internalType: "bytes", name: "proof", type: "bytes" },
3477
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3478
3492
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3479
- {
3480
- internalType: "uint256[]",
3481
- name: "committedInputCounts",
3482
- type: "uint256[]"
3483
- },
3493
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3494
+ ]
3495
+ },
3496
+ {
3497
+ internalType: "struct ServiceConfig",
3498
+ name: "serviceConfig",
3499
+ type: "tuple",
3500
+ components: [
3484
3501
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3485
3502
  { internalType: "string", name: "domain", type: "string" },
3486
3503
  { internalType: "string", name: "scope", type: "string" },
@@ -3497,19 +3514,19 @@ var ZKPassportVerifier_default = {
3497
3514
  inputs: [
3498
3515
  { internalType: "uint256", name: "minDate", type: "uint256" },
3499
3516
  {
3500
- internalType: "struct ProofVerificationParams",
3501
- name: "params",
3517
+ internalType: "struct Commitments",
3518
+ name: "commitments",
3502
3519
  type: "tuple",
3503
3520
  components: [
3504
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3505
- { internalType: "bytes", name: "proof", type: "bytes" },
3506
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3507
3521
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3508
- {
3509
- internalType: "uint256[]",
3510
- name: "committedInputCounts",
3511
- type: "uint256[]"
3512
- },
3522
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3523
+ ]
3524
+ },
3525
+ {
3526
+ internalType: "struct ServiceConfig",
3527
+ name: "serviceConfig",
3528
+ type: "tuple",
3529
+ components: [
3513
3530
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3514
3531
  { internalType: "string", name: "domain", type: "string" },
3515
3532
  { internalType: "string", name: "scope", type: "string" },
@@ -3526,19 +3543,19 @@ var ZKPassportVerifier_default = {
3526
3543
  inputs: [
3527
3544
  { internalType: "uint256", name: "minDate", type: "uint256" },
3528
3545
  {
3529
- internalType: "struct ProofVerificationParams",
3530
- name: "params",
3546
+ internalType: "struct Commitments",
3547
+ name: "commitments",
3531
3548
  type: "tuple",
3532
3549
  components: [
3533
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3534
- { internalType: "bytes", name: "proof", type: "bytes" },
3535
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3536
3550
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3537
- {
3538
- internalType: "uint256[]",
3539
- name: "committedInputCounts",
3540
- type: "uint256[]"
3541
- },
3551
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3552
+ ]
3553
+ },
3554
+ {
3555
+ internalType: "struct ServiceConfig",
3556
+ name: "serviceConfig",
3557
+ type: "tuple",
3558
+ components: [
3542
3559
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3543
3560
  { internalType: "string", name: "domain", type: "string" },
3544
3561
  { internalType: "string", name: "scope", type: "string" },
@@ -3555,19 +3572,19 @@ var ZKPassportVerifier_default = {
3555
3572
  inputs: [
3556
3573
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3557
3574
  {
3558
- internalType: "struct ProofVerificationParams",
3559
- name: "params",
3575
+ internalType: "struct Commitments",
3576
+ name: "commitments",
3560
3577
  type: "tuple",
3561
3578
  components: [
3562
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3563
- { internalType: "bytes", name: "proof", type: "bytes" },
3564
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3565
3579
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3566
- {
3567
- internalType: "uint256[]",
3568
- name: "committedInputCounts",
3569
- type: "uint256[]"
3570
- },
3580
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3581
+ ]
3582
+ },
3583
+ {
3584
+ internalType: "struct ServiceConfig",
3585
+ name: "serviceConfig",
3586
+ type: "tuple",
3587
+ components: [
3571
3588
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3572
3589
  { internalType: "string", name: "domain", type: "string" },
3573
3590
  { internalType: "string", name: "scope", type: "string" },
@@ -3584,19 +3601,19 @@ var ZKPassportVerifier_default = {
3584
3601
  inputs: [
3585
3602
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3586
3603
  {
3587
- internalType: "struct ProofVerificationParams",
3588
- name: "params",
3604
+ internalType: "struct Commitments",
3605
+ name: "commitments",
3589
3606
  type: "tuple",
3590
3607
  components: [
3591
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3592
- { internalType: "bytes", name: "proof", type: "bytes" },
3593
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3594
3608
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3595
- {
3596
- internalType: "uint256[]",
3597
- name: "committedInputCounts",
3598
- type: "uint256[]"
3599
- },
3609
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3610
+ ]
3611
+ },
3612
+ {
3613
+ internalType: "struct ServiceConfig",
3614
+ name: "serviceConfig",
3615
+ type: "tuple",
3616
+ components: [
3600
3617
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3601
3618
  { internalType: "string", name: "domain", type: "string" },
3602
3619
  { internalType: "string", name: "scope", type: "string" },
@@ -3614,19 +3631,19 @@ var ZKPassportVerifier_default = {
3614
3631
  { internalType: "uint256", name: "minDate", type: "uint256" },
3615
3632
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3616
3633
  {
3617
- internalType: "struct ProofVerificationParams",
3618
- name: "params",
3634
+ internalType: "struct Commitments",
3635
+ name: "commitments",
3619
3636
  type: "tuple",
3620
3637
  components: [
3621
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3622
- { internalType: "bytes", name: "proof", type: "bytes" },
3623
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3624
3638
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3625
- {
3626
- internalType: "uint256[]",
3627
- name: "committedInputCounts",
3628
- type: "uint256[]"
3629
- },
3639
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3640
+ ]
3641
+ },
3642
+ {
3643
+ internalType: "struct ServiceConfig",
3644
+ name: "serviceConfig",
3645
+ type: "tuple",
3646
+ components: [
3630
3647
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3631
3648
  { internalType: "string", name: "domain", type: "string" },
3632
3649
  { internalType: "string", name: "scope", type: "string" },
@@ -3643,19 +3660,19 @@ var ZKPassportVerifier_default = {
3643
3660
  inputs: [
3644
3661
  { internalType: "uint256", name: "date", type: "uint256" },
3645
3662
  {
3646
- internalType: "struct ProofVerificationParams",
3647
- name: "params",
3663
+ internalType: "struct Commitments",
3664
+ name: "commitments",
3648
3665
  type: "tuple",
3649
3666
  components: [
3650
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3651
- { internalType: "bytes", name: "proof", type: "bytes" },
3652
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3653
3667
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3654
- {
3655
- internalType: "uint256[]",
3656
- name: "committedInputCounts",
3657
- type: "uint256[]"
3658
- },
3668
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3669
+ ]
3670
+ },
3671
+ {
3672
+ internalType: "struct ServiceConfig",
3673
+ name: "serviceConfig",
3674
+ type: "tuple",
3675
+ components: [
3659
3676
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3660
3677
  { internalType: "string", name: "domain", type: "string" },
3661
3678
  { internalType: "string", name: "scope", type: "string" },
@@ -3672,19 +3689,19 @@ var ZKPassportVerifier_default = {
3672
3689
  inputs: [
3673
3690
  { internalType: "uint256", name: "minDate", type: "uint256" },
3674
3691
  {
3675
- internalType: "struct ProofVerificationParams",
3676
- name: "params",
3692
+ internalType: "struct Commitments",
3693
+ name: "commitments",
3677
3694
  type: "tuple",
3678
3695
  components: [
3679
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3680
- { internalType: "bytes", name: "proof", type: "bytes" },
3681
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3682
3696
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3683
- {
3684
- internalType: "uint256[]",
3685
- name: "committedInputCounts",
3686
- type: "uint256[]"
3687
- },
3697
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3698
+ ]
3699
+ },
3700
+ {
3701
+ internalType: "struct ServiceConfig",
3702
+ name: "serviceConfig",
3703
+ type: "tuple",
3704
+ components: [
3688
3705
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3689
3706
  { internalType: "string", name: "domain", type: "string" },
3690
3707
  { internalType: "string", name: "scope", type: "string" },
@@ -3701,19 +3718,19 @@ var ZKPassportVerifier_default = {
3701
3718
  inputs: [
3702
3719
  { internalType: "uint256", name: "minDate", type: "uint256" },
3703
3720
  {
3704
- internalType: "struct ProofVerificationParams",
3705
- name: "params",
3721
+ internalType: "struct Commitments",
3722
+ name: "commitments",
3706
3723
  type: "tuple",
3707
3724
  components: [
3708
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3709
- { internalType: "bytes", name: "proof", type: "bytes" },
3710
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3711
3725
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3712
- {
3713
- internalType: "uint256[]",
3714
- name: "committedInputCounts",
3715
- type: "uint256[]"
3716
- },
3726
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3727
+ ]
3728
+ },
3729
+ {
3730
+ internalType: "struct ServiceConfig",
3731
+ name: "serviceConfig",
3732
+ type: "tuple",
3733
+ components: [
3717
3734
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3718
3735
  { internalType: "string", name: "domain", type: "string" },
3719
3736
  { internalType: "string", name: "scope", type: "string" },
@@ -3730,19 +3747,19 @@ var ZKPassportVerifier_default = {
3730
3747
  inputs: [
3731
3748
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3732
3749
  {
3733
- internalType: "struct ProofVerificationParams",
3734
- name: "params",
3750
+ internalType: "struct Commitments",
3751
+ name: "commitments",
3735
3752
  type: "tuple",
3736
3753
  components: [
3737
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3738
- { internalType: "bytes", name: "proof", type: "bytes" },
3739
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3740
3754
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3741
- {
3742
- internalType: "uint256[]",
3743
- name: "committedInputCounts",
3744
- type: "uint256[]"
3745
- },
3755
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3756
+ ]
3757
+ },
3758
+ {
3759
+ internalType: "struct ServiceConfig",
3760
+ name: "serviceConfig",
3761
+ type: "tuple",
3762
+ components: [
3746
3763
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3747
3764
  { internalType: "string", name: "domain", type: "string" },
3748
3765
  { internalType: "string", name: "scope", type: "string" },
@@ -3759,19 +3776,19 @@ var ZKPassportVerifier_default = {
3759
3776
  inputs: [
3760
3777
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3761
3778
  {
3762
- internalType: "struct ProofVerificationParams",
3763
- name: "params",
3779
+ internalType: "struct Commitments",
3780
+ name: "commitments",
3764
3781
  type: "tuple",
3765
3782
  components: [
3766
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3767
- { internalType: "bytes", name: "proof", type: "bytes" },
3768
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3769
3783
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3770
- {
3771
- internalType: "uint256[]",
3772
- name: "committedInputCounts",
3773
- type: "uint256[]"
3774
- },
3784
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3785
+ ]
3786
+ },
3787
+ {
3788
+ internalType: "struct ServiceConfig",
3789
+ name: "serviceConfig",
3790
+ type: "tuple",
3791
+ components: [
3775
3792
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3776
3793
  { internalType: "string", name: "domain", type: "string" },
3777
3794
  { internalType: "string", name: "scope", type: "string" },
@@ -3789,19 +3806,19 @@ var ZKPassportVerifier_default = {
3789
3806
  { internalType: "uint256", name: "minDate", type: "uint256" },
3790
3807
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3791
3808
  {
3792
- internalType: "struct ProofVerificationParams",
3793
- name: "params",
3809
+ internalType: "struct Commitments",
3810
+ name: "commitments",
3794
3811
  type: "tuple",
3795
3812
  components: [
3796
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3797
- { internalType: "bytes", name: "proof", type: "bytes" },
3798
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3799
3813
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3800
- {
3801
- internalType: "uint256[]",
3802
- name: "committedInputCounts",
3803
- type: "uint256[]"
3804
- },
3814
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3815
+ ]
3816
+ },
3817
+ {
3818
+ internalType: "struct ServiceConfig",
3819
+ name: "serviceConfig",
3820
+ type: "tuple",
3821
+ components: [
3805
3822
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3806
3823
  { internalType: "string", name: "domain", type: "string" },
3807
3824
  { internalType: "string", name: "scope", type: "string" },
@@ -3818,19 +3835,19 @@ var ZKPassportVerifier_default = {
3818
3835
  inputs: [
3819
3836
  { internalType: "uint256", name: "date", type: "uint256" },
3820
3837
  {
3821
- internalType: "struct ProofVerificationParams",
3822
- name: "params",
3838
+ internalType: "struct Commitments",
3839
+ name: "commitments",
3823
3840
  type: "tuple",
3824
3841
  components: [
3825
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3826
- { internalType: "bytes", name: "proof", type: "bytes" },
3827
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3828
3842
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3829
- {
3830
- internalType: "uint256[]",
3831
- name: "committedInputCounts",
3832
- type: "uint256[]"
3833
- },
3843
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3844
+ ]
3845
+ },
3846
+ {
3847
+ internalType: "struct ServiceConfig",
3848
+ name: "serviceConfig",
3849
+ type: "tuple",
3850
+ components: [
3834
3851
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3835
3852
  { internalType: "string", name: "domain", type: "string" },
3836
3853
  { internalType: "string", name: "scope", type: "string" },
@@ -3846,20 +3863,21 @@ var ZKPassportVerifier_default = {
3846
3863
  {
3847
3864
  inputs: [
3848
3865
  { internalType: "enum FaceMatchMode", name: "faceMatchMode", type: "uint8" },
3866
+ { internalType: "enum OS", name: "os", type: "uint8" },
3849
3867
  {
3850
- internalType: "struct ProofVerificationParams",
3851
- name: "params",
3868
+ internalType: "struct Commitments",
3869
+ name: "commitments",
3852
3870
  type: "tuple",
3853
3871
  components: [
3854
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3855
- { internalType: "bytes", name: "proof", type: "bytes" },
3856
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3857
3872
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3858
- {
3859
- internalType: "uint256[]",
3860
- name: "committedInputCounts",
3861
- type: "uint256[]"
3862
- },
3873
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3874
+ ]
3875
+ },
3876
+ {
3877
+ internalType: "struct ServiceConfig",
3878
+ name: "serviceConfig",
3879
+ type: "tuple",
3880
+ components: [
3863
3881
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3864
3882
  { internalType: "string", name: "domain", type: "string" },
3865
3883
  { internalType: "string", name: "scope", type: "string" },
@@ -3876,23 +3894,12 @@ var ZKPassportVerifier_default = {
3876
3894
  inputs: [
3877
3895
  { internalType: "string[]", name: "countryList", type: "string[]" },
3878
3896
  {
3879
- internalType: "struct ProofVerificationParams",
3880
- name: "params",
3897
+ internalType: "struct Commitments",
3898
+ name: "commitments",
3881
3899
  type: "tuple",
3882
3900
  components: [
3883
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3884
- { internalType: "bytes", name: "proof", type: "bytes" },
3885
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3886
3901
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3887
- {
3888
- internalType: "uint256[]",
3889
- name: "committedInputCounts",
3890
- type: "uint256[]"
3891
- },
3892
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3893
- { internalType: "string", name: "domain", type: "string" },
3894
- { internalType: "string", name: "scope", type: "string" },
3895
- { internalType: "bool", name: "devMode", type: "bool" }
3902
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3896
3903
  ]
3897
3904
  }
3898
3905
  ],
@@ -3905,23 +3912,12 @@ var ZKPassportVerifier_default = {
3905
3912
  inputs: [
3906
3913
  { internalType: "string[]", name: "countryList", type: "string[]" },
3907
3914
  {
3908
- internalType: "struct ProofVerificationParams",
3909
- name: "params",
3915
+ internalType: "struct Commitments",
3916
+ name: "commitments",
3910
3917
  type: "tuple",
3911
3918
  components: [
3912
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3913
- { internalType: "bytes", name: "proof", type: "bytes" },
3914
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3915
3919
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3916
- {
3917
- internalType: "uint256[]",
3918
- name: "committedInputCounts",
3919
- type: "uint256[]"
3920
- },
3921
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3922
- { internalType: "string", name: "domain", type: "string" },
3923
- { internalType: "string", name: "scope", type: "string" },
3924
- { internalType: "bool", name: "devMode", type: "bool" }
3920
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3925
3921
  ]
3926
3922
  }
3927
3923
  ],
@@ -3934,23 +3930,12 @@ var ZKPassportVerifier_default = {
3934
3930
  inputs: [
3935
3931
  { internalType: "string[]", name: "countryList", type: "string[]" },
3936
3932
  {
3937
- internalType: "struct ProofVerificationParams",
3938
- name: "params",
3933
+ internalType: "struct Commitments",
3934
+ name: "commitments",
3939
3935
  type: "tuple",
3940
3936
  components: [
3941
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3942
- { internalType: "bytes", name: "proof", type: "bytes" },
3943
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3944
3937
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3945
- {
3946
- internalType: "uint256[]",
3947
- name: "committedInputCounts",
3948
- type: "uint256[]"
3949
- },
3950
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3951
- { internalType: "string", name: "domain", type: "string" },
3952
- { internalType: "string", name: "scope", type: "string" },
3953
- { internalType: "bool", name: "devMode", type: "bool" }
3938
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3954
3939
  ]
3955
3940
  }
3956
3941
  ],
@@ -3963,23 +3948,12 @@ var ZKPassportVerifier_default = {
3963
3948
  inputs: [
3964
3949
  { internalType: "string[]", name: "countryList", type: "string[]" },
3965
3950
  {
3966
- internalType: "struct ProofVerificationParams",
3967
- name: "params",
3951
+ internalType: "struct Commitments",
3952
+ name: "commitments",
3968
3953
  type: "tuple",
3969
3954
  components: [
3970
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3971
- { internalType: "bytes", name: "proof", type: "bytes" },
3972
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3973
3955
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3974
- {
3975
- internalType: "uint256[]",
3976
- name: "committedInputCounts",
3977
- type: "uint256[]"
3978
- },
3979
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3980
- { internalType: "string", name: "domain", type: "string" },
3981
- { internalType: "string", name: "scope", type: "string" },
3982
- { internalType: "bool", name: "devMode", type: "bool" }
3956
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3983
3957
  ]
3984
3958
  }
3985
3959
  ],
@@ -4033,19 +4007,44 @@ var ZKPassportVerifier_default = {
4033
4007
  name: "params",
4034
4008
  type: "tuple",
4035
4009
  components: [
4036
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
4037
- { internalType: "bytes", name: "proof", type: "bytes" },
4038
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
4039
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
4040
4010
  {
4041
- internalType: "uint256[]",
4042
- name: "committedInputCounts",
4043
- type: "uint256[]"
4011
+ internalType: "struct ProofVerificationData",
4012
+ name: "proofVerificationData",
4013
+ type: "tuple",
4014
+ components: [
4015
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
4016
+ { internalType: "bytes", name: "proof", type: "bytes" },
4017
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" }
4018
+ ]
4044
4019
  },
4045
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
4046
- { internalType: "string", name: "domain", type: "string" },
4047
- { internalType: "string", name: "scope", type: "string" },
4048
- { internalType: "bool", name: "devMode", type: "bool" }
4020
+ {
4021
+ internalType: "struct Commitments",
4022
+ name: "commitments",
4023
+ type: "tuple",
4024
+ components: [
4025
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
4026
+ {
4027
+ internalType: "uint256[]",
4028
+ name: "committedInputCounts",
4029
+ type: "uint256[]"
4030
+ }
4031
+ ]
4032
+ },
4033
+ {
4034
+ internalType: "struct ServiceConfig",
4035
+ name: "serviceConfig",
4036
+ type: "tuple",
4037
+ components: [
4038
+ {
4039
+ internalType: "uint256",
4040
+ name: "validityPeriodInSeconds",
4041
+ type: "uint256"
4042
+ },
4043
+ { internalType: "string", name: "domain", type: "string" },
4044
+ { internalType: "string", name: "scope", type: "string" },
4045
+ { internalType: "bool", name: "devMode", type: "bool" }
4046
+ ]
4047
+ }
4049
4048
  ]
4050
4049
  }
4051
4050
  ],
@@ -4080,211 +4079,231 @@ var ZKPassportVerifier_default = {
4080
4079
  kind: "dev",
4081
4080
  methods: {
4082
4081
  constructor: { details: "Constructor" },
4083
- "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4084
- params: { params: "The proof verification parameters" }
4082
+ "enforceSanctionsRoot((bytes,uint256[]))": {
4083
+ params: { commitments: "The commitments" }
4085
4084
  },
4086
- "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4087
- params: { params: "The proof verification parameters" },
4085
+ "getBoundData((bytes,uint256[]))": {
4086
+ params: { commitments: "The commitments" },
4088
4087
  returns: { boundData: "The data bound to the proof" }
4089
4088
  },
4090
- "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
4089
+ "getDisclosedData((bytes,uint256[]),bool)": {
4091
4090
  params: {
4092
- isIDCard: "Whether the proof is an ID card",
4093
- params: "The proof verification parameters"
4091
+ commitments: "The commitments",
4092
+ isIDCard: "Whether the proof is an ID card"
4094
4093
  },
4095
4094
  returns: { disclosedData: "The data disclosed by the proof" }
4096
4095
  },
4097
- "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4096
+ "isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4098
4097
  params: {
4098
+ commitments: "The commitments",
4099
4099
  minAge: "The age must be above this age",
4100
- params: "The proof verification parameters"
4100
+ serviceConfig: "The service config"
4101
4101
  },
4102
4102
  returns: { _0: "True if the age is above the given age, false otherwise" }
4103
4103
  },
4104
- "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4104
+ "isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4105
4105
  params: {
4106
+ commitments: "The commitments",
4106
4107
  minAge: "The age must be above or equal to this age",
4107
- params: "The proof verification parameters"
4108
+ serviceConfig: "The service config"
4108
4109
  },
4109
4110
  returns: {
4110
4111
  _0: "True if the age is above or equal to the given age, false otherwise"
4111
4112
  }
4112
4113
  },
4113
- "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4114
+ "isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4114
4115
  params: {
4116
+ commitments: "The commitments",
4115
4117
  maxAge: "The age must be below this age",
4116
- params: "The proof verification parameters"
4118
+ serviceConfig: "The service config"
4117
4119
  },
4118
4120
  returns: { _0: "True if the age is below the given age, false otherwise" }
4119
4121
  },
4120
- "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4122
+ "isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4121
4123
  params: {
4124
+ commitments: "The commitments",
4122
4125
  maxAge: "The age must be below or equal to this age",
4123
- params: "The proof verification parameters"
4126
+ serviceConfig: "The service config"
4124
4127
  },
4125
4128
  returns: {
4126
4129
  _0: "True if the age is below or equal to the given age, false otherwise"
4127
4130
  }
4128
4131
  },
4129
- "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4132
+ "isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4130
4133
  params: {
4134
+ commitments: "The commitments",
4131
4135
  maxAge: "The age must be less than or equal to this age",
4132
4136
  minAge: "The age must be greater than or equal to this age",
4133
- params: "The proof verification parameters"
4137
+ serviceConfig: "The service config"
4134
4138
  },
4135
4139
  returns: { _0: "True if the age is in the given range, false otherwise" }
4136
4140
  },
4137
- "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4141
+ "isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4138
4142
  params: {
4139
4143
  age: "The age must be equal to this age",
4140
- params: "The proof verification parameters"
4144
+ commitments: "The commitments",
4145
+ serviceConfig: "The service config"
4141
4146
  },
4142
4147
  returns: { _0: "True if the age is equal to the given age, false otherwise" }
4143
4148
  },
4144
- "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4149
+ "isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4145
4150
  params: {
4151
+ commitments: "The commitments",
4146
4152
  minDate: "The birthdate must be after this date",
4147
- params: "The proof verification parameters"
4153
+ serviceConfig: "The service config"
4148
4154
  },
4149
4155
  returns: { _0: "True if the birthdate is after the given date, false otherwise" }
4150
4156
  },
4151
- "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4157
+ "isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4152
4158
  params: {
4159
+ commitments: "The commitments",
4153
4160
  minDate: "The birthdate must be after or equal to this date",
4154
- params: "The proof verification parameters"
4161
+ serviceConfig: "The service config"
4155
4162
  },
4156
4163
  returns: {
4157
4164
  _0: "True if the birthdate is after or equal to the given date, false otherwise"
4158
4165
  }
4159
4166
  },
4160
- "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4167
+ "isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4161
4168
  params: {
4169
+ commitments: "The commitments",
4162
4170
  maxDate: "The birthdate must be before this date",
4163
- params: "The proof verification parameters"
4171
+ serviceConfig: "The service config"
4164
4172
  },
4165
4173
  returns: { _0: "True if the birthdate is before the given date, false otherwise" }
4166
4174
  },
4167
- "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4175
+ "isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4168
4176
  params: {
4177
+ commitments: "The commitments",
4169
4178
  maxDate: "The birthdate must be before or equal to this date",
4170
- params: "The proof verification parameters"
4179
+ serviceConfig: "The service config"
4171
4180
  },
4172
4181
  returns: {
4173
4182
  _0: "True if the birthdate is before or equal to the given date, false otherwise"
4174
4183
  }
4175
4184
  },
4176
- "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4185
+ "isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4177
4186
  params: {
4187
+ commitments: "The commitments",
4178
4188
  maxDate: "The birthdate must be before or equal to this date",
4179
4189
  minDate: "The birthdate must be after or equal to this date",
4180
- params: "The proof verification parameters"
4190
+ serviceConfig: "The service config"
4181
4191
  },
4182
4192
  returns: { _0: "True if the birthdate is between the given dates, false otherwise" }
4183
4193
  },
4184
- "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4194
+ "isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4185
4195
  params: {
4196
+ commitments: "The commitments",
4186
4197
  date: "The birthdate must be equal to this date",
4187
- params: "The proof verification parameters"
4198
+ serviceConfig: "The service config"
4188
4199
  },
4189
4200
  returns: { _0: "True if the birthdate is equal to the given date, false otherwise" }
4190
4201
  },
4191
- "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4202
+ "isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4192
4203
  params: {
4204
+ commitments: "The commitments",
4193
4205
  minDate: "The expiry date must be after this date",
4194
- params: "The proof verification parameters"
4206
+ serviceConfig: "The service config"
4195
4207
  },
4196
4208
  returns: { _0: "True if the expiry date is after the given date, false otherwise" }
4197
4209
  },
4198
- "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4210
+ "isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4199
4211
  params: {
4212
+ commitments: "The commitments",
4200
4213
  minDate: "The expiry date must be after or equal to this date",
4201
- params: "The proof verification parameters"
4214
+ serviceConfig: "The service config"
4202
4215
  },
4203
4216
  returns: {
4204
4217
  _0: "True if the expiry date is after or equal to the given date, false otherwise"
4205
4218
  }
4206
4219
  },
4207
- "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4220
+ "isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4208
4221
  params: {
4222
+ commitments: "The commitments",
4209
4223
  maxDate: "The expiry date must be before this date",
4210
- params: "The proof verification parameters"
4224
+ serviceConfig: "The service config"
4211
4225
  },
4212
4226
  returns: { _0: "True if the expiry date is before the given date, false otherwise" }
4213
4227
  },
4214
- "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4228
+ "isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4215
4229
  params: {
4230
+ commitments: "The commitments",
4216
4231
  maxDate: "The expiry date must be before or equal to this date",
4217
- params: "The proof verification parameters"
4232
+ serviceConfig: "The service config"
4218
4233
  },
4219
4234
  returns: {
4220
4235
  _0: "True if the expiry date is before or equal to the given date, false otherwise"
4221
4236
  }
4222
4237
  },
4223
- "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4238
+ "isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4224
4239
  params: {
4240
+ commitments: "The commitments",
4225
4241
  maxDate: "The expiry date must be before or equal to this date",
4226
4242
  minDate: "The expiry date must be after or equal to this date",
4227
- params: "The proof verification parameters"
4243
+ serviceConfig: "The service config"
4228
4244
  },
4229
4245
  returns: {
4230
4246
  _0: "True if the expiry date is between the given dates, false otherwise"
4231
4247
  }
4232
4248
  },
4233
- "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4249
+ "isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4234
4250
  params: {
4251
+ commitments: "The commitments",
4235
4252
  date: "The expiry date must be equal to this date",
4236
- params: "The proof verification parameters"
4253
+ serviceConfig: "The service config"
4237
4254
  },
4238
4255
  returns: {
4239
4256
  _0: "True if the expiry date is equal to the given date, false otherwise"
4240
4257
  }
4241
4258
  },
4242
- "isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4259
+ "isFaceMatchVerified(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4243
4260
  params: {
4261
+ commitments: "The commitments",
4244
4262
  faceMatchMode: "The FaceMatch mode expected to be used in the verification",
4245
- params: "The proof verification parameters"
4263
+ os: "The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2))",
4264
+ serviceConfig: "The service config"
4246
4265
  },
4247
4266
  returns: {
4248
4267
  _0: "True if the proof is tied to a valid FaceMatch verification, false otherwise"
4249
4268
  }
4250
4269
  },
4251
- "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4270
+ "isIssuingCountryIn(string[],(bytes,uint256[]))": {
4252
4271
  params: {
4253
- countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
4254
- params: "The proof verification parameters"
4272
+ commitments: "The commitments",
4273
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof)"
4255
4274
  },
4256
4275
  returns: {
4257
4276
  _0: "True if the issuing country is in the list of countries, false otherwise"
4258
4277
  }
4259
4278
  },
4260
- "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4279
+ "isIssuingCountryOut(string[],(bytes,uint256[]))": {
4261
4280
  params: {
4262
- countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order",
4263
- params: "The proof verification parameters"
4281
+ commitments: "The commitments",
4282
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"
4264
4283
  },
4265
4284
  returns: {
4266
4285
  _0: "True if the issuing country is not in the list of countries, false otherwise"
4267
4286
  }
4268
4287
  },
4269
- "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4288
+ "isNationalityIn(string[],(bytes,uint256[]))": {
4270
4289
  params: {
4271
- countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
4272
- params: "The proof verification parameters"
4290
+ commitments: "The commitments",
4291
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof)"
4273
4292
  },
4274
4293
  returns: {
4275
4294
  _0: "True if the nationality is in the list of countries, false otherwise"
4276
4295
  }
4277
4296
  },
4278
- "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4297
+ "isNationalityOut(string[],(bytes,uint256[]))": {
4279
4298
  params: {
4280
- countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order",
4281
- params: "The proof verification parameters"
4299
+ commitments: "The commitments",
4300
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"
4282
4301
  },
4283
4302
  returns: {
4284
4303
  _0: "True if the nationality is not in the list of countries, false otherwise"
4285
4304
  }
4286
4305
  },
4287
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4306
+ "verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))": {
4288
4307
  params: { params: "The proof verification parameters" },
4289
4308
  returns: {
4290
4309
  isValid: "True if the proof is valid, false otherwise",
@@ -4307,85 +4326,83 @@ var ZKPassportVerifier_default = {
4307
4326
  userdoc: {
4308
4327
  kind: "user",
4309
4328
  methods: {
4310
- "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4329
+ "enforceSanctionsRoot((bytes,uint256[]))": {
4311
4330
  notice: "Enforces that the proof checks against the expected sanction list(s)"
4312
4331
  },
4313
- "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4314
- notice: "Gets the data bound to the proof"
4315
- },
4316
- "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
4332
+ "getBoundData((bytes,uint256[]))": { notice: "Gets the data bound to the proof" },
4333
+ "getDisclosedData((bytes,uint256[]),bool)": {
4317
4334
  notice: "Gets the data disclosed by the proof"
4318
4335
  },
4319
- "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4336
+ "isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4320
4337
  notice: "Checks if the age is above the given age"
4321
4338
  },
4322
- "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4339
+ "isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4323
4340
  notice: "Checks if the age is above or equal to the given age"
4324
4341
  },
4325
- "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4342
+ "isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4326
4343
  notice: "Checks if the age is below the given age"
4327
4344
  },
4328
- "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4345
+ "isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4329
4346
  notice: "Checks if the age is below or equal to the given age"
4330
4347
  },
4331
- "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4348
+ "isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4332
4349
  notice: "Checks if the age is in the given range"
4333
4350
  },
4334
- "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4351
+ "isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4335
4352
  notice: "Checks if the age is equal to the given age"
4336
4353
  },
4337
- "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4354
+ "isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4338
4355
  notice: "Checks if the birthdate is after the given date"
4339
4356
  },
4340
- "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4357
+ "isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4341
4358
  notice: "Checks if the birthdate is after or equal to the given date"
4342
4359
  },
4343
- "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4360
+ "isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4344
4361
  notice: "Checks if the birthdate is before the given date"
4345
4362
  },
4346
- "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4363
+ "isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4347
4364
  notice: "Checks if the birthdate is before or equal to the given date"
4348
4365
  },
4349
- "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4366
+ "isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4350
4367
  notice: "Checks if the birthdate is between the given dates"
4351
4368
  },
4352
- "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4369
+ "isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4353
4370
  notice: "Checks if the birthdate is equal to the given date"
4354
4371
  },
4355
- "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4372
+ "isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4356
4373
  notice: "Checks if the expiry date is after the given date"
4357
4374
  },
4358
- "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4375
+ "isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4359
4376
  notice: "Checks if the expiry date is after or equal to the given date"
4360
4377
  },
4361
- "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4378
+ "isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4362
4379
  notice: "Checks if the expiry date is before the given date"
4363
4380
  },
4364
- "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4381
+ "isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4365
4382
  notice: "Checks if the expiry date is before or equal to the given date"
4366
4383
  },
4367
- "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4384
+ "isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4368
4385
  notice: "Checks if the expiry date is between the given dates"
4369
4386
  },
4370
- "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4387
+ "isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4371
4388
  notice: "Checks if the expiry date is equal to the given date"
4372
4389
  },
4373
- "isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4390
+ "isFaceMatchVerified(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4374
4391
  notice: "Checks if the proof is tied to a FaceMatch verification"
4375
4392
  },
4376
- "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4393
+ "isIssuingCountryIn(string[],(bytes,uint256[]))": {
4377
4394
  notice: "Checks if the issuing country is in the list of countries"
4378
4395
  },
4379
- "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4396
+ "isIssuingCountryOut(string[],(bytes,uint256[]))": {
4380
4397
  notice: "Checks if the issuing country is not in the list of countries"
4381
4398
  },
4382
- "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4399
+ "isNationalityIn(string[],(bytes,uint256[]))": {
4383
4400
  notice: "Checks if the nationality is in the list of countries"
4384
4401
  },
4385
- "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4402
+ "isNationalityOut(string[],(bytes,uint256[]))": {
4386
4403
  notice: "Checks if the nationality is not in the list of countries"
4387
4404
  },
4388
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4405
+ "verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))": {
4389
4406
  notice: "Verifies a proof from ZKPassport"
4390
4407
  },
4391
4408
  "verifyScopes(bytes32[],string,string)": {
@@ -4400,15 +4417,15 @@ var ZKPassportVerifier_default = {
4400
4417
  optimizer: { enabled: true, runs: 200 },
4401
4418
  metadata: { bytecodeHash: "ipfs" },
4402
4419
  compilationTarget: { "src/ZKPassportVerifier.sol": "ZKPassportVerifier" },
4403
- evmVersion: "cancun",
4420
+ evmVersion: "prague",
4404
4421
  libraries: {}
4405
4422
  },
4406
4423
  sources: {
4407
4424
  "src/Constants.sol": {
4408
- keccak256: "0xedfdbd23c885320a6400c29a47cfd2e359fa67feaa7e72eb576a36ab47757126",
4425
+ keccak256: "0x9028200b38f4ec17533664ed4d04e16c500b68ef398d0935811a16409bd9d84f",
4409
4426
  urls: [
4410
- "bzz-raw://752ce1099ed498206732837c776e1f364cb89a18356601f92c8c23c5b176a2cb",
4411
- "dweb:/ipfs/QmdnGyvFCHvtm2FVAAYUoTRRXUC1nLWXjz3pkHpAnM9rfn"
4427
+ "bzz-raw://065da1a99b9be089622088760a46cf5ec6a0bbece388cb722d12fd4f67237ce4",
4428
+ "dweb:/ipfs/Qmdqt9UV9ecPBTdVsudSDVszwgu3U2DG3e9DZ4AJt7Zghm"
4412
4429
  ],
4413
4430
  license: "Apache-2.0"
4414
4431
  },
@@ -4429,10 +4446,10 @@ var ZKPassportVerifier_default = {
4429
4446
  license: "MIT"
4430
4447
  },
4431
4448
  "src/InputsExtractor.sol": {
4432
- keccak256: "0xfcf678bb8fead1820159845e47c2efefdca16452ab2f30b1704efc13253512eb",
4449
+ keccak256: "0x85df2d9d89bb8538bd3d7168c30d8ace823a3710ee83ef3a8fbc1f59a7720473",
4433
4450
  urls: [
4434
- "bzz-raw://aa83383e296a2b748c093b017e12719aeb1897ca3a677f3def76929951440111",
4435
- "dweb:/ipfs/QmYSCdnm5EuQwrF2mnpRVtTLg4uPH1uUJQxYKyJtjEwq3y"
4451
+ "bzz-raw://7681a82ac614eafba56b8a9c1b7943f0d66cce6a5319124fb214a13f00535f07",
4452
+ "dweb:/ipfs/QmPoj2DXmCeuYGZpAf4MWUwc5buMRqwykUc1B8mryQrPqT"
4436
4453
  ],
4437
4454
  license: "Apache-2.0"
4438
4455
  },
@@ -4445,26 +4462,26 @@ var ZKPassportVerifier_default = {
4445
4462
  license: "Apache-2.0"
4446
4463
  },
4447
4464
  "src/Types.sol": {
4448
- keccak256: "0x96820d882e9fbdfe5b8d28992a59c4df49733c39fa811282f42b6550fa0d4fe9",
4465
+ keccak256: "0x1cb492c099b71287da0349afef0c72c430e2476ad7373a0ea1456e7145207a06",
4449
4466
  urls: [
4450
- "bzz-raw://c1cc625bfa759185e433b71f5fc22eef47236f57d217354d180beef91077dcc1",
4451
- "dweb:/ipfs/QmXh6MDGjMx7AL4FjstCEtqNLHp9sCExw5CEzFpD8orYh2"
4467
+ "bzz-raw://a158753948b82917aa802c4b475a1ffb4b5f09b2a86ebcb64db11437ab297047",
4468
+ "dweb:/ipfs/QmPgGhT59MzcG4TA5PmKjzaoNMZ4VRmcLJH6w5LkWQYjxV"
4452
4469
  ],
4453
4470
  license: "Apache-2.0"
4454
4471
  },
4455
4472
  "src/ZKPassportVerifier.sol": {
4456
- keccak256: "0xcb976ea606732493b4497f5f12e2c6296f397735b1286a8bb1477e7cde195e43",
4473
+ keccak256: "0xc1a8e1598a279af7a72f60c684531a3cb43e81f65a394dd2ea12da78dae27cc5",
4457
4474
  urls: [
4458
- "bzz-raw://d186a469d3e30743ddbb719a1ecf71c9787359b2a8287e86c9ac294a17e6db38",
4459
- "dweb:/ipfs/QmSxzqPo33R3EhPzm8fF4k4ShUSp58Nr7qzBVadHWBXxMr"
4475
+ "bzz-raw://9b6a3ebc79fa7ed343f5a46730a4c24431768d2276fe0295fed3814d795eab1b",
4476
+ "dweb:/ipfs/QmboGSLvn9BFNEikCzoBTVrqoXLQKUKN8eMn5VZqyFP2Q9"
4460
4477
  ],
4461
4478
  license: "Apache-2.0"
4462
4479
  },
4463
4480
  "src/ultra-honk-verifiers/OuterCount4.sol": {
4464
- keccak256: "0xc0b2358f1cb49d10ab783b6ccf321e8bde6eb8ce70efe325fdf49987f1688b94",
4481
+ keccak256: "0x0f0d75a82f697db2db5f689acd8fbd603940a2e2d862601a16316a3a21a6f916",
4465
4482
  urls: [
4466
- "bzz-raw://c5ddd3b3c3e2522e766c5ab95d2559ce4e79fe54e9aeb50b1c995ad1d8ed18ee",
4467
- "dweb:/ipfs/Qmcu7WhWMk3TPxb3HuwEPiXF95F6eD8KmJ12RXxFBdCYgM"
4483
+ "bzz-raw://b2306e16c0265d824e0a5aa4cd1fea70a1322af74a4e8b34df1444c0e47ed345",
4484
+ "dweb:/ipfs/QmRaEPoyvBX2n1VV9SoXPmoEEXzRyFGB9obQUuYuuXAMAR"
4468
4485
  ],
4469
4486
  license: "Apache-2.0"
4470
4487
  }
@@ -4484,7 +4501,7 @@ var SolidityVerifier = class {
4484
4501
  if (network === "ethereum_sepolia") {
4485
4502
  return {
4486
4503
  ...baseConfig,
4487
- address: "0xf7480fd0A9289c062C52532f11D31e0b7A30ABe3"
4504
+ address: "0x3101Bad9eA5fACadA5554844a1a88F7Fe48D4DE0"
4488
4505
  };
4489
4506
  } else if (network === "local_anvil") {
4490
4507
  return {
@@ -4561,13 +4578,16 @@ var SolidityVerifier = class {
4561
4578
  } else if (circuitName === "exclusion_check_sanctions_evm") {
4562
4579
  const value = proof.committedInputs[circuitName];
4563
4580
  compressedCommittedInputs2 = import_utils2.ProofType.SANCTIONS_EXCLUSION.toString(16).padStart(2, "0") + Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.rootHash), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4564
- } else if (circuitName === "facematch_evm") {
4581
+ } else if (circuitName.startsWith("facematch") && circuitName.endsWith("_evm")) {
4565
4582
  const value = proof.committedInputs[circuitName];
4566
4583
  compressedCommittedInputs2 += import_utils2.ProofType.FACEMATCH.toString(16).padStart(2, "0");
4567
4584
  compressedCommittedInputs2 += Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.rootKeyLeaf), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4568
4585
  compressedCommittedInputs2 += value.environment === "development" ? "00" : "01";
4569
- compressedCommittedInputs2 += Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.appId), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4570
- compressedCommittedInputs2 += "01";
4586
+ compressedCommittedInputs2 += Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.appIdHash), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4587
+ compressedCommittedInputs2 += Array.from(
4588
+ (0, import_utils2.numberToBytesBE)(BigInt(value.integrityPubkeyHash), 32)
4589
+ ).map((x) => x.toString(16).padStart(2, "0")).join("");
4590
+ compressedCommittedInputs2 += value.mode === "regular" ? "01" : "02";
4571
4591
  } else {
4572
4592
  throw new Error(`Unsupported circuit for EVM verification: ${circuitName}`);
4573
4593
  }
@@ -4603,16 +4623,22 @@ var SolidityVerifier = class {
4603
4623
  }
4604
4624
  }
4605
4625
  const params = {
4606
- // Make sure the vkeyHash is 32 bytes
4607
- vkeyHash: `0x${proof.vkeyHash.replace("0x", "").padStart(64, "0")}`,
4608
- proof: `0x${proofData.proof.join("")}`,
4609
- publicInputs: proofData.publicInputs,
4610
- committedInputs: `0x${compressedCommittedInputs}`,
4611
- committedInputCounts: committedInputCountsArray,
4612
- validityPeriodInSeconds,
4613
- domain,
4614
- scope: scope ?? "",
4615
- devMode
4626
+ proofVerificationData: {
4627
+ // Make sure the vkeyHash is 32 bytes
4628
+ vkeyHash: `0x${proof.vkeyHash.replace("0x", "").padStart(64, "0")}`,
4629
+ proof: `0x${proofData.proof.join("")}`,
4630
+ publicInputs: proofData.publicInputs
4631
+ },
4632
+ commitments: {
4633
+ committedInputs: `0x${compressedCommittedInputs}`,
4634
+ committedInputCounts: committedInputCountsArray
4635
+ },
4636
+ serviceConfig: {
4637
+ validityPeriodInSeconds,
4638
+ domain,
4639
+ scope: scope ?? "",
4640
+ devMode
4641
+ }
4616
4642
  };
4617
4643
  return params;
4618
4644
  }
@@ -5035,11 +5061,11 @@ var ZKPassport = class {
5035
5061
  };
5036
5062
  }
5037
5063
  const formattedResult = (0, import_utils4.formatQueryResultDates)(queryResult);
5038
- const { BarretenbergVerifier } = await import("@aztec/bb.js");
5064
+ const { UltraHonkVerifierBackend } = await import("@aztec/bb.js");
5039
5065
  if (typeof window === "undefined" && !writingDirectory) {
5040
5066
  writingDirectory = "/tmp";
5041
5067
  }
5042
- const verifier = new BarretenbergVerifier({
5068
+ const verifier = new UltraHonkVerifierBackend({
5043
5069
  crsPath: writingDirectory ? writingDirectory + "/.bb-crs" : void 0
5044
5070
  });
5045
5071
  let verified = true;
@@ -5076,11 +5102,15 @@ var ZKPassport = class {
5076
5102
  });
5077
5103
  for (const proof of proofs) {
5078
5104
  const isOuterEVM = proof.name?.startsWith("outer_evm_");
5079
- const proofName = isOuterEVM ? proof.name.replace("outer_evm_", "outer_") : proof.name;
5105
+ const proofName = proof.name;
5080
5106
  const proofData = (0, import_utils4.getProofData)(proof.proof, (0, import_utils4.getNumberOfPublicInputs)(proofName));
5081
5107
  const hostedPackagedCircuit = await registryClient.getPackagedCircuit(
5082
5108
  proofName,
5083
- circuitManifest
5109
+ circuitManifest,
5110
+ // TODO: set to always validate when the issue is vkey hash calculation is fixed
5111
+ // Not as important anyway, as the solidity verifier is the ultimate anchor for
5112
+ // EVM outer proofs verification
5113
+ { validate: !isOuterEVM }
5084
5114
  );
5085
5115
  if (isOuterEVM) {
5086
5116
  try {
@@ -5112,13 +5142,11 @@ var ZKPassport = class {
5112
5142
  } else {
5113
5143
  const vkeyBytes = import_buffer.Buffer.from(hostedPackagedCircuit.vkey, "base64");
5114
5144
  try {
5115
- verified = await verifier.verifyUltraHonkProof(
5116
- {
5117
- proof: import_buffer.Buffer.from(proofData.proof.join(""), "hex"),
5118
- publicInputs: proofData.publicInputs
5119
- },
5120
- new Uint8Array(vkeyBytes)
5121
- );
5145
+ verified = await verifier.verifyProof({
5146
+ proof: import_buffer.Buffer.from(proofData.proof.join(""), "hex"),
5147
+ publicInputs: proofData.publicInputs,
5148
+ verificationKey: new Uint8Array(vkeyBytes)
5149
+ });
5122
5150
  } catch (e) {
5123
5151
  console.warn("Error verifying proof", e);
5124
5152
  verified = false;