From 7b0d2ad2e3c1fd2c05f6c8055da0c63274fec7bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 20 Jan 2024 05:01:38 -0600 Subject: [PATCH 01/62] update --- darc-docs/docs/DARC Protocol/OpCodes.md | 8 +- darc-js/src/SDK/includes.ts | 50 +- .../opcodes/op_batch_create_token_class.ts | 85 - .../src/SDK/opcodes/op_batch_mint_tokens.ts | 69 - darc-js/src/SDK/opcodes/opcodeTable.ts | 1527 +++++++++++++++++ darc-js/src/SDK/opcodes/utils.ts | 78 + darc-js/src/darcBinary/DARC-latest.json | 827 ++++++--- .../tests/runtime-test/basic-runtime-test.ts | 2 +- .../runtime-test/pressure-mint-token-test.ts | 4 +- darc-protocol/contracts/protocol/Opcodes.sol | 12 +- .../protocol/Plugin/Condition_BatchOp.sol | 6 +- .../Runtime/Executable/InstructionMachine.sol | 16 +- .../Instructions/MembershipInstructions.sol | 12 +- .../Instructions/UtilityInstructions.sol | 2 +- .../protocol/Utilities/OpcodeMap.sol | 8 +- .../batch_add_membership_test.ts | 2 +- darc-specs/opcode.md | 8 +- 17 files changed, 2250 insertions(+), 466 deletions(-) delete mode 100644 darc-js/src/SDK/opcodes/op_batch_create_token_class.ts delete mode 100644 darc-js/src/SDK/opcodes/op_batch_mint_tokens.ts create mode 100644 darc-js/src/SDK/opcodes/opcodeTable.ts create mode 100644 darc-js/src/SDK/opcodes/utils.ts diff --git a/darc-docs/docs/DARC Protocol/OpCodes.md b/darc-docs/docs/DARC Protocol/OpCodes.md index afa6ba97..f9d19ebf 100644 --- a/darc-docs/docs/DARC Protocol/OpCodes.md +++ b/darc-docs/docs/DARC Protocol/OpCodes.md @@ -27,9 +27,9 @@ By defining these operations through opcodes, the DARC protocol ensures consiste | BATCH_TRANSFER_TOKENS_FROM_TO | 4 | `fromAddressArray`: address[]
`toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Transfer Token From Addr A to Addr B Operation | | BATCH_BURN_TOKENS | 5 | `tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Burn Token Operation | | BATCH_BURN_TOKENS_FROM | 6 | `fromAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Burn Token From Addr A Operation | -| BATCH_ADD_MEMBERSHIP | 7 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[]
`memberNameArray`: string[] | Batch Add Member Operation | -| BATCH_SUSPEND_MEMBERSHIP | 8 | `memberAddressArray`: address[] | Batch Suspend Member Operation | -| BATCH_RESUME_MEMBERSHIP | 9 | `memberAddressArray`: address[] | Batch Resume Member Operation | +| BATCH_ADD_MEMBERSHIPS | 7 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[]
`memberNameArray`: string[] | Batch Add Member Operation | +| BATCH_SUSPEND_MEMBERSHIPS | 8 | `memberAddressArray`: address[] | Batch Suspend Member Operation | +| BATCH_RESUME_MEMBERSHIPS | 9 | `memberAddressArray`: address[] | Batch Resume Member Operation | | BATCH_CHANGE_MEMBER_ROLES | 10 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[] | Batch Change Member Role Operation | | BATCH_CHANGE_MEMBER_NAMES | 11 | `memberAddressArray`: address[]
`memberNameArray`: string[] | Batch Change Member Name Operation | | BATCH_ADD_PLUGINS | 12 | `pluginList`: Plugin[] | Batch Add Emergency Agent Operation | @@ -51,7 +51,7 @@ By defining these operations through opcodes, the DARC protocol ensures consiste | RESERVED_ID_28 | 28 | `addressArray`: address[]
`amountArray`: uint256[] | Withdraw Dividends from the Withdrawable Dividends Balance | | SET_APPROVAL_FOR_ALL_OPERATIONS | 29 | `address`: address | Set Approval for All Transfer Operations by Address | | BATCH_BURN_TOKENS_AND_REFUND | 30 | `tokenClassArray`: uint256[]
| Batch Burn Tokens and Refund | -| ADD_STORAGE_IPFS_HASH | 31 | `address`: string[] | Add Storage IPFS Hash | +| ADD_STORAGE_STRING | 31 | `address`: string[] | Add Storage IPFS Hash | | VOTE | 32 | `voteArray`: bool[] | Vote for a Voting Pending Program | | EXECUTE_PENDING_PROGRAM | 33 | N/A | Execute a Program that has been Voted and Approved | diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 26e77ff8..0d8cccf0 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -5,20 +5,60 @@ import { TokenOperations } from "./struct/token-operation-map"; import { Plugin } from "./struct/Plugin"; import { OperationStruct } from "../types/basicTypes"; -import { op_batch_mint_tokens } from "./opcodes/op_batch_mint_tokens"; -import { op_batch_create_token_class } from "./opcodes/op_batch_create_token_class"; import { objectMethod } from "@babel/types"; +import { + OPCODE_ID_1_BATCH_MINT_TOKENS, + OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, + OPCODE_ID_3_BATCH_TRANSFER_TOKENS, + OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO, + OPCODE_ID_5_BATCH_BURN_TOKENS, + OPCODE_ID_6_BATCH_BURN_TOKENS_FROM, + OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS, + OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS, + OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS, + OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES, + OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES, + OPCODE_ID_12_BATCH_ADD_PLUGINS, + OPCODE_ID_13_BATCH_ENABLE_PLUGINS, + OPCODE_ID_14_BATCH_DISABLE_PLUGINS, + OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS, + OPCODE_ID_16_BATCH_SET_PARAMETERS, + OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES, + OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES, + OPCODE_ID_19_BATCH_ADD_VOTING_RULES, + OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS, + OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS, + OPCODE_ID_22_ADD_EMERGENCY, + OPCODE_ID_24_CALL_EMERGENCY, + OPCODE_ID_25_CALL_CONTRACT_ABI, + OPCODE_ID_26_PAY_CASH, + OPCODE_ID_27_OFFER_DIVIDENDS, + OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS, + OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND, + OPCODE_ID_31_ADD_STORAGE_STRING, + OPCODE_ID_32_VOTE, + OPCODE_ID_33_EXECUTE_PENDING_PROGRAM, + OPCODE_ID_34_END_EMERGENCY, + OPCODE_ID_35_UPGRADE_TO_ADDRESS, + OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, + OPCODE_ID_37_UPGRADE_TO_THE_LATEST +} from "./opcodes/opcodeTable"; + export let operationList: OperationStruct[] = []; export let programNotes: string = ""; export function batch_mint_tokens(addressArray: string[], amountArray: bigint[], tokenClass: bigint[]) { - let operation = op_batch_mint_tokens(addressArray, amountArray, tokenClass); + let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, amountArray, tokenClass); operationList.push(operation); } -export function batch_create_token_class(nameArray: string[], tokenIndexArray: bigint[], votingWeightArray: bigint[], dividendWeightArray: bigint[]) { - let operation = op_batch_create_token_class(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); +export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[], votingWeightArray: bigint[], dividendWeightArray: bigint[]) { + let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); operationList.push(operation); +} + +export function setNote(note:string) { + programNotes = note; } \ No newline at end of file diff --git a/darc-js/src/SDK/opcodes/op_batch_create_token_class.ts b/darc-js/src/SDK/opcodes/op_batch_create_token_class.ts deleted file mode 100644 index 1c4a2374..00000000 --- a/darc-js/src/SDK/opcodes/op_batch_create_token_class.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { ethers } from "ethers"; -import {OperationStruct} from "../../types/basicTypes"; - -/** - * @notice Batch Create Token Class Operation - * @param STRING_ARRAY[] string[] nameArray: the array of the name of the token class to create - * @param UINT256_2DARRAY[0] uint256[] tokenIndexArray: the array of the token index of the token class to create - * @param UINT256_2DARRAY[1] uint256[] votingWeightArray: the array of the voting weight of the token class to create - * @param UINT256_2DARRAY[2] uint256[] dividendWeightArray: the array of the dividend weight of the token class to create - * - * ID:2 -*/ - -export function op_batch_create_token_class( - nameArray: string[], - tokenIndexArray: bigint[] | number[], - votingWeightArray: bigint[] | number[], - dividendWeightArray: bigint[] | number[] -): OperationStruct { - // make sure all parameters are valid and the length of all arrays are the same - if (nameArray.length != tokenIndexArray.length || nameArray.length != votingWeightArray.length || nameArray.length != dividendWeightArray.length) { - throw new Error("The length of nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray are different"); - } - // make sure the length of all arrays are not zero - if (nameArray.length == 0 || tokenIndexArray.length == 0 || votingWeightArray.length == 0 || dividendWeightArray.length == 0) { - throw new Error("The length of nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray are zero"); - } - // make sure name array is valid array of strings - for (let i = 0; i < nameArray.length; i++) { - if (typeof nameArray[i] != "string") { - throw new Error("The nameArray is not a valid array of strings"); - } - } - // make sure token index, voting weight and dividend weight array is valid array of bigint or number, and if it is number, convert it to bigint - for (let i = 0; i < tokenIndexArray.length; i++) { - if (typeof tokenIndexArray[i] === "number") { - tokenIndexArray[i] = BigInt(tokenIndexArray[i]); - } - if (typeof tokenIndexArray[i] !== "bigint") { - throw new Error("The tokenIndexArray is not a valid array of bigints"); - } - } - for (let i = 0; i < votingWeightArray.length; i++) { - if (typeof votingWeightArray[i] === "number") { - votingWeightArray[i] = BigInt(votingWeightArray[i]); - } - if (typeof votingWeightArray[i] !== "bigint") { - throw new Error("The votingWeightArray is not a valid array of bigints"); - } - } - for (let i = 0; i < dividendWeightArray.length; i++) { - if (typeof dividendWeightArray[i] === "number") { - dividendWeightArray[i] = BigInt(dividendWeightArray[i]); - } - if (typeof dividendWeightArray[i] !== "bigint") { - throw new Error("The dividendWeightArray is not a valid array of bigints"); - } - } - - - - //create the operation - let operation = { - operatorAddress: "", // address will be filled in later - opcode: 2, // mint token - param: { - - - STRING_ARRAY: nameArray, - BOOL_ARRAY: [], - VOTING_RULE_ARRAY: [], - - PLUGIN_ARRAY: [], - PARAMETER_ARRAY: [], - UINT256_2DARRAY: [ - tokenIndexArray, - votingWeightArray, - dividendWeightArray - ], - ADDRESS_2DARRAY: [], - BYTES: [] - } - }; - return operation; -} \ No newline at end of file diff --git a/darc-js/src/SDK/opcodes/op_batch_mint_tokens.ts b/darc-js/src/SDK/opcodes/op_batch_mint_tokens.ts deleted file mode 100644 index c0d81b09..00000000 --- a/darc-js/src/SDK/opcodes/op_batch_mint_tokens.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { ethers } from "ethers"; -import {OperationStruct} from "../../types/basicTypes"; - -export function op_batch_mint_tokens(addressArray: string[], tokenClass: bigint[], amountArray: bigint[]): OperationStruct { - // make sure the length of addressArray and amountArray are the same - if (addressArray.length != amountArray.length) { - throw new Error("The length of addressArray and amountArray are different"); - } - // make sure the length of addressArray and amountArray are not zero - if (addressArray.length == 0) { - throw new Error("The length of addressArray and amountArray are zero"); - } - // make sure address array is valid array of address strings - for (let i = 0; i < addressArray.length; i++) { - if (typeof addressArray[i] != "string") { - throw new Error("The addressArray is not a valid array of address strings"); - } - if (ethers.utils.isAddress(addressArray[i]) == false) { - throw new Error("The addressArray is not a valid array of address strings"); - } - } - - // make sure amount array and token class are valid bigints or numbers, and if it is number, convert it to bigint - for (let i = 0; i < amountArray.length; i++) { - if (typeof amountArray[i] === "number") { - amountArray[i] = BigInt(amountArray[i]); - } - if (typeof amountArray[i] !== "bigint") { - throw new Error("The amountArray is not a valid array of bigints"); - } - } - - // make sure token class is valid array of bigints or numbers, and if it is number, convert it to bigint - for (let i = 0; i < tokenClass.length; i++) { - if (typeof tokenClass[i] === "number") { - tokenClass[i] = BigInt(tokenClass[i]); - } - if (typeof tokenClass[i] !== "bigint") { - throw new Error("The tokenClass is not a valid array of bigints"); - } - } - - //create the operation - let operation = { - operatorAddress: "", - opcode: 1, // mint token - param: { - - - STRING_ARRAY: [], - BOOL_ARRAY: [], - VOTING_RULE_ARRAY: [], - - PLUGIN_ARRAY: [], - PARAMETER_ARRAY: [], - UINT256_2DARRAY: [ - tokenClass, - amountArray - ], - ADDRESS_2DARRAY: [ - addressArray - ], - BYTES: [] - } - }; - - return operation; - -} \ No newline at end of file diff --git a/darc-js/src/SDK/opcodes/opcodeTable.ts b/darc-js/src/SDK/opcodes/opcodeTable.ts new file mode 100644 index 00000000..0dae6a49 --- /dev/null +++ b/darc-js/src/SDK/opcodes/opcodeTable.ts @@ -0,0 +1,1527 @@ +import { ethers } from "ethers"; +import {OperationStruct, PluginStruct, VotingRuleStruct} from "../../types/basicTypes"; +import { toBigIntArray, isValidAddressArray, isValidBigIntOrNumberArray, isValidStringArray, areArriesWithSameLength, isValidBigIntOrNumber } from "./utils"; + +enum EnumOpcode { + + /** + * @notice Invalid Operation + * ID: 0 + */ + UNDEFINED, + + /** + * @notice Batch Mint Token Operation + * @param ADDRESS_2DARRAY[0] address[] toAddressArray: the array of the address to mint new token to + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to mint new token from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to mint + * + * ID: 1 + */ + BATCH_MINT_TOKENS, + + /** + * @notice Batch Create Token Class Operation + * @param STRING_ARRAY[] string[] nameArray: the array of the name of the token class to create + * @param UINT256_2DARRAY[0] uint256[] tokenIndexArray: the array of the token index of the token class to create + * @param UINT256_2DARRAY[1] uint256[] votingWeightArray: the array of the voting weight of the token class to create + * @param UINT256_2DARRAY[2] uint256[] dividendWeightArray: the array of the dividend weight of the token class to create + * + * ID:2 + */ + BATCH_CREATE_TOKEN_CLASSES, + + /** + * @notice Batch Transfer Token Operation + * @param ADDRESS_2DARRAY[0] address[] toAddressArray: the array of the address to transfer token to + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to transfer token from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to transfer + * + * ID:3 + */ + BATCH_TRANSFER_TOKENS, + + /** + * @notice Batch Transfer Token From Addr A to Addr B Operation + * @param ADDRESS_2DARRAY[0] address[] fromAddressArray (source): the array of the address to transfer token from + * @param ADDRESS_2DARRAY[1] address[] toAddressArray (target): the array of the address to transfer token to + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to transfer token from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to transfer + * + * ID:4 + */ + BATCH_TRANSFER_TOKENS_FROM_TO, + + /** + * @notice Batch Burn Token Operation + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to burn token from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to burn + * + * ID:5 + */ + BATCH_BURN_TOKENS, + + /** + * @notice Batch Burn Token From Addr A Operation + * @param ADDRESS_2DARRAY[0] address[] fromAddressArray: the array of the address to burn token from + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to burn token from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to burn + * + * ID:6 + */ + BATCH_BURN_TOKENS_FROM, + + /** + * @notice Batch Add Member Operation + * @param ADDRESS_2DARRAY[0] address[] memberAddressArray: the array of the address to add as member + * @param UINT256_2DARRAY[0] uint256[] memberRoleArray: the array of the role of the member to add + * @param STRING_ARRAY string[] memberNameArray: the array of the name of the member to add + * + * ID:7 + */ + BATCH_ADD_MEMBERSHIPS, + + /** + * @notice Batch Suspend Member Operation + * @param ADDRESS_2DARRAY[0] address[] memberAddressArray: the array of the address to suspend as member + * + * ID:8 + */ + BATCH_SUSPEND_MEMBERSHIPS, + + /** + * @notice Batch Resume Member Operation + * @param ADDRESS_2DARRAY[0] address[] memberAddressArray: the array of the address to reinstate as member + * + * ID:9 + */ + BATCH_RESUME_MEMBERSHIPS, + + /** + * @notice Batch Change Member Role Operation + * @param ADDRESS_2DARRAY[0] address[] memberAddressArray: the array of the address to change role of as member + * @param UINT256_2DARRAY[0] uint256[] memberRoleArray: the array of the role of the member to change + * + * ID:10 + */ + BATCH_CHANGE_MEMBER_ROLES, + + /** + * @notice Batch Change Member Name Operation + * @param ADDRESS_2DARRAY[0] address[] memberAddressArray: the array of the address to change name of as member + * @param STRING_ARRAY string[] memberNameArray: the array of the name of the member to change + * + * ID:11 + */ + BATCH_CHANGE_MEMBER_NAMES, + + /** + * @notice Batch Add Emergency Agent Operation + * @param Plugin[] pluginList: the array of the plugins + * ID:12 + */ + BATCH_ADD_PLUGINS, + + /** + * @notice Batch Enable Plugin Operation + * @param UINT256_ARRAY[0] uint256[] pluginIndexArray: the array of the plugins index to enable + * @param BOOL_ARRAY bool[] isBeforeOperationArray: the array of the flag to indicate if the plugin is before operation + * ID:13 + */ + BATCH_ENABLE_PLUGINS, + + /** + * @notice Batch Disable Plugin Operation + * @param UINT256_ARRAY[0] uint256[] pluginIndexArray: the array of the plugins index to disable + * @param BOOL_ARRAY bool[] isBeforeOperationArray: the array of the flag to indicate if the plugin is before operation + * ID:14 + */ + BATCH_DISABLE_PLUGINS, + + /** + * @notice Batch Add and Enable Plugin Operation + * @param Plugin[] pluginList: the array of the plugins + * ID:15 + */ + BATCH_ADD_AND_ENABLE_PLUGINS, + + /** + * @notice Batch Set Parameter Operation + * @param MachineParameter[] parameterNameArray: the array of the parameter name + * @param UINT256_2DARRAY[0] uint256[] parameterValueArray: the array of the parameter value + * ID:16 + */ + BATCH_SET_PARAMETERS, + + /** + * @notice Batch Add Withdrawable Balance Operation + * @param ADDRESS_2DARRAY[0] addressArray: the array of the address to add withdrawable balance + * @param UINT256_2DARRAY[0] amountArray: the array of the amount to add withdrawable balance + * ID:17 + */ + BATCH_ADD_WITHDRAWABLE_BALANCES, + + /** + * @notice Batch Reduce Withdrawable Balance Operation + * @param ADDRESS_2DARRAY[0] addressArray: the array of the address to substract withdrawable balance + * @param UINT256_2DARRAY[0] amountArray: the array of the amount to substract withdrawable balance + * ID:18 + */ + BATCH_REDUCE_WITHDRAWABLE_BALANCES, + + /** + * @notice Batch Add Voting Rules + * @param VotingRule[] votingRuleList: the array of the voting rules + * ID:19 + */ + BATCH_ADD_VOTING_RULES, + + + /** + * @notice Batch Pay to Mint Tokens Operation + * @param ADDRESS_2DARRAY[0] address[] addressArray: the array of the address to mint tokens + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to mint tokens + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount to mint tokens + * @param UINT256_2DARRAY[2] uint256[] priceArray: the price of each token class to mint + * @param UINT256_2DARRAY[3] uint256[1] dividendableFlag: the flag to indicate if the payment is dividendable. 1 for yes (pay for purchase), 0 for no (pay for investment) + * ID:20 + */ + BATCH_PAY_TO_MINT_TOKENS, + + /** + * @notice Pay some cash to transfer tokens (can be used as product coins) + * @param ADDRESS_2DARRAY[0] address[] toAddressArray: the array of the address to transfer token to + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to transfer token from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to transfer + * @param UINT256_2DARRAY[2] uint256[] priceArray: the price of each token class to transfer + * @ param UINT256_2DARRAY[3] uint256[1] dividendableFlag: the flag to indicate if the payment is dividendable. 1 for yes (pay for purchase), 0 for no (pay for investment) + * ID:21 + */ + BATCH_PAY_TO_TRANSFER_TOKENS, + + /** + * @notice Add an array of address as emergency agents + * (can be used as product NFTs with a new unique token class) + * @param ADDRESS_2DARRAY[0] address[] The array of the address to add as emergency agents + * ID:22 + */ + ADD_EMERGENCY, + + /** + * @notice Reserved ID 23 DO NOT USE + * ID:23 + */ + RESERVED_ID_23, + + /** + * @notice Call emergency agents to handle emergency situations + * @param UINT256_2DARRAY[0] address[] addressArray: the array of the emergency agents index to call + * ID:24 + */ + CALL_EMERGENCY, + + + /** + * @notice Call a contract with the given abi + * @param ADDRESS_2D[0][0] address contractAddress: the address of the contract to call + * @param bytes abi the encodedWithSignature abi of the function to call + * @param UINT256_2DARRAY[0][0] uint256 the value to send to the contract + * ID:25 + */ + CALL_CONTRACT_ABI, + + /** + * @notice Pay some cash + * @param uint256 amount: the amount of cash to pay + * @param uint256 paymentType: the type of cash to pay, 0 for ethers/matic/original tokens + * 1 for USDT, 2 for USDC (right now only 0 is supported), 3 for DAI ... + * @param uint256 dividendable: the flag to indicate if the payment is dividendable, + * 0 for no (pay for investment), 1 for yes (pay for purchase) + * ID:26 + */ + PAY_CASH, + + /** + * @notice Calculate the dividends and offer to token holders + * by adding the dividends to the withdrawable balance of each token holder + * + * ID:27 + */ + OFFER_DIVIDENDS, + + /** + * @notice Reserved ID 28 DO NOT USE + * ID:28 + */ + RESERVED_ID_28, + + /** + * @notice Set the approval for all transfer operations by address + * @paran address: the address to set approval for all transfer operations + * ADDRESS_2DARRAY[0][0] targetAddress + * ID:29 + */ + SET_APPROVAL_FOR_ALL_OPERATIONS, + + + /** + * @notice Batch Burn tokens and Refund + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to burn tokens from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to burn + * @param UINT256_2DARRAY[2] uint256[] priceArray: the price of each token class to burn + * ID:30 + */ + BATCH_BURN_TOKENS_AND_REFUND, + + /** + * @notice Add storage IPFS hash to the storage list permanently + * @paran STRING_ARRAY[0][0] text: the string text to add to the storage list + * ID:31 + */ + ADD_STORAGE_STRING, + + + /** + * Below are two operations than can be used during voting pending process + */ + + /** + * @notice Vote for a voting pending program + * @param bool[] voteArray: the array of the vote for each program + * ID:32 + */ + VOTE, + + /** + * @notice Execute a program that has been voted and approved + * ID:33 + */ + EXECUTE_PENDING_PROGRAM, + + /** + * @notice Emergency mode termination. Emergency agents cannot do anything after this operation + * ID:34 + */ + END_EMERGENCY, + + /** + * @notice Upgrade the contract to a new contract address + * @param ADDRESS_2DARRAY[0][0] The address of the new contract + * ID:35 + */ + UPGRADE_TO_ADDRESS, + + /** + * @notice Accepting current DARCs to be upgraded from the old contract address + * @param ADDRESS_2DARRAY[0][0] The address of the old contract + * ID:36 + */ + CONFIRM_UPGRAED_FROM_ADDRESS, + + /** + * @notice Upgrade the contract to the latest version + * ID:37 + */ + UPGRADE_TO_THE_LATEST +} + + + +function OPCODE_ID_1_BATCH_MINT_TOKENS( + addressArray: string[], + tokenClassArray: bigint[], + amountArray: bigint[] + ): OperationStruct { + // make sure the length of addressArray, tokenClassArray, amountArray are the same and not empty + if (addressArray.length != tokenClassArray.length || addressArray.length != amountArray.length) { + throw new Error("The length of addressArray, tokenClassArray, amountArray are different"); + } + if (addressArray.length == 0 || tokenClassArray.length == 0 || amountArray.length == 0) { + throw new Error("The length of addressArray, tokenClassArray, amountArray are zero"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 1, // mint token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [ + addressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES( + nameArray: string[], + tokenIndexArray: bigint[], + votingWeightArray: bigint[], + dividendWeightArray: bigint[] + ): OperationStruct { + // make sure the length of all arrays are the same and not empty + if (nameArray.length != tokenIndexArray.length || nameArray.length != votingWeightArray.length || nameArray.length != dividendWeightArray.length) { + throw new Error("The length of nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray are different"); + } + if (nameArray.length == 0 || tokenIndexArray.length == 0 || votingWeightArray.length == 0 || dividendWeightArray.length == 0) { + throw new Error("The length of nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray are zero"); + } + // make sure name array is valid array of strings + if (!isValidStringArray(nameArray)) { + throw new Error("The nameArray is not a valid array of strings"); + } + // make sure token index, voting weight and dividend weight array is valid array of bigint or number, and if it is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenIndexArray)) { + throw new Error("The tokenIndexArray is not a valid array of bigints"); + } + if (!isValidBigIntOrNumberArray(votingWeightArray)) { + throw new Error("The votingWeightArray is not a valid array of bigints"); + } + if (!isValidBigIntOrNumberArray(dividendWeightArray)) { + throw new Error("The dividendWeightArray is not a valid array of bigints"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 2, // mint token + param: { + STRING_ARRAY: nameArray, + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenIndexArray), + toBigIntArray(votingWeightArray), + toBigIntArray(dividendWeightArray) + ], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_3_BATCH_TRANSFER_TOKENS( + toAddressArray: string[], + tokenClassArray: bigint[], + amountArray: bigint[] + ): OperationStruct { + // make sure the length of the array is the same and not empty + if (toAddressArray.length != tokenClassArray.length || toAddressArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array or amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 3, // opcode for batch transfer token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [ + toAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO( + fromAddressArray: string[], + toAddressArray: string[], + tokenClassArray: bigint[], + amountArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (fromAddressArray.length != toAddressArray.length || fromAddressArray.length != tokenClassArray.length || fromAddressArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array or amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 4, + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [ + fromAddressArray, + toAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_5_BATCH_BURN_TOKENS( + tokenClassArray: bigint[], + amountArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (tokenClassArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array or amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 5, // burn token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_6_BATCH_BURN_TOKENS_FROM( + fromAddressArray: string[], + tokenClassArray: bigint[], + amountArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (fromAddressArray.length != tokenClassArray.length || fromAddressArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array or amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 6, // burn token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [ + fromAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS( + memberAddressArray: string[], + memberRoleArray: bigint[], + memberNameArray: string[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (memberAddressArray.length != memberRoleArray.length || memberAddressArray.length != memberNameArray.length) { + throw new Error("Invalid array length"); + } + // if any element in member role array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(memberRoleArray)) { + throw new Error("Invalid member role array"); + } + // make sure member name array is valid array of strings + if (!isValidStringArray(memberNameArray)) { + throw new Error("The memberNameArray is not a valid array of strings"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 7, // add membership + param: { + STRING_ARRAY: memberNameArray, + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(memberRoleArray) + ], + ADDRESS_2DARRAY: [ + memberAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS( + memberAddressArray: string[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (memberAddressArray.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 8, // suspend membership + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [ + memberAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS( + memberAddressArray: string[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (memberAddressArray.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 9, // resume membership + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [ + memberAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES( + memberAddressArray: string[], + memberRoleArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (memberAddressArray.length != memberRoleArray.length) { + throw new Error("Invalid array length"); + } + // if any element in member role array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(memberRoleArray)) { + throw new Error("Invalid member role array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 10, // change member roles + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(memberRoleArray) + ], + ADDRESS_2DARRAY: [ + memberAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES( + memberAddressArray: string[], + memberNameArray: string[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (memberAddressArray.length != memberNameArray.length) { + throw new Error("Invalid array length"); + } + // make sure member name array is valid array of strings + if (!isValidStringArray(memberNameArray)) { + throw new Error("The memberNameArray is not a valid array of strings"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 11, // change member names + param: { + STRING_ARRAY: memberNameArray, + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [ + memberAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_12_BATCH_ADD_PLUGINS( + pluginList: PluginStruct[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (pluginList.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 12, // add plugins + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: pluginList, + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_13_BATCH_ENABLE_PLUGINS( + pluginIndexArray: bigint[], + isBeforeOperationArray: boolean[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (pluginIndexArray.length != isBeforeOperationArray.length) { + throw new Error("Invalid array length"); + } + // if any element in plugin index array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(pluginIndexArray)) { + throw new Error("Invalid plugin index array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 13, // enable plugins + param: { + STRING_ARRAY: [], + BOOL_ARRAY: isBeforeOperationArray, + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(pluginIndexArray) + ], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_14_BATCH_DISABLE_PLUGINS( + pluginIndexArray: bigint[], + isBeforeOperationArray: boolean[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (pluginIndexArray.length != isBeforeOperationArray.length) { + throw new Error("Invalid array length"); + } + // if any element in plugin index array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(pluginIndexArray)) { + throw new Error("Invalid plugin index array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 14, // disable plugins + param: { + STRING_ARRAY: [], + BOOL_ARRAY: isBeforeOperationArray, + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(pluginIndexArray) + ], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS( + pluginList: PluginStruct[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (pluginList.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 15, // add and enable plugins + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: pluginList, + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_16_BATCH_SET_PARAMETERS( + parameterNameArray: bigint[], + parameterValueArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (parameterNameArray.length != parameterValueArray.length) { + throw new Error("Invalid array length"); + } + // if any element in parameter value array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(parameterValueArray)) { + throw new Error("Invalid parameter value array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 16, // set parameters + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: parameterNameArray, + UINT256_2DARRAY: [parameterValueArray], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES( + addressArray: string[], + amountArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (addressArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 17, // add withdrawable balances + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [ + addressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES( + addressArray: string[], + amountArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (addressArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 18, // reduce withdrawable balances + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [ + addressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_19_BATCH_ADD_VOTING_RULES( + votingRuleList: VotingRuleStruct[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (votingRuleList.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 19, // add voting rules + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: votingRuleList, + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS( + addressArray: string[], + tokenClassArray: bigint[], + amountArray: bigint[], + priceArray: bigint[], + dividendableFlag: bigint + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (addressArray.length != tokenClassArray.length || addressArray.length != amountArray.length || addressArray.length != priceArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array, amount array or price array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + if (!isValidBigIntOrNumberArray(priceArray)) { + throw new Error("Invalid price array"); + } + if (!isValidBigIntOrNumberArray([dividendableFlag])) { + throw new Error("Invalid dividendable flag"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 20, // pay to mint tokens + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray), + toBigIntArray(priceArray), + toBigIntArray([dividendableFlag]) + ], + ADDRESS_2DARRAY: [ + addressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS( + toAddressArray: string[], + tokenClassArray: bigint[], + amountArray: bigint[], + priceArray: bigint[], + dividendableFlag: bigint + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (toAddressArray.length != tokenClassArray.length || toAddressArray.length != amountArray.length || toAddressArray.length != priceArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array, amount array or price array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + if (!isValidBigIntOrNumberArray(priceArray)) { + throw new Error("Invalid price array"); + } + if (!isValidBigIntOrNumberArray([dividendableFlag])) { + throw new Error("Invalid dividendable flag"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 21, // pay to transfer tokens + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray), + toBigIntArray(priceArray), + toBigIntArray([dividendableFlag]) + ], + ADDRESS_2DARRAY: [ + toAddressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_22_ADD_EMERGENCY( + addressArray: string[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (addressArray.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 22, // add emergency + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [ + addressArray + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_24_CALL_EMERGENCY( + emergencyIndexArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (emergencyIndexArray.length == 0) { + throw new Error("Invalid array length"); + } + // if any element in emergency index array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(emergencyIndexArray)) { + throw new Error("Invalid emergency index array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 24, // call emergency + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(emergencyIndexArray) + ], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_25_CALL_CONTRACT_ABI( + contractAddress: string, + abiHexStringOrUint8Array: string | Uint8Array, + value: bigint + ): OperationStruct { + // make sure that the length of the array is not empty + if (contractAddress == "") { + throw new Error("Invalid contract address or abi"); + } + // make sure that abi is a valid hex string or Uint8Array + if (!ethers.utils.isBytesLike(abiHexStringOrUint8Array)) { + throw new Error("Invalid abi, should be a valid hex string or Uint8Array"); + } + + + //create the operation + const operation = { + operatorAddress: "", + opcode: 25, // call contract abi + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [value], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: abiHexStringOrUint8Array + } + }; + return operation; +} + +function OPCODE_ID_26_PAY_CASH( + amount: bigint, + paymentType: bigint, + dividendable: bigint + ): OperationStruct { + // make sure that the length of the array is not empty + if (!isValidBigIntOrNumber(amount)) { + throw new Error("Invalid amount"); + } + if (!isValidBigIntOrNumber(paymentType)) { + throw new Error("Invalid payment type"); + } + if (!isValidBigIntOrNumber(dividendable)) { + throw new Error("Invalid dividendable flag"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 26, // pay cash + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [amount, paymentType, dividendable], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_27_OFFER_DIVIDENDS(): OperationStruct { + //create the operation + const operation = { + operatorAddress: "", + opcode: 27, // offer dividends + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS( + targetAddress: string + ): OperationStruct { + // make sure that the length of the array is not empty + if (targetAddress == "") { + throw new Error("Invalid target address"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 29, // set approval for all operations + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [ + [targetAddress] + ], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND( + tokenClassArray: bigint[], + amountArray: bigint[] + ): OperationStruct { + // make sure that the length of the array is the same and not empty + if (tokenClassArray.length != amountArray.length) { + throw new Error("Invalid array length"); + } + // if any element in token class array or amount array is number, convert it to bigint + if (!isValidBigIntOrNumberArray(tokenClassArray)) { + throw new Error("Invalid token class array"); + } + if (!isValidBigIntOrNumberArray(amountArray)) { + throw new Error("Invalid amount array"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 30, // burn token and refund + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [ + toBigIntArray(tokenClassArray), + toBigIntArray(amountArray) + ], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_31_ADD_STORAGE_STRING( + text: string + ): OperationStruct { + // make sure that the length of the array is not empty + if (text == "") { + throw new Error("Invalid text"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 31, // add storage string + param: { + STRING_ARRAY: [text], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_32_VOTE( + voteArray: boolean[] + ): OperationStruct { + // make sure that the length of the array is not empty + if (voteArray.length == 0) { + throw new Error("Invalid array length"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 32, // vote + param: { + STRING_ARRAY: [], + BOOL_ARRAY: voteArray, + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_33_EXECUTE_PENDING_PROGRAM(): OperationStruct { + //create the operation + const operation = { + operatorAddress: "", + opcode: 33, // execute pending program + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_34_END_EMERGENCY(): OperationStruct { + //create the operation + const operation = { + operatorAddress: "", + opcode: 34, // end emergency + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_35_UPGRADE_TO_ADDRESS( + newContractAddress: string + ): OperationStruct { + // make sure that the length of the array is not empty + if (newContractAddress == "") { + throw new Error("Invalid new contract address"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 35, // upgrade to address + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [newContractAddress], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS( + oldContractAddress: string + ): OperationStruct { + // make sure that the length of the array is not empty + if (oldContractAddress == "") { + throw new Error("Invalid old contract address"); + } + + //create the operation + const operation = { + operatorAddress: "", + opcode: 36, // confirm upgrade from address + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY: [oldContractAddress], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +function OPCODE_ID_37_UPGRADE_TO_THE_LATEST(): OperationStruct { + //create the operation + const operation = { + operatorAddress: "", + opcode: 37, // upgrade to the latest version + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + + PLUGIN_ARRAY: [], + PARAMETER_ARRAY:[], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }; + return operation; +} + +// export all functions +export { + OPCODE_ID_1_BATCH_MINT_TOKENS, + OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, + OPCODE_ID_3_BATCH_TRANSFER_TOKENS, + OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO, + OPCODE_ID_5_BATCH_BURN_TOKENS, + OPCODE_ID_6_BATCH_BURN_TOKENS_FROM, + OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS, + OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS, + OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS, + OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES, + OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES, + OPCODE_ID_12_BATCH_ADD_PLUGINS, + OPCODE_ID_13_BATCH_ENABLE_PLUGINS, + OPCODE_ID_14_BATCH_DISABLE_PLUGINS, + OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS, + OPCODE_ID_16_BATCH_SET_PARAMETERS, + OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES, + OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES, + OPCODE_ID_19_BATCH_ADD_VOTING_RULES, + OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS, + OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS, + OPCODE_ID_22_ADD_EMERGENCY, + OPCODE_ID_24_CALL_EMERGENCY, + OPCODE_ID_25_CALL_CONTRACT_ABI, + OPCODE_ID_26_PAY_CASH, + OPCODE_ID_27_OFFER_DIVIDENDS, + OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS, + OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND, + OPCODE_ID_31_ADD_STORAGE_STRING, + OPCODE_ID_32_VOTE, + OPCODE_ID_33_EXECUTE_PENDING_PROGRAM, + OPCODE_ID_34_END_EMERGENCY, + OPCODE_ID_35_UPGRADE_TO_ADDRESS, + OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, + OPCODE_ID_37_UPGRADE_TO_THE_LATEST +} diff --git a/darc-js/src/SDK/opcodes/utils.ts b/darc-js/src/SDK/opcodes/utils.ts new file mode 100644 index 00000000..93d0cc31 --- /dev/null +++ b/darc-js/src/SDK/opcodes/utils.ts @@ -0,0 +1,78 @@ +import { getAddress } from "ethers/lib/utils"; + +/** + * For any given array of numbers, convert them to BigInts + * @param inputArray The array of numbers to be converted + * @returns The array of BigInts + */ +function toBigIntArray(inputArray: bigint[] | number[]): bigint[] { + let outputArray: bigint[] = []; + if (typeof inputArray[0] === "bigint") { + return inputArray as bigint[]; + } + else if (typeof inputArray[0] === "number") { + for (let i = 0; i < inputArray.length; i++) { + outputArray.push(BigInt(inputArray[i])); + } + } + return outputArray; +} + +/** + * This function checks if the input array is a valid array of bigints or numbers + * @param inputArray The array to be checked + * @returns True if the array is valid, false otherwise + */ +function isValidBigIntOrNumberArray(inputArray: bigint[] | number[]): boolean { + if (typeof inputArray[0] === "bigint") { + return true; + } + else if (typeof inputArray[0] === "number") { + return true; + } + return false; +} + +function isValidAddressArray(inputArray: string[]): boolean { + if (typeof inputArray[0] === "string") { + return true; + } + return false; +} + +function isValidStringArray(inputArray: string[]): boolean { + if (typeof inputArray[0] === "string") { + return true; + } + return false; +} + +function areArriesWithSameLength(...arrays: any[][]): boolean { + const length = arrays[0].length; + for (let i = 1; i < arrays.length; i++) { + if (arrays[i].length !== length) { + return false; + } + } + return true; +} + +function isValidBigIntOrNumber(input: any): boolean { + if (typeof input === "bigint") { + return true; + } + else if (typeof input === "number") { + return true; + } + return false; +} + + +export { + toBigIntArray, + isValidBigIntOrNumberArray, + isValidAddressArray, + isValidStringArray, + isValidBigIntOrNumber, + areArriesWithSameLength +} \ No newline at end of file diff --git a/darc-js/src/darcBinary/DARC-latest.json b/darc-js/src/darcBinary/DARC-latest.json index ad0f351d..d2e7268c 100644 --- a/darc-js/src/darcBinary/DARC-latest.json +++ b/darc-js/src/darcBinary/DARC-latest.json @@ -6,42 +6,93 @@ { "inputs": [ { - "internalType": "uint256", - "name": "idx", - "type": "uint256" - } - ], - "name": "checkVotingResult", - "outputs": [ + "internalType": "string", + "name": "haystack", + "type": "string" + }, { - "internalType": "enum VotingStatus", - "name": "", - "type": "uint8" + "internalType": "string", + "name": "needle", + "type": "string" } ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "checkVotingResults", + "name": "contains", "outputs": [ { - "internalType": "enum VotingStatus[]", + "internalType": "bool", "name": "", - "type": "uint8[]" + "type": "bool" } ], - "stateMutability": "view", + "stateMutability": "pure", "type": "function" }, { "inputs": [], - "name": "currentVotingEndTime", + "name": "currentMachineState", "outputs": [ + { + "components": [ + { + "internalType": "uint256[100]", + "name": "latestOperationTimestamp", + "type": "uint256[100]" + } + ], + "internalType": "struct OperationLog", + "name": "globalOperationLog", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "dividendPermyriadPerTransaction", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dividendCycleOfTransactions", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentCashBalanceForDividends", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dividendCycleCounter", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "emergencyAgentsAddressList", + "type": "address[]" + }, + { + "internalType": "string[]", + "name": "strStorageList", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "activeEmergencyAgentsAddressList", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "bIsEmergency", + "type": "bool" + } + ], + "internalType": "struct MachineStateParameters", + "name": "machineStateParameters", + "type": "tuple" + }, { "internalType": "uint256", - "name": "", + "name": "currentBalance", "type": "uint256" } ], @@ -153,9 +204,9 @@ "type": "uint8" }, { - "internalType": "enum EnumConditionExpression", + "internalType": "uint256", "name": "conditionExpression", - "type": "uint8" + "type": "uint256" }, { "internalType": "uint256[]", @@ -315,6 +366,96 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getDARClogs", + "outputs": [ + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "getDateTime", + "outputs": [ + { + "internalType": "uint256", + "name": "year", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "month", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "day", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "hour", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "second", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getGlobalOperationLog", + "outputs": [ + { + "components": [ + { + "internalType": "uint256[100]", + "name": "latestOperationTimestamp", + "type": "uint256[100]" + } + ], + "internalType": "struct OperationLog", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLatestVotingItemIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -395,6 +536,32 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "getOperationLogByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "uint256[100]", + "name": "latestOperationTimestamp", + "type": "uint256[100]" + } + ], + "internalType": "struct OperationLog", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getPluginInfo", @@ -429,9 +596,9 @@ "type": "uint8" }, { - "internalType": "enum EnumConditionExpression", + "internalType": "uint256", "name": "conditionExpression", - "type": "uint8" + "type": "uint256" }, { "internalType": "uint256[]", @@ -530,9 +697,9 @@ "type": "uint8" }, { - "internalType": "enum EnumConditionExpression", + "internalType": "uint256", "name": "conditionExpression", - "type": "uint8" + "type": "uint256" }, { "internalType": "uint256[]", @@ -722,311 +889,359 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "getWithdrawableCashBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getWithdrawableCashOwnerList", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "getWithdrawableDividendBalance", - "outputs": [ { "internalType": "uint256", - "name": "", + "name": "idx", "type": "uint256" } ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getWithdrawableDividendOwnerList", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialOwnerAddress", + "name": "getVotingItemsByIndex", "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "votingRuleIndices", - "type": "uint256[]" - }, { "components": [ - { - "internalType": "address", - "name": "programOperatorAddress", - "type": "address" - }, { "components": [ { "internalType": "address", - "name": "operatorAddress", + "name": "programOperatorAddress", "type": "address" }, - { - "internalType": "enum EnumOpcode", - "name": "opcode", - "type": "uint8" - }, { "components": [ { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" + "internalType": "address", + "name": "operatorAddress", + "type": "address" }, { - "internalType": "bool[]", - "name": "BOOL_ARRAY", - "type": "bool[]" + "internalType": "enum EnumOpcode", + "name": "opcode", + "type": "uint8" }, { "components": [ { - "internalType": "uint256[]", - "name": "votingTokenClassList", - "type": "uint256[]" - }, - { - "internalType": "uint256", - "name": "approvalThresholdPercentage", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "votingDurationInSeconds", - "type": "uint256" + "internalType": "string[]", + "name": "STRING_ARRAY", + "type": "string[]" }, { - "internalType": "uint256", - "name": "executionPendingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" - }, - { - "internalType": "string", - "name": "notes", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsAbsoluteMajority", - "type": "bool" - } - ], - "internalType": "struct VotingRule[]", - "name": "VOTING_RULE_ARRAY", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "enum EnumReturnType", - "name": "returnType", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" + "internalType": "bool[]", + "name": "BOOL_ARRAY", + "type": "bool[]" }, { "components": [ + { + "internalType": "uint256[]", + "name": "votingTokenClassList", + "type": "uint256[]" + }, { "internalType": "uint256", - "name": "id", + "name": "approvalThresholdPercentage", "type": "uint256" }, { - "internalType": "enum EnumConditionNodeType", - "name": "nodeType", - "type": "uint8" + "internalType": "uint256", + "name": "votingDurationInSeconds", + "type": "uint256" }, { - "internalType": "enum EnumLogicalOperatorType", - "name": "logicalOperator", - "type": "uint8" + "internalType": "uint256", + "name": "executionPendingDurationInSeconds", + "type": "uint256" }, { - "internalType": "enum EnumConditionExpression", - "name": "conditionExpression", + "internalType": "bool", + "name": "bIsEnabled", + "type": "bool" + }, + { + "internalType": "string", + "name": "notes", + "type": "string" + }, + { + "internalType": "bool", + "name": "bIsAbsoluteMajority", + "type": "bool" + } + ], + "internalType": "struct VotingRule[]", + "name": "VOTING_RULE_ARRAY", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "enum EnumReturnType", + "name": "returnType", "type": "uint8" }, { - "internalType": "uint256[]", - "name": "childList", - "type": "uint256[]" + "internalType": "uint256", + "name": "level", + "type": "uint256" }, { "components": [ { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" + "internalType": "uint256", + "name": "id", + "type": "uint256" }, { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" + "internalType": "enum EnumConditionNodeType", + "name": "nodeType", + "type": "uint8" }, { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" + "internalType": "enum EnumLogicalOperatorType", + "name": "logicalOperator", + "type": "uint8" }, { - "internalType": "bytes", - "name": "BYTES", - "type": "bytes" + "internalType": "uint256", + "name": "conditionExpression", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "childList", + "type": "uint256[]" + }, + { + "components": [ + { + "internalType": "string[]", + "name": "STRING_ARRAY", + "type": "string[]" + }, + { + "internalType": "uint256[][]", + "name": "UINT256_2DARRAY", + "type": "uint256[][]" + }, + { + "internalType": "address[][]", + "name": "ADDRESS_2DARRAY", + "type": "address[][]" + }, + { + "internalType": "bytes", + "name": "BYTES", + "type": "bytes" + } + ], + "internalType": "struct NodeParam", + "name": "param", + "type": "tuple" } ], - "internalType": "struct NodeParam", - "name": "param", - "type": "tuple" + "internalType": "struct ConditionNode[]", + "name": "conditionNodes", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "votingRuleIndex", + "type": "uint256" + }, + { + "internalType": "string", + "name": "notes", + "type": "string" + }, + { + "internalType": "bool", + "name": "bIsEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "bIsInitialized", + "type": "bool" + }, + { + "internalType": "bool", + "name": "bIsBeforeOperation", + "type": "bool" } ], - "internalType": "struct ConditionNode[]", - "name": "conditionNodes", + "internalType": "struct Plugin[]", + "name": "PLUGIN_ARRAY", "type": "tuple[]" }, { - "internalType": "uint256", - "name": "votingRuleIndex", - "type": "uint256" + "internalType": "enum MachineParameter[]", + "name": "PARAMETER_ARRAY", + "type": "uint8[]" }, { - "internalType": "string", - "name": "notes", - "type": "string" + "internalType": "uint256[][]", + "name": "UINT256_2DARRAY", + "type": "uint256[][]" }, { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" + "internalType": "address[][]", + "name": "ADDRESS_2DARRAY", + "type": "address[][]" }, { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsBeforeOperation", - "type": "bool" + "internalType": "bytes", + "name": "BYTES", + "type": "bytes" } ], - "internalType": "struct Plugin[]", - "name": "PLUGIN_ARRAY", - "type": "tuple[]" - }, - { - "internalType": "enum MachineParameter[]", - "name": "PARAMETER_ARRAY", - "type": "uint8[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - }, - { - "internalType": "bytes", - "name": "BYTES", - "type": "bytes" + "internalType": "struct Param", + "name": "param", + "type": "tuple" } ], - "internalType": "struct Param", - "name": "param", - "type": "tuple" + "internalType": "struct Operation[]", + "name": "operations", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "notes", + "type": "string" } ], - "internalType": "struct Operation[]", - "name": "operations", - "type": "tuple[]" + "internalType": "struct Program", + "name": "program", + "type": "tuple" }, { - "internalType": "string", - "name": "notes", - "type": "string" + "internalType": "uint256[]", + "name": "votingRuleIndices", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "powerYes", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "powerNo", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "totalPower", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "votingEndTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "executingEndTime", + "type": "uint256" + }, + { + "internalType": "enum VotingStatus", + "name": "votingStatus", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "bIsProgramExecuted", + "type": "bool" } ], - "internalType": "struct Program", - "name": "currentProgram", + "internalType": "struct VotingItem", + "name": "", "type": "tuple" } ], - "name": "initializeVoting", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "getWithdrawableCashBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWithdrawableCashOwnerList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "getWithdrawableDividendBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWithdrawableDividendOwnerList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialOwnerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1044,22 +1259,100 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "sandboxMachineState", + "outputs": [ + { + "components": [ + { + "internalType": "uint256[100]", + "name": "latestOperationTimestamp", + "type": "uint256[100]" + } + ], + "internalType": "struct OperationLog", + "name": "globalOperationLog", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "dividendPermyriadPerTransaction", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dividendCycleOfTransactions", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentCashBalanceForDividends", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dividendCycleCounter", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "emergencyAgentsAddressList", + "type": "address[]" + }, + { + "internalType": "string[]", + "name": "strStorageList", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "activeEmergencyAgentsAddressList", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "bIsEmergency", + "type": "bool" + } + ], + "internalType": "struct MachineStateParameters", + "name": "machineStateParameters", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "internalType": "address", - "name": "voter", + "name": "", "type": "address" }, { - "internalType": "bool[]", - "name": "votes", - "type": "bool[]" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "vote", - "outputs": [], - "stateMutability": "nonpayable", + "name": "voted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", "type": "function" }, { @@ -1188,9 +1481,9 @@ "type": "uint8" }, { - "internalType": "enum EnumConditionExpression", + "internalType": "uint256", "name": "conditionExpression", - "type": "uint8" + "type": "uint256" }, { "internalType": "uint256[]", @@ -1350,8 +1643,8 @@ "type": "function" } ], - "bytecode": "0x60808060405234620000195762017aea90816200001f8239f35b600080fdfe6108008060405260043610156200001557600080fd5b600080608052803560e01c918263036ee8501462003eab575081630e5a3b291462003b2257816310ade3ea1462003af05781631797631d1462003a605781631c75255a1462003a0b57816323b65c78146200397b5781632514a6b4146200371f57816341d1a43814620036ec57816356424cf414620036cb5781635c00d98714620036a15781635d0b1849146200367d5781635f1231ea14620035885781635f5d5f0014620034f8578163681ece9d14620034b557816374579b18146200247457816379532bfe14620024505781637daa10ce14620024315781638129fc1c146200201d57816383e4cccf1462001d91578163864f9f7a1462001d4f57816386ad77e214620019d85781638c7a63ae146200195e5781639df9914514620018455781639f36145f1462000577578163a064c4f1146200042c57508063acf80bc414620003ea578063aefca42a14620003c6578063bba510301462000219578063d5a172f214620001ec5763d6a93c51146200018f57600080fd5b34620001e65760805180600319360112620001e3575b6127108110620001bb575b602090604051908152f35b60ff60078260031b01541615620001dd57620001d79062005b81565b620001a5565b620001b0565b80fd5b60805180fd5b34620001e65760805180600319360112620001e35760206001600160a01b03620271265416604051908152f35b34620001e65760805180600319360112620001e3576202712e548091526202712b906020828152600380604060805120015493620002746200025b8662003ffb565b956200026b604051978862003fd9565b80875262003ffb565b8584019190601f19013683376080515b85608051528185528360406080512001548110156200036f576040517f41d1a438000000000000000000000000000000000000000000000000000000008152816004820152602486828281305afa91821562000362576080519262000324575b50620002f1838a62005bed565b90868310156200030e575052620003089062005b81565b62000284565b634e487b7160e01b608051526021600452608051fd5b9091508681813d83116200035a575b6200033f818362003fd9565b81010312620001e6575185811015620001e6579089620002e4565b503d62000333565b6040513d608051823e3d90fd5b84878460405192839281840190828552518091526040840192916080515b8281106200039d57505050500390f35b9193839550908082620003b5600194839751620040f8565b01950191019185949391926200038d565b34620001e65760805180600319360112620001e35760206202712854604051908152f35b34620001e6576020366003190112620001e6576001600160a01b036200040f62003ecd565b166080515262013887602052602060406080512054604051908152f35b34620001e65760209081600319360112620001e6576004356127108110156200055f5790600391821b9060018201549091600481018054946080519481869401905b878510620004fc578862000483888862006fe1565b90156200049257604051908152f35b6084826040519062461bcd60e51b82526004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527f74696e67576569676874206f766572666c6f77000000000000000000000000006064820152fd5b9590919293956200055f576200055586620005476001600160a01b03620005286200054f9a8962005f0b565b905490881b1c1693608051948552858c52604060805120549062007088565b989062007003565b62005b81565b939291906200046e565b634e487b7160e01b6080515260326004526024608051fd5b34620001e6576020366003190112620001e657600435608051526202712b602052604060805120604051620005ac8162003f69565b6001600160a01b03825416815260018201918254620005cb8162003ffb565b90620005db604051928362003fd9565b808252602082019460805152608051946020862095905b8282106200067d5762000652868686602083015260405162000625816200061d81600286016200525e565b038262003fd9565b604083015260ff600782015491600960088201549101549060405195869560a0875260a0870190620055c7565b93602086015260408501526200066e60608501838316620040f8565b60081c16151560808301520390f35b6040516200068b8162003f69565b87546001600160a01b0381168252602660ff8260a01c1610156200182d5760a01c60ff166020820152604051620006c28162003f4c565b620006d060018a01620052fc565b8152600289016040518082602082945493848152019060805152608051926020842093905b80601f8301106200165a576200082e94549181811062001643575b81811062001629575b8181106200160f575b818110620015f5575b818110620015dc575b818110620015c2575b818110620015a8575b8181106200158e575b81811062001574575b8181106200155a575b81811062001540575b81811062001526575b8181106200150c575b818110620014f2575b818110620014d8575b818110620014be575b818110620014a4575b8181106200148a575b81811062001470575b81811062001456575b8181106200143c575b81811062001422575b81811062001408575b818110620013ee575b818110620013d4575b818110620013ba575b818110620013a0575b81811062001386575b8181106200136c575b81811062001352575b81811062001338575b1062001327575b50038262003fd9565b6020820152600389018054620008448162003ffb565b9162000854604051938462003fd9565b818352602083019060805152608051906020822091905b83821062001306575050505060408201526004890180546200088d8162003ffb565b916200089d604051938462003fd9565b818352602083019060805152608051906020822091905b8382106200118f57505050506060820152600589016040519081602082549182815201916080515260805190602082205b81601f84011062000e9e5784600997946020979460019a979462000a2b94549181811062000e80575b81811062000e5f575b81811062000e3e575b81811062000e1d575b81811062000dfd575b81811062000ddc575b81811062000dbb575b81811062000d9a575b81811062000d79575b81811062000d58575b81811062000d37575b81811062000d16575b81811062000cf5575b81811062000cd4575b81811062000cb3575b81811062000c92575b81811062000c71575b81811062000c50575b81811062000c2f575b81811062000c0e575b81811062000bed575b81811062000bcc575b81811062000bab575b81811062000b8a575b81811062000b69575b81811062000b48575b81811062000b27575b81811062000b06575b81811062000ae5575b81811062000ac4575b81811062000aa3575b1062000a885750038262003fd9565b608082015262000a3e60068d016200544f565b60a082015262000a5160078d0162005508565b60c0820152600862000a6f8d6200061d60405180948193016200525e565b60e08201526040820152815201970191019095620005f2565b90889160f81c62000a998162004eaa565b8152013862000825565b928a8d9160ff8560f01c1662000ab98162004eaa565b815201930162000a1c565b928a8d9160ff8560e81c1662000ada8162004eaa565b815201930162000a13565b928a8d9160ff8560e01c1662000afb8162004eaa565b815201930162000a0a565b928a8d9160ff8560d81c1662000b1c8162004eaa565b815201930162000a01565b928a8d9160ff8560d01c1662000b3d8162004eaa565b8152019301620009f8565b928a8d9160ff8560c81c1662000b5e8162004eaa565b8152019301620009ef565b928a8d9160ff8560c01c1662000b7f8162004eaa565b8152019301620009e6565b928a8d9160ff8560b81c1662000ba08162004eaa565b8152019301620009dd565b928a8d9160ff8560b01c1662000bc18162004eaa565b8152019301620009d4565b928a8d9160ff8560a81c1662000be28162004eaa565b8152019301620009cb565b928a8d9160ff8560a01c1662000c038162004eaa565b8152019301620009c2565b928a8d9160ff8560981c1662000c248162004eaa565b8152019301620009b9565b928a8d9160ff8560901c1662000c458162004eaa565b8152019301620009b0565b928a8d9160ff8560881c1662000c668162004eaa565b8152019301620009a7565b928a8d9160ff8560801c1662000c878162004eaa565b81520193016200099e565b928a8d9160ff8560781c1662000ca88162004eaa565b815201930162000995565b928a8d9160ff8560701c1662000cc98162004eaa565b81520193016200098c565b928a8d9160ff8560681c1662000cea8162004eaa565b815201930162000983565b928a8d9160ff8560601c1662000d0b8162004eaa565b81520193016200097a565b928a8d9160ff8560581c1662000d2c8162004eaa565b815201930162000971565b928a8d9160ff8560501c1662000d4d8162004eaa565b815201930162000968565b928a8d9160ff8560481c1662000d6e8162004eaa565b81520193016200095f565b928a8d9160ff8560401c1662000d8f8162004eaa565b815201930162000956565b928a8d9160ff8560381c1662000db08162004eaa565b81520193016200094d565b928a8d9160ff8560301c1662000dd18162004eaa565b815201930162000944565b928a8d9160ff8560281c1662000df28162004eaa565b81520193016200093b565b928a8d9160ff85831c1662000e128162004eaa565b815201930162000932565b928a8d9160ff8560181c1662000e338162004eaa565b815201930162000929565b928a8d9160ff8560101c1662000e548162004eaa565b815201930162000920565b928a8d9160ff8560081c1662000e758162004eaa565b815201930162000917565b928a8d9160ff851662000e938162004eaa565b81520193016200090e565b926001610400602092865460ff811662000eb88162004eaa565b825260ff8160081c1662000ecc8162004eaa565b8583015260ff8160101c1662000ee28162004eaa565b604083015260ff8160181c1662000ef98162004eaa565b606083015260ff81861c1662000f0f8162004eaa565b608083015260ff8160281c1662000f268162004eaa565b60a083015260ff81818160301c1662000f3f8162004eaa565b60c09081860152828260381c1662000f578162004eaa565b60e0860152828260401c1662000f6d8162004eaa565b610100860152828260481c1662000f848162004eaa565b610120860152828260501c1662000f9b8162004eaa565b610140860152828260581c1662000fb28162004eaa565b610160860152828260601c1662000fc98162004eaa565b610180860152828260681c1662000fe08162004eaa565b6101a0860152828260701c1662000ff78162004eaa565b6101c0860152828260781c166200100e8162004eaa565b6101e0860152828260801c16620010258162004eaa565b610200860152828260881c166200103c8162004eaa565b610220860152828260901c16620010538162004eaa565b610240860152828260981c166200106a8162004eaa565b610260860152828260a01c16620010818162004eaa565b610280860152828260a81c16620010988162004eaa565b6102a0860152828260b01c16620010af8162004eaa565b6102c0860152828260b81c16620010c68162004eaa565b6102e08601521c16620010d98162004eaa565b61030083015260ff8160c81c16620010f18162004eaa565b61032083015260ff8160d01c16620011098162004eaa565b61034083015260ff8160d81c16620011218162004eaa565b61036083015260ff8160e01c16620011398162004eaa565b61038083015260ff8160e81c16620011518162004eaa565b6103a083015260ff8160f01c16620011698162004eaa565b6103c083015260f81c6200117d8162004eaa565b6103e0820152019401920191620008e5565b60409d9c9b9a999897969d51620011a68162003f4c565b620011b660ff8554168262005435565b60018401546020820152600284018054620011d18162003ffb565b91620011e1604051938462003fd9565b8183526020830190608051526080516020812090915b8383106200127857505050509d9e9798999a9b9c9d6001928260209260406006950152600387015460608201526040516200123b816200061d8160048c016200525e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201930191019091620008b4565b600760206001926040516200128d8162003f30565b85548152620012d160ff86880154818116620012a98162004eaa565b86850152818160081c16620012be8162004091565b604085015260101c166060830162005442565b620012df600287016200536a565b6080820152620012f26003870162005565565b60a0820152815201920192019190620011f7565b600760206001926200131886620053bf565b8152019301910190916200086b565b60f81c151581526020018d62000825565b92602060019160ff8560f01c16151581520193016200081e565b92602060019160ff8560e81c161515815201930162000815565b92602060019160ff8560e01c16151581520193016200080c565b92602060019160ff8560d81c161515815201930162000803565b92602060019160ff8560d01c1615158152019301620007fa565b92602060019160ff8560c81c1615158152019301620007f1565b92602060019160ff8560c01c1615158152019301620007e8565b92602060019160ff8560b81c1615158152019301620007df565b92602060019160ff8560b01c1615158152019301620007d6565b92602060019160ff8560a81c1615158152019301620007cd565b92602060019160ff8560a01c1615158152019301620007c4565b92602060019160ff8560981c1615158152019301620007bb565b92602060019160ff8560901c1615158152019301620007b2565b92602060019160ff8560881c1615158152019301620007a9565b92602060019160ff8560801c1615158152019301620007a0565b92602060019160ff8560781c161515815201930162000797565b92602060019160ff8560701c16151581520193016200078e565b92602060019160ff8560681c161515815201930162000785565b92602060019160ff8560601c16151581520193016200077c565b92602060019160ff8560581c161515815201930162000773565b92602060019160ff8560501c16151581520193016200076a565b92602060019160ff8560481c161515815201930162000761565b92602060019160ff8560401c161515815201930162000758565b92602060019160ff8560381c16151581520193016200074f565b92602060019160ff8560301c161515815201930162000746565b92602060019160ff8560281c16151581520193016200073d565b92602060019160ff85831c161515815201930162000734565b92602060019160ff8560181c16151581520193016200072b565b92602060019160ff8560101c161515815201930162000722565b92602060019160ff8560081c161515815201930162000719565b92602060019160ff85161515815201930162000710565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282891c1615156080860152828260281c16151560a0860152828260c092828260301c16151584890152828260381c16151560e0890152828260401c161515610100890152828260481c161515610120890152828260501c161515610140890152828260581c1615156101608901521c161515610180860152828260681c1615156101a0860152828260701c1615156101c0860152828260781c1615156101e0860152828260801c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e0820152019401920184929391620006f5565b634e487b7160e01b6080515260216004526024608051fd5b6020366003190112620001e6576004356001600160401b038111620001e6576200187490369060040162004430565b6001600160a01b03620018c581835116620018bc6200189d6200189733620178d8565b62005a32565b620018b5620018af86885116620178d8565b62005ab0565b9062005b07565b90331462005b4e565b6080519060208301915b825180518210156200193657906200054f620019309284620018f384339362005bed565b51511614620019296200190a6200189733620178d8565b620018b5620018af8862001920888c5162005bed565b515116620178d8565b9062005b4e565b620018cf565b6200195a6200194586620072a7565b6040519182916020835260208301906200412b565b0390f35b34620001e6576020366003190112620001e6576004356127108110156200055f5760031b6001810154600282015491620019ce6005620019af6006840154936200061d60405180948193016200525e565b604051948594855260208501526080604085015260808401906200412b565b9060608301520390f35b34620001e65760805180600319360112620001e357620138828054620019fe8162003ffb565b9162001a0e604051938462003fd9565b8183526020830190608051527fe5dac618068543225ae1c2f585dbaa37d058ab507104bc7da3da5ab2e5666cc7608051915b83831062001c1157846201388390815462001a5b8162003ffb565b9262001a6b604051948562003fd9565b8184526020840190608051527f9e32270fdbb1cb37df0574dfc18a9a2c56583299a239108c9d137f746b82200a608051915b83831062001ad35762001ac4856200195a8860405193849360408552604085019062005044565b90838203602085015262005044565b60405162001ae18162003f4c565b62001af160ff8454168262005435565b6001830154602082015260028301805462001b0c8162003ffb565b9162001b1c604051938462003fd9565b818352602083019060805152608051906020822091905b83821062001bab575050505060019282602092604060069501526003860154606082015260405162001b6e816200061d8160048b016200525e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520192019201919062001a9d565b6007602060019260405162001bc08162003f30565b8654815262001bdc60ff86890154818116620012a98162004eaa565b62001bea600288016200536a565b608082015262001bfd6003880162005565565b60a082015281520193019101909162001b33565b60405162001c1f8162003f4c565b62001c2f60ff8454168262005435565b6001830154602082015260028301805462001c4a8162003ffb565b9162001c5a604051938462003fd9565b818352602083019060805152608051906020822091905b83821062001ce9575050505060019282602092604060069501526003860154606082015260405162001cac816200061d8160048b016200525e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520192019201919062001a40565b6007602060019260405162001cfe8162003f30565b8654815262001d1a60ff86890154818116620012a98162004eaa565b62001d28600288016200536a565b608082015262001d3b6003880162005565565b60a082015281520193019101909162001c71565b34620001e6576020366003190112620001e6576001600160a01b0362001d7462003ecd565b166080515262013885602052602060406080512054604051908152f35b34620001e657602080600319360112620001e6576004359062001dd2478311156200192962001dc08562006190565b62001dcb4762006190565b9062005c02565b336080515262001e4a6201388580835262001e1f604060805120548511156200192962001dff8762006190565b336080515284875262001e186040608051205462006190565b9062005caa565b336080515280835262001e39846040608051205462006155565b92906200192962001dff8762006190565b3360805152825280604060805120551562001e8c575b5060805180808381949382941562001e82575b3390f115620003625760805180f35b506108fc62001e73565b620138869081549162001e9f8362005d44565b9160805193845b81811062001faa57505062001ebb8462005d44565b918251926001600160401b03841162001f925791839262001edd829562005f95565b01906080515260805192835b83811062001f5657505050505b82811062001f0657505062001e60565b806200054f6001600160a01b0362001f2362001f50948662005bed565b511662001f308362005db5565b90919082549060031b916001600160a01b03809116831b921b1916179055565b62001ef6565b82516001600160a01b03167f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa48201559181019160010162001ee9565b634e487b7160e01b6080515260416004526024608051fd5b62001fb58162005db5565b6001600160a01b03915490826003923392841b1c160362001fe4575b505062001fde9062005b81565b62001ea6565b966200201491839862001ffb62001fde9562005db5565b9054911b1c166200200d828962005bed565b5262005b81565b95908862001fd1565b34620001e65760805180600319360112620001e3575062027126336001600160a01b0319825416179055600190620271298260ff19825416179055604051620020668162003fbd565b60805190526201388280548282558062002391575b50608051526040516200208e8162003fbd565b6080519052608051806200237b57506201388390815481835580620022dc575b5050608051526127106202712a55604051620020ca8162003fa1565b8181526080515b602080821015620021445760405160209291620020ee8262003f30565b60805182526080518183015260805160408301526080516060908184015280608084015260405190620021218262003efe565b80825280838301528060408301528082015260a0830152828501015201620020d1565b83620022c984604051620021588162003fbd565b60805181526040516200216b8162003fbd565b60805181526040516200217e8162003fbd565b6080518152604051620021918162003fbd565b608051815260405191620021a58362003fbd565b608051835260405193620021b98562003efe565b845260208401526040830152606082015260405191620021d98362003f30565b60805183526003602084015260805160408401526080516060840152608083015260a08201526200220a8262005ba7565b52620022168162005ba7565b5062002271604051620022298162003f4c565b6004815284602082015282604082015260805160608201526040516200224f8162003fbd565b608051815260808201528460a08201528460c08201528460e082015262006db8565b60405190620022808262003f4c565b6002825283602083015260408201526080516060820152604051620022a58162003fbd565b608051815260808201528260a08201528260c082015260805160e082015262006e05565b6113886201388b556201388c5560805180f35b60069181830291838304036200236757808491608052527f9e32270fdbb1cb37df0574dfc18a9a2c56583299a239108c9d137f746b82200a908101905b818110620023285750620020ae565b8290608051808255868201556200234260028201620065b3565b6080516003820155620023586004820162006448565b60805160058201550162002319565b80634e487b7160e01b602492526011600452fd5b634e487b7160e01b905260416004526024608051fd5b60069080820290828204036200241d57836080528284527fe5dac618068543225ae1c2f585dbaa37d058ab507104bc7da3da5ab2e5666cc7908101905b818110620023de5750506200207b565b829060805180825587820155620023f860028201620065b3565b60805160038201556200240e6004820162006448565b608051600582015501620023ce565b602484634e487b7160e01b81526011600452fd5b34620001e65760805180600319360112620001e3576020604051338152f35b34620001e65760805180600319360112620001e35760206202712d54604051908152f35b34620001e6576040366003190112620001e6576004356001600160401b038111620001e657620024a990369060040162004152565b6024356001600160401b038111620001e657620024cb90369060040162004430565b620271298054600260ff8216620024e28162004091565b14620034715760ff191660021790556202712e54600181019081106200311a57806202712e5560805190815b84518110156200257157826002620025326200252b848962005bed565b5162014e46565b500154106200254d575b620025479062005b81565b6200250e565b9150620025476002620025656200252b858862005bed565b5001549290506200253c565b50919060805191825b8551811015620025d757620025946200252b828862005bed565b508460038092015410620025b5575b50620025af9062005b81565b6200257a565b819450620025cc6200252b620025af938962005bed565b5001549390620025a3565b508493608051526202712b6020526080519060408220916001600160a01b038251166001600160a01b03198454161783556020820151805191600160401b83116200237b5750600184015482600186015580831062003296575b50608080516001860190525160208082209392015b82821062002bb657505050509060026040620026669301519101620067d9565b62002672835162005d44565b6202712e54608051526202712b6020526080519060056040832001908051926001600160401b0384116200237b5750602090620026b084846200611d565b01906080515260805160208120905b83811062002ba15750505050620026d7835162005d44565b6202712e54608051526202712b6020526080519060046040832001908051926001600160401b0384116200237b57506020906200271584846200611d565b01906080515260805160208120905b83811062002b8c57505050506200273c835162005d44565b906202712e54608051526202712b60205260805160066040822001928051916001600160401b0383116200237b57506020906200277a83866200611d565b0192608051526080519260208420845b83811062002b775750505050620027a2904262007088565b90916202712e5490526202712b602052600760406080512001551562002b33576202712e54608051526202712b6020526008620027ea60406080512092600784015462007088565b91909201551562002aef576202712e54608051526202712b602052600960406080512001600260ff1982541617905562002825815162005d44565b6202712e54608051526202712b60205260805160036040822001918051916001600160401b0383116200237b57506020906200286283856200611d565b0191608051526080519160208320835b83811062002ada5785855b8151811015620028e057806200054f6200289c620028da938562005bed565b516202712e54608051526202712b602052620028c18360036040608051200162005f0b565b90919082549060031b91821b91600019901b1916179055565b6200287d565b50608051905b805182101562002ad4576202712e549182608051526202712b602052620029276200291a8260036040608051200162005f0b565b90549060031b1c62014e46565b505490620029358262005d44565b916080515b81811062002a86575050608051805b835182101562002a51576200295f828562005bed565b5161271090818110156200055f5760031b6001015462002980848762005bed565b51918210156200055f5760066200299d9260031b01549062006fe1565b901562002a0d57620029af9162007088565b919015620029c957620029c29062005b81565b9062002949565b606460405162461bcd60e51b815260206004820152601960248201527f746f74616c566f74696e67506f776572206f766572666c6f77000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b90506200054f91925062002a7f9394608051526202712b602052620028c18360066040608051200162005f0b565b90620028e6565b62002ace9086608051526202712b60205262002abb8162002ab46200291a8760036040608051200162005f0b565b5062005f0b565b90549060031b1c6200200d828762005bed565b6200293a565b60805180f35b60019060208451940193818401550162002872565b606460405162461bcd60e51b815260206004820152601b60248201527f657865637574696e6720656e642074696d65206f766572666c6f7700000000006044820152fd5b606460405162461bcd60e51b815260206004820152601860248201527f766f74696e6720656e642074696d65206f766572666c6f7700000000000000006044820152fd5b6001906020845194019381840155016200278a565b60019060208451940193818401550162002724565b600190602084519401938184015501620026bf565b80516001600160a01b03815116855490602083015160268110156200182d5774ff00000000000000000000000000000000000000007fffffffffffffffffffffff0000000000000000000000000000000000000000009160a01b1692161717855560406001860191015190815190602082519262002c358484620064d6565b019060805152608051906020822091905b83821062003276575050505060208101518051906001600160401b03821162001f92576020600288019162002c7c848462016a33565b019060805152608051916020832090835b8160051c81106200322d5750601f1981168103620031dc575b5050506040820151805191600160401b83116200237b5750600387015482600389015580831062003153575b506080805160038901905251602080822092015b8382106200313257505050506060810151805190600160401b821162001f9257600487015482600489015580831062003095575b506080805160048901905251602080822092015b838210620030745750505050608081015180516001600160401b03811162001f92576020600588019262002d63838562016a33565b0191608051526080519060208220915b8160051c8110620030345750601f198116810362002fd8575b5050506006850160a0820151602081519162002da9838562006564565b0191608051526080516020812090925b82841062002f7257505050506007850160c0820151602081519162002ddf838562006564565b0191608051526080516020812090925b82841062002f03575050505060e001518051906001600160401b03821162001f925762002e2f8262002e25600889015462005221565b600889016200678f565b60805190602091601f841160011462002e88575092826009936020936001966080519262002e7c575b5050600019600383901b1c191690851b1760088801555b0194019101909262002646565b015190508e8062002e58565b600888019052608051602081209291905b601f198516811062002eea575083602093600196938793600997601f1981161062002ed0575b505050811b01600888015562002e6f565b015160001960f88460031b161c191690558e808062002ebf565b9192602060018192868501518155019401920162002e99565b80518051906001600160401b03821162001f925760209062002f2683866200611d565b01836080515260805160208120905b83811062002f5457505050506001602081920192019301929062002def565b60019060206001600160a01b03855116940193818401550162002f35565b80518051906001600160401b03821162001f925760209062002f9583866200611d565b01836080515260805160208120905b83811062002fc357505050506001602081920192019301929062002db9565b60019060208451940193818401550162002fa4565b60805192835b601f1983168303811062002ffc57505060051c01558a808062002d8c565b909360206200302a60019284885191620030168362004eaa565b9060ff809160031b9316831b921b19161790565b9501910162002fde565b608051805b602081106200305057508382015560010162002d73565b949060206200306a60019288855191620030168362004eaa565b9201950162003039565b6006602082620030886001945187620068ac565b0193019101909162002d2e565b60068181020481036200311a5760068381020483036200311a5760048801608051526020608051208360060281015b8260060282018110620030d957505062002d1a565b6006906080518082556001820155620030f560028201620065b3565b60805160038201556200310b6004820162006448565b608051600582015501620030c4565b634e487b7160e01b6080515260116004526024608051fd5b6007602082620031466001945187620168c1565b0193019101909162002ce6565b60078181020481036200311a5760078381020483036200311a5760038801608051526020608051208360070281015b82600702820181106200319757505062002cd2565b80620031a560079262005fed565b6080518060018301558060028301558060038301556004820155620031cd6005820162006448565b60805160068201550162003182565b8392845b601f19831683038110620031fe57505060051c01558b808062002ca6565b90936020620032236001928488511515919060ff809160031b9316831b921b19161790565b95019101620031e0565b84855b602081106200324757508382015560010162002c8d565b949060206200326c6001928885511515919060ff809160031b9316831b921b19161790565b9201950162003230565b60016020826200328983945187620067d9565b0193019101909162002c46565b60098181020481036200311a5760098381020483036200311a5760018501608051526020608051208360090281015b8260090282018110620032da57505062002631565b6080518155620032ed6001820162006497565b6200330360028201805490608051815562016a0b565b600381015460805180600384015581620033ff575b50506004810154608051806004840155816200337b575b5050806200334a600560099301805490608051815562016a0b565b620033586006820162006525565b620033666007820162006525565b620033746008820162006448565b01620032c5565b6006828102048203620033e957506004820160805152602060805120906006028101905b818110156200332f576006906080518082556001820155620033c460028201620065b3565b6080516003820155620033da6004820162006448565b6080516005820155016200339f565b634e487b7160e01b905260116004526024608051fd5b6007828102048203620033e957506003820160805152602060805120906007028101905b818110156200331857806200343a60079262005fed565b6080518060018301558060028301558060038301556004820155620034626005820162006448565b60805160068201550162003423565b606460405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152fd5b34620001e6576020366003190112620001e6576004356127108110156200055f57620034eb60046200195a9260031b01620054ac565b60405191829182620040b2565b34620001e65760805180600319360112620001e3576040518062013881918254808252602080920193608051527fcd6f7cece5c70f73af31bb8ed8b80ae1c2a9e5eb261bd5ab2d9374b0c38719c891608051905b82821062003567576200195a85620034eb8189038262003fd9565b83546001600160a01b0316865294850194600193840193909101906200354c565b34620001e657602080600319360112620001e6576001600160a01b03620035ae62003ecd565b604051620035bc8162003efe565b608051815260805184820152606060408201526060608051910152166080515262013880815260406080512060405190620035f78262003efe565b6200367281549160ff83161515845260ff8585019360081c161515835260026040519162003636836200362e81600185016200525e565b038462003fd9565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a08401906200412b565b905160808301520390f35b34620001e65760805180600319360112620001e35760206202712e54604051908152f35b34620001e6576020366003190112620001e6576020620036c360043562006ee3565b604051908152f35b34620001e65760805180600319360112620001e3576020620036c36200709a565b34620001e6576020366003190112620001e65760206200370e60043562016c12565b6200371d6040518092620040f8565bf35b34620001e657602080600319360112620001e6576004356200374d478211156200192962001dc08462006190565b33608051526201388790818352620037976040608051205482111562001929620037778462006190565b3360805152858752620037906040608051205462006190565b906200631d565b3360805152818352620037df620037b5826040608051205462006155565b919062001929620037c68562006190565b3360805152868852620037906040608051205462006190565b33608051528284526080518080938193604083205581811562003971575b3390f1156200036257336080515281526040608051205415620038205760805180f35b62013888805490620038328262005d44565b9260805192835b818110620039055750506200384e8362005d44565b918251926001600160401b03841162001f925791839262003870829562005f3d565b01906080515260805192835b838110620038c957505050505b8181106200389957505062002ad4565b806200054f6001600160a01b03620038b6620038c3948762005bed565b511662001f308362005d7c565b62003889565b82516001600160a01b03167ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df820155918101916001016200387c565b620039108162005d7c565b6001600160a01b03915490826003923392841b1c16036200393f575b5050620039399062005b81565b62003839565b956200396891839762003956620039399562005d7c565b9054911b1c166200200d828a62005bed565b9490876200392c565b506108fc620037fd565b34620001e65760805180600319360112620001e3576040518062013886918254808252602080920193608051527f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa491608051905b828210620039ea576200195a85620034eb8189038262003fd9565b83546001600160a01b031686529485019460019384019390910190620039cf565b34620001e6576040366003190112620001e657600435602435906001600160a01b038216809203620001e6576127108110156200055f5760039160805152811b01602052602060406080512054604051908152f35b34620001e65760805180600319360112620001e3576040518062013888918254808252602080920193608051527ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df91608051905b82821062003acf576200195a85620034eb8189038262003fd9565b83546001600160a01b03168652948501946001938401939091019062003ab4565b34620001e65760805180600319360112620001e357602060ff6202712954166040519062003b1e8162004091565b8152f35b34620001e6576040366003190112620001e65762003b3f62003ecd565b60249081356001600160401b038111620001e65762003b6390369060040162004021565b91600260ff62027129541662003b798162004091565b0362003e67576202712d5442101562003e23576001600160a01b0382169182608051526202712c906020938285526080519560408720966202712e978854809252875260ff604060805120541662003de05781519481608051526202712b938489526003968760406080512001540362003d7757608051528752608051906040822091528652608051966040882060019889918260ff19825416179055905b62003c235760805180f35b825181101562003d715762003c39818462005bed565b511562003cf7578154806080515284895262003c9c62003c7f62003c668460046040608051200162005f0b565b9054908a1b1c62003c78858a62016a9d565b9062007088565b909260805152868b52620028c18460046040608051200162005f0b565b1562003cb45762003cad9062005b81565b8862003c18565b606488601c896040519262461bcd60e51b845260048401528201527f766f74696e6720666f7220706f776572596573206f766572666c6f77000000006044820152fd5b8154806080515284895262003d1d62003c7f62003c668460046040608051200162005f0b565b1562003d2e5762003cad9062005b81565b606488601b896040519262461bcd60e51b845260048401528201527f766f74696e6720666f7220706f7765724e6f206f766572666c6f7700000000006044820152fd5b62002ad4565b60848960398a6040519262461bcd60e51b845260048401528201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d617460448201527f636820746865206e756d626572206f6620706f6c6963696573000000000000006064820152fd5b6064876017886040519262461bcd60e51b845260048401528201527f766f7465722068617320616c726561647920766f7465640000000000000000006044820152fd5b60649060176040519162461bcd60e51b8352602060048401528201527f766f74696e6720706572696f642068617320656e6465640000000000000000006044820152fd5b60649060196040519162461bcd60e51b8352602060048401528201527f766f74696e67206973206e6f7420696e2070726f6772657373000000000000006044820152fd5b3462003ec9578160031936011262003ec95760209062027127548152f35b5080fd5b600435906001600160a01b038216820362003ee457565b600080fd5b35906001600160a01b038216820362003ee457565b608081019081106001600160401b0382111762003f1a57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762003f1a57604052565b61010081019081106001600160401b0382111762003f1a57604052565b606081019081106001600160401b0382111762003f1a57604052565b60e081019081106001600160401b0382111762003f1a57604052565b604081019081106001600160401b0382111762003f1a57604052565b602081019081106001600160401b0382111762003f1a57604052565b90601f801991011681019081106001600160401b0382111762003f1a57604052565b6001600160401b03811162003f1a5760051b60200190565b3590811515820362003ee457565b81601f8201121562003ee4578035916200403b8362003ffb565b926200404b604051948562003fd9565b808452602092838086019260051b82010192831162003ee4578301905b82821062004077575050505090565b838091620040858462004013565b81520191019062004068565b600411156200409c57565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b828110620040da575050505090565b83516001600160a01b031685529381019392810192600101620040cb565b9060038210156200409c5752565b60005b8381106200411a5750506000910152565b818101518382015260200162004109565b90602091620041468151809281855285808601910162004106565b601f01601f1916010190565b81601f8201121562003ee4578035916200416c8362003ffb565b926200417c604051948562003fd9565b808452602092838086019260051b82010192831162003ee4578301905b828210620041a8575050505090565b8135815290830190830162004199565b6001600160401b03811162003f1a57601f01601f191660200190565b81601f8201121562003ee457803590620041ee82620041b8565b92620041fe604051948562003fd9565b8284526020838301011162003ee457816000926020809301838601378301015290565b9080601f8301121562003ee4578135906200423c8262003ffb565b926200424c604051948562003fd9565b828452602092838086019160051b8301019280841162003ee457848301915b8483106200427c5750505050505090565b82356001600160401b03811162003ee4578691620042a084848094890101620041d4565b8152019201916200426b565b9080601f8301121562003ee457813590620042c78262003ffb565b92620042d7604051948562003fd9565b828452602092838086019160051b8301019280841162003ee457848301915b848310620043075750505050505090565b82356001600160401b03811162003ee45786916200432b8484809489010162004152565b815201920191620042f6565b9080601f8301121562003ee457813591620043528362003ffb565b92604092620043648451958662003fd9565b8185526020938486019185600594851b8601019481861162003ee457868101935b8685106200439857505050505050505090565b84356001600160401b03811162003ee457820183603f8201121562003ee4578881013590620043c78262003ffb565b91620043d68751938462003fd9565b808352868b8401918a1b8301019186831162003ee45791878c94929593015b8181106200440e57505082935081520194019362004385565b9193809193956200441f8462003ee9565b8152019101918b93919492620043f5565b6060918161070052806107c052031262003ee457604051620044528162003f69565b8091620044626107005162003ee9565b8252610700516020810135806107e0526001600160401b03811162003ee4576107c051910190601f8201121562003ee457620044a8620044b69135806106e05262003ffb565b604051806106c05262003fd9565b6106c0516106e051905260206106c05101926107c0516106e0519060206107e05161070051019260051b8301011162003ee4576020016106a05290925b6106e05160051b6107e05161070051019060206106a0519183010181101562004e6c57356001600160401b03811162003ee457606091018061074052601f19906107c05103011262003ee4576040516200454d8162003f69565b6200455e6020610740510162003ee9565b81526040610740510135602681101562003ee45760208201526107405160608101356107208190526001600160401b031062003ee45761010090601f19906060810135016107c05103011262003ee457620045c0604051806107a05262003f4c565b6107205161074051016020810135906001600160401b03821162003ee4576020620045f2926107c05192010162004221565b6107a051526107205161074051016040810135906001600160401b03821162003ee457602062004629926107c05192010162004021565b60206107a0510152610720516107405101926001600160401b0360608501351162003ee4576107c051603f6060860135860101121562003ee45762004678602060608601358601013562003ffb565b9462004688604051968762003fd9565b60608501358086016020908101358089526107c0516107205161074051938b01969493019092019160059190911b82016040011162003ee457604001925b61072051610740510160608801359081019088016020013560051b8101604001851015620047d2578435906001600160401b03821162003ee4570160e09182603f19836107c05103011262003ee457604051620047238162003f85565b60408301356001600160401b03811162003ee4576107c0516200474b91850160400162004152565b815260608301356020820152608080840135604083015260a09485850135606084015260c0916200477e83870162004013565b90840152840135946001600160401b03861162003ee45761010060209695620047c292620047b7899860406107c05191850101620041d4565b908601520162004013565b90820152815201930192620046c6565b505095915091935094919460406107a0510152610720516107405101946080860135610780526001600160401b0360808701351162003ee4576107c0519560808101350195603f8701121562003ee45762004831602087013562003ffb565b9462004841604051968762003fd9565b6020878101358088526107c051610780516107205161074051948b01989401019160051b82016040011162003ee4576040909893929897949701935b61078051610720516107405101016040602086013560051b82010186101562004caf578535610760526001600160401b0386351162003ee45761010090603f19908735016107c05103011262003ee45760405193620048dc8562003f4c565b6040610760516107805161072051610740510101010135600681101562003ee45785526060610760516107805161072051610740510101010135602086015261076051610780516107205161074051010101996001600160401b0360808c01351162003ee4576107c051605f60808d01358d0101121562003ee4578a906200496e604060808401358401013562003ffb565b9a6200497e6040519c8d62003fd9565b608083013592830160400135808d526107c051610760516107805161072051610740510101019094019360208e01939160051b85016060011162003ee4579192606001915b6107605161078051610720516107405101010160808f0135908101908f016040013560051b810160600184101562004bb5578335906001600160401b03821162003ee45760c0605f198383016107c05103011262003ee4576040519162004a2a8362003f30565b8181016060810135845260800135600581101562003ee457602084015260a08183010135600481101562003ee4576040840152603d60c08284010135101562003ee45760c0818301013560608401526001600160401b0360e082840101351162003ee4576107c05162004aa99083830160e08101350160600162004152565b60808401526101008183010135916001600160401b03831162003ee45701016080605f19826107c05103011262003ee4578f956040519262004aeb8462003efe565b60608301356001600160401b03811162003ee4576107c05162004b1391850160600162004221565b845260808301356001600160401b03811162003ee4576107c05162004b3d918501606001620042ac565b602085015260a08301356001600160401b03811162003ee4576107c05162004b6a91850160600162004337565b604085015260c0830135936001600160401b03851162003ee45762004b9d60209594606087966107c051920101620041d4565b606082015260a08201528152019301929350620049c3565b509697939c509798939a915050604082015260a091826107605161078051610720516107405101010101356060830152610760516107805161072051610740510101019160c09384840135946001600160401b03861162003ee45762004c2960209695604088976107c051920101620041d4565b608084015260e09162004c5083610760516107805161072051610740510101010162004013565b9084015262004c75610100610760516107805161072051610740510101010162004013565b9083015262004c9a610120610760516107805161072051610740510101010162004013565b9082015281520195019396979291976200487d565b509250969250925060606107a0510152610720516107405101936001600160401b0360a08601351162003ee4576107c0519460a0810135810195603f8701121562003ee45762004d03602087013562003ffb565b9262004d13604051948562003fd9565b6020878101358086526107c051610720516107405193880196930160a0860135019160051b82016040011162003ee457604001935b604060208a013560051b60a086013561072051610740510101010185101562004d86578435600581101562003ee45781526020948501940162004d48565b5096509694939291505060806107a05101526107205161074051019160c09283810135906001600160401b03821162003ee457602062004dcd926107c051920101620042ac565b60a06107a05101526107205161074051019260e09384810135906001600160401b03821162003ee457602062004e0a926107c05192010162004337565b906107a0510152610720516107405101926101008401356001600160401b03811162003ee4576107c05160209562004e4592018601620041d4565b906107a05101526107a05160408201528152019260206106a051016106a0529092620044f3565b50505091906106c05160208201526107005160408101356001600160401b03811162003ee4576107c05160409262004ea59201620041d4565b910152565b600511156200409c57565b90815180825260208080930193019160005b82811062004ed6575050505090565b83518552938101939281019260010162004ec7565b908082519081815260208091019281808460051b8301019501936000915b84831062004f1a5750505050505090565b909192939495848062004f3a600193601f198682030187528a516200412b565b980193019301919493929062004f09565b908082519081815260208091019281808460051b8301019501936000915b84831062004f7a5750505050505090565b909192939495848062004f9a600193601f198682030187528a5162004eb5565b980193019301919493929062004f69565b908082519081815260208091019281808460051b830101950193600080925b85841062004fdc575050505050505090565b9091929380959697601f1983820301855288519082808351928381520192019085905b8082106200502157505050908060019299019401940192959493919062004fca565b919380600192946001600160a01b03875116815201940192018893929162004fff565b90808251808352602080930192600592818084861b8301019601946000915b84831062005075575050505050505090565b90919293949596601f19828203018352875190610100808201835160068110156200409c579083929189945283850151848401528a60409182870151938386015283518091528561012082818801941b8701019401926000905b8282106200513a575050505050928291620051046001956060808501519084015260808085015190848303908501526200412b565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062005063565b9193959650919361011f19878203018552855190815181528c820151620051618162004eaa565b8d82015282820151620051748162004091565b8382015260609081830151603d8110156200409c576001938f93836200520f93828796015281620051ff620051ee620051dd6080620051c08189015160c080848a015288019062004eb5565b9560a0809901519881880391015287519080875286019062004eeb565b888701518582038a87015262004f4b565b8a8601518482038c86015262004fab565b930151918184039101526200412b565b9701950192018b9695949391620050cf565b90600182811c9216801562005253575b60208310146200523d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162005231565b9060009291805491620052718362005221565b918282526001938481169081600014620052d8575060011462005295575b50505050565b90919394506000526020928360002092846000945b838610620052c35750505050010190388080806200528f565b805485870183015294019385908201620052aa565b9294505050602093945060ff191683830152151560051b010190388080806200528f565b9081546200530a8162003ffb565b926040936200531c8551918262003fd9565b828152809460208092019260005281600020906000935b8585106200534357505050505050565b600184819284516200535b816200061d818a6200525e565b81520193019401939162005333565b9060405191828154918282526020928383019160005283600020936000905b828210620053a457505050620053a29250038362003fd9565b565b85548452600195860195889550938101939091019062005389565b90604051620053ce8162003f85565b60c060ff60068395620053e1816200536a565b8552600181015460208601526002810154604086015260038101546060860152826004820154161515608086015260405162005426816200061d81600586016200525e565b60a08601520154161515910152565b60068210156200409c5752565b603d8210156200409c5752565b9081546200545d8162003ffb565b926200546d604051948562003fd9565b818452600090815260208082208186015b8484106200548d575050505050565b60018381926200549d856200536a565b8152019201930192906200547e565b9060405191828154918282526020928383019160005283600020936000905b828210620054e457505050620053a29250038362003fd9565b85546001600160a01b031684526001958601958895509381019390910190620054cb565b908154620055168162003ffb565b9262005526604051948562003fd9565b818452600090815260208082208186015b84841062005546575050505050565b60018381926200555685620054ac565b81520192019301929062005537565b9060036060604051620055788162003efe565b620055c381956200558981620052fc565b835262005599600182016200544f565b6020840152620055ac6002820162005508565b60408401526200362e60405180968193016200525e565b0152565b919060608101906001600160a01b03845116815260208401519160606020830152825180915260808201602060808360051b85010194019160005b8181106200562a5750505050604062005627939401519060408184039101526200412b565b90565b90919294607f1985820301845285516001600160a01b03815116825260208101519060268210156200409c57604091602084015201519060606040820152620056828251610100606084015261016083019062004eeb565b602083810151838303605f190160808501528051808452928201929101906000905b80821062005a1757505050604083015190605f198382030160a0840152815180825260208201906020808260051b85010194019260005b82811062005992575050505050606083015190605f198382030160c0840152815190818152602081016020808460051b8401019401926000925b818410620057de575050505050608083015190605f198382030160e0840152602080835192838152019201906000905b808210620057ba57505050620057ad8360209360e0620057966200577e879660a060019a0151605f198683030161010087015262004f4b565b60c0850151848203605f190161012086015262004fab565b92015190610140605f19828503019101526200412b565b9701940192910162005602565b9091926020806001928651620057d08162004eaa565b815201940192019062005745565b9091929394601f9e9d9c9e19828203018452855190815160068110156200409c5781526020820151602082015260408201516101006040830152610100820181518091526101206020818501918360051b8601019301916000905b808210620058a657505050509e9f9d9e82602092620058728493606060019701516060840152608084015183820360808501526200412b565b9160a0810151151560a083015260c0810151151560c083015260e08091015115159101529701940194019293919062005715565b9091929361011f19868203018452845190815181526020820151620058cb8162004eaa565b60208201526040820151620058e08162004091565b6040820152606082015191603d8310156200409c5762005985826020939260019560608695015260a062005924608083015160c0608086015260c085019062004eb5565b9101519160a0818303910152606062005973620059606200594f855160808652608086019062004eeb565b878601518582038987015262004f4b565b6040850151848203604086015262004fab565b9201519060608184039101526200412b565b9601940192019062005839565b9091929394602080600192601f19868203018852885190620059fc620059c1835160e080855284019062004eb5565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a08501526200412b565b60c092830151151591909201529701950193929101620056db565b909192602080600192865115158152019401920190620056a4565b90620053a2604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301527f6465723a20000000000000000000000000000000000000000000000000000000604083015262005a9f815180926020868601910162004106565b810103602581018552018362003fd9565b90620053a26040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262005af6815180926020868601910162004106565b810103602081018552018362003fd9565b6020620053a291939293604051948162005b2b879351809286808701910162004106565b820162005b418251809386808501910162004106565b0103808552018362003fd9565b1562005b575750565b62005b7d9060405191829162461bcd60e51b83526020600484015260248301906200412b565b0390fd5b600019811462005b915760010190565b634e487b7160e01b600052601160045260246000fd5b80511562005bb55760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562005bb55760400190565b80516002101562005bb55760600190565b805182101562005bb55760209160051b010190565b600f620053a2916020949360405195869262005c6062005c528386016021907f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b60208201520190565b918281519485920162004106565b017f2c20616e642062616c616e63653a200000000000000000000000000000000000815262005c99825180936020878501910162004106565b010360101981018552018362003fd9565b6019620053a2916020949360405195869262005cfa62005c528386016021907f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b60208201520190565b017f2c20616e6420776974686472617761626c6520636173683a2000000000000000815262005d33825180936020878501910162004106565b010360061981018552018362003fd9565b9062005d508262003ffb565b62005d5f604051918262003fd9565b828152809262005d72601f199162003ffb565b0190602036910137565b62013888805482101562005bb5576000527ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df0190600090565b62013886805482101562005bb5576000527f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa40190600090565b62013881805482101562005bb5576000527fcd6f7cece5c70f73af31bb8ed8b80ae1c2a9e5eb261bd5ab2d9374b0c38719c80190600090565b6202711d805482101562005bb5576000527f7f4320370b90cfd882bd4442421f8b4dbea0ca3aefc8d29d4787126914d53c5a0190600090565b6201388a805482101562005bb5576000527f3fb2ace5abc3439263a869a5230f0e568826a389e5a73118798eab8fd0f728590190600090565b62027119805482101562005bb5576000527fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10190600090565b6202711b805482101562005bb5576000527fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f3990190600090565b805482101562005bb55760005260206000200190600090565b81811062005f30575050565b6000815560010162005f24565b600160401b811162003f1a57620138889081549080835581811062005f6157505050565b620053a2926000527ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df918201910162005f24565b600160401b811162003f1a57620138869081549080835581811062005fb957505050565b620053a2926000527f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa4918201910162005f24565b8054600082558062005ffd575050565b620053a29160005260206000209081019062005f24565b600160401b811162003f1a5762027119908154908083558181106200603857505050565b620053a2926000527fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e1918201910162005f24565b600160401b811162003f1a576202711b908154908083558181106200609057505050565b620053a2926000527fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f399918201910162005f24565b6201389180549060009081815582620060dc57505050565b81527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e945366918201915b8281106200611157505050565b81815560010162006104565b90600160401b811162003f1a578154908083558181106200613d57505050565b620053a2926000526020600020918201910162005f24565b919082811162006166576001920390565b50600091508190565b81156200617a570490565b634e487b7160e01b600052601260045260246000fd5b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000808210156200630e575b506d04ee2d6d415b85acef810000000080831015620062fe575b50662386f26fc1000080831015620062ee575b506305f5e10080831015620062de575b5061271080831015620062ce575b506064821015620062bd575b600a80921015620062b2575b600190816021818601956200623287620041b8565b9662006242604051988962003fd9565b80885262006253601f1991620041b8565b01366020890137860101905b6200626c575b5050505090565b600019019083907f30313233343536373839616263646566000000000000000000000000000000008282061a835304918215620062ac579190826200625f565b62006265565b91600101916200621d565b919060646002910491019162006211565b6004919392049101913862006205565b60089193920491019138620061f7565b60109193920491019138620061e7565b60209193920491019138620061d4565b604093508104915038620061ba565b601e620053a291602094936040519586926200636d62005c528386016021907f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b60208201520190565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620063a6825180936020878501910162004106565b010360011981018552018362003fd9565b90620063c38262003ffb565b604090620063d48251918262003fd9565b8381528093620063e7601f199162003ffb565b019160005b838110620063fa5750505050565b60209082516200640a8162003f4c565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e0830152828601015201620063ec565b62006454815462005221565b90816200645f575050565b81601f6000931160011462006472575055565b90808391825262006493601f60208420940160051c84016001850162005f24565b5555565b8054906000815581620064a8575050565b6000526020600020908101905b818110620064c1575050565b80620064cf60019262006448565b01620064b5565b90600160401b811162003f1a57815491818155828210620064f657505050565b600052602060002091820191015b81811062006510575050565b806200651e60019262006448565b0162006504565b805490600081558162006536575050565b6000526020600020908101905b8181106200654f575050565b806200655d60019262005fed565b0162006543565b90600160401b811162003f1a578154918181558282106200658457505050565b600052602060002091820191015b8181106200659e575050565b80620065ac60019262005fed565b0162006592565b8054600080835581620065c557505050565b60079282840292848404036200664657815260208120918201915b828110620065ee5750505050565b8082859255826001820155620066076002820162005fed565b620066156003820162006497565b620066236004820162006525565b620066316005820162006525565b6200663f6006820162006448565b01620065e0565b602482634e487b7160e01b81526011600452fd5b600160401b821162003f1a578054908281558183106200667957505050565b600792828402928484040362005b9157808402908482040362005b915760009182526020822092830192015b828110620066b35750505050565b8082859255826001820155620066cc6002820162005fed565b620066da6003820162006497565b620066e86004820162006525565b620066f66005820162006525565b620067046006820162006448565b01620066a5565b5160068110156200409c5790565b9060068110156200409c5760ff80198354169116179055565b906200673e8162004eaa565b60ff80198354169116179055565b90620067588162004091565b61ff0082549160081b169061ff001916179055565b90603d8110156200409c5762ff000082549160101b169062ff00001916179055565b9190601f81116200679f57505050565b620053a2926000526020600020906020601f840160051c83019310620067ce575b601f0160051c019062005f24565b9091508190620067c0565b91909182516001600160401b03811162003f1a576200680581620067fe845462005221565b846200678f565b602080601f83116001146200684457508192939460009262006838575b50508160011b916000199060031b1c1916179055565b01519050388062006822565b90601f198316958460005282600020926000905b888210620068935750508360019596971062006879575b505050811b019055565b015160001960f88460031b161c191690553880806200686f565b8060018596829496860151815501950193019062006858565b815160068110156200409c57620068c4908262006719565b602082015160018201556002810160408301516020815191620068e883856200665a565b01916000526020600020916000905b8282106200697c57505050509060e06005620053a293606084015160038201556200692a608085015160048301620067d9565b01916200694960a08201511515849060ff801983541691151516179055565b60c0810151835461ff00191690151560081b61ff00161783550151815462ff0000191690151560101b62ff000016179055565b80518051855560018501620069a160208301516200699a8162004eaa565b8262006732565b620069bc6040830151620069b58162004091565b826200674c565b6060820151603d8110156200409c57620069d6916200676d565b60808101518051906001600160401b03821162003f1a576020600288019162006a0084846200611d565b0190600052602060002060005b83811062006cab575050505060a0015180518051906020600388019162006a358484620064d6565b01906000526020600020906000905b83821062006c8b5750505050600485016020820151602081519162006a6a838562006564565b019160005260206000206000925b82841062006c275750505050600585016040820151602081519162006a9e838562006564565b019160005260206000206000925b82841062006bba5750505050606001518051906001600160401b03821162003f1a5762006aec8262006ae2600689015462005221565b600689016200678f565b602090601f831160011462006b3f57928260079360209360019660009262006b33575b5050600019600383901b1c191690851b1760068801555b01940191019092620068f7565b01519050388062006b0f565b906006870160005260206000209160005b601f198516811062006ba1575083602093600196938793600797601f1981161062006b87575b505050811b01600688015562006b26565b015160001960f88460031b161c1916905538808062006b76565b9192602060018192868501518155019401920162006b50565b80518051906001600160401b03821162003f1a5760209062006bdd83866200611d565b0183600052602060002060005b83811062006c0957505050506001602081920192019301929062006aac565b60019060206001600160a01b03855116940193818401550162006bea565b80518051906001600160401b03821162003f1a5760209062006c4a83866200611d565b0183600052602060002060005b83811062006c7657505050506001602081920192019301929062006a78565b60019060208451940193818401550162006c57565b600160208262006c9e83945187620067d9565b0193019101909162006a44565b60019060208451940193818401550162006a0d565b6201388390815481101562005bb557600691600052027f9e32270fdbb1cb37df0574dfc18a9a2c56583299a239108c9d137f746b82200a0190600090565b6202711690815481101562005bb557600691600052027f2a7aa4e7f2fefac7a07702701afb9c202f6f79fb2762c8e42b37a264307667fa0190600090565b6201388290815481101562005bb557600691600052027fe5dac618068543225ae1c2f585dbaa37d058ab507104bc7da3da5ab2e5666cc70190600090565b6202711590815481101562005bb557600691600052027f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf920190600090565b620138828054600160401b81101562003f1a5762006ddc9160018201905562006d3c565b91909162006def57620053a291620068ac565b634e487b7160e01b600052600060045260246000fd5b620138838054600160401b81101562003f1a5762006ddc9160018201905562006cc0565b620271168054600160401b81101562003f1a5762006ddc9160018201905562006cfe565b620271158054600160401b81101562003f1a5762006ddc9160018201905562006d7a565b1562006e7957565b608460405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a2060448201527f6469766964656e64576569676874206f766572666c6f770000000000000000006064820152fd5b61271081101562005bb557600390811b60028101549060009260049384830191825492829682849601935b85871062006f355750505050505050620056279162006f2d9162006fe1565b919062006e71565b98979091929394959862006f965762006f8a8962006f826001600160a01b0362006f656200054f9c9d8862005f0b565b905490891b1c169360009485528860205260408520549062007088565b9a9062007003565b95949392919062006f0e565b603282634e487b7160e01b6000525260246000fd5b90811562006fd857606462006fc481840293846200616f565b0362006fd05760019190565b600091508190565b60019150600090565b9190821562006ff95762006fc481840293846200616f565b5060019150600090565b156200700b57565b608460405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201527f6f6b656e73206f766572666c6f770000000000000000000000000000000000006064820152fd5b906001820191821062006fd05760019190565b9190820191821062006fd05760019190565b6201388b54620070e4620070ad6201733b565b91620070bf6127109384831062005b4e565b620070d96201388e546201388c54111562001929620173c2565b6201388d5462006fe1565b919050620070f162017423565b5060009081925b81841062007113575b6200710e93500462007159565b905090565b9160ff60078560031b015416156200715257836200713f6200714b9262003c786200054f969762006ee3565b94906200192962017423565b92620070f8565b9162007101565b90801562007171576200716c916200616f565b600191565b5050600090600090565b620138918054600160401b81101562003f1a576001810180835581101562005bb5576001600160a01b03916000527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e9453660191166001600160a01b0319825416179055565b6201388f8054600160401b81101562003f1a576001810180835581101562005bb5576001600160a01b03916000527f846ab89c81ea9339188216a1864da1a19ebe28d411cbec99efa70ca6d389710d0191166001600160a01b0319825416179055565b6201388190815491600160401b83101562003f1a578262001f30916001620053a29501905562005dee565b604051906200727b8262003fa1565b601882527f5468652070726f6772616d2069732065786563757465642e00000000000000006020830152565b600091825b602080840190815180518710156200743f5781620072cf88620072d79362005bed565b510162007a5a565b602692838210156200409c57601a918203620073975787620072fa915162005bed565b519282840151908110156200409c570362007353575093620073446200734c926200733c6200733560a060406200054f9a0151015162005ba7565b5162005ba7565b519062007088565b959062007a68565b92620072ac565b6064906040519062461bcd60e51b82526004820152601b60248201527f546865206f70636f6465206973206e6f74205041595f434153482e00000000006044820152fd5b92919050620073b081620072cf89869a979a5162005bed565b828110156200409c57601403620073e957505090620073446200054f9562003c78620073e2846200734c965162005bed565b5162007ab4565b620073fb90620072cf85855162005bed565b908110156200409c5760151462007419575b506200734c9062005b81565b9062007344620074389562003c78620073e2846200734c965162005bed565b906200740d565b505050909250803410600014620074ba57608460405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e20546865207460448201527f6f74616c207061796d656e742073686f756c64206265200000000000000000006064820152fd5b803411620078cb575b5062027129805460ff8116620074d98162004091565b600181036200750f5750505080620074ff620074f9620075059362007b4b565b62007b60565b62007bac565b620056276200726c565b6200751a8162004091565b600281148080620078bd575b156200762057505050506200753b8162007b4b565b15620075dc576200754c8162007b4b565b1562007598576200755d9062007bac565b6040516200756b8162003fa1565b601581527f54686520766f74652069732065786563757465642e0000000000000000000000602082015290565b606460405162461bcd60e51b815260206004820152601460248201527f496e76616c696420766f74652070726f6772616d0000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601760248201527f496e76616c696420766f74696e672070726f6772616d2e0000000000000000006044820152fd5b6200762b8262004091565b60038214918280620078af575b15620077335750505050506200764e8162007b4b565b15620076c95780620074ff620074f9620076689362007b4b565b604051620076768162003f69565b603a81527f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201527f616674657220766f74696e6720616e6420617070726f76616c2e000000000000604082015290565b608460405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f67726160448201527f6d2e0000000000000000000000000000000000000000000000000000000000006064820152fd5b6200773e8162004091565b8180620078a0575b8062007892575b15620077775750505050906200750591600360ff19825416179055620074ff620074f98262007b4b565b620077828162004091565b82156200787d575b5050806200786e575b620077d657505050604051620077a98162003fa1565b601381527f50726f6772616d207465726d696e617465642e00000000000000000000000000602082015290565b60ff19166001179055620077ea8162007b4b565b15620078045780620074ff620074f9620075059362007b4b565b608460405162461bcd60e51b815260206004820152603e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201527f76616c696420657865637574652070656e64696e672070726f6772616d2e00006064820152fd5b50620271285442101562007793565b6200788a91925062004091565b38806200778a565b50620271285442106200774d565b50620271275442101562007746565b506202712854421062007638565b506202712754421062007526565b6001600160a01b03908183511660005262013885908160205260406000205415620079c6575b620078fd903462006155565b901562007982576200792090838551166000528260205260406000205462007088565b9290156200793e5783511660005260205260406000205538620074c3565b606460405162461bcd60e51b815260206004820152601960248201527f546865206e65772062616c616e6365206f766572666c6f772e000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601c60248201527f546865207061796d656e742072657475726e206f766572666c6f772e000000006044820152fd5b6000908162013886928354915b82811062007a1f575b5015620079ed575b509050620078f1565b84865116600160401b82101562003f1a5762001f3082620078fd95600162007a189501905562005db5565b38620079e4565b8662007a2b8262005db5565b919054818b51169260031b1c161462007a4f5762007a499062005b81565b620079d3565b5050600138620079dc565b5160268110156200409c5790565b1562007a7057565b606460405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152fd5b906000805b6040840160a062007ace818351015162005bcb565b515184101562007b4357926200734462007b3360409462007b2b8562007b238662007b118b62007b18836200054f9f9e62007b119062007b399e51015162005bcb565b5162005bed565b519451015162005bdc565b519062006fe1565b929062007a68565b62007088565b9192905062007ab9565b509093505050565b60200151511562007b5b57600190565b600090565b1562007b6857565b606460405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642070726f6772616d00000000000000000000000000000000006044820152fd5b62007bb78162014448565b5162013ef45760068110156200409c576003811462013e8a578062007c1a57606460405162461bcd60e51b815260206004820152601660248201527f5468652070726f6772616d20697320696e76616c6964000000000000000000006044820152fd5b600481036200b5ba5750906000905b602083015180518310156200b5b4578262007c449162005bed565b51602081018051602690818110156200409c57156200b570578151818110156200409c5760010362007e9257505060408091019062007c8860c08351015162005ba7565b519262007caa60a062007c9f818651015162005ba7565b519451015162005bcb565b519562007cbb8551855114620160fd565b62007cca85518851146201616f565b60005b855181101562007e105762007ce3818662005bed565b51612710908181101562005bb557600160ff600762007d0b9360031b015416151514620161e1565b62007d17828a62005bed565b5162007d24838862005bed565b51908282101562005bb557600662007d429260031b01549062007088565b9062007d4f848962005bed565b51918383101562005bb557600662007d6c9360031b015562016238565b62007d78828a62005bed565b519062007d86838862005bed565b518181101562005bb5578392600362007dc6928b62007daf6001600160a01b0398899262005bed565b5116600052811b0160205287600020549062007088565b62007dd2848a62005bed565b519283101562005bb55760036200054f9362007e0a9662007df4878e62005bed565b5116600052811b016020528760002055620162aa565b62007ccd565b50939262007e2d9192965062007e26906201723d565b9262017121565b94519262007e3b8462003fbd565b60008452600036813760005b835181101562007e7557806200054f62007e6662007e6f938762005bed565b51878a62016d14565b62007e47565b509450926020925062007e89915062005b81565b91905062007c29565b8151818110156200409c5760020362008166575050604080910180519283519562007ed762007ec660a08097015162005ba7565b519562007b18818651015162005bcb565b51938751865103620080fd578751845103620080945787518551036200802b575060005b8551811015620080155762007f11818762005bed565b5190612710918281101562005bb55762007f3760ff6007809360031b015416156201631b565b62007f43828962005bed565b518381101562005bb55760031b01805460ff1916600117905562007f68818a62005bed565b5162007f75828962005bed565b51908382101562005bb557600562007f919260031b01620067d9565b62007f9d818662005bed565b5162007faa828962005bed565b518381101562005bb55760031b6001015562007fc7818762005bed565b5162007fd4828962005bed565b518381101562005bb55760031b6002015562007ff1818862005bed565b519182101562005bb557600060066200800f9360031b015562005b81565b62007efb565b5095509390506020925062007e89915062005b81565b6084905162461bcd60e51b815260206004820152603c60248201527f546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b6560448201527f6e4469766964656e64576569676874206973206e6f7420657175616c000000006064820152fd5b6084905162461bcd60e51b815260206004820152603960248201527f546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b6560448201527f6e566f74696e67506f776572206973206e6f7420657175616c000000000000006064820152fd5b6084905162461bcd60e51b815260206004820152603860248201527f546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b6560448201527f6e496e6465784172726179206973206e6f7420657175616c00000000000000006064820152fd5b81959394929551818110156200409c576003036200874557505060408401906200819560c08351015162005ba7565b5193620081ac60a062007c9f818651015162005ba7565b5193620081c1865185511462001929620174fa565b620081d4865186511462001929620174fa565b60005b86518110156200823e57620081ed818662005bed565b519061271082101562005bb557600362008238926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b5111156200192962017621565b620081d7565b50909493919460005b855181101562008373576200825d818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b01602052620082a160406000205462008299848962005bed565b519062006155565b90620082ae848a62005bed565b51918383101562005bb5576003620082dd93878f5116600052811b016020526040600020556200192962017621565b620082e9828862005bed565b518181101562005bb5576003908462008303858c62005bed565b5116600052811b01602052620083246040600020546200733c848962005bed565b62008330848a62005bed565b519283101562005bb55760036200054f936200836d9662008352878e62005bed565b5116600052811b016020526040600020556200192962017697565b62008247565b5092620083919195969492506200838a906201723d565b9162017121565b926001600160a01b0360405191620083a98362003fa1565b60018352602036818501375116620083c18262005ba7565b526000905b82518210156200873157620083dc828462005bed565b5196620083ea865162005d44565b93600095620083fa845162005d44565b6104c0528698875b8951811015620084c357896200842f8d6001600160a01b0362008426858562005bed565b51169062017008565b158062008485575b6200844f575b50620084499062005b81565b62008402565b81996001600160a01b036200846d62008449946200847b9462005bed565b51166200200d828c62005bed565b989050896200843d565b50506127108c101562005bb5576001600160a01b03620084a6828c62005bed565b511660005260038c811b0160205289604060002054151562008437565b509098969498979291939760005b895181101562008561576127108c101562005bb5576001600160a01b03620084fa828c62005bed565b511660005260038c811b01602052896040600020541562008528575b50620085229062005b81565b620084d1565b81996001600160a01b03620085466200852294620085579462005bed565b51166200200d826104c05162005bed565b9890508962008516565b50989593929650966127108a1015610680526127108a101562005bb55760048a60031b0154966200859d62008597878a6201542e565b62005d44565b9860009a8b610240525b6106805162005bb557610240518a8110156200865757620085f56001600160a01b038f92620085e39060006106805260048560031b0162005f0b565b90549060031b1c166104c051620170cc565b1562008615575b506200860b6102405162005b81565b61024052620085a7565b9b8b6200200d826200864f949f620086406001600160a01b03916004610240519160031b0162005f0b565b90549060031b1c169262005bed565b9a8c620085fc565b509b9398509591969499909893996000915b838310620086f857505050506106805162005bb5578151916001600160401b03831162003f1a576020600491620086a685848660031b016200611d565b019160031b01600052602060002060005b838110620086da5750505050620086ce9062005b81565b909491959295620083c6565b60019060206001600160a01b038551169401938184015501620086b7565b620087236200872a916001600160a01b0362008715868662005bed565b51166200200d828a62005bed565b9262005b81565b9162008669565b50505091926020915062007e899062005b81565b81959394929551818110156200409c57600403620089d2575050604080920160c094620087866200877a878451015162005ba7565b51968351015162005bcb565b51946200879d60a062007c9f818651015162005ba7565b5193620087b2885188511462001929620174fa565b620087c5885185511462001929620174fa565b620087d8885186511462001929620174fa565b60005b88518110156200883f57620087f1818662005bed565b519061271082101562005bb557600362008839926001600160a01b0362008819848e62005bed565b5116600052811b016020526200054f88600020546200822b838a62005bed565b620087db565b50909691959294939660005b83518110156200897f5762008861818862005bed565b5190612710918281101562005bb55760036001600160a01b03918262008888858a62005bed565b5116600052811b01602052620088a98b62008299848b600020549262005bed565b90620088b6848c62005bed565b51918583101562005bb5576003620088ef9385620088d5888d62005bed565b5116600052811b016020528a600020556200192962017621565b620088fb828a62005bed565b518381101562005bb5576003908262008915858b62005bed565b5116600052811b01602052620089368b6200733c848b600020549262005bed565b91905062008945838b62005bed565b519384101562005bb557620089799360039162008963858b62005bed565b5116600052811b01602052876000205562005b81565b6200884b565b5094620089a9929750620089a2919394506200899b906201723d565b9362017121565b9562017121565b9260005b835181101562007e7557806200054f62007e66620089cc938762005bed565b620089ad565b81959493955190808210156200409c57600591820362008c02575050506040918285019062008a1660a062008a0b818551015162005ba7565b519351015162005bcb565b5192825184510362008b995760005b835181101562008a7e5762008a3b818562005bed565b519061271082101562005bb557600362008a78926001600160a01b038b5116600052811b016020526200054f87600020546200822b838962005bed565b62008a25565b509092919260005b845181101562008b1a5762008a9c818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b0160205262008ad7886000205462008299848962005bed565b62008ae3848a62005bed565b519283101562005bb55760036200054f9362008b14968e5116600052811b0160205289600020556200192962017621565b62008a86565b5095939262008b2b9192506201723d565b916001600160a01b0381519462008b428662003fa1565b6001865260203681880137511662008b5a8562005ba7565b52519462008b688662003fbd565b60008652600036813760005b835181101562007e7557806200054f62007e6662008b93938762005bed565b62008b74565b6084855162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b60448201527f656e416d6f756e74206973206e6f7420657175616c00000000000000000000006064820152fd5b829693949651818110156200409c5760060362008ea05750505090604080920162008c3260c08251015162005ba7565b519462008c4960a062008a0b818551015162005ba7565b5192865183510362008e3757865184510362008dce5760005b875181101562008cc65762008c78818562005bed565b519061271082101562005bb557600362008cc0926001600160a01b0362008ca0848d62005bed565b5116600052811b016020526200054f87600020546200822b838962005bed565b62008c62565b509092919260005b875181101562008d7a5762008ce4818662005bed565b516127108082101562005bb557600383928b62008d0b6001600160a01b0396879262005bed565b5116600052811b0160205262008d2b886000205462008299848962005bed565b62008d37848a62005bed565b519283101562005bb55760036200054f9362008d749662008d5a8f889062005bed565b5116600052811b0160205289600020556200192962017621565b62008cce565b50959262008d8f91925062007e26906201723d565b92519462008d9d8662003fbd565b60008652600036813760005b835181101562007e7557806200054f62007e6662008dc8938762005bed565b62008da9565b6084855162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662061646472657373657320616e6420616d6f7560448201527f6e7473206973206e6f7420657175616c000000000000000000000000000000006064820152fd5b6084855162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f662061646472657373657320616e6420746f6b6560448201527f6e436c6173736573206973206e6f7420657175616c00000000000000000000006064820152fd5b8251818110156200409c57600703620090085750505060408091019362008ecc60c08651015162005ba7565b519262008ede60a08751015162005ba7565b519551519162008ef6855188511462001929620174fa565b60005b8551811015620080155762009002906200054f6001600160a01b038260028862008fea8e62008fdf8e62008fc88f8962008f348a8562005bed565b511660005262008f718962008f6981620138809a8b60205262008f6360ff8760002054161562001929620175e6565b62005bed565b519662005bed565b51968a62008fa783519b8c9662008f888862003efe565b600188526060602089019860008a528781019b8c52019b8c5262005bed565b511660005260205260002097511515889060ff801983541691151516179055565b51865461ff00191690151560081b61ff0016178655565b5160018501620067d9565b5191015562008ffa838a62005bed565b511662007241565b62008ef9565b8251959695939492818510156200409c57600894850362009100575050506200903a60c0604080950151015162005ba7565b519360005b8551811015620090eb57620090e5906001600160a01b038062009063838a62005bed565b5116600052620138809081602052620090ba60ff620090916001828c60002054161515146200192962017535565b826200909e868d62005bed565b5116600052836020528960002054891c161562001929620175ab565b620090c6838a62005bed565b51166000526020528560002061010061ff001982541617905562005b81565b6200903f565b50949093506020925062007e89915062005b81565b8051828110156200409c57600903620091d5575050506200912a60c0604080950151015162005ba7565b519360005b8551811015620090eb57620091cf90866001600160a01b038062009154848462005bed565b5116600052620091a8600189836200918a8762013880978860205262008f638660ff809760002054161515146200192962017535565b5116600052846020528a600020548a1c161515146200192962017570565b620091b4838a62005bed565b51166000526020528560002061ff0019815416905562005b81565b6200912f565b809796949293959751828110156200409c57600a03620092b457505050506040809401916200921a60a06200920f60c08651015162005ba7565b519451015162005ba7565b51916200922f845184511462001929620174fa565b60005b845181101562007e7557620092ae906001600160a01b038062009256838962005bed565b511660005262013880806020526200927e600160ff8c60002054161515146200192962017535565b6200928a838862005bed565b519162009298848a62005bed565b5116600052602052600289600020015562005b81565b62009232565b8097959751828110156200409c57600b03620093845750505050604080920193620092e460c08651015162005ba7565b5194515191620092fc865184511462001929620174fa565b60005b865181101562007e75576200937e906200054f6001600160a01b038062009327848c62005bed565b511660005262013880806020526200934f600160ff8b60002054161515146200192962017535565b6200935b848962005bed565b519162009369858d62005bed565b511660005260205260018860002001620067d9565b620092ff565b8097949593969751828110156200409c57600c03620094dd57505050604001606091828251015193620093b785620154d5565b60005b8551811015620094c75760e0620093d682878751015162005bed565b510151156200945e57620093fa620093f382878751015162005bed565b5162006db8565b62013882805460001992919083810190811162005b91576200941d8a9162006d3c565b5001805461ff0019166101001790555491820191821162005b91578762009448620094589362006d3c565b5001805460ff1916905562005b81565b620093ba565b620094796200947282878751015162005bed565b5162006e05565b62013882805460001992919083810190811162005b91576200949c8a9162006cc0565b5001805461ff0019166101001790555491820191821162005b91578762009448620094589362006cc0565b5095915093506020925062007e89915062005b81565b809796959392949751828110156200409c57600d03620096345750506040019460206200950f60a08851015162005ba7565b51965101519162009524875184511462015dd4565b60005b875181101562008015578080878a62009545620095d5958962005bed565b5115620095db57620095a66200958d8483620095786200956b620095b198889762005bed565b5162013882541162015e6c565b62008f638d620095946200958d858562005bed565b5162006d3c565b509060ff9889920154901c1662015ec3565b500154161562015f35565b86620095c26200958d838c62005bed565b5001805460ff1916600117905562005b81565b62009527565b620095a66200961c848362009607620095fa6200962398889762005bed565b5162013883541162015e6c565b62008f638d620095946200961c858562005bed565b5162006cc0565b86620095c26200961c838c62005bed565b809794939751828110156200409c57600e036200971b5750506040019160206200966360a08551015162005ba7565b51935101519562009678845188511462015dd4565b60005b845181101562008015578062009696620096a2928a62005bed565b51620096a85762005b81565b6200967b565b620096c5620096b8828862005bed565b5162013882541162015fa7565b6200970a87620096ef620096de6200958d858b62005bed565b5060ff9283910154891c1662016019565b88620097006200958d858b62005bed565b500154166201608b565b86620094486200958d838962005bed565b80919293509694959651828110156200409c57600f03620098415750506040016060918282510151936200974f85620154d5565b60005b8551811015620094c75760e06200976e82878751015162005bed565b51015115620097df576200978b620093f382878751015162005bed565b62013882805460001992919083810190811162005b9157620097ae8a9162006d3c565b5001805461ff0019166101001790555491820191821162005b915787620095c2620097d99362006d3c565b62009752565b620097f36200947282878751015162005bed565b62013882805460001992919083810190811162005b9157620098168a9162006cc0565b5001805461ff0019166101001790555491820191821162005b915787620095c2620097d99362006cc0565b809192939496955051828110156200409c57601003620098e657505060400151906200987660a0608084015193015162005ba7565b51936200988b835186511462001929620174fa565b60005b8351811015620098d357806200054f620098ad620098cd938762005bed565b51620098b98162004eaa565b620098c5838a62005bed565b51906201543c565b6200988e565b509350916020915062007e899062005b81565b8095929551828110156200409c5760110362009b96575050906040809401916200991b60a06200920f60c08651015162005ba7565b51916200992c8451845114620153e2565b60005b8451811015620099a5576200999f906200054f6001600160a01b038062009957848a62005bed565b51166000526201388580602052620099798b600020546200733c868b62005bed565b91909262009988868c62005bed565b51166000526020528a600020556200192962017499565b6200992f565b5093945091620099b6915062017121565b906201388692835494620099d0620085978551886201542e565b91600093845b88811062009b58575060005b865181101562009a96576000805b8a811062009a47575b501562009a12575b62009a0c9062005b81565b620099e2565b9462009a3e62009a0c916001600160a01b0362009a30898b62005bed565b51166200200d828962005bed565b95905062009a01565b62009a528162005db5565b906001600160a01b03918291549060031b1c169062009a72858c62005bed565b51161462009a8b5762009a859062005b81565b620099f0565b5050600138620099f9565b5096509490935062009aa88362005d44565b908151916001600160401b03831162003f1a5760209062009ac98462005f95565b019060005260005b82811062009b1a5750505060005b82811062009af75750505062007e8960209162005b81565b806200054f6001600160a01b0362001f2362009b14948662005bed565b62009adf565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa401550162009ad1565b9462009b8962009b90916001600160a01b0362009b758962005db5565b90549060031b1c166200200d828962005bed565b9562005b81565b620099d6565b8051828110156200409c5760120362009e2157505060408094019162009bc760a06200920f60c08651015162005ba7565b519162009bd88451845114620153e2565b60005b845181101562009c2b5762009c25906200054f6001600160a01b038062009c03848a62005bed565b51166000526201388580602052620099798b6000205462008299868b62005bed565b62009bdb565b50949150929162009c3c9062017121565b9062013886805462009c4e8162005d44565b9260009485925b80841062009d1c575050505062009c6c8362005d44565b908151916001600160401b03831162003f1a5760209062009c8d8462005f95565b019060005260005b82811062009cde5750505060005b82811062009cbb5750505062007e8960209162005b81565b806200054f6001600160a01b0362001f2362009cd8948662005bed565b62009ca3565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa401550162009c95565b9297600097929597949194998a5b865181101562009e0f5762009d3f8b62005db5565b906001600160a01b03918291549060031b1c169062009d5f838a62005bed565b51161462009d785762009d729062005b81565b62009d2a565b509950976001979592979491945b8062009ddd575b1562009da55762009d9e9062005b81565b9262009c55565b9562009dd662009d9e916001600160a01b0362009dc28a62005db5565b90549060031b1c166200200d828a62005bed565b9662005b81565b506001600160a01b0362009df18262005db5565b90549060031b1c166000526201388560205282600020541562009d8d565b50999890989795929794919462009d86565b8095929551828110156200409c5760130362009e8257505060408091015101519260005b845181101562009e7157806200054f62009e6462009e6b938862005bed565b5162016981565b62009e45565b5092509062007e8960209162005b81565b805191808310156200409c5760149283036200a0255750505060408091019062009eb160c08351015162005ba7565b519262009ec860a062007c9f818651015162005ba7565b519562009ed98551855114620160fd565b62009ee885518851146201616f565b60005b855181101562009fd05762009f01818962005bed565b5162009f0e828762005bed565b51612710918282101562005bb557600662009f2f9260031b01549062007088565b9062009f3c848962005bed565b51918383101562005bb557600662009f599360031b015562016238565b62009f65828a62005bed565b519062009f73838862005bed565b518181101562005bb5578392600362009f9c928b62007daf6001600160a01b0398899262005bed565b62009fa8848a62005bed565b519283101562005bb55760036200054f9362009fca9662007df4878e62005bed565b62009eeb565b50939262009fe69192965062007e26906201723d565b94519262009ff48462003fbd565b60008452600036813760005b835181101562007e7557806200054f62007e666200a01f938762005bed565b6200a000565b8196949593965190808210156200409c5760159182036200a57d575050505060408401906200a05960c08351015162005ba7565b51936200a07060a062007c9f818651015162005ba7565b51936200a085865185511462001929620174fa565b6200a098865186511462001929620174fa565b60005b86518110156200a0f5576200a0b1818662005bed565b519061271082101562005bb55760036200a0ef926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b6200a09b565b50909493919460005b85518110156200a207576200a114818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b016020526200a15060406000205462008299848962005bed565b906200a15d848a62005bed565b51918383101562005bb55760036200a18c93878f5116600052811b016020526040600020556200192962017621565b6200a198828862005bed565b518181101562005bb557600390846200a1b2858c62005bed565b5116600052811b016020526200a1d36040600020546200733c848962005bed565b6200a1df848a62005bed565b519283101562005bb55760036200054f936200a2019662008352878e62005bed565b6200a0fe565b50926200a21e9195969492506200838a906201723d565b926001600160a01b03604051916200a2368362003fa1565b600183526020368185013751166200a24e8262005ba7565b526000905b825182101562008731576200a269828462005bed565b51966200a277865162005d44565b936000956200a287845162005d44565b610600528698875b89518110156200a33957896200a2b38d6001600160a01b0362008426858562005bed565b15806200a2fb575b6200a2d3575b506200a2cd9062005b81565b6200a28f565b81996001600160a01b036200846d6200a2cd946200a2f19462005bed565b989050896200a2c1565b50506127108c101562005bb5576001600160a01b036200a31c828c62005bed565b511660005260038c811b016020528960406000205415156200a2bb565b509098969498979291939760005b89518110156200a3d7576127108c101562005bb5576001600160a01b036200a370828c62005bed565b511660005260038c811b0160205289604060002054156200a39e575b506200a3989062005b81565b6200a347565b81996001600160a01b036200a3bc6200a398946200a3cd9462005bed565b51166200200d826106005162005bed565b989050896200a38c565b50989593929650966127108a1015610140526127108a101562005bb55760048a60031b0154966200a40d62008597878a6201542e565b9860009a8b6103c0525b6101405162005bb5576103c0518a8110156200a4b8576200a4656001600160a01b038f926200a4539060006101405260048560031b0162005f0b565b90549060031b1c1661060051620170cc565b156200a485575b506200a47b6103c05162005b81565b6103c0526200a417565b9b8b6200200d826200a4b0949f620086406001600160a01b039160046103c0519160031b0162005f0b565b9a8c6200a46c565b509b9398509591969499909893996000915b8383106200a55957505050506101405162005bb5578151916001600160401b03831162003f1a5760206004916200a50785848660031b016200611d565b019160031b01600052602060002060005b8381106200a53b57505050506200a52f9062005b81565b9094919592956200a253565b60019060206001600160a01b0385511694019381840155016200a518565b620087236200a576916001600160a01b0362008715868662005bed565b916200a4ca565b8297949695975192818410156200409c5760169384036200a5ea57505050505060c060406200a5b0920151015162005ba7565b519260005b845181101562009e7157806200054f6001600160a01b036200a5dc6200a5e4948962005bed565b5116620071de565b6200a5b5565b8051828110156200409c576017036200a65357608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203233206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b8051828110156200409c576018036200a6c757505050505060c060406200a67e920151015162005ba7565b5162013892805460ff191660011790559260005b845181101562009e7157806200054f6001600160a01b036200a6b96200a6c1948962005bed565b51166200717b565b6200a692565b8097969751828110156200409c576019036200a85057505050505060008080604080940160a0808251015180516200a817575b505051906001600160a01b036200a71e6200733560c060e086015195015162005ba7565b511690602083519301915af1903d156200a80e573d916200a73f83620041b8565b926200a74e8351948562003fd9565b83523d6000602085013e5b156200a76e57505062007e8960209162005b81565b62005b7d92506200a7ef8151927f5468652063616c6c20746f2074686520636f6e7472616374206973206e6f742060208501527f7375636365737366756c2e2052657475726e20646174613a2000000000000000838501528381516200a7de816059946020868601910162004106565b810103603981018552018362003fd9565b5191829162461bcd60e51b83526020600484015260248301906200412b565b6060916200a759565b6200a8229062005ba7565b51516200a831575b806200a6fa565b81925062007335906200a8479251015162005ba7565b5190386200a82a565b8051828110156200409c57601a036200a95b57505050506200a87b60a0604080940151015162005ba7565b51906200a88c6003835114620153e2565b6200a8978262005ba7565b51926200a8b06200a8a88462005bcb565b519362005bdc565b51926200a9185750509162007e89916001602094146000146200a911576200a8f0906200a8e36201388d91825462007088565b9091556200192962017423565b6200054f6201388e6200a904815462007075565b909155620019296201745e565b5062005b81565b60649250519062461bcd60e51b82526020600483015260248201527f496e76616c6964207061796d656e7420747970650000000000000000000000006044820152fd5b80919293945051828110156200409c57601b036200ade4575050505050906200a99b6201388b54620070bf6200a9906201733b565b612710831062005b4e565b50506200a9a762017423565b506000805b61271081106200ad7f575b50506200a9c36200709a565b6200a9d26202712a5462005d44565b9060009384905b6127108210156200ad73578160031b9460ff600787015416156200ab28576000976002870154156200ab1657889798975b62005bb55760048701548810156200aafc576200aa2b886004890162005f0b565b90549060031b1c6001600160a01b0316988960005260038801602052604099868b60002054906200aa5c9162006fe1565b9b906200aa6862017423565b6200aa739162005b4e565b60009b60028b01546200aa869162006fe1565b91906200aa9262017423565b6200aa9d9162005b4e565b828d52620138876020528c20908154906200aab89162007088565b9091556200aac562017423565b6200aad09162005b4e565b6200aadc828962005bed565b526200aae89062005b81565b976200aaf49062005b81565b97986200aa0a565b929095506200ab0d91965062005b81565b9095946200a9d9565b929095506200ab0d9196975062005b81565b959392509350505b6200ab3b8262005d44565b91600091825b8281106200acde5750505062013888908154926200ab646200859785846201542e565b9360009081905b8082106200aca557505060005b8381106200ac1057505050508151916001600160401b03831162003f1a576020906200aba48462005f3d565b019060005260005b8281106200abd25750505062007e8960209160006201388d5560006201388e5562005b81565b60019060206001600160a01b03845116930192817ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df0155016200abac565b6000805b8381106200ac5d575b50156200ac36575b6200ac309062005b81565b6200ab78565b906200ac546200ac30916001600160a01b0362008715858762005bed565b9190506200ac25565b6001600160a01b03806200ac72858862005bed565b5116906200ac81838b62005bed565b5116146200ac9a576200ac949062005b81565b6200ac14565b50506001386200ac1d565b9091620087236200acd7916001600160a01b036200acc38662005d7c565b90549060031b1c166200200d828b62005bed565b906200ab6b565b6000805b8581106200ad2b575b50156200ad04575b6200acfe9062005b81565b6200ab41565b926200ad226200acfe916001600160a01b0362009a30878662005bed565b9390506200acf3565b6001600160a01b03806200ad40858762005bed565b5116906200ad4f838a62005bed565b5116146200ad68576200ad629062005b81565b6200ace2565b50506001386200aceb565b9394929150506200ab30565b8060031b9060ff600783015416156200addd576200adcb62007b336200054f946200adbf6200add79560026200adb58762006ee3565b9101549062006fe1565b92906200192962017423565b93906200192962017423565b6200a9ac565b506200a9b7565b8051828110156200409c57601c036200ae4d57608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203238206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b8051828110156200409c57601d036200ae73575b505050505062007e8960209162005b81565b8051828110156200409c57601e146200ae61578051828110156200409c57601f036200aec957505050506020916200aebf6200aeb8604062007e899401515162005ba7565b51620169b8565b913880806200ae61565b8051828110156200409c576020036200aeef575b505050505062007e896020916200aebf565b805190828210156200409c5760218092036200af0d575b506200aedd565b8051838110156200b55b576022036200af4e5750505050505062007e896020916201389260ff1981541690556200af43620060c4565b91388080806200af06565b8051838110156200b55b576023036200af75575b50505050505062007e896020916200af43565b8051838110156200b55b576024146200af62578051838110156200b55b576025146200af62579795949751918210156200b5475750036200b503575060408401906200afc660c08351015162005ba7565b51936200afdd60a062007c9f818651015162005ba7565b51936200aff2865185511462001929620174fa565b6200b005865186511462001929620174fa565b60005b86518110156200b062576200b01e818662005bed565b519061271082101562005bb55760036200b05c926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b6200b008565b50909493919460005b85518110156200b174576200b081818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b016020526200b0bd60406000205462008299848962005bed565b906200b0ca848a62005bed565b51918383101562005bb55760036200b0f993878f5116600052811b016020526040600020556200192962017621565b6200b105828862005bed565b518181101562005bb557600390846200b11f858c62005bed565b5116600052811b016020526200b1406040600020546200733c848962005bed565b6200b14c848a62005bed565b519283101562005bb55760036200054f936200b16e9662008352878e62005bed565b6200b06b565b50926200b18b9195969492506200838a906201723d565b926001600160a01b03604051916200b1a38362003fa1565b600183526020368185013751166200b1bb8262005ba7565b526000905b82518210156200b4ea576200b1d6828462005bed565b51966200b1e4865162005d44565b936000956200b1f4845162005d44565b610420528698875b89518110156200b2a657896200b2208d6001600160a01b0362008426858562005bed565b15806200b268575b6200b240575b506200b23a9062005b81565b6200b1fc565b81996001600160a01b036200846d6200b23a946200b25e9462005bed565b989050896200b22e565b50506127108c101562005bb5576001600160a01b036200b289828c62005bed565b511660005260038c811b016020528960406000205415156200b228565b509098969498979291939760005b89518110156200b344576127108c101562005bb5576001600160a01b036200b2dd828c62005bed565b511660005260038c811b0160205289604060002054156200b30b575b506200b3059062005b81565b6200b2b4565b81996001600160a01b036200b3296200b305946200b33a9462005bed565b51166200200d826104205162005bed565b989050896200b2f9565b50989593929650966127108a1015610120526127108a101562005bb55760048a60031b0154966200b37a62008597878a6201542e565b9860009a8b610200525b6101205162005bb557610200518a8110156200b425576200b3d26001600160a01b038f926200b3c09060006101205260048560031b0162005f0b565b90549060031b1c1661042051620170cc565b156200b3f2575b506200b3e86102005162005b81565b610200526200b384565b9b8b6200200d826200b41d949f620086406001600160a01b03916004610200519160031b0162005f0b565b9a8c6200b3d9565b509b9398509591969499909893996000915b8383106200b4c657505050506101205162005bb5578151916001600160401b03831162003f1a5760206004916200b47485848660031b016200611d565b019160031b01600052602060002060005b8381106200b4a857505050506200b49c9062005b81565b9094919592956200b1c0565b60019060206001600160a01b0385511694019381840155016200b485565b620087236200b4e3916001600160a01b0362008715868662005bed565b916200b437565b50505091926020915062007e899091388080806200af62565b6064906040519062461bcd60e51b82526020600483015260248201527f496e76616c6964206f7065726174696f6e2074797065000000000000000000006044820152fd5b634e487b7160e01b60005260045260246000fd5b82634e487b7160e01b60005260045260246000fd5b606460405162461bcd60e51b815260206004820152601b60248201527f4f7065726174696f6e207479706520697320756e646566696e656400000000006044820152fd5b50915050565b600281036200b61b5760405162461bcd60e51b815260206004820152602a60248201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560448201526967696e2073797374656d60b01b6064820152608490fd5b6001146200b6265750565b906200b6366201388354620063b7565b805190600160401b821162003f1a57620271165482620271165580831062013df1575b50602001620271166000527f2a7aa4e7f2fefac7a07702701afb9c202f6f79fb2762c8e42b37a264307667fa6000915b83831062013dd0575050505060005b62013883548110156200b6d257806200054f6200b6b96200b6cc9362006cc0565b506200b6c58362006cfe565b9062014356565b6200b698565b506200b6e26201388254620063b7565b805190600160401b821162003f1a57620271155482620271155580831062013d33575b50602001620271156000527f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf926000915b83831062013d12575050505060005b62013882548110156200b77757806200054f6200b7656200b7719362006d3c565b506200b6c58362006d7a565b6200b744565b5060005b612710811015806200b94257600160ff6201389a8460031b0154161515146200b7b1575b506200b7ab9062005b81565b6200b77b565b916000835b62005bb557620138978360031b01548110156200b822576200b819929350600092816001600160a01b036200b7f58694620138978960031b0162005f0b565b90549060031b1c16600052620138968660031b016020526000604081205562005b81565b9093926200b7b6565b5091604051906200b8338262003fbd565b6000825262005bb5578051906001600160401b03821162003f1a576020906200b86583620138978660031b016200611d565b01620138978360031b01600052602060002060005b8381106200b9245750505050600381901b6201389a8101805460ff191690556000620138938201819055620138948201819055620138958201556201389801546200b7ab91906200b8cb9062005221565b601f908181116200b8f8575b50506000620138988260031b01556000620138998260031b0155906200b79f565b6200b91c91620138988460031b016000526020600020910160051c81019062005f24565b38806200b8d7565b60019060206001600160a01b0385511694019381840155016200b87a565b505060005b612710811062013c7d575060005b62013881548110156200b9b357806001600160a01b036200b97a6200b9ad9362005dee565b90549060031b1c166000526202711360205260006002604082208281556200b9a56001820162006448565b015562005b81565b6200b955565b506200b9c3620138815462005d44565b8051906001600160401b03821162003f1a57600160401b821162003f1a57602090620271145483620271145580841062013c44575b50016202711460005260005b82811062013c065750505060005b62013881548110156200ba93576001600160a01b036200ba328262005dee565b90549060031b1c1690620271145481101562005bb5576200ba8d9162027114600052817f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c01906001600160a01b031982541617905562005b81565b6200ba12565b509060005b62013881548110156200bb7357806200bab56200bb0b9262005dee565b906001600160a01b03918291549060031b1c1660005262013880602052604080600020916200bae48462005dee565b90549060031b1c1660005262027113602052600020908082036200bb11575b505062005b81565b6200ba98565b600280916200bb5460ff6200bb3581845416879060ff801983541691151516179055565b825460081c16859061ff00825491151560081b169061ff001916179055565b6200bb66600182016001860162013fec565b015491015538806200bb03565b5060005b6202711d548110156200bbc857806001600160a01b036200bb9c6200bbc29362005e27565b90549060031b1c166000526202711c6020526200054f6040600020606481019062005f24565b6200bb77565b506200bbd86201388a5462005d44565b8051906001600160401b03821162003f1a57600160401b821162003f1a576020906202711d54836202711d5580841062013bcd575b50016202711d60005260005b82811062013b8f5750505060005b6201388a548110156200bc6957806200054f6001600160a01b036200bc506200bc639462005e60565b90549060031b1c1662001f308362005e27565b6200bc27565b5060005b6201388a548110156200bcf857806200bc8a6200bcdf9262005e60565b906001600160a01b03918291549060031b1c1660005262013889602052604080600020916200bcb98462005e60565b90549060031b1c166000526202711c602052600020908082036200bce557505062005b81565b6200bc6d565b6200bcf09162014411565b38806200bb03565b506201388b546202711e556201388c546202711f556201388d5462027120556201388e5462027121556201388f546001600160401b03811162003f1a57600160401b811162003f1a57620271225481620271225580821062013b56575b507f846ab89c81ea9339188216a1864da1a19ebe28d411cbec99efa70ca6d389710d8054906000915b83831062013b1657505050506201389054600160401b811162003f1a57620271235481620271235580821062013ac2575b507f7f73709277f72a9bc7b284375e83603a53394744e9fa86da811e86c2aa78e05e620271236000527f4ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b12246000915b83831062013aa4575050505062013891546001600160401b03811162003f1a57600160401b811162003f1a57620271245481620271245580821062013a6b575b506202712460009081527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e94536680545b83831062013a2b575050505060ff620138925416151560ff8019620271255416911617620271255560005b62027119548110156200bee057806001600160a01b036200bebb6200beda9362005e99565b90549060031b1c16600052620271186020526000604081205562005b81565b6200be96565b506200bef0620138865462005d44565b8051906001600160401b03821162003f1a576020906200bf108362006014565b016202711960005260005b828110620139ed5750505060005b62013886548110156200bf6b57806200054f6001600160a01b036200bf526200bf659462005db5565b90549060031b1c1662001f308362005e99565b6200bf29565b5060005b62013886548110156200bfde57806200bf8c6200bfd89262005db5565b906001600160a01b03918291549060031b1c166000526201388560205260408060002054916200bfbc8462005db5565b90549060031b1c16600052620271186020526000205562005b81565b6200bf6f565b5060005b6202711b548110156200c02c57806001600160a01b036200c0076200c0269362005ed2565b90549060031b1c166000526202711a6020526000604081205562005b81565b6200bfe2565b506200c03c620138885462005d44565b8051906001600160401b03821162003f1a576020906200c05c836200606c565b016202711b60005260005b828110620139af5750505060005b62013888548110156200c0b757806200054f6001600160a01b036200c09e6200c0b19462005d7c565b90549060031b1c1662001f308362005ed2565b6200c075565b5060005b62013888548110156200c12a57806200c0d86200c1249262005d7c565b906001600160a01b03918291549060031b1c166000526201388760205260408060002054916200c1088462005d7c565b90549060031b1c166000526202711a6020526000205562005b81565b6200c0bb565b50906000905b6020830151805183101562010f5357826200c14b9162005bed565b51602081015160268110156200409c57156200b57057602081015160268110156200409c576001036200c72f57604001906200c18c60c08351015162005ba7565b51936200c1a360a062007c9f818651015162005ba7565b51916200c1b48651855114620160fd565b6200c1c386518451146201616f565b60005b86518110156200c324576200c1dc818662005bed565b5161271081101562005bb557600160ff6201389a6200c2049360031b015416151514620161e1565b6200c210818562005bed565b516200c21d828762005bed565b519061271082101562005bb557620138996200c23f9260031b01549062007088565b906200c24c838862005bed565b519161271083101562005bb557620138996200c26d9360031b015562016238565b6200c279818562005bed565b516200c286828762005bed565b519061271082101562005bb557620138966200c2c9926001600160a01b036200c2b0868d62005bed565b511660005260031b016020526040600020549062007088565b91906200c2d7828862005bed565b519061271082101562005bb5576200c31e93620138966200054f936001600160a01b036200c306878f62005bed565b511660005260031b01602052604060002055620162aa565b6200c1c6565b50926200c33b9192506200899b909594956201723d565b916040516200c34a8162003fbd565b6000815260003681376000945b80518610156200c715576200c36d868262005bed565b51610380526200c37e855162005d44565b966000946200c38e845162005d44565b6103005260009460005b88518110156200c46b578a896200c3c86001600160a01b036200c3bc858462005bed565b51166103805162017072565b15806200c422575b6200c3e9575b50506200c3e39062005b81565b6200c398565b986200c417916200200d826001600160a01b036200c40e879e976200c3e39862005bed565b51169262005bed565b9790508a896200c3d6565b50505061271061038051101562005bb5576001600160a01b036200c447828b62005bed565b5116600052620138966103805160031b016020528a8960406000205415156200c3d0565b50909895979498969291939660005b88518110156200c50a5761271061038051101562005bb5576001600160a01b03806200c4a7838c62005bed565b5116600052620138966103805160031b01602052604060002054156200c4da575b506200c4d49062005b81565b6200c47a565b819b6200c502916200c4f16200c4d4948d62005bed565b51166200200d826103005162005bed565b9a906200c4c8565b5098509695929190939661038051612710811015806102a05262005bb55760031b620138970154986200c54262008597898c6201542e565b6104a0526000610480526000610260525b6102a05162005bb557610260518a8110156200c61c576200c58a6200c5a89160006102a052620138976103805160031b0162005f0b565b91906001600160a01b03928391549060031b1c1661030051620170cc565b156200c5c8575b506200c5be6102605162005b81565b610260526200c553565b60006102a0526200c5e861026051620138976103805160031b0162005f0b565b90549060031b1c166200c602610480516104a05162005bed565b526200c6116104805162005b81565b61048052386200c5af565b50979294959093985095909560005b8281106200c6c9575050506102a05162005bb5576104a051516001600160401b03811162003f1a576200c66a81620138976103805160031b016200611d565b60206104a05101620138976103805160031b01600052602060002060005b8381106200c6ab57505050506200c69f9062005b81565b9492959091956200c357565b60019060206001600160a01b0385511694019381840155016200c688565b806001600160a01b036200c6e26200c70f938562005bed565b51166200c6f6610480516104a05162005bed565b526200c7056104805162005b81565b6104805262005b81565b6200c62b565b5050939092506200c727915062005b81565b90916200c130565b90602082949394015160268110156200409c576002036200c8ec576040809201908151938451916200c7866200c76a60a08098015162005ba7565b51966200c77b818751015162005bcb565b519551015162005bdc565b51948351875103620080fd578351855103620080945783518651036200802b575060005b86518110156200c8d9576200c7c0818862005bed565b5161271081101562005bb55760ff6201389a6200c7e49260031b015416156201631b565b6200c7f0818862005bed565b5161271081101562005bb55760031b6201389a01805460ff191660011790556200c81b818562005bed565b516200c828828962005bed565b519061271082101562005bb557620138986200c8489260031b01620067d9565b6200c854818662005bed565b516200c861828962005bed565b5161271081101562005bb55760031b6201389401556200c882818762005bed565b516200c88f828962005bed565b5161271081101562005bb55760031b6201389501556200c8b0818862005bed565b519061271082101562005bb5576000620138996200c8d39360031b015562005b81565b6200c7aa565b509592509350506200c727915062005b81565b909291602084015160268110156200409c576003036200ced45760408401906200c91b60c08351015162005ba7565b51906200c93260a062007c9f818651015162005ba7565b51936200c947835185511462001929620174fa565b6200c95a835186511462001929620174fa565b60005b83518110156200c9ba576200c973818662005bed565b519061271082101562005bb557620138966200c9b4926001600160a01b038b511660005260031b016020526200054f6040600020546200822b838a62005bed565b6200c95d565b509095919560005b87518110156200cb0f576200c9d8818662005bed565b5161271081101562005bb55762013896906001600160a01b0386511660005260031b016020526200ca1460406000205462008299838962005bed565b906200ca21838862005bed565b519161271083101562005bb557620138966200ca5c936001600160a01b0389511660005260031b016020526040600020556200192962017621565b6200ca68818662005bed565b5161271081101562005bb55762013896906001600160a01b036200ca8d848c62005bed565b511660005260031b016020526200caaf6040600020546200733c838962005bed565b91906200cabd828862005bed565b519061271082101562005bb5576200cb0993620138966200054f936001600160a01b036200caed8f889062005bed565b511660005260031b016020526040600020556200192962017697565b6200c9c2565b509194935091620089a26200cb24916201723d565b926001600160a01b03604051956200cb3c8762003fa1565b600187526020368189013751166200cb548662005ba7565b526000905b86518210156200cec2576200cb6f828862005bed565b516105a0526200cb80855162005d44565b966000946200cb90885162005d44565b6104e05260009460005b88518110156200cc64578a896200cbca6001600160a01b036200cbbe858462005bed565b51166105a05162017072565b15806200cc1b575b6200cbeb575b50506200cbe59062005b81565b6200cb9a565b986200cc10916200200d826001600160a01b036200c40e879e976200cbe59862005bed565b9790508a896200cbd8565b5050506127106105a051101562005bb5576001600160a01b036200cc40828b62005bed565b5116600052620138966105a05160031b016020528a8960406000205415156200cbd2565b509098949897969291939760005b88518110156200cd08576127106105a051101562005bb5576001600160a01b036200cc9e828b62005bed565b5116600052620138966105a05160031b01602052604060002054156200ccd0575b6200ccca9062005b81565b6200cc72565b996200ccff6200ccca916001600160a01b036200ccee8e8d62005bed565b51166200200d826104e05162005bed565b9a90506200ccbf565b5098509694939291956105a051612710811015806104605262005bb55760031b620138970154966200cd3f62008597878a6201542e565b996000996000610280525b6104605162005bb557610280518a8110156200cdf5576001600160a01b036200cd896200cd9b92600061046052620138976105a05160031b0162005f0b565b90549060031b1c166104e051620170cc565b156200cdba575b6200cdb06102805162005b81565b610280526200cd4a565b996200cdee906000610460528c6200200d826001600160a01b036200864061028051620138976105a05160031b0162005f0b565b996200cda2565b509a939794969299919850946000915b8383106200ce9e57505050506104605162005bb5578051906001600160401b03821162003f1a576020906200ce4683620138976105a05160031b016200611d565b01620138976105a05160031b01600052602060002060005b8381106200ce8057505050506200ce759062005b81565b90929591956200cb59565b60019060206001600160a01b0385511694019381840155016200ce5e565b620087236200cebb916001600160a01b0362009a30868662005bed565b916200ce05565b9295505092506200c727915062005b81565b9092602081015160268110156200409c576004036200d504576040016200cf0060c08251015162005ba7565b51936200cf1260c08351015162005bcb565b51906200cf2960a062007c9f818651015162005ba7565b51936200cf3e875184511462001929620174fa565b6200cf51875185511462001929620174fa565b6200cf64875186511462001929620174fa565b60005b87518110156200cfcf576200cf7d818662005bed565b519061271082101562005bb557620138966200cfc9926001600160a01b036200cfa7848d62005bed565b511660005260031b016020526200054f6040600020546200822b838a62005bed565b6200cf67565b509095919593929360005b83518110156200d134576200cff0818762005bed565b5161271081101562005bb55762013896906001600160a01b036200d015848862005bed565b511660005260031b016020526200d03760406000205462008299838862005bed565b906200d044838962005bed565b519161271083101562005bb557620138966200d08a936001600160a01b036200d06e878b62005bed565b511660005260031b016020526040600020556200192962017621565b6200d096818762005bed565b5161271081101562005bb55762013896906001600160a01b036200d0bb848c62005bed565b511660005260031b016020526200d0dd6040600020546200733c838862005bed565b9190506200d0ec818862005bed565b519161271083101562005bb557620138966200d12e936001600160a01b036200d116858e62005bed565b511660005260031b0160205260406000205562005b81565b6200cfda565b5091936200d150919350620089a26200899b919796976201723d565b6000945b80518610156200c715576200d16a868262005bed565b51610340526200d17b855162005d44565b966000946200d18b845162005d44565b6101a05260009460005b88518110156200d25f578a896200d1c56001600160a01b036200d1b9858462005bed565b51166103405162017072565b15806200d216575b6200d1e6575b50506200d1e09062005b81565b6200d195565b986200d20b916200200d826001600160a01b036200c40e879e976200d1e09862005bed565b9790508a896200d1d3565b50505061271061034051101562005bb5576001600160a01b036200d23b828b62005bed565b5116600052620138966103405160031b016020528a8960406000205415156200d1cd565b50909895979498969291939660005b88518110156200d2fe5761271061034051101562005bb5576001600160a01b03806200d29b838c62005bed565b5116600052620138966103405160031b01602052604060002054156200d2ce575b506200d2c89062005b81565b6200d26e565b819b6200d2f6916200d2e56200d2c8948d62005bed565b51166200200d826101a05162005bed565b9a906200d2bc565b5098509695929190939661034051612710811015806102c05262005bb55760031b620138970154986200d33662008597898c6201542e565b6105005260006103e052600060c0525b6102c05162005bb55760c0518a8110156200d40b576200d37c6200d39a9160006102c052620138976103405160031b0162005f0b565b91906001600160a01b03928391549060031b1c166101a051620170cc565b156200d3b8575b506200d3af60c05162005b81565b60c0526200d346565b60006102c0526200d3d760c051620138976103405160031b0162005f0b565b90549060031b1c166200d3f16103e0516105005162005bed565b526200d4006103e05162005b81565b6103e052386200d3a1565b50979294959093985095909560005b8281106200d4b8575050506102c05162005bb55761050051516001600160401b03811162003f1a576200d45981620138976103405160031b016200611d565b60206105005101620138976103405160031b01600052602060002060005b8381106200d49a57505050506200d48e9062005b81565b9492959091956200d154565b60019060206001600160a01b0385511694019381840155016200d477565b806001600160a01b036200d4d16200d4fe938562005bed565b51166200d4e56103e0516105005162005bed565b526200d4f46103e05162005b81565b6103e05262005b81565b6200d41a565b9290602084015160268110156200409c576005036200da7f5760408401906200d53760a062008a0b818551015162005ba7565b519282518451036200da155760005b83518110156200d5a3576200d55c818562005bed565b519061271082101562005bb557620138966200d59d926001600160a01b038a511660005260031b016020526200054f6040600020546200822b838962005bed565b6200d546565b509060005b83518110156200d64e576200d5be818562005bed565b5161271081101562005bb55762013896906001600160a01b0389511660005260031b016020526200d5fa60406000205462008299838862005bed565b91906200d608828762005bed565b519061271082101562005bb5576200d64893620138966200054f936001600160a01b038d511660005260031b016020526040600020556200192962017621565b6200d5a8565b5094939250906200d65f906201723d565b936001600160a01b03604051946200d6778662003fa1565b600186526020368188013751166200d68f8562005ba7565b52604051926200d69f8462003fbd565b6000845260003681376000905b86518210156200cec2576200d6c2828862005bed565b516102e0526200d6d3855162005d44565b966000946200d6e3885162005d44565b6101e05260009460005b88518110156200d7b7578a896200d71d6001600160a01b036200d711858462005bed565b51166102e05162017072565b15806200d76e575b6200d73e575b50506200d7389062005b81565b6200d6ed565b986200d763916200200d826001600160a01b036200c40e879e976200d7389862005bed565b9790508a896200d72b565b5050506127106102e051101562005bb5576001600160a01b036200d793828b62005bed565b5116600052620138966102e05160031b016020528a8960406000205415156200d725565b509098949897969291939760005b88518110156200d85b576127106102e051101562005bb5576001600160a01b036200d7f1828b62005bed565b5116600052620138966102e05160031b01602052604060002054156200d823575b6200d81d9062005b81565b6200d7c5565b996200d8526200d81d916001600160a01b036200d8418e8d62005bed565b51166200200d826101e05162005bed565b9a90506200d812565b5098509694939291956102e051612710811015806104405262005bb55760031b620138970154966200d89262008597878a6201542e565b9960009960006106a0525b6104405162005bb5576106a0518a8110156200d948576001600160a01b036200d8dc6200d8ee92600061044052620138976102e05160031b0162005f0b565b90549060031b1c166101e051620170cc565b156200d90d575b6200d9036106a05162005b81565b6106a0526200d89d565b996200d941906000610440528c6200200d826001600160a01b03620086406106a051620138976102e05160031b0162005f0b565b996200d8f5565b509a939794969299919850946000915b8383106200d9f157505050506104405162005bb5578051906001600160401b03821162003f1a576020906200d99983620138976102e05160031b016200611d565b01620138976102e05160031b01600052602060002060005b8381106200d9d357505050506200d9c89062005b81565b90929591956200d6ac565b60019060206001600160a01b0385511694019381840155016200d9b1565b620087236200da0e916001600160a01b0362009a30868662005bed565b916200d958565b608460405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b60448201527f656e416d6f756e74206973206e6f7420657175616c00000000000000000000006064820152fd5b92602081015160268110156200409c576006036200e09d576040016200daaa60c08251015162005ba7565b51936200dac160a062008a0b818551015162005ba7565b519285518351036200e0335785518451036200dfc95760005b86518110156200db42576200daf0818562005bed565b519061271082101562005bb557620138966200db3c926001600160a01b036200db1a848c62005bed565b511660005260031b016020526200054f6040600020546200822b838962005bed565b6200dada565b509060005b86518110156200dbe7576200db5d818562005bed565b5161271081101562005bb55762013896906001600160a01b036200db82848b62005bed565b511660005260031b016020526200dba460406000205462008299838862005bed565b91906200dbb2828762005bed565b519061271082101562005bb5576200dbe193620138966200054f936001600160a01b036200d06e878f62005bed565b6200db47565b50916200dbfe9193506200899b909594956201723d565b91604051926200dc0e8462003fbd565b6000845260003681376000945b80518610156200c715576200dc31868262005bed565b51610320526200dc42855162005d44565b966000946200dc52845162005d44565b6106c05260009460005b88518110156200dd26578a896200dc8c6001600160a01b036200dc80858462005bed565b51166103205162017072565b15806200dcdd575b6200dcad575b50506200dca79062005b81565b6200dc5c565b986200dcd2916200200d826001600160a01b036200c40e879e976200dca79862005bed565b9790508a896200dc9a565b50505061271061032051101562005bb5576001600160a01b036200dd02828b62005bed565b5116600052620138966103205160031b016020528a8960406000205415156200dc94565b50909895979498969291939660005b88518110156200ddc55761271061032051101562005bb5576001600160a01b03806200dd62838c62005bed565b5116600052620138966103205160031b01602052604060002054156200dd95575b506200dd8f9062005b81565b6200dd35565b819b6200ddbd916200ddac6200dd8f948d62005bed565b51166200200d826106c05162005bed565b9a906200dd83565b5098509695929190939661032051612710811015806107205262005bb55760031b620138970154986200ddfd62008597898c6201542e565b61064052600060e05260006103a0525b6107205162005bb5576103a0518a8110156200ded3576200de446200de6291600061072052620138976103205160031b0162005f0b565b91906001600160a01b03928391549060031b1c166106c051620170cc565b156200de82575b506200de786103a05162005b81565b6103a0526200de0d565b6000610720526200dea26103a051620138976103205160031b0162005f0b565b90549060031b1c166200debb60e0516106405162005bed565b526200dec960e05162005b81565b60e052386200de69565b50979294959093985095909560005b8281106200df80575050506107205162005bb55761064051516001600160401b03811162003f1a576200df2181620138976103205160031b016200611d565b60206106405101620138976103205160031b01600052602060002060005b8381106200df6257505050506200df569062005b81565b9492959091956200dc1b565b60019060206001600160a01b0385511694019381840155016200df3f565b806001600160a01b036200df996200dfc3938562005bed565b51166200dfac60e0516106405162005bed565b526200dfba60e05162005b81565b60e05262005b81565b6200dee2565b608460405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662061646472657373657320616e6420616d6f7560448201527f6e7473206973206e6f7420657175616c000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f662061646472657373657320616e6420746f6b6560448201527f6e436c6173736573206973206e6f7420657175616c00000000000000000000006064820152fd5b60208194929394015160268110156200409c576007036200e25457604001916200e0cc60c08451015162005ba7565b51916200e0de60a08551015162005ba7565b51935151916200e0f6845186511462001929620174fa565b60005b84518110156200e242576001600160a01b03806200e118838862005bed565b511660005262027113806020526200e13d60ff604060002054161562001929620175e6565b60026200e14b848862005bed565b516200e1c06200e15c868c62005bed565b519162008fdf8b604051966200e1728862003efe565b60018852886200e1998b60208b01946000865260408c0197885260608c01998a5262005bed565b511660005260205262008fc8604060002097511515889060ff801983541691151516179055565b519101556200e1d0828762005bed565b511690620271145491600160401b83101562003f1a576001830180620271145583101562005bb5576200e23c92620271146000527f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c01906001600160a01b031982541617905562005b81565b6200e0f9565b5094915092506200c727915062005b81565b602081015160268110156200409c576008036200e3435760c060406200e27e920151015162005ba7565b519160005b83518110156200e334576200e32e906001600160a01b03806200e2a7838862005bed565b51166000526202711390816020526200e2d1600160ff604060002054161515146200192962017535565b806200e2de848962005bed565b5116600052816020526200e30260ff60406000205460081c161562001929620175ab565b6200e30e838862005bed565b5116600052602052604060002061010061ff001982541617905562005b81565b6200e283565b50926200c72791925062005b81565b602081015160268110156200409c576009036200e4235760c060406200e36d920151015162005ba7565b519160005b83518110156200e334576200e41d906001600160a01b03806200e396838862005bed565b51166000526202711390816020526200e3c0600160ff604060002054161515146200192962017535565b806200e3cd848962005bed565b5116600052816020526200e3f5600160ff60406000205460081c161515146200192962017570565b6200e401838862005bed565b5116600052602052604060002061ff0019815416905562005b81565b6200e372565b602081015160268110156200409c57600a036200e50c57604001906200e45f60a06200e45460c08551015162005ba7565b519351015162005ba7565b51926200e474835185511462001929620174fa565b60005b83518110156200e4fb576200e4f5906001600160a01b03806200e49b838862005bed565b511660005262027113806020526200e4c4600160ff604060002054161515146200192962017535565b6200e4d0838962005bed565b51916200e4de848962005bed565b511660005260205260026040600020015562005b81565b6200e477565b50939092506200c727915062005b81565b60208194939294015160268110156200409c57600b036200e5ed57604001926200e53b60c08551015162005ba7565b51935151916200e553855184511462001929620174fa565b60005b85518110156200e5dd576200e5d7906200054f6001600160a01b03806200e57e848b62005bed565b511660005262027113806020526200e5a7600160ff604060002054161515146200192962017535565b6200e5b3848962005bed565b51916200e5c1858c62005bed565b51166000526020526001604060002001620067d9565b6200e556565b509350916200c727915062005b81565b909192602082015160268110156200409c57600c036200e73c57606060408301510151926200e61c84620154d5565b60005b84518110156200e4fb5760e06200e63f8260606040880151015162005bed565b510151156200e6c5576200e6676200e6608260606040880151015162005bed565b5162006e4d565b62027115548060001981011162005b91576200e6896005916000190162006d7a565b5001805461ff0019166101001790556202711554906000198201821062005b91576005620094486200e6bf936000190162006d7a565b6200e61f565b6200e6e46200e6dd8260606040880151015162005bed565b5162006e29565b62027116548060001981011162005b91576200e7066005916000190162006cfe565b5001805461ff0019166101001790556202711654906000198201821062005b91576005620094486200e6bf936000190162006cfe565b929190602081015160268110156200409c57600d036200e885576040019260206200e76c60a08651015162005ba7565b5194510151916200e781855184511462015dd4565b60005b85518110156200e5dd57806200e79f6200e819928662005bed565b51156200e81f576200e7c36200e7b6828962005bed565b5162027115541162015e6c565b6200e7ef60ff60056200e7e26200e7db858c62005bed565b5162006d7a565b50015460081c1662015ec3565b6200e80760ff6005620095a66200e7db858c62005bed565b6005620095c26200e7db838a62005bed565b6200e784565b6200e83c6200e82f828962005bed565b5162027116541162015e6c565b6200e85b60ff60056200e7e26200e854858c62005bed565b5162006cfe565b6200e87360ff6005620095a66200e854858c62005bed565b6005620095c26200e854838a62005bed565b602081015160268110156200409c57600e036200e9bd576040019260206200e8b260a08651015162005ba7565b5194510151916200e8c7855184511462015dd4565b60005b85518110156200e5dd57806200e8e56200e958928662005bed565b51156200e95e576200e9096200e8fc828962005bed565b5162027115541162015fa7565b6200e92e60ff60056200e9216200e7db858c62005bed565b50015460081c1662016019565b6200e94660ff6005620097006200e7db858c62005bed565b6005620094486200e7db838a62005bed565b6200e8ca565b6200e97b6200e96e828962005bed565b5162027116541162015fa7565b6200e99360ff60056200e9216200e854858c62005bed565b6200e9ab60ff6005620097006200e854858c62005bed565b6005620094486200e854838a62005bed565b909192602082015160268110156200409c57600f036200eafe57606060408301510151926200e9ec84620154d5565b60005b84518110156200e4fb5760e06200ea0f8260606040880151015162005bed565b510151156200ea8e576200ea306200e6608260606040880151015162005bed565b62027115548060001981011162005b91576200ea526005916000190162006d7a565b5001805461ff0019166101001790556202711554906000198201821062005b91576005620095c26200ea88936000190162006d7a565b6200e9ef565b6200eaa66200e6dd8260606040880151015162005bed565b62027116548060001981011162005b91576200eac86005916000190162006cfe565b5001805461ff0019166101001790556202711654906000198201821062005b91576005620095c26200ea88936000190162006cfe565b929190602081015160268110156200409c576010036200ec475760400151926200eb3160a0608086015195015162005ba7565b51916200eb46855184511462001929620174fa565b60005b85518110156200e5dd57806200eb646200ebda928862005bed565b516200eb708162004eaa565b6200eb7c828762005bed565b51906200eb898162004eaa565b6200eba06200eb976201765c565b82151562005b4e565b6200ebab8162004eaa565b600181036200ebe057506200ebcf6200ebc36201765c565b61271083111562005b4e565b6202711e5562005b81565b6200eb49565b6200ebeb8162004eaa565b600281036200ec0057506202711f5562005b81565b6200ec0b8162004eaa565b600381036200ec205750620271205562005b81565b806200ec2e60049262004eaa565b146200ec3b575062005b81565b6202712155386200a911565b602081015160268110156200409c576011036200ef0457604001906200ec7860a06200e45460c08551015162005ba7565b51936200ec898351865114620153e2565b60005b83518110156200ed0a576200ed04906200ece46001600160a01b03806200ecb4848962005bed565b51166000526202711890816020526200ecd86040600020546200733c868d62005bed565b93906200192962017499565b6200ecf0848962005bed565b511660005260205260406000205562005b81565b6200ec8c565b509350906200ed199062017121565b906202711954936200ed31620085978451876201542e565b9060009260005b8781106200eec6575060005b85518110156200edf8576000805b8981106200eda9575b50156200ed74575b6200ed6e9062005b81565b6200ed44565b936200eda06200ed6e916001600160a01b036200ed92888a62005bed565b51166200200d828862005bed565b9490506200ed63565b6200edb48162005e99565b906001600160a01b03918291549060031b1c16906200edd4858b62005bed565b5116146200eded576200ede79062005b81565b6200ed52565b50506001386200ed5b565b5095509392506200ee098262005d44565b8051906001600160401b03821162003f1a576020906200ee298362006014565b016202711960005260005b8281106200ee885750505060005b8281106200ee58575050506200c7279062005b81565b806200054f6001600160a01b036200ee756200ee82948662005bed565b511662001f308362005e99565b6200ee42565b60019060206001600160a01b03845116930192817fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10155016200ee34565b936200eef76200eefe916001600160a01b036200eee38862005e99565b90549060031b1c166200200d828862005bed565b9462005b81565b6200ed38565b602081949294015160268110156200409c576012036200f16f57604001906200ef3860a06200e45460c08551015162005ba7565b51936200ef498351865114620153e2565b60005b83518110156200ef9e576200ef98906200ece46001600160a01b03806200ef74848962005bed565b51166000526202711890816020526200ecd860406000205462008299868d62005bed565b6200ef4c565b50935091906200efae9062017121565b62027119546200efbe8162005d44565b906000926000915b8083106200f08c575050506200efdc8262005d44565b8051906001600160401b03821162003f1a576020906200effc8362006014565b016202711960005260005b8281106200f04e5750505060005b8281106200f02b575050506200c7279062005b81565b806200054f6001600160a01b036200ee756200f048948662005bed565b6200f015565b60019060206001600160a01b03845116930192817fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10155016200f007565b91956000959193959760005b85518110156200f160576200f0ad8962005e99565b906001600160a01b03918291549060031b1c16906200f0cd838962005bed565b5116146200f0e6576200f0e09062005b81565b6200f098565b509750956001959391955b806200f12d575b156200f110576200f1099062005b81565b916200efc6565b936200eef76200f109916001600160a01b036200eee38862005e99565b506001600160a01b036200f1418262005e99565b90549060031b1c1660005262027118602052604060002054156200f0f8565b5097969096959391956200f0f1565b602081949394015160268110156200409c576013036200f2135760408091015101519160005b83518110156200e334576200f1ab818562005bed565b51906202711754600160401b81101562003f1a576001810180620271175581101562005bb5576200f20d9260076200054f9262027117600052027f08f37177f6a5732df494aeff73d589b534878a053b84dfe1e41c467868b7c9fd01620168c1565b6200f195565b60208194939294015160268110156200409c576014036200f75857604001906200f24260c08351015162005ba7565b51936200f25960a062007c9f818651015162005ba7565b51916200f26a8651855114620160fd565b6200f27986518451146201616f565b60005b86518110156200f375576200f292818562005bed565b516200f29f828762005bed565b519061271082101562005bb557620138996200f2c19260031b01549062007088565b906200f2ce838862005bed565b519161271083101562005bb557620138996200f2ef9360031b015562016238565b6200f2fb818562005bed565b516200f308828762005bed565b519061271082101562005bb557620138966200f332926001600160a01b036200c2b0868d62005bed565b91906200f340828862005bed565b519061271082101562005bb5576200f36f93620138966200054f936001600160a01b036200c306878f62005bed565b6200f27c565b50926200f38c9192506200899b909594956201723d565b916040516200f39b8162003fbd565b6000815260003681376000945b80518610156200c715576200f3be868262005bed565b51610360526200f3cf855162005d44565b966000946200f3df845162005d44565b6105805260009460005b88518110156200f4b3578a896200f4196001600160a01b036200f40d858462005bed565b51166103605162017072565b15806200f46a575b6200f43a575b50506200f4349062005b81565b6200f3e9565b986200f45f916200200d826001600160a01b036200c40e879e976200f4349862005bed565b9790508a896200f427565b50505061271061036051101562005bb5576001600160a01b036200f48f828b62005bed565b5116600052620138966103605160031b016020528a8960406000205415156200f421565b50909895979498969291939660005b88518110156200f5525761271061036051101562005bb5576001600160a01b03806200f4ef838c62005bed565b5116600052620138966103605160031b01602052604060002054156200f522575b506200f51c9062005b81565b6200f4c2565b819b6200f54a916200f5396200f51c948d62005bed565b51166200200d826105805162005bed565b9a906200f510565b5098509695929190939661036051612710811015806105205262005bb55760031b620138970154986200f58a62008597898c6201542e565b61022052600061056052600060a0525b6105205162005bb55760a0518a8110156200f65f576200f5d06200f5ee91600061052052620138976103605160031b0162005f0b565b91906001600160a01b03928391549060031b1c1661058051620170cc565b156200f60c575b506200f60360a05162005b81565b60a0526200f59a565b6000610520526200f62b60a051620138976103605160031b0162005f0b565b90549060031b1c166200f645610560516102205162005bed565b526200f6546105605162005b81565b61056052386200f5f5565b50979294959093985095909560005b8281106200f70c575050506105205162005bb55761022051516001600160401b03811162003f1a576200f6ad81620138976103605160031b016200611d565b60206102205101620138976103605160031b01600052602060002060005b8381106200f6ee57505050506200f6e29062005b81565b9492959091956200f3a8565b60019060206001600160a01b0385511694019381840155016200f6cb565b806001600160a01b036200f7256200f752938562005bed565b51166200f739610560516102205162005bed565b526200f7486105605162005b81565b6105605262005b81565b6200f66e565b92602084015160268110156200409c576015036200fd105760408401906200f78560c08351015162005ba7565b51906200f79c60a062007c9f818651015162005ba7565b51936200f7b1835185511462001929620174fa565b6200f7c4835186511462001929620174fa565b60005b83518110156200f824576200f7dd818662005bed565b519061271082101562005bb557620138966200f81e926001600160a01b038b511660005260031b016020526200054f6040600020546200822b838a62005bed565b6200f7c7565b509095919560005b87518110156200f95d576200f842818662005bed565b5161271081101562005bb55762013896906001600160a01b0386511660005260031b016020526200f87e60406000205462008299838962005bed565b906200f88b838862005bed565b519161271083101562005bb557620138966200f8c6936001600160a01b0389511660005260031b016020526040600020556200192962017621565b6200f8d2818662005bed565b5161271081101562005bb55762013896906001600160a01b036200f8f7848c62005bed565b511660005260031b016020526200f9196040600020546200733c838962005bed565b91906200f927828862005bed565b519061271082101562005bb5576200f95793620138966200054f936001600160a01b036200caed8f889062005bed565b6200f82c565b509194935091620089a26200f972916201723d565b926001600160a01b03604051956200f98a8762003fa1565b600187526020368189013751166200f9a28662005ba7565b526000905b86518210156200cec2576200f9bd828862005bed565b51610160526200f9ce855162005d44565b966000946200f9de885162005d44565b6101c05260009460005b88518110156200fab2578a896200fa186001600160a01b036200fa0c858462005bed565b51166101605162017072565b15806200fa69575b6200fa39575b50506200fa339062005b81565b6200f9e8565b986200fa5e916200200d826001600160a01b036200c40e879e976200fa339862005bed565b9790508a896200fa26565b50505061271061016051101562005bb5576001600160a01b036200fa8e828b62005bed565b5116600052620138966101605160031b016020528a8960406000205415156200fa20565b509098949897969291939760005b88518110156200fb565761271061016051101562005bb5576001600160a01b036200faec828b62005bed565b5116600052620138966101605160031b01602052604060002054156200fb1e575b6200fb189062005b81565b6200fac0565b996200fb4d6200fb18916001600160a01b036200fb3c8e8d62005bed565b51166200200d826101c05162005bed565b9a90506200fb0d565b50985096949392919561016051612710811015806106205262005bb55760031b620138970154966200fb8d62008597878a6201542e565b996000996000610700525b6106205162005bb557610700518a8110156200fc43576001600160a01b036200fbd76200fbe992600061062052620138976101605160031b0162005f0b565b90549060031b1c166101c051620170cc565b156200fc08575b6200fbfe6107005162005b81565b610700526200fb98565b996200fc3c906000610620528c6200200d826001600160a01b036200864061070051620138976101605160031b0162005f0b565b996200fbf0565b509a939794969299919850946000915b8383106200fcec57505050506106205162005bb5578051906001600160401b03821162003f1a576020906200fc9483620138976101605160031b016200611d565b01620138976101605160031b01600052602060002060005b8381106200fcce57505050506200fcc39062005b81565b90929591956200f9a7565b60019060206001600160a01b0385511694019381840155016200fcac565b620087236200fd09916001600160a01b0362009a30868662005bed565b916200fc53565b909192602081015160268110156200409c576016036200fdd25760c060406200fd3d920151015162005ba7565b519160005b83518110156200e334576001600160a01b036200fd60828662005bed565b511690620271225491600160401b83101562003f1a576001830180620271225583101562005bb5576200fdcc92620271226000527f1f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a201906001600160a01b031982541617905562005b81565b6200fd42565b602081015160268110156200409c576017036200fe3f57608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203233206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c576018036200ff0f5760c060406200fe69920151015162005ba7565b5191600160ff1962027125541617620271255560005b83518110156200e334576001600160a01b036200fe9d828662005bed565b511690620271245491600160401b83101562003f1a576001830180620271245583101562005bb5576200ff0992620271246000527f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece801906001600160a01b031982541617905562005b81565b6200fe7f565b60208194929394015160268110156200409c576019036200ff37575b506200c7279062005b81565b602081015160268110156200409c57601a03620100c85760a060406200ff61920151015162005ba7565b51906200ff726003835114620153e2565b6200ff7d8262005ba7565b516200ff8d6200a8a88462005bcb565b519262010084576200c727926001036201007d576200ffb56201001f91620271205462007088565b6202712055604051906200ffc98262003f69565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f7720776860208301527f656e2070726f63657373696e6720636173680000000000000000000000000000604083015262005b4e565b6201007662010032620271215462007075565b620271215560405190620100468262003fa1565b601a82527f6469766964656e647320636f756e746572206f766572666c6f77000000000000602083015262005b4e565b906200ff2b565b5062010076565b606460405162461bcd60e51b815260206004820152601460248201527f496e76616c6964207061796d656e7420747970650000000000000000000000006044820152fd5b602081015160268110156200409c57601b03620106f0575091906202711e54620100f56200a9906201733b565b62027121546202711f541115620101166201010f620173c2565b8262005b4e565b62027120549062010128838362006fe1565b50506201013462017423565b506000805b61271082106201063c575b505090620101746201017a93926201016a6201015f6201733b565b612710861062005b4e565b62001929620173c2565b62006fe1565b90506201018662017423565b5060009060005b612710811062010564575b5090612710620101a9920462007159565b9050620101ba6202712a5462005d44565b906000946000905b61271082101562010557578160031b9460ff6201389a87015416156201031e5760009662013895870154156201030d57600098975b62005bb55762013897870154891015620102f3576201021c8962013897890162005f0b565b90549060031b1c6001600160a01b03169788600052620138968801602052604098868a60002054906201024f9162006fe1565b9a906201025b62017423565b620102669162005b4e565b60009a620138958b01546201027b9162006fe1565b91906201028762017423565b620102929162005b4e565b826000526202711a60205260002090815490620102af9162007088565b909155620102bc62017423565b620102c79162005b4e565b620102d3828962005bed565b52620102df9062005b81565b98620102eb9062005b81565b9897620101f7565b92909550620103059196975062005b81565b9094620101c2565b929095506201030591965062005b81565b95969392509350505b620103328262005d44565b9160009160005b828110620104c2575050506202711b54916201035a6200859784846201542e565b926000906000905b8082106201049d57505060005b8381106201040857505050508051906001600160401b03821162003f1a576020906201039b836200606c565b016202711b60005260005b828110620103ca575050506200c72790600062027120556000620271215562010076565b60019060206001600160a01b03845116930192817fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f399015501620103a6565b6000805b83811062010455575b50156201042e575b620104289062005b81565b6201036f565b906201044c62010428916001600160a01b0362009a30858762005bed565b9190506201041d565b6001600160a01b03806201046a858862005bed565b51169062010479838a62005bed565b51161462010492576201048c9062005b81565b6201040c565b505060013862010415565b909162008723620104bb916001600160a01b0362009dc28662005ed2565b9062010362565b6000805b8581106201050f575b5015620104e8575b620104e29062005b81565b62010339565b9262010506620104e2916001600160a01b0362009a30878662005bed565b939050620104d7565b6001600160a01b038062010524858762005bed565b51169062010533838a62005bed565b5116146201054c57620105469062005b81565b620104c6565b5050600138620104cf565b9394959291505062010327565b90918160039695961b60ff6201389a8201541615620106305762013895810154620138978201546000928391825b818410620105ce575050505062007b33620105c593620105bd6200054f9796946200713f9462006fe1565b929062006e71565b9493946201018d565b94929462005bb5576201062985620106216001600160a01b03620105fc6200054f9962013897880162005f0b565b90549060031b1c16956000966000526201389686016020526040600020549062007088565b979062007003565b9262010592565b50919094939462010198565b8160039897981b60ff6201389a8201541615620106e6576201389581015490600062013897820154916000926000925b818410620106a9575050505062007b336201069f936200adbf846201017462006f2d6200adcb966200054f9a9862006fe1565b9096959662010139565b93929362005bb557620106df84620106d76001600160a01b03620105fc6200054f9862013897880162005f0b565b969062007003565b926201066c565b5096959662010144565b602081015160268110156200409c57601c036201075d57608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203238206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c57601d0362010781575b506200c7279062010076565b602081015160268110156200409c57601e146201077557602081015160268110156200409c57601f0362010825576040620107bf9101515162005ba7565b51906202712354600160401b81101562003f1a576001810180620271235581101562005bb5576200c727926201081e91620271236000527f4ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b122401620067d9565b9062010775565b602081015160268110156200409c5760200362010849575b506200c727906201081e565b602081015160268110156200409c576021146201083d57602081015160268110156200409c57602203620108f0575060ff19620271255416620271255562027124546000620271245580620108a7575b506200c727905b906201083d565b620271246000527f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece8908101905b818110620108e3575062010899565b60008155600101620108d4565b602081015160268110156200409c5760230362010914575b506200c72790620108a0565b602081015160268110156200409c576024146201090857602081015160268110156200409c576025146201090857929091602084015160268110156200409c5760150362010f0f5760408401906201097160c08351015162005ba7565b51906201098860a062007c9f818651015162005ba7565b51936201099d835185511462001929620174fa565b620109b0835186511462001929620174fa565b60005b835181101562010a1057620109c9818662005bed565b519061271082101562005bb5576201389662010a0a926001600160a01b038b511660005260031b016020526200054f6040600020546200822b838a62005bed565b620109b3565b509095919560005b875181101562010b495762010a2e818662005bed565b5161271081101562005bb55762013896906001600160a01b0386511660005260031b0160205262010a6a60406000205462008299838962005bed565b9062010a77838862005bed565b519161271083101562005bb5576201389662010ab2936001600160a01b0389511660005260031b016020526040600020556200192962017621565b62010abe818662005bed565b5161271081101562005bb55762013896906001600160a01b0362010ae3848c62005bed565b511660005260031b0160205262010b056040600020546200733c838962005bed565b919062010b13828862005bed565b519061271082101562005bb55762010b4393620138966200054f936001600160a01b036200caed8f889062005bed565b62010a18565b509194935091620089a262010b5e916201723d565b926001600160a01b036040519562010b768762003fa1565b6001875260203681890137511662010b8e8662005ba7565b526000905b865182101562010efc5762010ba9828862005bed565b516106605262010bba855162005d44565b9660009462010bca885162005d44565b6106e05260009460005b885181101562010c9e578a8962010c046001600160a01b0362010bf8858462005bed565b51166106605162017072565b158062010c55575b62010c25575b505062010c1f9062005b81565b62010bd4565b9862010c4a916200200d826001600160a01b036200c40e879e9762010c1f9862005bed565b9790508a8962010c12565b50505061271061066051101562005bb5576001600160a01b0362010c7a828b62005bed565b5116600052620138966106605160031b016020528a89604060002054151562010c0c565b509098949897969291939760005b885181101562010d425761271061066051101562005bb5576001600160a01b0362010cd8828b62005bed565b5116600052620138966106605160031b016020526040600020541562010d0a575b62010d049062005b81565b62010cac565b9962010d3962010d04916001600160a01b0362010d288e8d62005bed565b51166200200d826106e05162005bed565b9a905062010cf9565b50985096949392919561066051612710811015806104005262005bb55760031b6201389701549662010d7962008597878a6201542e565b9960009960006105c0525b6104005162005bb5576105c0518a81101562010e2f576001600160a01b0362010dc362010dd592600061040052620138976106605160031b0162005f0b565b90549060031b1c166106e051620170cc565b1562010df4575b62010dea6105c05162005b81565b6105c05262010d84565b9962010e28906000610400528c6200200d826001600160a01b03620086406105c051620138976106605160031b0162005f0b565b9962010ddc565b509a939794969299919850946000915b83831062010ed857505050506104005162005bb5578051906001600160401b03821162003f1a5760209062010e8083620138976106605160031b016200611d565b01620138976106605160031b01600052602060002060005b83811062010eba575050505062010eaf9062005b81565b909295919562010b93565b60019060206001600160a01b03855116940193818401550162010e98565b6200872362010ef5916001600160a01b0362009a30868662005bed565b9162010e3f565b9295505092506200c72791509062010908565b606460405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206f7065726174696f6e2074797065000000000000000000006044820152fd5b5091905062010f62816201486e565b9060068110156200409c576002810362010fce5760405162461bcd60e51b815260206004820152602a60248201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560448201526967696e2073797374656d60b01b6064820152608490fd5b600381036201109a5750303b1562003ee4579060405180927f74579b180000000000000000000000000000000000000000000000000000000082526044820160406004840152815180915260206064840192019060005b81811062011080575050506201104b8291600094600319848303016024850152620055c7565b038183305af180156201107457620110605750565b6001600160401b03811162003f1a57604052565b6040513d6000823e3d90fd5b825184528694506020938401939092019160010162011025565b6005915014620110a75750565b906000905b602083015180518310156200b5b45782620110c79162005bed565b51602081015160268110156200409c57156200b57057602081015160268110156200409c576001036201130657604001906201110860c08351015162005ba7565b51936201111f60a062007c9f818651015162005ba7565b5191620111308651855114620160fd565b6201113f86518451146201616f565b60005b8651811015620112945762011158818662005bed565b5161271081101562005bb557600160ff60076201117e9360031b015416151514620161e1565b6201118a818562005bed565b5162011197828762005bed565b519061271082101562005bb5576006620111b79260031b01549062007088565b90620111c4838862005bed565b519161271083101562005bb5576006620111e39360031b015562016238565b620111ef818562005bed565b51620111fc828762005bed565b519061271082101562005bb55760036201123c926001600160a01b0362011224868d62005bed565b5116600052811b016020526040600020549062007088565b91906201124a828862005bed565b519061271082101562005bb5576201128e9360036200054f936001600160a01b0362011277878f62005bed565b5116600052811b01602052604060002055620162aa565b62011142565b50949150916200838a620112a8916201723d565b9360405192620112b88462003fbd565b60008452600036813760005b8351811015620112e957806200054f62007e66620112e3938762005bed565b620112c4565b5094509260209250620112fd915062005b81565b919050620110ac565b909192602082015160268110156200409c576002036201149d57604080920190815193845191620113406200c76a60a08098015162005ba7565b51948351875103620080fd578351855103620080945783518651036200802b575060005b865181101562011487576201137a818862005bed565b5161271081101562005bb55760ff60076201139c9260031b015416156201631b565b620113a8818862005bed565b5161271081101562005bb55760031b600701805460ff19166001179055620113d1818562005bed565b51620113de828962005bed565b519061271082101562005bb5576005620113fc9260031b01620067d9565b62011408818662005bed565b5162011415828962005bed565b5161271081101562005bb55760031b6001015562011434818762005bed565b5162011441828962005bed565b5161271081101562005bb55760031b6002015562011460818862005bed565b519061271082101562005bb55760006006620114819360031b015562005b81565b62011364565b50959150935060209250620112fd915062005b81565b929190602081015160268110156200409c57600303620114ca57602091926200054f620112fd9262016367565b602081015160268110156200409c576004036201176f57620114f460c06040830151015162005ba7565b51936201150960c06040840151015162005bcb565b51906201153060a06040620115248282880151015162005ba7565b51950151015162005bcb565b519362011545875184511462001929620174fa565b62011558875185511462001929620174fa565b6201156b875186511462001929620174fa565b60005b8751811015620115d35762011584818662005bed565b519061271082101562005bb5576003620115cd926001600160a01b03620115ac848d62005bed565b5116600052811b016020526200054f6040600020546200822b838a62005bed565b6201156e565b509095919593929360005b83518110156201172c57620115f4818762005bed565b5161271081101562005bb5576003906001600160a01b0362011617848862005bed565b5116600052811b016020526201163860406000205462008299838862005bed565b9062011645838962005bed565b519161271083101562005bb557600362011688936001600160a01b036201166d878b62005bed565b5116600052811b016020526040600020556200192962017621565b62011694818762005bed565b5161271081101562005bb5576003906001600160a01b03620116b7848c62005bed565b5116600052811b01602052620116d86040600020546200733c838862005bed565b919050620116e7818862005bed565b519161271083101562005bb557600362011726936001600160a01b036201170f858e62005bed565b5116600052811b0160205260406000205562005b81565b620115de565b50936201174691929693506200899b620089a2916201723d565b9260005b8351811015620112e957806200054f62007e6662011769938762005bed565b6201174a565b92602084015160268110156200409c576005036201193e576201179a60a06040860151015162005ba7565b5190620117af60a06040870151015162005bcb565b519282518451036200da155760005b83518110156201181857620117d4818562005bed565b519061271082101562005bb557600362011812926001600160a01b038a5116600052811b016020526200054f6040600020546200822b838962005bed565b620117be565b509060005b8351811015620118bd5762011833818562005bed565b5161271081101562005bb5576003906001600160a01b03895116600052811b016020526201186c60406000205462008299838862005bed565b91906201187a828762005bed565b519061271082101562005bb557620118b79360036200054f936001600160a01b038d5116600052811b016020526040600020556200192962017621565b6201181d565b5094925090620118cd906201723d565b906001600160a01b0360405193620118e58562003fa1565b60018552602036818701375116620118fd8462005ba7565b52604051946201190d8662003fbd565b60008652600036813760005b8351811015620112e957806200054f62007e6662011938938762005bed565b62011919565b92602081015160268110156200409c5760060362011af4576040016201196960c08251015162005ba7565b51936201198060a062008a0b818551015162005ba7565b519285518351036200e0335785518451036200dfc95760005b8651811015620119fe57620119af818562005bed565b519061271082101562005bb5576003620119f8926001600160a01b03620119d7848c62005bed565b5116600052811b016020526200054f6040600020546200822b838962005bed565b62011999565b509060005b865181101562011a9e5762011a19818562005bed565b5161271081101562005bb5576003906001600160a01b0362011a3c848b62005bed565b5116600052811b0160205262011a5d60406000205462008299838862005bed565b919062011a6b828762005bed565b519061271082101562005bb55762011a989360036200054f936001600160a01b036201166d878f62005bed565b62011a03565b50949162011ab39193506200838a906201723d565b916040519462011ac38662003fbd565b60008652600036813760005b8351811015620112e957806200054f62007e6662011aee938762005bed565b62011acf565b602081015160268110156200409c5760070362011c07576040019262011b1f60c08551015162005ba7565b519162011b3160a08651015162005ba7565b519451519162011b49845187511462001929620174fa565b60005b8451811015620112e95762011c01906200054f6001600160a01b038062011b74848a62005bed565b51166000528660028b62011bf162011bb48762011bac8162013880978860205262008f6360ff604060002054161562001929620175e6565b519362005bed565b519162008fdf8d6040519662011bca8862003efe565b60018852886200e1998c60208b01946000865260408c0197885260608c01998a5262005bed565b5191015562008ffa838962005bed565b62011b4c565b602081949394015160268110156200409c5760080362011c9f5760c0604062011c34920151015162005ba7565b519160005b835181101562011c8d5762011c87906001600160a01b038062011c5d838862005bed565b51166000526201388090816020526200e2d1600160ff604060002054161515146200192962017535565b62011c39565b50926020919250620112fd9062005b81565b602081015160268110156200409c5760090362011d225760c0604062011cc9920151015162005ba7565b519160005b835181101562011c8d5762011d1c906001600160a01b038062011cf2838862005bed565b51166000526201388090816020526200e3c0600160ff604060002054161515146200192962017535565b62011cce565b602081015160268110156200409c57600a0362011dd1576040019062011d5360a06200e45460c08551015162005ba7565b519262011d68835185511462001929620174fa565b60005b835181101562011dbe5762011db8906001600160a01b038062011d8f838862005bed565b511660005262013880806020526200e4c4600160ff604060002054161515146200192962017535565b62011d6b565b5093620112fd9193506020925062005b81565b60208194939294015160268110156200409c57600b0362011e85576040019262011e0060c08551015162005ba7565b519351519162011e18855184511462001929620174fa565b60005b855181101562011e725762011e6c906200054f6001600160a01b038062011e43848b62005bed565b511660005262013880806020526200e5a7600160ff604060002054161515146200192962017535565b62011e1b565b5093509160209150620112fd9062005b81565b909192602082015160268110156200409c57600c0362011fc6576060604083015101519262011eb484620154d5565b60005b845181101562011dbe5760e062011ed78260606040880151015162005bed565b5101511562011f565762011ef8620093f38260606040880151015162005bed565b62013882548060001981011162005b915762011f1a6005916000190162006d3c565b5001805461ff0019166101001790556201388254906000198201821062005b915760056200944862011f50936000190162006d3c565b62011eb7565b62011f6e620094728260606040880151015162005bed565b62013882548060001981011162005b915762011f906005916000190162006cc0565b5001805461ff0019166101001790556201388254906000198201821062005b915760056200944862011f50936000190162006cc0565b929190602081015160268110156200409c57600d03620120da5760400192602062011ff660a08651015162005ba7565b5194510151916201200b855184511462015dd4565b60005b855181101562011e7257806201202962012082928662005bed565b51156201208857620120406200956b828962005bed565b6201205860ff60056200e7e26200958d858c62005bed565b6201207060ff6005620095a66200958d858c62005bed565b6005620095c26200958d838a62005bed565b6201200e565b62012098620095fa828962005bed565b620120b060ff60056200e7e26200961c858c62005bed565b620120c860ff6005620095a66200961c858c62005bed565b6005620095c26200961c838a62005bed565b602081949294015160268110156200409c57600e03620121a1576040019060206201210a60a08451015162005ba7565b5192510151936201211f835186511462015dd4565b60005b835181101562011e7257806201213d62012149928862005bed565b516201214f5762005b81565b62012122565b6201215f620096b8828762005bed565b6201217760ff60056200e9216200958d858a62005bed565b6201218f60ff6005620097006200958d858a62005bed565b6005620094486200958d838862005bed565b90602082949394015160268110156200409c57600f03620122e35760606040830151015192620121d184620154d5565b60005b845181101562011dbe5760e0620121f48260606040880151015162005bed565b51015115620122735762012215620093f38260606040880151015162005bed565b62013882548060001981011162005b9157620122376005916000190162006d3c565b5001805461ff0019166101001790556201388254906000198201821062005b91576005620095c26201226d936000190162006d3c565b620121d4565b6201228b620094728260606040880151015162005bed565b62013882548060001981011162005b9157620122ad6005916000190162006cc0565b5001805461ff0019166101001790556201388254906000198201821062005b91576005620095c26201226d936000190162006cc0565b90602081949394015160268110156200409c57601003620123545760400151906201231760a0608084015193015162005ba7565b51936201232c835186511462001929620174fa565b60005b835181101562011e7257806200054f620098ad6201234e938762005bed565b6201232f565b602081949294015160268110156200409c57601103620125da57604001906201238860a06200e45460c08551015162005ba7565b5193620123998351865114620153e2565b60005b835181101562012414576201240e906200054f6001600160a01b0380620123c4848962005bed565b51166000526201388580602052620123e76040600020546200733c868d62005bed565b919092620123f6868b62005bed565b51166000526020526040600020556200192962017499565b6201239c565b50935090620124239062017121565b906201388654936201243b620085978451876201542e565b9060009260005b878110620125b7575060005b8551811015620124f4576000805b898110620124a5575b50156201247e575b620124789062005b81565b6201244e565b936201249c62012478916001600160a01b036200ed92888a62005bed565b9490506201246d565b620124b08162005db5565b906001600160a01b03918291549060031b1c1690620124d0858b62005bed565b511614620124e957620124e39062005b81565b6201245c565b505060013862012465565b509550939250620125058262005d44565b8051906001600160401b03821162003f1a57602090620125258362005f95565b016201388660005260005b828110620125795750505060005b8281106201255657505050620112fd60209162005b81565b806200054f6001600160a01b0362001f2362012573948662005bed565b6201253e565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa401550162012530565b936200eef7620125d4916001600160a01b036200eee38862005db5565b62012442565b602081949294015160268110156200409c576012036201284657604001906201260e60a06200e45460c08551015162005ba7565b51936201261f8351865114620153e2565b60005b835181101562012673576201266d906200054f6001600160a01b03806201264a848962005bed565b51166000526201388580602052620123e760406000205462008299868d62005bed565b62012622565b5093509190620126839062017121565b6201388654620126938162005d44565b906000926000915b8083106201276357505050620126b18262005d44565b8051906001600160401b03821162003f1a57602090620126d18362005f95565b016201388660005260005b828110620127255750505060005b8281106201270257505050620112fd60209162005b81565b806200054f6001600160a01b0362001f236201271f948662005bed565b620126ea565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa4015501620126dc565b91956000959193959760005b85518110156201283757620127848962005db5565b906001600160a01b03918291549060031b1c1690620127a4838962005bed565b511614620127bd57620127b79062005b81565b6201276f565b509750956001959391955b8062012804575b15620127e757620127e09062005b81565b916201269b565b936200eef7620127e0916001600160a01b036200eee38862005db5565b506001600160a01b03620128188262005db5565b90549060031b1c166000526201388560205260406000205415620127cf565b509796909695939195620127c8565b602081015160268110156200409c576013036201289f5760408091015101519260005b84518110156201288e57806200054f62009e6462012888938862005bed565b62012869565b50925090620112fd60209162005b81565b602081015160268110156200409c5760140362012a4a5760400190620128ca60c08351015162005ba7565b5193620128e160a062007c9f818651015162005ba7565b5191620128f28651855114620160fd565b6201290186518451146201616f565b60005b8651811015620129f5576201291a818562005bed565b5162012927828762005bed565b519061271082101562005bb5576006620129479260031b01549062007088565b9062012954838862005bed565b519161271083101562005bb5576006620129739360031b015562016238565b6201297f818562005bed565b516201298c828762005bed565b519061271082101562005bb5576003620129b4926001600160a01b0362011224868d62005bed565b9190620129c2828862005bed565b519061271082101562005bb557620129ef9360036200054f936001600160a01b0362011277878f62005bed565b62012904565b50949150916200838a62012a09916201723d565b936040519262012a198462003fbd565b60008452600036813760005b8351811015620112e957806200054f62007e6662012a44938762005bed565b62012a25565b9290602084015160268110156200409c5760150362012ffa57604084019062012a7860c08351015162005ba7565b519062012a8f60a062007c9f818651015162005ba7565b519362012aa4835185511462001929620174fa565b62012ab7835186511462001929620174fa565b60005b835181101562012b145762012ad0818662005bed565b519061271082101562005bb557600362012b0e926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b62012aba565b509095919560005b875181101562012c425762012b32818662005bed565b5161271081101562005bb5576003906001600160a01b03865116600052811b0160205262012b6b60406000205462008299838962005bed565b9062012b78838862005bed565b519161271083101562005bb557600362012bb0936001600160a01b03895116600052811b016020526040600020556200192962017621565b62012bbc818662005bed565b5161271081101562005bb5576003906001600160a01b0362012bdf848c62005bed565b5116600052811b0160205262012c006040600020546200733c838962005bed565b919062012c0e828862005bed565b519061271082101562005bb55762012c3c9360036200054f936001600160a01b03620083528f889062005bed565b62012b1c565b509194935091620089a262012c57916201723d565b926001600160a01b036040519562012c6f8762003fa1565b6001875260203681890137511662012c878662005ba7565b526000905b865182101562012fe55762012ca2828862005bed565b516101005262012cb3855162005d44565b9660009462012cc3885162005d44565b6101805260009460005b885181101562012d94578a8962012cfd6001600160a01b0362012cf1858462005bed565b51166101005162017008565b158062012d4e575b62012d1e575b505062012d189062005b81565b62012ccd565b9862012d43916200200d826001600160a01b036200c40e879e9762012d189862005bed565b9790508a8962012d0b565b50505061271061010051101562005bb5576001600160a01b0362012d73828b62005bed565b5116600052600361010051811b016020528a89604060002054151562012d05565b509098949897969291939760005b885181101562012e355761271061010051101562005bb5576001600160a01b0362012dce828b62005bed565b5116600052600361010051811b016020526040600020541562012dfd575b62012df79062005b81565b62012da2565b9962012e2c62012df7916001600160a01b0362012e1b8e8d62005bed565b51166200200d826101805162005bed565b9a905062012dec565b50985096949392919561010051612710811015806105e05262005bb55760031b600401549662012e6a62008597878a6201542e565b996000996000610540525b6105e05162005bb557610540518a81101562012f1c576001600160a01b0362012eb262012ec49260006105e05260046101005160031b0162005f0b565b90549060031b1c1661018051620170cc565b1562012ee3575b62012ed96105405162005b81565b6105405262012e75565b9962012f159060006105e0528c6200200d826001600160a01b03620086406105405160046101005160031b0162005f0b565b9962012ecb565b509a939794969299919850946000915b83831062012fc157505050506105e05162005bb5578051906001600160401b03821162003f1a5760209062012f6b8360046101005160031b016200611d565b0160046101005160031b01600052602060002060005b83811062012fa3575050505062012f989062005b81565b909295919562012c8c565b60019060206001600160a01b03855116940193818401550162012f81565b6200872362012fde916001600160a01b0362009a30868662005bed565b9162012f2c565b91945050620112fd9194506020925062005b81565b9092602081015160268110156200409c57601603620130585760c0604062013026920151015162005ba7565b519260005b84518110156201288e57806200054f6001600160a01b036200a5dc62013052948962005bed565b6201302b565b602081015160268110156200409c57601703620130c557608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203233206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c57601803620131325760c06040620130ef920151015162005ba7565b5192600160ff1962013892541617620138925560005b84518110156201288e57806200054f6001600160a01b036200a6b96201312c948962005bed565b62013105565b602081939293015160268110156200409c57601903620132bc5760008091604082910160a08082510151805162013283575b505051906001600160a01b03620131886200733560c060e086015195015162005ba7565b511690602083519301915af13d156201327a573d90620131a882620041b8565b91620131b8604051938462003fd9565b82523d6000602084013e5b15620131d75750620112fd60209162005b81565b62005b7d9062013259604051917f5468652063616c6c20746f2074686520636f6e7472616374206973206e6f742060208401527f7375636365737366756c2e2052657475726e20646174613a2000000000000000604084015282815162013248816059946020868601910162004106565b810103603981018452018262003fd9565b60405191829162461bcd60e51b83526020600484015260248301906200412b565b606090620131c3565b6201328e9062005ba7565b51516201329d575b8062013164565b8192506200733590620132b39251015162005ba7565b51903862013296565b602081015160268110156200409c57601a03620133765760a06040620132e6920151015162005ba7565b51620132f66003825114620153e2565b620133018162005ba7565b51916201331a620133128362005bcb565b519262005bdc565b51916201008457602092620112fd926001036200a911576201334562013354916201388d5462007088565b6201388d556200192962017423565b6200054f620133676201388e5462007075565b6201388e55620019296201745e565b602081015160268110156200409c57601b03620137ca57509190620133a76201388b54620070bf6200a9906201733b565b5050620133b362017423565b506000805b61271081106201377e575b5050620133cf6200709a565b620133de6202712a5462005d44565b906000946000905b61271082101562013771578160031b9460ff6007870154161562013536576000966002870154156201352557600098975b62005bb55760048701548910156201350b5762013438896004890162005f0b565b90549060031b1c6001600160a01b0316978860005260038801602052604098868a6000205490620134699162006fe1565b9a906201347562017423565b620134809162005b4e565b60009a60028b0154620134939162006fe1565b91906201349f62017423565b620134aa9162005b4e565b826000526201388760205260002090815490620134c79162007088565b909155620134d462017423565b620134df9162005b4e565b620134eb828962005bed565b52620134f79062005b81565b98620135039062005b81565b989762013417565b929095506201351d9196975062005b81565b9094620133e6565b929095506201351d91965062005b81565b95969392509350505b6201354a8262005d44565b9160009160005b828110620136dc57505050620138885491620135726200859784846201542e565b926000906000905b808210620136b757505060005b8381106201362257505050508051906001600160401b03821162003f1a57602090620135b38362005f3d565b016201388860005260005b828110620135e457505050620112fd60209160006201388d5560006201388e5562005b81565b60019060206001600160a01b03845116930192817ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df015501620135be565b6000805b8381106201366f575b501562013648575b620136429062005b81565b62013587565b906201366662013642916001600160a01b0362009a30858762005bed565b91905062013637565b6001600160a01b038062013684858862005bed565b51169062013693838a62005bed565b511614620136ac57620136a69062005b81565b62013626565b50506001386201362f565b909162008723620136d5916001600160a01b0362009dc28662005d7c565b906201357a565b6000805b85811062013729575b501562013702575b620136fc9062005b81565b62013551565b9262013720620136fc916001600160a01b0362009a30878662005bed565b939050620136f1565b6001600160a01b03806201373e858762005bed565b5116906201374d838a62005bed565b5116146201376657620137609062005b81565b620136e0565b5050600138620136e9565b939495929150506201353f565b8060039594951b9060ff60078301541615620137c0576200adcb62007b336200054f946200adbf620137b79560026200adb58762006ee3565b939293620133b8565b50939293620133c3565b602081015160268110156200409c57601c036201383757608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203238206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c57601d036201385d575b50620112fd60209162005b81565b602081015160268110156200409c57601e146201384f57602081015160268110156200409c57601f03620138ae57602091620138a66200aeb86040620112fd9401515162005ba7565b91506201384f565b602081015160268110156200409c57602003620138d4575b50620112fd602091620138a6565b602081015160268110156200409c57602114620138c657602081015160268110156200409c576022036201392a5750620112fd60209160ff19620138925416620138925562013922620060c4565b9150620138c6565b602081015160268110156200409c5760230362013950575b50620112fd60209162013922565b602081015160268110156200409c576024146201394257602081015160268110156200409c576025146201394257602081015160268110156200409c5760150362010f0f57602091620139a7620112fd9262016367565b915062013942565b60019060206001600160a01b03845116930192817fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f3990155016200c067565b60019060206001600160a01b03845116930192817fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10155016200bf1b565b60016001600160a01b03819216920192835492817f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece801550191906200be6b565b62013a9d90827f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece8918201910162005f24565b386200be3d565b6001808262013ab582948662013fec565b019201920191906200bdfd565b620271236000527f4ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b1224908282015b818301811062013b015750506200bdaf565b8062013b0f60019262006448565b0162013aef565b60016001600160a01b03819216920192835492817f1f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a201550191906200bd7e565b62013b8890827f1f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a2918201910162005f24565b386200bd55565b60019060206001600160a01b03845116930192817f7f4320370b90cfd882bd4442421f8b4dbea0ca3aefc8d29d4787126914d53c5a0155016200bc19565b62013bff90847f7f4320370b90cfd882bd4442421f8b4dbea0ca3aefc8d29d4787126914d53c5a918201910162005f24565b386200bc0d565b60019060206001600160a01b03845116930192817f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c0155016200ba04565b62013c7690847f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c918201910162005f24565b386200b9f8565b8062013c9f9160031b600160ff60078301541615151462013ca5575062005b81565b6200b947565b62013cb96004820162013897830162014185565b6201389a8101600160ff1982541617905580548162013893015560018101546201389482015560028101546201389582015562013cff6005820162013898830162013fec565b620138996006820154910155386200a911565b600660208262013d266001945186620068ac565b019201920191906200b735565b600681810204810362005b9157600683810204830362005b9157620271156000527f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf928360060281015b826006028201811062013d915750506200b705565b806000600692556000600182015562013dad60028201620065b3565b6000600382015562013dc26004820162006448565b600060058201550162013d7c565b600660208262013de46001945186620068ac565b019201920191906200b689565b8060060290600682040362005b91578260060260068104840362005b91576000906202711682527f2a7aa4e7f2fefac7a07702701afb9c202f6f79fb2762c8e42b37a264307667fa92830192015b82811062013e4f5750506200b659565b80826006925582600182015562013e6960028201620065b3565b82600382015562013e7d6004820162006448565b8260058201550162013e3f565b608460405162461bcd60e51b815260206004820152604060248201527f546865206265666f7265206f7065726174696f6e20706c7567696e207379737460448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60a460405162461bcd60e51b815260206004820152604760248201527f546865206265666f7265206f7065726174696f6e20706c7567696e207379737460448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e6720727560648201527f6c65206c697374000000000000000000000000000000000000000000000000006084820152fd5b81811462013fe8578154916001600160401b03831162003f1a5762013faa83836200611d565b60005260206000209060005260206000208154916000925b84841062013fd1575050505050565b600180919201938454928185015501929062013fc2565b5050565b9080821462013fe85762014001815462005221565b906001600160401b03821162003f1a5781906201402b8262014024865462005221565b866200678f565b600090601f83116001146201406457600092620140585750508160011b916000199060031b1c1916179055565b01549050388062006822565b81526020808220858352818320935090601f1985169083905b828210620140b95750509084600195949392106201409f57505050811b019055565b015460001960f88460031b161c191690553880806200686f565b84958192958501548155600180910196019401906201407d565b81811462013fe857815491620140ea8383620064d6565b6000526020600020906000526020600020906000905b8382106201410e5750505050565b806201411d6001928562013fec565b92810192918101910162014100565b81811462013fe85781549162014143838362006564565b6000526020600020906000526020600020906000905b838210620141675750505050565b80620141766001928562013f84565b92810192918101910162014159565b81811462013fe8578154916001600160401b03831162003f1a57620141ab83836200611d565b60005260206000209060005260206000208154916000925b848410620141d2575050505050565b60016001600160a01b0381921692019384549281850155019290620141c3565b81811462013fe85781549162014209838362006564565b6000526020600020906000526020600020906000905b8382106201422d5750505050565b806201423c6001928562014185565b9281019291810191016201421f565b81811462013fe8578154916201426283836200665a565b6000526020600020906000526020600020906000905b838210620142865750505050565b806001918403620142a3575b600780910193019101909162014278565b80548455620142e28280860190830160ff90620142c4828254168462006732565b620142d682825460081c16846200674c565b5460101c16906200676d565b620142f4600280830190860162013f84565b60038085019082018082036201430d575b505062014292565b6201431891620140d3565b6201432a60048083019086016201412c565b6201433c6005808301908601620141f2565b6201434e600680830190860162013fec565b388062014305565b919062006def5780820362014369575050565b60ff600580620053a29462014382848654168262006719565b600185015460018201556201439e60028601600283016201424b565b60038501546003820155620143ba600486016004830162013fec565b019201620143d782825416849060ff801983541691151516179055565b8054835461ff001916600891821c8416151590911b61ff00161783555460101c1662ff0000825491151560101b169062ff00001916179055565b9080821462013fe857908154906000915b60648310620144315750505050565b600180919401928354948184015501919262014422565b9062013882546020600093019081515190620144648262003ffb565b9162014474604051938462003fd9565b80835262014485601f199162003ffb565b013660208401376201449a8351518262006fe1565b90156201480457620144ac9062005d44565b90859284515115620147fb57620144c38262005d44565b965b855151811015620146445760008080805b8681106201455b57509050620144f881620144f2858762005bed565b62005435565b60068110156200409c576003146201451d575b50620145179062005b81565b620144c5565b6000905b8082106201453057506201450b565b909562009dd6620145549162014547898d62005bed565b516200200d828a62005bed565b9062014521565b62014574816201456d878d5162005bed565b5162014c43565b9390948083118062014630575b15620145e7575050918385620145dd575b60068110156200409c5760038e9114620145bd575b5050620145b49062005b81565b919091620144d6565b94620145d4916200200d82620145b4959862005bed565b93908c620145a7565b6000955062014592565b80949295919514806201461c575b15620145a75760068110156200409c5760038e9114620145bd575050620145b49062005b81565b5060068110156200409c57801515620145f5565b5060068610156200409c5785151562014581565b5093505090929350600093845b83518610156201479657620146716201466b878662005bed565b6200670b565b906006808310156200409c5760029283036201469c57505062014695909562005b81565b9462014651565b620146ac6201466b898862005bed565b92818410156200409c5760018094148062014782575b15620146d75750505062014695909562005b81565b620146ec6201466b8a899b9694959b62005bed565b92808410156200409c576004809414928362014756575b50826201472b575b50506201471f575b50620146959062005b81565b95506201469562014713565b909150881015620147415787141538806201470b565b602182634e487b7160e01b6000525260246000fd5b908093508a10156201476d57891415913862014703565b602184634e487b7160e01b6000525260246000fd5b50818310156200409c5780831415620146c2565b92509290935060068210156200409c5760038203620147f2575b620147bb8162005d44565b9360005b828110620147ce575050509190565b80620147df620147ec928462005bed565b516200200d828962005bed565b620147bf565b506000620147b0565b50909392505050565b608460405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201527f73206f766572666c6f77000000000000000000000000000000000000000000006064820152fd5b90620138835460206000930190815151906201488a8262003ffb565b916201489a604051938462003fd9565b808352620148ab601f199162003ffb565b01366020840137620148c08351518262006fe1565b90156201480457620148d29062005d44565b90859284515115620147fb57620148e98262005d44565b965b85515181101562014a575760008080805b8681106201496e575090506201491881620144f2858762005bed565b60068110156200409c576003146201493d575b50620149379062005b81565b620148eb565b6000905b8082106201495057506201492b565b909562009dd6620149679162014547898d62005bed565b9062014941565b620149878162014980878d5162005bed565b5162014cdf565b9390948083118062014a43575b15620149fa575050918385620149f0575b60068110156200409c5760038e9114620149d0575b5050620149c79062005b81565b919091620148fc565b94620149e7916200200d82620149c7959862005bed565b93908c620149ba565b60009550620149a5565b809492959195148062014a2f575b15620149ba5760068110156200409c5760038e9114620149d0575050620149c79062005b81565b5060068110156200409c5780151562014a08565b5060068610156200409c5785151562014994565b5093505090929350600093845b835186101562014b795762014a7e6201466b878662005bed565b906006808310156200409c57600292830362014aa957505062014aa2909562005b81565b9462014a64565b62014ab96201466b898862005bed565b92818410156200409c5760038094148062014b65575b1562014ae45750505062014aa2909562005b81565b62014af96201466b8a899b9694959b62005bed565b92808410156200409c576005809414928362014b4e575b508262014b38575b505062014b2c575b5062014aa29062005b81565b955062014aa262014b20565b9091508810156200409c57871415388062014b18565b908093508a10156200409c57891415913862014b10565b50818310156200409c578083141562014acf565b92509290935060068210156200409c576003820362014bc8575b62014b9e8162005d44565b9360005b82811062014bb1575050509190565b80620147df62014bc2928462005bed565b62014ba2565b50600062014b93565b1562014bd957565b608460405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f75742060448201527f6f662072616e67650000000000000000000000000000000000000000000000006064820152fd5b909160008093819362014c5c6201388254831062014bd1565b60ff600562014c6b8462006d3c565b50015460081c161562014cd357828262014c8792600162014ea1565b62014c93575b50929190565b809450600192935062014ca7915062006d3c565b50015490600362014cc860ff62014cbe8662006d3c565b5054169462006d3c565b500154913862014c8d565b50509150915080918190565b909160008093819362014cf86201388354831062014bd1565b60ff600562014d078462006cc0565b50015460081c161562014cd357828262014d22928262014ea1565b62014d2d5750929190565b809450600192935062014d41915062006cc0565b50015490600362014cc860ff62014d588662006cc0565b5054169462006cc0565b1562014d6a57565b608460405162461bcd60e51b815260206004820152603160248201527f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960448201527f6e646578206f7574206f662072616e67650000000000000000000000000000006064820152fd5b1562014ddc57565b608460405162461bcd60e51b815260206004820152602f60248201527f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460448201527f6578206f7574206f662072616e676500000000000000000000000000000000006064820152fd5b6201388490815481101562005bb557600791600052027f84d95adeb12a1259eb9eb7c14e7511a374a468bb7f8ac3d8ec617dbcd1336deb0190600090565b805482101562005bb5576000526007602060002091020190600090565b909291908015620152105762014ebd6201388254831062014d62565b62014ed9600262014ece8462006d3c565b500154841062014dd4565b8015620151f25762014f09600162014f0085600262014ef88762006d3c565b500162014e84565b50015460ff1690565b62014f148162004eaa565b8062014f24575050505050600090565b62014f2f8162004eaa565b6003810362014f42575050505050600190565b62014f4d8162004eaa565b6004810362014f60575050505050600090565b62014f6b8162004eaa565b60019080820362014f8457505092620056279362015238565b90929362014f928262004eaa565b600280921462014fa8575b505050505050600090565b8215620151d55762014fd18462014fc5838562014ef88a62006d3c565b50015460081c60ff1690565b925b60009586865b62015163575b5062014feb8762005d44565b9760005b88811062015106575050505050620150078262004091565b8183036201506657505091906000915b818310620150255750505090565b9091928062015043575b6201503b909362005b81565b919062015017565b506201503b6201505e62015058858462005bed565b51151590565b90506201502f565b909150620150748262004091565b8103620150cd57509060009182915b818310620150915750505090565b9091928015620150b0575b620150a8909362005b81565b919062015083565b50620150a8620150c562015058858462005bed565b90506201509c565b60039150620150dc8162004091565b14620150ef575038808080808062014f9d565b6201510262015058620056279262005ba7565b1590565b808a62015142620151396201512f848b620151278c8262014ef88d62006cc0565b500162005f0b565b90549060031b1c90565b86868962014ea1565b620151566201515d946200054f9362005bed565b9015159052565b62014fef565b8462015175858262014ef88662006cc0565b500154811015620151cf576201519b6201512f828762015127888262014ef88962006cc0565b620151b4575b620151ad879162005b81565b9062014fd9565b96620151ad620151c5889262005b81565b98915050620151a1565b62014fdf565b620151eb8462014fc5838562014ef88a62006cc0565b9262014fd3565b6201520a600162014f0085600262014ef88762006cc0565b62014f09565b620152216201388354831062014d62565b62015232600262014ece8462006cc0565b62014ed9565b90929160036201528a9183600014620153125760ff60016201526187600262014ef88662006d3c565b50015460101c16945b84156201530157600262014ef8620152829362006d3c565b500162005565565b91603d8110156200409c57602c8103620152d1575050620152b46200733560208093015162005ba7565b5191015160268110156200409c57620152cd90620176d2565b1490565b90929060018103620152e65750505050600090565b600314620152f657505050600090565b620056279262015382565b600262014ef8620152829362006cc0565b60ff60016201532887600262014ef88662006cc0565b50015460101c16946201526a565b156201533e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f70657261746f722061646472657373206973206e6f742070726f76696465646044820152fd5b919060406200733592016201539c60018251511462015336565b620153b76001620153ae835162005ba7565b51511462015336565b620153cd6001600160a01b039384925162005ba7565b51169215620153dc5751161490565b51161490565b15620153ea57565b606460405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206e756d626572206f6620706172616d6574657273000000006044820152fd5b9190820180921162005b9157565b620154478162004eaa565b620154556200eb976201765c565b620154608162004eaa565b600181036201547f5750620154786200ebc36201765c565b6201388b55565b6201548a8162004eaa565b600281036201549b57506201388c55565b620154a68162004eaa565b60038103620154b757506201388d55565b80620154c560049262004eaa565b14620154ce5750565b6201388e55565b9060005b825181101562015dcf5760e0620154f1828562005bed565b51015115620159c557620155116201550a828562005bed565b516200670b565b6006808210156200409c576004918203620156a3575060209060016003836201553b868962005bed565b510151060362015558575050620155529062005b81565b620154d9565b62005b7d828462015688606362015589620155828562015579868e62005bed565b51015162006190565b9362006190565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b496040958651978894620155f862005c528388016026907f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b81526201562882518093601396878501910162004106565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201527f2c20342c20372c2031302c202e2e2e5d00000000000000000000000000000000605382015203604381018552018362003fd9565b5193849362461bcd60e51b855284015260248301906200412b565b620156b36201550a848762005bed565b81811015620159b0576001036201581057506020906002600383620156d9868962005bed565b5101510603620156f0575050620155529062005b81565b62005b7d828462015688605d62015711620155828562015579868e62005bed565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946201578062005c528388016026907f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b8152620157b082518093601396878501910162004106565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c203860338201527f2c2031312c202e2e2e5d00000000000000000000000000000000000000000000605382015203603d81018552018362003fd9565b620158206201550a848762005bed565b908110156201474157600203620159625760209060038262015843858862005bed565b5101510662015859575050620155529062005b81565b62005b7d8284620156886201587f620158788462015579858d62005bed565b9262006190565b91620159536040938451958693620158d062005c528387016026907f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815281519062015901826013948d868501910162004106565b0101603e907f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d000060208201520190565b03601f19810184528362003fd9565b62005b7d9060405191829162461bcd60e51b8352820160609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b602183634e487b7160e01b6000525260246000fd5b620159d56201550a828562005bed565b600690818110156200409c5760050362015b29575060206001600382620159fd858862005bed565b510151060362015a135750620155529062005b81565b62005b7d8262015b0c605262015a3462015582866201557981998c62005bed565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c64855198899362015aa162005c528387016025907f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815282519062015ad2826013958c878501910162004106565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562003fd9565b5192839262461bcd60e51b8452600484015260248301906200412b565b62015b396201550a838662005bed565b90808210156200409c57600391820362015c95575060026020918262015b60858862005bed565b510151060362015b765750620155529062005b81565b62005b7d8262015b0c605c62015b9762015582866201557981998c62005bed565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e454544855198899362015c0462005c528387016025907f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815282519062015c35826013958c878501910162004106565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c60338201527f2031312c202e2e2e5d0000000000000000000000000000000000000000000000605382015203603c81018752018562003fd9565b62015ca56201550a848762005bed565b908110156200409c5760020362015d8a576020908162015cc6848762005bed565b5101510662015cdb5750620155529062005b81565b62005b7d8262015b0c62015cfa62015878856201557981988b62005bed565b9162015d7b604093845197889362015d4a62005c528387016025907f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815281519062015901826013948b868501910162004106565b03601f19810186528562003fd9565b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642072657475726e20747970653a20554e444546494e454400006044820152606490fd5b509050565b1562015ddc57565b60a460405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201527f74206265207468652073616d65000000000000000000000000000000000000006084820152fd5b1562015e7457565b608460405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152fd5b1562015ecb57565b608460405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201527f696e697469616c697a65640000000000000000000000000000000000000000006064820152fd5b1562015f3d57565b608460405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201527f61647920656e61626c65640000000000000000000000000000000000000000006064820152fd5b1562015faf57565b608460405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f20626520646973616260448201527f6c656400000000000000000000000000000000000000000000000000000000006064820152fd5b156201602157565b608460405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201527f20696e697469616c697a656400000000000000000000000000000000000000006064820152fd5b156201609357565b608460405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201527f656164792064697361626c6564000000000000000000000000000000000000006064820152fd5b156201610557565b608460405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201527f617373206973206e6f7420657175616c000000000000000000000000000000006064820152fd5b156201617757565b608460405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201527f6973206e6f7420657175616c00000000000000000000000000000000000000006064820152fd5b15620161e957565b608460405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152fd5b156201624057565b608460405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e20697360448201527f206f766572666c6f7700000000000000000000000000000000000000000000006064820152fd5b15620162b257565b608460405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152fd5b156201632357565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906201637c60c08351015162005ba7565b51916201639e60a062016393818451015162005ba7565b519251015162005bcb565b5193620163b3845183511462001929620174fa565b620163c6845186511462001929620174fa565b60005b84518110156201642457620163df818462005bed565b519061271082101562005bb5576201641e916001600160a01b03865116600052600390811b016020526200054f6040600020546200822b838a62005bed565b620163c9565b5092919360005b8351811015620165505762016441818462005bed565b5190612710918281101562005bb5576001600160a01b03908189511660005260039081602091811b0181526201648260406000205462008299868962005bed565b906201648f868a62005bed565b51918783101562005bb55784620164bc93878f5116600052811b0184526040600020556200192962017621565b620164c8848862005bed565b518581101562005bb557829084620164e1878c62005bed565b5116600052811b018152620165016040600020546200733c868962005bed565b91909262016510868a62005bed565b519687101562005bb5576201654a966200054f9562016530888d62005bed565b5116600052811b0190526040600020556200192962017697565b6201642b565b50506200838a62016561916201723d565b9060405193620165718562003fa1565b60018552602036818701376001600160a01b0390816107c0525116620165978562005ba7565b526000935b8151851015620168ba57620165b2858362005bed565b5194620165c0845162005d44565b91600093620165d0825162005d44565b6107e0528496855b87518110156201667957620165ff6107c051620165f6838b62005bed565b51168b62017008565b158062016641575b6201661e575b620166189062005b81565b620165d8565b956201663862016618916107c051620087158a8c62005bed565b9690506201660d565b506127108a101562005bb5576107c0516201665d828a62005bed565b511660005260038a811b01602052604060002054151562016607565b509793929096949195976000986127108610159560031b9860038a019a5b895181101562016713578762005bb5576107c051620166b7828c62005bed565b51166000528b60205260406000205415620166de575b620166d89062005b81565b62016697565b976201670a620166d8918b620166f98c6107c0519262005bed565b51166200200d826107e05162005bed565b989050620166cd565b50949591939650985096909596806107805262005bb55760040180610760525495620167446200859786896201542e565b61074052600097886107a0525b6107805162005bb5576107a05188811015620167ef576201678062016796916000610780526107605162005f0b565b6107c05191549060031b1c166107e051620170cc565b15620167b5575b620167ab6107a05162005b81565b6107a05262016751565b97620167e890620167cd6107a0516107605162005f0b565b6107c05191549060031b1c166200200d826107405162005bed565b976201679d565b5095939096509690969391936000915b8383106201688957505050506107805162005bb55761074051516001600160401b03811162003f1a576201683781610760516200611d565b6020610740510161076051600052602060002060006107c051905b848110620168725750505050506201686a9062005b81565b93926201659c565b600190602083865116950194818501550162016852565b62008723620168b3916107c051620168a2868662005bed565b51166200200d826107405162005bed565b91620167ff565b5050509050565b90805180516001600160401b03811162003f1a57620168e181856200611d565b6020809201846000528260002060005b8381106201696e575050505060c082600692620053a295940151600185015560408101516002850155606081015160038501556201694460808201511515600486019060ff801983541691151516179055565b6201695760a082015160058601620067d9565b0151151591019060ff801983541691151516179055565b82518282015591840191600101620168f1565b620138848054600160401b81101562003f1a57620169a59160018201905562014e46565b91909162006def57620053a291620168c1565b62013890908154600160401b81101562003f1a576001810180845581101562005bb557620053a2926000527f7f73709277f72a9bc7b284375e83603a53394744e9fa86da811e86c2aa78e05e01620067d9565b908062016a16575050565b620053a291600052601f6020600020910160051c81019062005f24565b90600160401b811162003f1a57815481835580821062016a5257505050565b620053a292600052601f6020600020918180850160051c840194168062016a81575b500160051c019062005f24565b600019908186019182549160200360031b1c1690553862016a74565b60009262016ab762016ab0859462014e46565b50620053bf565b9380935b85515185101562016bbd575061271084101562005bb55760039380851b946001600160a01b0385166000526020908601815262016b05604096600188600020549101549062006fe1565b9384911562016b7a579062016b1a9162007088565b96901562016b3757505062016b2f9062005b81565b939062016abb565b60649250519062461bcd60e51b82526004820152601460248201527f746f74616c20706f776572206f766572666c6f770000000000000000000000006044820152fd5b60648389519062461bcd60e51b82526004820152600e60248201527f706f776572206f766572666c6f770000000000000000000000000000000000006044820152fd5b93505092505090565b1562016bce57565b606460405162461bcd60e51b815260206004820152601360248201527f63757272656e74596573206f766572666c6f77000000000000000000000000006044820152fd5b600162016c1f8262014e46565b5001546202712e546000928184526202712b908160205262016c48816004604088200162005f0b565b90549060031b1c918386528060205262016c69826005604089200162005f0b565b90549060031b1c93865260205260ff600662016c9d62016c8f848360408b200162005f0b565b90549060031b1c9362014e46565b5001541662016cf2575062016ce29262016cd362016ccd938362016cc562016cda9562006fab565b969062016bc6565b6201542e565b9062006fe1565b929062016bc6565b111562016cec5790565b50600190565b62010174925062016ce29362016d0c62016cda9362006fab565b949062016bc6565b9092919262016d24825162005d44565b60009162016d33815162005d44565b8390845b865181101562016dce576001600160a01b0362016d5a81620165f6848b62005bed565b158062016d99575b62016d7a575b5062016d749062005b81565b62016d37565b819662016d919162009a3062016d74948b62005bed565b959062016d68565b506127108a101562005bb5578062016db2838a62005bed565b511660005260038a811b01602052604060002054151562016d62565b509295919694509260005b875181101562016e4f5761271086101562005bb5576001600160a01b038062016e03838b62005bed565b5116600052600387811b016020526040600020541562016e30575b5062016e2a9062005b81565b62016dd9565b819562016e47916200ed9262016e2a948c62005bed565b949062016e1e565b509250945092612710831015938462005bb55760049586600395861b019687549462016e806200859782886201542e565b9460009689889a5b62016ff357818b101562016f2957506000998b62016ec362016eab838362005f0b565b90546001600160a01b0392918e1b1c82168a620170cc565b1562016ee6575b50509062016edb8b94939262005b81565b9a9091929362016e88565b91998c95949392909162016efc908c9062005f0b565b9054908d1b1c1662016f0f828b62005bed565b5262016f1b9062005b81565b9890919293508b3862016eca565b9697949a98505091975092506000915b83831062016fcf575050505062016fba578051926001600160401b03841162016fa5575062016f6983836200611d565b602080910191600052806000209060005b84811062016f89575050505050565b83516001600160a01b0316838201559281019260010162016f7a565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6200872362016fec916001600160a01b0362008715868662005bed565b9162016f39565b603285634e487b7160e01b6000525260246000fd5b9060005b61271083101562005bb5576003600484821b018054831015620170685782620170359162005f0b565b916001600160a01b0392839254911b1c169083161462017060576201705a9062005b81565b6201700c565b505050600190565b5050505050600090565b9060005b61271083101562005bb55760036201389784821b018054831015620170685782620170a19162005f0b565b916001600160a01b0392839254911b1c16908316146201706057620170c69062005b81565b62017076565b9060005b82518110156201710b576001600160a01b0380620170ef838662005bed565b5116908316146201706057620171059062005b81565b620170d0565b505050600090565b801562005b91576000190190565b9081519060005b60001983810184811162005b9157821015620171ef576001820180831162005b91575b84811062017166575050620171609062005b81565b62017128565b6001600160a01b03806201717b858962005bed565b5116816201718a848a62005bed565b511614620171a5575b506201719f9062005b81565b6201714b565b828692960182811162005b91576201719f92620171e892620171cc620171e1938b62005bed565b5116620171da898b62005bed565b5262017113565b9562017113565b9062017193565b505090620171fd8162005d44565b9060005b81811062017210575090925050565b806001600160a01b036201722962017237938862005bed565b51166200200d828662005bed565b62017201565b80519160005b60001984810185811162005b9157821015620172f5576001820180831162005b91575b858110620172815750506201727b9062005b81565b62017243565b6201728d838662005bed565b516201729a828762005bed565b5114620172b3575b620172ad9062005b81565b62017266565b948181019080821162005b9157620172e6620172ed91620172d9620172ad948962005bed565b51620171da8a8a62005bed565b9662017113565b9050620172a2565b50509091620173048162005d44565b9060005b81811062017317575090925050565b806201732862017335928762005bed565b516200200d828662005bed565b62017308565b604051620173498162003efe565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e2060408201527f3130303000000000000000000000000000000000000000000000000000000000606082015290565b604051620173d08162003f69565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527f20666f72206469766964656e6473207965740000000000000000000000000000604082015290565b604051620174318162003fa1565b601c81527f6469766964656e6473206f7065726174696f6e206f766572666c6f7700000000602082015290565b6040516201746c8162003fa1565b600d81527f556e6b6e6f776e204572726f7200000000000000000000000000000000000000602082015290565b604051620174a78162003f69565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c637560208201527f6c6174696f6e0000000000000000000000000000000000000000000000000000604082015290565b604051620175088162003fa1565b601281527f496e76616c696420506172616d65746572730000000000000000000000000000602082015290565b604051620175438162003fa1565b601581527f4d656d62657220646f6573206e6f742065786973740000000000000000000000602082015290565b6040516201757e8162003fa1565b601781527f4d656d626572206973206e6f742073757370656e646564000000000000000000602082015290565b604051620175b98162003fa1565b601b81527f4d656d62657220697320616c72656164792073757370656e6465640000000000602082015290565b604051620175f48162003fa1565b601581527f4d656d62657220616c7265616479206578697374730000000000000000000000602082015290565b6040516201762f8162003fa1565b601181527f4e6f20656e6f7567682062616c616e6365000000000000000000000000000000602082015290565b6040516201766a8162003fa1565b601881527f496e76616c696420706172616d6574657220746f207365740000000000000000602082015290565b604051620176a58162003fa1565b601581527f546f6b656e20616d6f756e74206f766572666c6f770000000000000000000000602082015290565b60268110156200409c578015620178c0576001811462016cec5760028114620178ba5760038114620178b45760048114620178ae5760058114620178a85760068114620178a257600781146201789c57600881146201789657600981146201789057600a81146201788a57600b81146201788457600c81146201787e57600d81146201787857600e81146201787257600f81146201786c57601081146201786657601181146201786057601281146201785a57601381146201785457601481146201784e57601581146201784857601881146201784257601781146201783c57601981146201783657601a81146201783057601b81146201782a57601c81146201782457601d81146201781e57601e81146201781857601f81146201781257602081146201780c576021146201780757600090565b602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b50600090565b90815181101562005bb5570160200190565b60405190620178e78262003f69565b60288252604036602084013760005b601481106201790457505090565b60139080820391821162005b91578160031b917f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81160362005b915760ff80831162005b915762017963600180941b6001600160a01b0386166200616f565b60f081168282160391821162005b91577f0f00000000000000000000000000000000000000000000000000000000000000620179a39160f41b1662017a3f565b9082841b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416840362005b915762017a13917fff000000000000000000000000000000000000000000000000000000000000009160001a62017a08858a620178c6565b5360f81b1662017a3f565b92810180911162005b915762017a3262017a399360001a9186620178c6565b5362005b81565b620178f6565b60f81c600a81101562017a805760300160ff811162005b915760f81b7fff000000000000000000000000000000000000000000000000000000000000001690565b60570160ff811162005b915760f81b7fff00000000000000000000000000000000000000000000000000000000000000169056fea2646970667358221220a88b2310de1c810e72a47968a10611bf5aba2909acc6aaec5b26a486d5c735f764736f6c63430008130033", - "deployedBytecode": "0x6108008060405260043610156200001557600080fd5b600080608052803560e01c918263036ee8501462003eab575081630e5a3b291462003b2257816310ade3ea1462003af05781631797631d1462003a605781631c75255a1462003a0b57816323b65c78146200397b5781632514a6b4146200371f57816341d1a43814620036ec57816356424cf414620036cb5781635c00d98714620036a15781635d0b1849146200367d5781635f1231ea14620035885781635f5d5f0014620034f8578163681ece9d14620034b557816374579b18146200247457816379532bfe14620024505781637daa10ce14620024315781638129fc1c146200201d57816383e4cccf1462001d91578163864f9f7a1462001d4f57816386ad77e214620019d85781638c7a63ae146200195e5781639df9914514620018455781639f36145f1462000577578163a064c4f1146200042c57508063acf80bc414620003ea578063aefca42a14620003c6578063bba510301462000219578063d5a172f214620001ec5763d6a93c51146200018f57600080fd5b34620001e65760805180600319360112620001e3575b6127108110620001bb575b602090604051908152f35b60ff60078260031b01541615620001dd57620001d79062005b81565b620001a5565b620001b0565b80fd5b60805180fd5b34620001e65760805180600319360112620001e35760206001600160a01b03620271265416604051908152f35b34620001e65760805180600319360112620001e3576202712e548091526202712b906020828152600380604060805120015493620002746200025b8662003ffb565b956200026b604051978862003fd9565b80875262003ffb565b8584019190601f19013683376080515b85608051528185528360406080512001548110156200036f576040517f41d1a438000000000000000000000000000000000000000000000000000000008152816004820152602486828281305afa91821562000362576080519262000324575b50620002f1838a62005bed565b90868310156200030e575052620003089062005b81565b62000284565b634e487b7160e01b608051526021600452608051fd5b9091508681813d83116200035a575b6200033f818362003fd9565b81010312620001e6575185811015620001e6579089620002e4565b503d62000333565b6040513d608051823e3d90fd5b84878460405192839281840190828552518091526040840192916080515b8281106200039d57505050500390f35b9193839550908082620003b5600194839751620040f8565b01950191019185949391926200038d565b34620001e65760805180600319360112620001e35760206202712854604051908152f35b34620001e6576020366003190112620001e6576001600160a01b036200040f62003ecd565b166080515262013887602052602060406080512054604051908152f35b34620001e65760209081600319360112620001e6576004356127108110156200055f5790600391821b9060018201549091600481018054946080519481869401905b878510620004fc578862000483888862006fe1565b90156200049257604051908152f35b6084826040519062461bcd60e51b82526004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527f74696e67576569676874206f766572666c6f77000000000000000000000000006064820152fd5b9590919293956200055f576200055586620005476001600160a01b03620005286200054f9a8962005f0b565b905490881b1c1693608051948552858c52604060805120549062007088565b989062007003565b62005b81565b939291906200046e565b634e487b7160e01b6080515260326004526024608051fd5b34620001e6576020366003190112620001e657600435608051526202712b602052604060805120604051620005ac8162003f69565b6001600160a01b03825416815260018201918254620005cb8162003ffb565b90620005db604051928362003fd9565b808252602082019460805152608051946020862095905b8282106200067d5762000652868686602083015260405162000625816200061d81600286016200525e565b038262003fd9565b604083015260ff600782015491600960088201549101549060405195869560a0875260a0870190620055c7565b93602086015260408501526200066e60608501838316620040f8565b60081c16151560808301520390f35b6040516200068b8162003f69565b87546001600160a01b0381168252602660ff8260a01c1610156200182d5760a01c60ff166020820152604051620006c28162003f4c565b620006d060018a01620052fc565b8152600289016040518082602082945493848152019060805152608051926020842093905b80601f8301106200165a576200082e94549181811062001643575b81811062001629575b8181106200160f575b818110620015f5575b818110620015dc575b818110620015c2575b818110620015a8575b8181106200158e575b81811062001574575b8181106200155a575b81811062001540575b81811062001526575b8181106200150c575b818110620014f2575b818110620014d8575b818110620014be575b818110620014a4575b8181106200148a575b81811062001470575b81811062001456575b8181106200143c575b81811062001422575b81811062001408575b818110620013ee575b818110620013d4575b818110620013ba575b818110620013a0575b81811062001386575b8181106200136c575b81811062001352575b81811062001338575b1062001327575b50038262003fd9565b6020820152600389018054620008448162003ffb565b9162000854604051938462003fd9565b818352602083019060805152608051906020822091905b83821062001306575050505060408201526004890180546200088d8162003ffb565b916200089d604051938462003fd9565b818352602083019060805152608051906020822091905b8382106200118f57505050506060820152600589016040519081602082549182815201916080515260805190602082205b81601f84011062000e9e5784600997946020979460019a979462000a2b94549181811062000e80575b81811062000e5f575b81811062000e3e575b81811062000e1d575b81811062000dfd575b81811062000ddc575b81811062000dbb575b81811062000d9a575b81811062000d79575b81811062000d58575b81811062000d37575b81811062000d16575b81811062000cf5575b81811062000cd4575b81811062000cb3575b81811062000c92575b81811062000c71575b81811062000c50575b81811062000c2f575b81811062000c0e575b81811062000bed575b81811062000bcc575b81811062000bab575b81811062000b8a575b81811062000b69575b81811062000b48575b81811062000b27575b81811062000b06575b81811062000ae5575b81811062000ac4575b81811062000aa3575b1062000a885750038262003fd9565b608082015262000a3e60068d016200544f565b60a082015262000a5160078d0162005508565b60c0820152600862000a6f8d6200061d60405180948193016200525e565b60e08201526040820152815201970191019095620005f2565b90889160f81c62000a998162004eaa565b8152013862000825565b928a8d9160ff8560f01c1662000ab98162004eaa565b815201930162000a1c565b928a8d9160ff8560e81c1662000ada8162004eaa565b815201930162000a13565b928a8d9160ff8560e01c1662000afb8162004eaa565b815201930162000a0a565b928a8d9160ff8560d81c1662000b1c8162004eaa565b815201930162000a01565b928a8d9160ff8560d01c1662000b3d8162004eaa565b8152019301620009f8565b928a8d9160ff8560c81c1662000b5e8162004eaa565b8152019301620009ef565b928a8d9160ff8560c01c1662000b7f8162004eaa565b8152019301620009e6565b928a8d9160ff8560b81c1662000ba08162004eaa565b8152019301620009dd565b928a8d9160ff8560b01c1662000bc18162004eaa565b8152019301620009d4565b928a8d9160ff8560a81c1662000be28162004eaa565b8152019301620009cb565b928a8d9160ff8560a01c1662000c038162004eaa565b8152019301620009c2565b928a8d9160ff8560981c1662000c248162004eaa565b8152019301620009b9565b928a8d9160ff8560901c1662000c458162004eaa565b8152019301620009b0565b928a8d9160ff8560881c1662000c668162004eaa565b8152019301620009a7565b928a8d9160ff8560801c1662000c878162004eaa565b81520193016200099e565b928a8d9160ff8560781c1662000ca88162004eaa565b815201930162000995565b928a8d9160ff8560701c1662000cc98162004eaa565b81520193016200098c565b928a8d9160ff8560681c1662000cea8162004eaa565b815201930162000983565b928a8d9160ff8560601c1662000d0b8162004eaa565b81520193016200097a565b928a8d9160ff8560581c1662000d2c8162004eaa565b815201930162000971565b928a8d9160ff8560501c1662000d4d8162004eaa565b815201930162000968565b928a8d9160ff8560481c1662000d6e8162004eaa565b81520193016200095f565b928a8d9160ff8560401c1662000d8f8162004eaa565b815201930162000956565b928a8d9160ff8560381c1662000db08162004eaa565b81520193016200094d565b928a8d9160ff8560301c1662000dd18162004eaa565b815201930162000944565b928a8d9160ff8560281c1662000df28162004eaa565b81520193016200093b565b928a8d9160ff85831c1662000e128162004eaa565b815201930162000932565b928a8d9160ff8560181c1662000e338162004eaa565b815201930162000929565b928a8d9160ff8560101c1662000e548162004eaa565b815201930162000920565b928a8d9160ff8560081c1662000e758162004eaa565b815201930162000917565b928a8d9160ff851662000e938162004eaa565b81520193016200090e565b926001610400602092865460ff811662000eb88162004eaa565b825260ff8160081c1662000ecc8162004eaa565b8583015260ff8160101c1662000ee28162004eaa565b604083015260ff8160181c1662000ef98162004eaa565b606083015260ff81861c1662000f0f8162004eaa565b608083015260ff8160281c1662000f268162004eaa565b60a083015260ff81818160301c1662000f3f8162004eaa565b60c09081860152828260381c1662000f578162004eaa565b60e0860152828260401c1662000f6d8162004eaa565b610100860152828260481c1662000f848162004eaa565b610120860152828260501c1662000f9b8162004eaa565b610140860152828260581c1662000fb28162004eaa565b610160860152828260601c1662000fc98162004eaa565b610180860152828260681c1662000fe08162004eaa565b6101a0860152828260701c1662000ff78162004eaa565b6101c0860152828260781c166200100e8162004eaa565b6101e0860152828260801c16620010258162004eaa565b610200860152828260881c166200103c8162004eaa565b610220860152828260901c16620010538162004eaa565b610240860152828260981c166200106a8162004eaa565b610260860152828260a01c16620010818162004eaa565b610280860152828260a81c16620010988162004eaa565b6102a0860152828260b01c16620010af8162004eaa565b6102c0860152828260b81c16620010c68162004eaa565b6102e08601521c16620010d98162004eaa565b61030083015260ff8160c81c16620010f18162004eaa565b61032083015260ff8160d01c16620011098162004eaa565b61034083015260ff8160d81c16620011218162004eaa565b61036083015260ff8160e01c16620011398162004eaa565b61038083015260ff8160e81c16620011518162004eaa565b6103a083015260ff8160f01c16620011698162004eaa565b6103c083015260f81c6200117d8162004eaa565b6103e0820152019401920191620008e5565b60409d9c9b9a999897969d51620011a68162003f4c565b620011b660ff8554168262005435565b60018401546020820152600284018054620011d18162003ffb565b91620011e1604051938462003fd9565b8183526020830190608051526080516020812090915b8383106200127857505050509d9e9798999a9b9c9d6001928260209260406006950152600387015460608201526040516200123b816200061d8160048c016200525e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201930191019091620008b4565b600760206001926040516200128d8162003f30565b85548152620012d160ff86880154818116620012a98162004eaa565b86850152818160081c16620012be8162004091565b604085015260101c166060830162005442565b620012df600287016200536a565b6080820152620012f26003870162005565565b60a0820152815201920192019190620011f7565b600760206001926200131886620053bf565b8152019301910190916200086b565b60f81c151581526020018d62000825565b92602060019160ff8560f01c16151581520193016200081e565b92602060019160ff8560e81c161515815201930162000815565b92602060019160ff8560e01c16151581520193016200080c565b92602060019160ff8560d81c161515815201930162000803565b92602060019160ff8560d01c1615158152019301620007fa565b92602060019160ff8560c81c1615158152019301620007f1565b92602060019160ff8560c01c1615158152019301620007e8565b92602060019160ff8560b81c1615158152019301620007df565b92602060019160ff8560b01c1615158152019301620007d6565b92602060019160ff8560a81c1615158152019301620007cd565b92602060019160ff8560a01c1615158152019301620007c4565b92602060019160ff8560981c1615158152019301620007bb565b92602060019160ff8560901c1615158152019301620007b2565b92602060019160ff8560881c1615158152019301620007a9565b92602060019160ff8560801c1615158152019301620007a0565b92602060019160ff8560781c161515815201930162000797565b92602060019160ff8560701c16151581520193016200078e565b92602060019160ff8560681c161515815201930162000785565b92602060019160ff8560601c16151581520193016200077c565b92602060019160ff8560581c161515815201930162000773565b92602060019160ff8560501c16151581520193016200076a565b92602060019160ff8560481c161515815201930162000761565b92602060019160ff8560401c161515815201930162000758565b92602060019160ff8560381c16151581520193016200074f565b92602060019160ff8560301c161515815201930162000746565b92602060019160ff8560281c16151581520193016200073d565b92602060019160ff85831c161515815201930162000734565b92602060019160ff8560181c16151581520193016200072b565b92602060019160ff8560101c161515815201930162000722565b92602060019160ff8560081c161515815201930162000719565b92602060019160ff85161515815201930162000710565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282891c1615156080860152828260281c16151560a0860152828260c092828260301c16151584890152828260381c16151560e0890152828260401c161515610100890152828260481c161515610120890152828260501c161515610140890152828260581c1615156101608901521c161515610180860152828260681c1615156101a0860152828260701c1615156101c0860152828260781c1615156101e0860152828260801c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e0820152019401920184929391620006f5565b634e487b7160e01b6080515260216004526024608051fd5b6020366003190112620001e6576004356001600160401b038111620001e6576200187490369060040162004430565b6001600160a01b03620018c581835116620018bc6200189d6200189733620178d8565b62005a32565b620018b5620018af86885116620178d8565b62005ab0565b9062005b07565b90331462005b4e565b6080519060208301915b825180518210156200193657906200054f620019309284620018f384339362005bed565b51511614620019296200190a6200189733620178d8565b620018b5620018af8862001920888c5162005bed565b515116620178d8565b9062005b4e565b620018cf565b6200195a6200194586620072a7565b6040519182916020835260208301906200412b565b0390f35b34620001e6576020366003190112620001e6576004356127108110156200055f5760031b6001810154600282015491620019ce6005620019af6006840154936200061d60405180948193016200525e565b604051948594855260208501526080604085015260808401906200412b565b9060608301520390f35b34620001e65760805180600319360112620001e357620138828054620019fe8162003ffb565b9162001a0e604051938462003fd9565b8183526020830190608051527fe5dac618068543225ae1c2f585dbaa37d058ab507104bc7da3da5ab2e5666cc7608051915b83831062001c1157846201388390815462001a5b8162003ffb565b9262001a6b604051948562003fd9565b8184526020840190608051527f9e32270fdbb1cb37df0574dfc18a9a2c56583299a239108c9d137f746b82200a608051915b83831062001ad35762001ac4856200195a8860405193849360408552604085019062005044565b90838203602085015262005044565b60405162001ae18162003f4c565b62001af160ff8454168262005435565b6001830154602082015260028301805462001b0c8162003ffb565b9162001b1c604051938462003fd9565b818352602083019060805152608051906020822091905b83821062001bab575050505060019282602092604060069501526003860154606082015260405162001b6e816200061d8160048b016200525e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520192019201919062001a9d565b6007602060019260405162001bc08162003f30565b8654815262001bdc60ff86890154818116620012a98162004eaa565b62001bea600288016200536a565b608082015262001bfd6003880162005565565b60a082015281520193019101909162001b33565b60405162001c1f8162003f4c565b62001c2f60ff8454168262005435565b6001830154602082015260028301805462001c4a8162003ffb565b9162001c5a604051938462003fd9565b818352602083019060805152608051906020822091905b83821062001ce9575050505060019282602092604060069501526003860154606082015260405162001cac816200061d8160048b016200525e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520192019201919062001a40565b6007602060019260405162001cfe8162003f30565b8654815262001d1a60ff86890154818116620012a98162004eaa565b62001d28600288016200536a565b608082015262001d3b6003880162005565565b60a082015281520193019101909162001c71565b34620001e6576020366003190112620001e6576001600160a01b0362001d7462003ecd565b166080515262013885602052602060406080512054604051908152f35b34620001e657602080600319360112620001e6576004359062001dd2478311156200192962001dc08562006190565b62001dcb4762006190565b9062005c02565b336080515262001e4a6201388580835262001e1f604060805120548511156200192962001dff8762006190565b336080515284875262001e186040608051205462006190565b9062005caa565b336080515280835262001e39846040608051205462006155565b92906200192962001dff8762006190565b3360805152825280604060805120551562001e8c575b5060805180808381949382941562001e82575b3390f115620003625760805180f35b506108fc62001e73565b620138869081549162001e9f8362005d44565b9160805193845b81811062001faa57505062001ebb8462005d44565b918251926001600160401b03841162001f925791839262001edd829562005f95565b01906080515260805192835b83811062001f5657505050505b82811062001f0657505062001e60565b806200054f6001600160a01b0362001f2362001f50948662005bed565b511662001f308362005db5565b90919082549060031b916001600160a01b03809116831b921b1916179055565b62001ef6565b82516001600160a01b03167f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa48201559181019160010162001ee9565b634e487b7160e01b6080515260416004526024608051fd5b62001fb58162005db5565b6001600160a01b03915490826003923392841b1c160362001fe4575b505062001fde9062005b81565b62001ea6565b966200201491839862001ffb62001fde9562005db5565b9054911b1c166200200d828962005bed565b5262005b81565b95908862001fd1565b34620001e65760805180600319360112620001e3575062027126336001600160a01b0319825416179055600190620271298260ff19825416179055604051620020668162003fbd565b60805190526201388280548282558062002391575b50608051526040516200208e8162003fbd565b6080519052608051806200237b57506201388390815481835580620022dc575b5050608051526127106202712a55604051620020ca8162003fa1565b8181526080515b602080821015620021445760405160209291620020ee8262003f30565b60805182526080518183015260805160408301526080516060908184015280608084015260405190620021218262003efe565b80825280838301528060408301528082015260a0830152828501015201620020d1565b83620022c984604051620021588162003fbd565b60805181526040516200216b8162003fbd565b60805181526040516200217e8162003fbd565b6080518152604051620021918162003fbd565b608051815260405191620021a58362003fbd565b608051835260405193620021b98562003efe565b845260208401526040830152606082015260405191620021d98362003f30565b60805183526003602084015260805160408401526080516060840152608083015260a08201526200220a8262005ba7565b52620022168162005ba7565b5062002271604051620022298162003f4c565b6004815284602082015282604082015260805160608201526040516200224f8162003fbd565b608051815260808201528460a08201528460c08201528460e082015262006db8565b60405190620022808262003f4c565b6002825283602083015260408201526080516060820152604051620022a58162003fbd565b608051815260808201528260a08201528260c082015260805160e082015262006e05565b6113886201388b556201388c5560805180f35b60069181830291838304036200236757808491608052527f9e32270fdbb1cb37df0574dfc18a9a2c56583299a239108c9d137f746b82200a908101905b818110620023285750620020ae565b8290608051808255868201556200234260028201620065b3565b6080516003820155620023586004820162006448565b60805160058201550162002319565b80634e487b7160e01b602492526011600452fd5b634e487b7160e01b905260416004526024608051fd5b60069080820290828204036200241d57836080528284527fe5dac618068543225ae1c2f585dbaa37d058ab507104bc7da3da5ab2e5666cc7908101905b818110620023de5750506200207b565b829060805180825587820155620023f860028201620065b3565b60805160038201556200240e6004820162006448565b608051600582015501620023ce565b602484634e487b7160e01b81526011600452fd5b34620001e65760805180600319360112620001e3576020604051338152f35b34620001e65760805180600319360112620001e35760206202712d54604051908152f35b34620001e6576040366003190112620001e6576004356001600160401b038111620001e657620024a990369060040162004152565b6024356001600160401b038111620001e657620024cb90369060040162004430565b620271298054600260ff8216620024e28162004091565b14620034715760ff191660021790556202712e54600181019081106200311a57806202712e5560805190815b84518110156200257157826002620025326200252b848962005bed565b5162014e46565b500154106200254d575b620025479062005b81565b6200250e565b9150620025476002620025656200252b858862005bed565b5001549290506200253c565b50919060805191825b8551811015620025d757620025946200252b828862005bed565b508460038092015410620025b5575b50620025af9062005b81565b6200257a565b819450620025cc6200252b620025af938962005bed565b5001549390620025a3565b508493608051526202712b6020526080519060408220916001600160a01b038251166001600160a01b03198454161783556020820151805191600160401b83116200237b5750600184015482600186015580831062003296575b50608080516001860190525160208082209392015b82821062002bb657505050509060026040620026669301519101620067d9565b62002672835162005d44565b6202712e54608051526202712b6020526080519060056040832001908051926001600160401b0384116200237b5750602090620026b084846200611d565b01906080515260805160208120905b83811062002ba15750505050620026d7835162005d44565b6202712e54608051526202712b6020526080519060046040832001908051926001600160401b0384116200237b57506020906200271584846200611d565b01906080515260805160208120905b83811062002b8c57505050506200273c835162005d44565b906202712e54608051526202712b60205260805160066040822001928051916001600160401b0383116200237b57506020906200277a83866200611d565b0192608051526080519260208420845b83811062002b775750505050620027a2904262007088565b90916202712e5490526202712b602052600760406080512001551562002b33576202712e54608051526202712b6020526008620027ea60406080512092600784015462007088565b91909201551562002aef576202712e54608051526202712b602052600960406080512001600260ff1982541617905562002825815162005d44565b6202712e54608051526202712b60205260805160036040822001918051916001600160401b0383116200237b57506020906200286283856200611d565b0191608051526080519160208320835b83811062002ada5785855b8151811015620028e057806200054f6200289c620028da938562005bed565b516202712e54608051526202712b602052620028c18360036040608051200162005f0b565b90919082549060031b91821b91600019901b1916179055565b6200287d565b50608051905b805182101562002ad4576202712e549182608051526202712b602052620029276200291a8260036040608051200162005f0b565b90549060031b1c62014e46565b505490620029358262005d44565b916080515b81811062002a86575050608051805b835182101562002a51576200295f828562005bed565b5161271090818110156200055f5760031b6001015462002980848762005bed565b51918210156200055f5760066200299d9260031b01549062006fe1565b901562002a0d57620029af9162007088565b919015620029c957620029c29062005b81565b9062002949565b606460405162461bcd60e51b815260206004820152601960248201527f746f74616c566f74696e67506f776572206f766572666c6f77000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b90506200054f91925062002a7f9394608051526202712b602052620028c18360066040608051200162005f0b565b90620028e6565b62002ace9086608051526202712b60205262002abb8162002ab46200291a8760036040608051200162005f0b565b5062005f0b565b90549060031b1c6200200d828762005bed565b6200293a565b60805180f35b60019060208451940193818401550162002872565b606460405162461bcd60e51b815260206004820152601b60248201527f657865637574696e6720656e642074696d65206f766572666c6f7700000000006044820152fd5b606460405162461bcd60e51b815260206004820152601860248201527f766f74696e6720656e642074696d65206f766572666c6f7700000000000000006044820152fd5b6001906020845194019381840155016200278a565b60019060208451940193818401550162002724565b600190602084519401938184015501620026bf565b80516001600160a01b03815116855490602083015160268110156200182d5774ff00000000000000000000000000000000000000007fffffffffffffffffffffff0000000000000000000000000000000000000000009160a01b1692161717855560406001860191015190815190602082519262002c358484620064d6565b019060805152608051906020822091905b83821062003276575050505060208101518051906001600160401b03821162001f92576020600288019162002c7c848462016a33565b019060805152608051916020832090835b8160051c81106200322d5750601f1981168103620031dc575b5050506040820151805191600160401b83116200237b5750600387015482600389015580831062003153575b506080805160038901905251602080822092015b8382106200313257505050506060810151805190600160401b821162001f9257600487015482600489015580831062003095575b506080805160048901905251602080822092015b838210620030745750505050608081015180516001600160401b03811162001f92576020600588019262002d63838562016a33565b0191608051526080519060208220915b8160051c8110620030345750601f198116810362002fd8575b5050506006850160a0820151602081519162002da9838562006564565b0191608051526080516020812090925b82841062002f7257505050506007850160c0820151602081519162002ddf838562006564565b0191608051526080516020812090925b82841062002f03575050505060e001518051906001600160401b03821162001f925762002e2f8262002e25600889015462005221565b600889016200678f565b60805190602091601f841160011462002e88575092826009936020936001966080519262002e7c575b5050600019600383901b1c191690851b1760088801555b0194019101909262002646565b015190508e8062002e58565b600888019052608051602081209291905b601f198516811062002eea575083602093600196938793600997601f1981161062002ed0575b505050811b01600888015562002e6f565b015160001960f88460031b161c191690558e808062002ebf565b9192602060018192868501518155019401920162002e99565b80518051906001600160401b03821162001f925760209062002f2683866200611d565b01836080515260805160208120905b83811062002f5457505050506001602081920192019301929062002def565b60019060206001600160a01b03855116940193818401550162002f35565b80518051906001600160401b03821162001f925760209062002f9583866200611d565b01836080515260805160208120905b83811062002fc357505050506001602081920192019301929062002db9565b60019060208451940193818401550162002fa4565b60805192835b601f1983168303811062002ffc57505060051c01558a808062002d8c565b909360206200302a60019284885191620030168362004eaa565b9060ff809160031b9316831b921b19161790565b9501910162002fde565b608051805b602081106200305057508382015560010162002d73565b949060206200306a60019288855191620030168362004eaa565b9201950162003039565b6006602082620030886001945187620068ac565b0193019101909162002d2e565b60068181020481036200311a5760068381020483036200311a5760048801608051526020608051208360060281015b8260060282018110620030d957505062002d1a565b6006906080518082556001820155620030f560028201620065b3565b60805160038201556200310b6004820162006448565b608051600582015501620030c4565b634e487b7160e01b6080515260116004526024608051fd5b6007602082620031466001945187620168c1565b0193019101909162002ce6565b60078181020481036200311a5760078381020483036200311a5760038801608051526020608051208360070281015b82600702820181106200319757505062002cd2565b80620031a560079262005fed565b6080518060018301558060028301558060038301556004820155620031cd6005820162006448565b60805160068201550162003182565b8392845b601f19831683038110620031fe57505060051c01558b808062002ca6565b90936020620032236001928488511515919060ff809160031b9316831b921b19161790565b95019101620031e0565b84855b602081106200324757508382015560010162002c8d565b949060206200326c6001928885511515919060ff809160031b9316831b921b19161790565b9201950162003230565b60016020826200328983945187620067d9565b0193019101909162002c46565b60098181020481036200311a5760098381020483036200311a5760018501608051526020608051208360090281015b8260090282018110620032da57505062002631565b6080518155620032ed6001820162006497565b6200330360028201805490608051815562016a0b565b600381015460805180600384015581620033ff575b50506004810154608051806004840155816200337b575b5050806200334a600560099301805490608051815562016a0b565b620033586006820162006525565b620033666007820162006525565b620033746008820162006448565b01620032c5565b6006828102048203620033e957506004820160805152602060805120906006028101905b818110156200332f576006906080518082556001820155620033c460028201620065b3565b6080516003820155620033da6004820162006448565b6080516005820155016200339f565b634e487b7160e01b905260116004526024608051fd5b6007828102048203620033e957506003820160805152602060805120906007028101905b818110156200331857806200343a60079262005fed565b6080518060018301558060028301558060038301556004820155620034626005820162006448565b60805160068201550162003423565b606460405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152fd5b34620001e6576020366003190112620001e6576004356127108110156200055f57620034eb60046200195a9260031b01620054ac565b60405191829182620040b2565b34620001e65760805180600319360112620001e3576040518062013881918254808252602080920193608051527fcd6f7cece5c70f73af31bb8ed8b80ae1c2a9e5eb261bd5ab2d9374b0c38719c891608051905b82821062003567576200195a85620034eb8189038262003fd9565b83546001600160a01b0316865294850194600193840193909101906200354c565b34620001e657602080600319360112620001e6576001600160a01b03620035ae62003ecd565b604051620035bc8162003efe565b608051815260805184820152606060408201526060608051910152166080515262013880815260406080512060405190620035f78262003efe565b6200367281549160ff83161515845260ff8585019360081c161515835260026040519162003636836200362e81600185016200525e565b038462003fd9565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a08401906200412b565b905160808301520390f35b34620001e65760805180600319360112620001e35760206202712e54604051908152f35b34620001e6576020366003190112620001e6576020620036c360043562006ee3565b604051908152f35b34620001e65760805180600319360112620001e3576020620036c36200709a565b34620001e6576020366003190112620001e65760206200370e60043562016c12565b6200371d6040518092620040f8565bf35b34620001e657602080600319360112620001e6576004356200374d478211156200192962001dc08462006190565b33608051526201388790818352620037976040608051205482111562001929620037778462006190565b3360805152858752620037906040608051205462006190565b906200631d565b3360805152818352620037df620037b5826040608051205462006155565b919062001929620037c68562006190565b3360805152868852620037906040608051205462006190565b33608051528284526080518080938193604083205581811562003971575b3390f1156200036257336080515281526040608051205415620038205760805180f35b62013888805490620038328262005d44565b9260805192835b818110620039055750506200384e8362005d44565b918251926001600160401b03841162001f925791839262003870829562005f3d565b01906080515260805192835b838110620038c957505050505b8181106200389957505062002ad4565b806200054f6001600160a01b03620038b6620038c3948762005bed565b511662001f308362005d7c565b62003889565b82516001600160a01b03167ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df820155918101916001016200387c565b620039108162005d7c565b6001600160a01b03915490826003923392841b1c16036200393f575b5050620039399062005b81565b62003839565b956200396891839762003956620039399562005d7c565b9054911b1c166200200d828a62005bed565b9490876200392c565b506108fc620037fd565b34620001e65760805180600319360112620001e3576040518062013886918254808252602080920193608051527f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa491608051905b828210620039ea576200195a85620034eb8189038262003fd9565b83546001600160a01b031686529485019460019384019390910190620039cf565b34620001e6576040366003190112620001e657600435602435906001600160a01b038216809203620001e6576127108110156200055f5760039160805152811b01602052602060406080512054604051908152f35b34620001e65760805180600319360112620001e3576040518062013888918254808252602080920193608051527ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df91608051905b82821062003acf576200195a85620034eb8189038262003fd9565b83546001600160a01b03168652948501946001938401939091019062003ab4565b34620001e65760805180600319360112620001e357602060ff6202712954166040519062003b1e8162004091565b8152f35b34620001e6576040366003190112620001e65762003b3f62003ecd565b60249081356001600160401b038111620001e65762003b6390369060040162004021565b91600260ff62027129541662003b798162004091565b0362003e67576202712d5442101562003e23576001600160a01b0382169182608051526202712c906020938285526080519560408720966202712e978854809252875260ff604060805120541662003de05781519481608051526202712b938489526003968760406080512001540362003d7757608051528752608051906040822091528652608051966040882060019889918260ff19825416179055905b62003c235760805180f35b825181101562003d715762003c39818462005bed565b511562003cf7578154806080515284895262003c9c62003c7f62003c668460046040608051200162005f0b565b9054908a1b1c62003c78858a62016a9d565b9062007088565b909260805152868b52620028c18460046040608051200162005f0b565b1562003cb45762003cad9062005b81565b8862003c18565b606488601c896040519262461bcd60e51b845260048401528201527f766f74696e6720666f7220706f776572596573206f766572666c6f77000000006044820152fd5b8154806080515284895262003d1d62003c7f62003c668460046040608051200162005f0b565b1562003d2e5762003cad9062005b81565b606488601b896040519262461bcd60e51b845260048401528201527f766f74696e6720666f7220706f7765724e6f206f766572666c6f7700000000006044820152fd5b62002ad4565b60848960398a6040519262461bcd60e51b845260048401528201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d617460448201527f636820746865206e756d626572206f6620706f6c6963696573000000000000006064820152fd5b6064876017886040519262461bcd60e51b845260048401528201527f766f7465722068617320616c726561647920766f7465640000000000000000006044820152fd5b60649060176040519162461bcd60e51b8352602060048401528201527f766f74696e6720706572696f642068617320656e6465640000000000000000006044820152fd5b60649060196040519162461bcd60e51b8352602060048401528201527f766f74696e67206973206e6f7420696e2070726f6772657373000000000000006044820152fd5b3462003ec9578160031936011262003ec95760209062027127548152f35b5080fd5b600435906001600160a01b038216820362003ee457565b600080fd5b35906001600160a01b038216820362003ee457565b608081019081106001600160401b0382111762003f1a57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762003f1a57604052565b61010081019081106001600160401b0382111762003f1a57604052565b606081019081106001600160401b0382111762003f1a57604052565b60e081019081106001600160401b0382111762003f1a57604052565b604081019081106001600160401b0382111762003f1a57604052565b602081019081106001600160401b0382111762003f1a57604052565b90601f801991011681019081106001600160401b0382111762003f1a57604052565b6001600160401b03811162003f1a5760051b60200190565b3590811515820362003ee457565b81601f8201121562003ee4578035916200403b8362003ffb565b926200404b604051948562003fd9565b808452602092838086019260051b82010192831162003ee4578301905b82821062004077575050505090565b838091620040858462004013565b81520191019062004068565b600411156200409c57565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b828110620040da575050505090565b83516001600160a01b031685529381019392810192600101620040cb565b9060038210156200409c5752565b60005b8381106200411a5750506000910152565b818101518382015260200162004109565b90602091620041468151809281855285808601910162004106565b601f01601f1916010190565b81601f8201121562003ee4578035916200416c8362003ffb565b926200417c604051948562003fd9565b808452602092838086019260051b82010192831162003ee4578301905b828210620041a8575050505090565b8135815290830190830162004199565b6001600160401b03811162003f1a57601f01601f191660200190565b81601f8201121562003ee457803590620041ee82620041b8565b92620041fe604051948562003fd9565b8284526020838301011162003ee457816000926020809301838601378301015290565b9080601f8301121562003ee4578135906200423c8262003ffb565b926200424c604051948562003fd9565b828452602092838086019160051b8301019280841162003ee457848301915b8483106200427c5750505050505090565b82356001600160401b03811162003ee4578691620042a084848094890101620041d4565b8152019201916200426b565b9080601f8301121562003ee457813590620042c78262003ffb565b92620042d7604051948562003fd9565b828452602092838086019160051b8301019280841162003ee457848301915b848310620043075750505050505090565b82356001600160401b03811162003ee45786916200432b8484809489010162004152565b815201920191620042f6565b9080601f8301121562003ee457813591620043528362003ffb565b92604092620043648451958662003fd9565b8185526020938486019185600594851b8601019481861162003ee457868101935b8685106200439857505050505050505090565b84356001600160401b03811162003ee457820183603f8201121562003ee4578881013590620043c78262003ffb565b91620043d68751938462003fd9565b808352868b8401918a1b8301019186831162003ee45791878c94929593015b8181106200440e57505082935081520194019362004385565b9193809193956200441f8462003ee9565b8152019101918b93919492620043f5565b6060918161070052806107c052031262003ee457604051620044528162003f69565b8091620044626107005162003ee9565b8252610700516020810135806107e0526001600160401b03811162003ee4576107c051910190601f8201121562003ee457620044a8620044b69135806106e05262003ffb565b604051806106c05262003fd9565b6106c0516106e051905260206106c05101926107c0516106e0519060206107e05161070051019260051b8301011162003ee4576020016106a05290925b6106e05160051b6107e05161070051019060206106a0519183010181101562004e6c57356001600160401b03811162003ee457606091018061074052601f19906107c05103011262003ee4576040516200454d8162003f69565b6200455e6020610740510162003ee9565b81526040610740510135602681101562003ee45760208201526107405160608101356107208190526001600160401b031062003ee45761010090601f19906060810135016107c05103011262003ee457620045c0604051806107a05262003f4c565b6107205161074051016020810135906001600160401b03821162003ee4576020620045f2926107c05192010162004221565b6107a051526107205161074051016040810135906001600160401b03821162003ee457602062004629926107c05192010162004021565b60206107a0510152610720516107405101926001600160401b0360608501351162003ee4576107c051603f6060860135860101121562003ee45762004678602060608601358601013562003ffb565b9462004688604051968762003fd9565b60608501358086016020908101358089526107c0516107205161074051938b01969493019092019160059190911b82016040011162003ee457604001925b61072051610740510160608801359081019088016020013560051b8101604001851015620047d2578435906001600160401b03821162003ee4570160e09182603f19836107c05103011262003ee457604051620047238162003f85565b60408301356001600160401b03811162003ee4576107c0516200474b91850160400162004152565b815260608301356020820152608080840135604083015260a09485850135606084015260c0916200477e83870162004013565b90840152840135946001600160401b03861162003ee45761010060209695620047c292620047b7899860406107c05191850101620041d4565b908601520162004013565b90820152815201930192620046c6565b505095915091935094919460406107a0510152610720516107405101946080860135610780526001600160401b0360808701351162003ee4576107c0519560808101350195603f8701121562003ee45762004831602087013562003ffb565b9462004841604051968762003fd9565b6020878101358088526107c051610780516107205161074051948b01989401019160051b82016040011162003ee4576040909893929897949701935b61078051610720516107405101016040602086013560051b82010186101562004caf578535610760526001600160401b0386351162003ee45761010090603f19908735016107c05103011262003ee45760405193620048dc8562003f4c565b6040610760516107805161072051610740510101010135600681101562003ee45785526060610760516107805161072051610740510101010135602086015261076051610780516107205161074051010101996001600160401b0360808c01351162003ee4576107c051605f60808d01358d0101121562003ee4578a906200496e604060808401358401013562003ffb565b9a6200497e6040519c8d62003fd9565b608083013592830160400135808d526107c051610760516107805161072051610740510101019094019360208e01939160051b85016060011162003ee4579192606001915b6107605161078051610720516107405101010160808f0135908101908f016040013560051b810160600184101562004bb5578335906001600160401b03821162003ee45760c0605f198383016107c05103011262003ee4576040519162004a2a8362003f30565b8181016060810135845260800135600581101562003ee457602084015260a08183010135600481101562003ee4576040840152603d60c08284010135101562003ee45760c0818301013560608401526001600160401b0360e082840101351162003ee4576107c05162004aa99083830160e08101350160600162004152565b60808401526101008183010135916001600160401b03831162003ee45701016080605f19826107c05103011262003ee4578f956040519262004aeb8462003efe565b60608301356001600160401b03811162003ee4576107c05162004b1391850160600162004221565b845260808301356001600160401b03811162003ee4576107c05162004b3d918501606001620042ac565b602085015260a08301356001600160401b03811162003ee4576107c05162004b6a91850160600162004337565b604085015260c0830135936001600160401b03851162003ee45762004b9d60209594606087966107c051920101620041d4565b606082015260a08201528152019301929350620049c3565b509697939c509798939a915050604082015260a091826107605161078051610720516107405101010101356060830152610760516107805161072051610740510101019160c09384840135946001600160401b03861162003ee45762004c2960209695604088976107c051920101620041d4565b608084015260e09162004c5083610760516107805161072051610740510101010162004013565b9084015262004c75610100610760516107805161072051610740510101010162004013565b9083015262004c9a610120610760516107805161072051610740510101010162004013565b9082015281520195019396979291976200487d565b509250969250925060606107a0510152610720516107405101936001600160401b0360a08601351162003ee4576107c0519460a0810135810195603f8701121562003ee45762004d03602087013562003ffb565b9262004d13604051948562003fd9565b6020878101358086526107c051610720516107405193880196930160a0860135019160051b82016040011162003ee457604001935b604060208a013560051b60a086013561072051610740510101010185101562004d86578435600581101562003ee45781526020948501940162004d48565b5096509694939291505060806107a05101526107205161074051019160c09283810135906001600160401b03821162003ee457602062004dcd926107c051920101620042ac565b60a06107a05101526107205161074051019260e09384810135906001600160401b03821162003ee457602062004e0a926107c05192010162004337565b906107a0510152610720516107405101926101008401356001600160401b03811162003ee4576107c05160209562004e4592018601620041d4565b906107a05101526107a05160408201528152019260206106a051016106a0529092620044f3565b50505091906106c05160208201526107005160408101356001600160401b03811162003ee4576107c05160409262004ea59201620041d4565b910152565b600511156200409c57565b90815180825260208080930193019160005b82811062004ed6575050505090565b83518552938101939281019260010162004ec7565b908082519081815260208091019281808460051b8301019501936000915b84831062004f1a5750505050505090565b909192939495848062004f3a600193601f198682030187528a516200412b565b980193019301919493929062004f09565b908082519081815260208091019281808460051b8301019501936000915b84831062004f7a5750505050505090565b909192939495848062004f9a600193601f198682030187528a5162004eb5565b980193019301919493929062004f69565b908082519081815260208091019281808460051b830101950193600080925b85841062004fdc575050505050505090565b9091929380959697601f1983820301855288519082808351928381520192019085905b8082106200502157505050908060019299019401940192959493919062004fca565b919380600192946001600160a01b03875116815201940192018893929162004fff565b90808251808352602080930192600592818084861b8301019601946000915b84831062005075575050505050505090565b90919293949596601f19828203018352875190610100808201835160068110156200409c579083929189945283850151848401528a60409182870151938386015283518091528561012082818801941b8701019401926000905b8282106200513a575050505050928291620051046001956060808501519084015260808085015190848303908501526200412b565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062005063565b9193959650919361011f19878203018552855190815181528c820151620051618162004eaa565b8d82015282820151620051748162004091565b8382015260609081830151603d8110156200409c576001938f93836200520f93828796015281620051ff620051ee620051dd6080620051c08189015160c080848a015288019062004eb5565b9560a0809901519881880391015287519080875286019062004eeb565b888701518582038a87015262004f4b565b8a8601518482038c86015262004fab565b930151918184039101526200412b565b9701950192018b9695949391620050cf565b90600182811c9216801562005253575b60208310146200523d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162005231565b9060009291805491620052718362005221565b918282526001938481169081600014620052d8575060011462005295575b50505050565b90919394506000526020928360002092846000945b838610620052c35750505050010190388080806200528f565b805485870183015294019385908201620052aa565b9294505050602093945060ff191683830152151560051b010190388080806200528f565b9081546200530a8162003ffb565b926040936200531c8551918262003fd9565b828152809460208092019260005281600020906000935b8585106200534357505050505050565b600184819284516200535b816200061d818a6200525e565b81520193019401939162005333565b9060405191828154918282526020928383019160005283600020936000905b828210620053a457505050620053a29250038362003fd9565b565b85548452600195860195889550938101939091019062005389565b90604051620053ce8162003f85565b60c060ff60068395620053e1816200536a565b8552600181015460208601526002810154604086015260038101546060860152826004820154161515608086015260405162005426816200061d81600586016200525e565b60a08601520154161515910152565b60068210156200409c5752565b603d8210156200409c5752565b9081546200545d8162003ffb565b926200546d604051948562003fd9565b818452600090815260208082208186015b8484106200548d575050505050565b60018381926200549d856200536a565b8152019201930192906200547e565b9060405191828154918282526020928383019160005283600020936000905b828210620054e457505050620053a29250038362003fd9565b85546001600160a01b031684526001958601958895509381019390910190620054cb565b908154620055168162003ffb565b9262005526604051948562003fd9565b818452600090815260208082208186015b84841062005546575050505050565b60018381926200555685620054ac565b81520192019301929062005537565b9060036060604051620055788162003efe565b620055c381956200558981620052fc565b835262005599600182016200544f565b6020840152620055ac6002820162005508565b60408401526200362e60405180968193016200525e565b0152565b919060608101906001600160a01b03845116815260208401519160606020830152825180915260808201602060808360051b85010194019160005b8181106200562a5750505050604062005627939401519060408184039101526200412b565b90565b90919294607f1985820301845285516001600160a01b03815116825260208101519060268210156200409c57604091602084015201519060606040820152620056828251610100606084015261016083019062004eeb565b602083810151838303605f190160808501528051808452928201929101906000905b80821062005a1757505050604083015190605f198382030160a0840152815180825260208201906020808260051b85010194019260005b82811062005992575050505050606083015190605f198382030160c0840152815190818152602081016020808460051b8401019401926000925b818410620057de575050505050608083015190605f198382030160e0840152602080835192838152019201906000905b808210620057ba57505050620057ad8360209360e0620057966200577e879660a060019a0151605f198683030161010087015262004f4b565b60c0850151848203605f190161012086015262004fab565b92015190610140605f19828503019101526200412b565b9701940192910162005602565b9091926020806001928651620057d08162004eaa565b815201940192019062005745565b9091929394601f9e9d9c9e19828203018452855190815160068110156200409c5781526020820151602082015260408201516101006040830152610100820181518091526101206020818501918360051b8601019301916000905b808210620058a657505050509e9f9d9e82602092620058728493606060019701516060840152608084015183820360808501526200412b565b9160a0810151151560a083015260c0810151151560c083015260e08091015115159101529701940194019293919062005715565b9091929361011f19868203018452845190815181526020820151620058cb8162004eaa565b60208201526040820151620058e08162004091565b6040820152606082015191603d8310156200409c5762005985826020939260019560608695015260a062005924608083015160c0608086015260c085019062004eb5565b9101519160a0818303910152606062005973620059606200594f855160808652608086019062004eeb565b878601518582038987015262004f4b565b6040850151848203604086015262004fab565b9201519060608184039101526200412b565b9601940192019062005839565b9091929394602080600192601f19868203018852885190620059fc620059c1835160e080855284019062004eb5565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a08501526200412b565b60c092830151151591909201529701950193929101620056db565b909192602080600192865115158152019401920190620056a4565b90620053a2604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301527f6465723a20000000000000000000000000000000000000000000000000000000604083015262005a9f815180926020868601910162004106565b810103602581018552018362003fd9565b90620053a26040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262005af6815180926020868601910162004106565b810103602081018552018362003fd9565b6020620053a291939293604051948162005b2b879351809286808701910162004106565b820162005b418251809386808501910162004106565b0103808552018362003fd9565b1562005b575750565b62005b7d9060405191829162461bcd60e51b83526020600484015260248301906200412b565b0390fd5b600019811462005b915760010190565b634e487b7160e01b600052601160045260246000fd5b80511562005bb55760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562005bb55760400190565b80516002101562005bb55760600190565b805182101562005bb55760209160051b010190565b600f620053a2916020949360405195869262005c6062005c528386016021907f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b60208201520190565b918281519485920162004106565b017f2c20616e642062616c616e63653a200000000000000000000000000000000000815262005c99825180936020878501910162004106565b010360101981018552018362003fd9565b6019620053a2916020949360405195869262005cfa62005c528386016021907f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b60208201520190565b017f2c20616e6420776974686472617761626c6520636173683a2000000000000000815262005d33825180936020878501910162004106565b010360061981018552018362003fd9565b9062005d508262003ffb565b62005d5f604051918262003fd9565b828152809262005d72601f199162003ffb565b0190602036910137565b62013888805482101562005bb5576000527ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df0190600090565b62013886805482101562005bb5576000527f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa40190600090565b62013881805482101562005bb5576000527fcd6f7cece5c70f73af31bb8ed8b80ae1c2a9e5eb261bd5ab2d9374b0c38719c80190600090565b6202711d805482101562005bb5576000527f7f4320370b90cfd882bd4442421f8b4dbea0ca3aefc8d29d4787126914d53c5a0190600090565b6201388a805482101562005bb5576000527f3fb2ace5abc3439263a869a5230f0e568826a389e5a73118798eab8fd0f728590190600090565b62027119805482101562005bb5576000527fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10190600090565b6202711b805482101562005bb5576000527fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f3990190600090565b805482101562005bb55760005260206000200190600090565b81811062005f30575050565b6000815560010162005f24565b600160401b811162003f1a57620138889081549080835581811062005f6157505050565b620053a2926000527ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df918201910162005f24565b600160401b811162003f1a57620138869081549080835581811062005fb957505050565b620053a2926000527f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa4918201910162005f24565b8054600082558062005ffd575050565b620053a29160005260206000209081019062005f24565b600160401b811162003f1a5762027119908154908083558181106200603857505050565b620053a2926000527fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e1918201910162005f24565b600160401b811162003f1a576202711b908154908083558181106200609057505050565b620053a2926000527fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f399918201910162005f24565b6201389180549060009081815582620060dc57505050565b81527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e945366918201915b8281106200611157505050565b81815560010162006104565b90600160401b811162003f1a578154908083558181106200613d57505050565b620053a2926000526020600020918201910162005f24565b919082811162006166576001920390565b50600091508190565b81156200617a570490565b634e487b7160e01b600052601260045260246000fd5b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000808210156200630e575b506d04ee2d6d415b85acef810000000080831015620062fe575b50662386f26fc1000080831015620062ee575b506305f5e10080831015620062de575b5061271080831015620062ce575b506064821015620062bd575b600a80921015620062b2575b600190816021818601956200623287620041b8565b9662006242604051988962003fd9565b80885262006253601f1991620041b8565b01366020890137860101905b6200626c575b5050505090565b600019019083907f30313233343536373839616263646566000000000000000000000000000000008282061a835304918215620062ac579190826200625f565b62006265565b91600101916200621d565b919060646002910491019162006211565b6004919392049101913862006205565b60089193920491019138620061f7565b60109193920491019138620061e7565b60209193920491019138620061d4565b604093508104915038620061ba565b601e620053a291602094936040519586926200636d62005c528386016021907f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b60208201520190565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620063a6825180936020878501910162004106565b010360011981018552018362003fd9565b90620063c38262003ffb565b604090620063d48251918262003fd9565b8381528093620063e7601f199162003ffb565b019160005b838110620063fa5750505050565b60209082516200640a8162003f4c565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e0830152828601015201620063ec565b62006454815462005221565b90816200645f575050565b81601f6000931160011462006472575055565b90808391825262006493601f60208420940160051c84016001850162005f24565b5555565b8054906000815581620064a8575050565b6000526020600020908101905b818110620064c1575050565b80620064cf60019262006448565b01620064b5565b90600160401b811162003f1a57815491818155828210620064f657505050565b600052602060002091820191015b81811062006510575050565b806200651e60019262006448565b0162006504565b805490600081558162006536575050565b6000526020600020908101905b8181106200654f575050565b806200655d60019262005fed565b0162006543565b90600160401b811162003f1a578154918181558282106200658457505050565b600052602060002091820191015b8181106200659e575050565b80620065ac60019262005fed565b0162006592565b8054600080835581620065c557505050565b60079282840292848404036200664657815260208120918201915b828110620065ee5750505050565b8082859255826001820155620066076002820162005fed565b620066156003820162006497565b620066236004820162006525565b620066316005820162006525565b6200663f6006820162006448565b01620065e0565b602482634e487b7160e01b81526011600452fd5b600160401b821162003f1a578054908281558183106200667957505050565b600792828402928484040362005b9157808402908482040362005b915760009182526020822092830192015b828110620066b35750505050565b8082859255826001820155620066cc6002820162005fed565b620066da6003820162006497565b620066e86004820162006525565b620066f66005820162006525565b620067046006820162006448565b01620066a5565b5160068110156200409c5790565b9060068110156200409c5760ff80198354169116179055565b906200673e8162004eaa565b60ff80198354169116179055565b90620067588162004091565b61ff0082549160081b169061ff001916179055565b90603d8110156200409c5762ff000082549160101b169062ff00001916179055565b9190601f81116200679f57505050565b620053a2926000526020600020906020601f840160051c83019310620067ce575b601f0160051c019062005f24565b9091508190620067c0565b91909182516001600160401b03811162003f1a576200680581620067fe845462005221565b846200678f565b602080601f83116001146200684457508192939460009262006838575b50508160011b916000199060031b1c1916179055565b01519050388062006822565b90601f198316958460005282600020926000905b888210620068935750508360019596971062006879575b505050811b019055565b015160001960f88460031b161c191690553880806200686f565b8060018596829496860151815501950193019062006858565b815160068110156200409c57620068c4908262006719565b602082015160018201556002810160408301516020815191620068e883856200665a565b01916000526020600020916000905b8282106200697c57505050509060e06005620053a293606084015160038201556200692a608085015160048301620067d9565b01916200694960a08201511515849060ff801983541691151516179055565b60c0810151835461ff00191690151560081b61ff00161783550151815462ff0000191690151560101b62ff000016179055565b80518051855560018501620069a160208301516200699a8162004eaa565b8262006732565b620069bc6040830151620069b58162004091565b826200674c565b6060820151603d8110156200409c57620069d6916200676d565b60808101518051906001600160401b03821162003f1a576020600288019162006a0084846200611d565b0190600052602060002060005b83811062006cab575050505060a0015180518051906020600388019162006a358484620064d6565b01906000526020600020906000905b83821062006c8b5750505050600485016020820151602081519162006a6a838562006564565b019160005260206000206000925b82841062006c275750505050600585016040820151602081519162006a9e838562006564565b019160005260206000206000925b82841062006bba5750505050606001518051906001600160401b03821162003f1a5762006aec8262006ae2600689015462005221565b600689016200678f565b602090601f831160011462006b3f57928260079360209360019660009262006b33575b5050600019600383901b1c191690851b1760068801555b01940191019092620068f7565b01519050388062006b0f565b906006870160005260206000209160005b601f198516811062006ba1575083602093600196938793600797601f1981161062006b87575b505050811b01600688015562006b26565b015160001960f88460031b161c1916905538808062006b76565b9192602060018192868501518155019401920162006b50565b80518051906001600160401b03821162003f1a5760209062006bdd83866200611d565b0183600052602060002060005b83811062006c0957505050506001602081920192019301929062006aac565b60019060206001600160a01b03855116940193818401550162006bea565b80518051906001600160401b03821162003f1a5760209062006c4a83866200611d565b0183600052602060002060005b83811062006c7657505050506001602081920192019301929062006a78565b60019060208451940193818401550162006c57565b600160208262006c9e83945187620067d9565b0193019101909162006a44565b60019060208451940193818401550162006a0d565b6201388390815481101562005bb557600691600052027f9e32270fdbb1cb37df0574dfc18a9a2c56583299a239108c9d137f746b82200a0190600090565b6202711690815481101562005bb557600691600052027f2a7aa4e7f2fefac7a07702701afb9c202f6f79fb2762c8e42b37a264307667fa0190600090565b6201388290815481101562005bb557600691600052027fe5dac618068543225ae1c2f585dbaa37d058ab507104bc7da3da5ab2e5666cc70190600090565b6202711590815481101562005bb557600691600052027f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf920190600090565b620138828054600160401b81101562003f1a5762006ddc9160018201905562006d3c565b91909162006def57620053a291620068ac565b634e487b7160e01b600052600060045260246000fd5b620138838054600160401b81101562003f1a5762006ddc9160018201905562006cc0565b620271168054600160401b81101562003f1a5762006ddc9160018201905562006cfe565b620271158054600160401b81101562003f1a5762006ddc9160018201905562006d7a565b1562006e7957565b608460405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a2060448201527f6469766964656e64576569676874206f766572666c6f770000000000000000006064820152fd5b61271081101562005bb557600390811b60028101549060009260049384830191825492829682849601935b85871062006f355750505050505050620056279162006f2d9162006fe1565b919062006e71565b98979091929394959862006f965762006f8a8962006f826001600160a01b0362006f656200054f9c9d8862005f0b565b905490891b1c169360009485528860205260408520549062007088565b9a9062007003565b95949392919062006f0e565b603282634e487b7160e01b6000525260246000fd5b90811562006fd857606462006fc481840293846200616f565b0362006fd05760019190565b600091508190565b60019150600090565b9190821562006ff95762006fc481840293846200616f565b5060019150600090565b156200700b57565b608460405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201527f6f6b656e73206f766572666c6f770000000000000000000000000000000000006064820152fd5b906001820191821062006fd05760019190565b9190820191821062006fd05760019190565b6201388b54620070e4620070ad6201733b565b91620070bf6127109384831062005b4e565b620070d96201388e546201388c54111562001929620173c2565b6201388d5462006fe1565b919050620070f162017423565b5060009081925b81841062007113575b6200710e93500462007159565b905090565b9160ff60078560031b015416156200715257836200713f6200714b9262003c786200054f969762006ee3565b94906200192962017423565b92620070f8565b9162007101565b90801562007171576200716c916200616f565b600191565b5050600090600090565b620138918054600160401b81101562003f1a576001810180835581101562005bb5576001600160a01b03916000527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e9453660191166001600160a01b0319825416179055565b6201388f8054600160401b81101562003f1a576001810180835581101562005bb5576001600160a01b03916000527f846ab89c81ea9339188216a1864da1a19ebe28d411cbec99efa70ca6d389710d0191166001600160a01b0319825416179055565b6201388190815491600160401b83101562003f1a578262001f30916001620053a29501905562005dee565b604051906200727b8262003fa1565b601882527f5468652070726f6772616d2069732065786563757465642e00000000000000006020830152565b600091825b602080840190815180518710156200743f5781620072cf88620072d79362005bed565b510162007a5a565b602692838210156200409c57601a918203620073975787620072fa915162005bed565b519282840151908110156200409c570362007353575093620073446200734c926200733c6200733560a060406200054f9a0151015162005ba7565b5162005ba7565b519062007088565b959062007a68565b92620072ac565b6064906040519062461bcd60e51b82526004820152601b60248201527f546865206f70636f6465206973206e6f74205041595f434153482e00000000006044820152fd5b92919050620073b081620072cf89869a979a5162005bed565b828110156200409c57601403620073e957505090620073446200054f9562003c78620073e2846200734c965162005bed565b5162007ab4565b620073fb90620072cf85855162005bed565b908110156200409c5760151462007419575b506200734c9062005b81565b9062007344620074389562003c78620073e2846200734c965162005bed565b906200740d565b505050909250803410600014620074ba57608460405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e20546865207460448201527f6f74616c207061796d656e742073686f756c64206265200000000000000000006064820152fd5b803411620078cb575b5062027129805460ff8116620074d98162004091565b600181036200750f5750505080620074ff620074f9620075059362007b4b565b62007b60565b62007bac565b620056276200726c565b6200751a8162004091565b600281148080620078bd575b156200762057505050506200753b8162007b4b565b15620075dc576200754c8162007b4b565b1562007598576200755d9062007bac565b6040516200756b8162003fa1565b601581527f54686520766f74652069732065786563757465642e0000000000000000000000602082015290565b606460405162461bcd60e51b815260206004820152601460248201527f496e76616c696420766f74652070726f6772616d0000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601760248201527f496e76616c696420766f74696e672070726f6772616d2e0000000000000000006044820152fd5b6200762b8262004091565b60038214918280620078af575b15620077335750505050506200764e8162007b4b565b15620076c95780620074ff620074f9620076689362007b4b565b604051620076768162003f69565b603a81527f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201527f616674657220766f74696e6720616e6420617070726f76616c2e000000000000604082015290565b608460405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f67726160448201527f6d2e0000000000000000000000000000000000000000000000000000000000006064820152fd5b6200773e8162004091565b8180620078a0575b8062007892575b15620077775750505050906200750591600360ff19825416179055620074ff620074f98262007b4b565b620077828162004091565b82156200787d575b5050806200786e575b620077d657505050604051620077a98162003fa1565b601381527f50726f6772616d207465726d696e617465642e00000000000000000000000000602082015290565b60ff19166001179055620077ea8162007b4b565b15620078045780620074ff620074f9620075059362007b4b565b608460405162461bcd60e51b815260206004820152603e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201527f76616c696420657865637574652070656e64696e672070726f6772616d2e00006064820152fd5b50620271285442101562007793565b6200788a91925062004091565b38806200778a565b50620271285442106200774d565b50620271275442101562007746565b506202712854421062007638565b506202712754421062007526565b6001600160a01b03908183511660005262013885908160205260406000205415620079c6575b620078fd903462006155565b901562007982576200792090838551166000528260205260406000205462007088565b9290156200793e5783511660005260205260406000205538620074c3565b606460405162461bcd60e51b815260206004820152601960248201527f546865206e65772062616c616e6365206f766572666c6f772e000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601c60248201527f546865207061796d656e742072657475726e206f766572666c6f772e000000006044820152fd5b6000908162013886928354915b82811062007a1f575b5015620079ed575b509050620078f1565b84865116600160401b82101562003f1a5762001f3082620078fd95600162007a189501905562005db5565b38620079e4565b8662007a2b8262005db5565b919054818b51169260031b1c161462007a4f5762007a499062005b81565b620079d3565b5050600138620079dc565b5160268110156200409c5790565b1562007a7057565b606460405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152fd5b906000805b6040840160a062007ace818351015162005bcb565b515184101562007b4357926200734462007b3360409462007b2b8562007b238662007b118b62007b18836200054f9f9e62007b119062007b399e51015162005bcb565b5162005bed565b519451015162005bdc565b519062006fe1565b929062007a68565b62007088565b9192905062007ab9565b509093505050565b60200151511562007b5b57600190565b600090565b1562007b6857565b606460405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642070726f6772616d00000000000000000000000000000000006044820152fd5b62007bb78162014448565b5162013ef45760068110156200409c576003811462013e8a578062007c1a57606460405162461bcd60e51b815260206004820152601660248201527f5468652070726f6772616d20697320696e76616c6964000000000000000000006044820152fd5b600481036200b5ba5750906000905b602083015180518310156200b5b4578262007c449162005bed565b51602081018051602690818110156200409c57156200b570578151818110156200409c5760010362007e9257505060408091019062007c8860c08351015162005ba7565b519262007caa60a062007c9f818651015162005ba7565b519451015162005bcb565b519562007cbb8551855114620160fd565b62007cca85518851146201616f565b60005b855181101562007e105762007ce3818662005bed565b51612710908181101562005bb557600160ff600762007d0b9360031b015416151514620161e1565b62007d17828a62005bed565b5162007d24838862005bed565b51908282101562005bb557600662007d429260031b01549062007088565b9062007d4f848962005bed565b51918383101562005bb557600662007d6c9360031b015562016238565b62007d78828a62005bed565b519062007d86838862005bed565b518181101562005bb5578392600362007dc6928b62007daf6001600160a01b0398899262005bed565b5116600052811b0160205287600020549062007088565b62007dd2848a62005bed565b519283101562005bb55760036200054f9362007e0a9662007df4878e62005bed565b5116600052811b016020528760002055620162aa565b62007ccd565b50939262007e2d9192965062007e26906201723d565b9262017121565b94519262007e3b8462003fbd565b60008452600036813760005b835181101562007e7557806200054f62007e6662007e6f938762005bed565b51878a62016d14565b62007e47565b509450926020925062007e89915062005b81565b91905062007c29565b8151818110156200409c5760020362008166575050604080910180519283519562007ed762007ec660a08097015162005ba7565b519562007b18818651015162005bcb565b51938751865103620080fd578751845103620080945787518551036200802b575060005b8551811015620080155762007f11818762005bed565b5190612710918281101562005bb55762007f3760ff6007809360031b015416156201631b565b62007f43828962005bed565b518381101562005bb55760031b01805460ff1916600117905562007f68818a62005bed565b5162007f75828962005bed565b51908382101562005bb557600562007f919260031b01620067d9565b62007f9d818662005bed565b5162007faa828962005bed565b518381101562005bb55760031b6001015562007fc7818762005bed565b5162007fd4828962005bed565b518381101562005bb55760031b6002015562007ff1818862005bed565b519182101562005bb557600060066200800f9360031b015562005b81565b62007efb565b5095509390506020925062007e89915062005b81565b6084905162461bcd60e51b815260206004820152603c60248201527f546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b6560448201527f6e4469766964656e64576569676874206973206e6f7420657175616c000000006064820152fd5b6084905162461bcd60e51b815260206004820152603960248201527f546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b6560448201527f6e566f74696e67506f776572206973206e6f7420657175616c000000000000006064820152fd5b6084905162461bcd60e51b815260206004820152603860248201527f546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b6560448201527f6e496e6465784172726179206973206e6f7420657175616c00000000000000006064820152fd5b81959394929551818110156200409c576003036200874557505060408401906200819560c08351015162005ba7565b5193620081ac60a062007c9f818651015162005ba7565b5193620081c1865185511462001929620174fa565b620081d4865186511462001929620174fa565b60005b86518110156200823e57620081ed818662005bed565b519061271082101562005bb557600362008238926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b5111156200192962017621565b620081d7565b50909493919460005b855181101562008373576200825d818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b01602052620082a160406000205462008299848962005bed565b519062006155565b90620082ae848a62005bed565b51918383101562005bb5576003620082dd93878f5116600052811b016020526040600020556200192962017621565b620082e9828862005bed565b518181101562005bb5576003908462008303858c62005bed565b5116600052811b01602052620083246040600020546200733c848962005bed565b62008330848a62005bed565b519283101562005bb55760036200054f936200836d9662008352878e62005bed565b5116600052811b016020526040600020556200192962017697565b62008247565b5092620083919195969492506200838a906201723d565b9162017121565b926001600160a01b0360405191620083a98362003fa1565b60018352602036818501375116620083c18262005ba7565b526000905b82518210156200873157620083dc828462005bed565b5196620083ea865162005d44565b93600095620083fa845162005d44565b6104c0528698875b8951811015620084c357896200842f8d6001600160a01b0362008426858562005bed565b51169062017008565b158062008485575b6200844f575b50620084499062005b81565b62008402565b81996001600160a01b036200846d62008449946200847b9462005bed565b51166200200d828c62005bed565b989050896200843d565b50506127108c101562005bb5576001600160a01b03620084a6828c62005bed565b511660005260038c811b0160205289604060002054151562008437565b509098969498979291939760005b895181101562008561576127108c101562005bb5576001600160a01b03620084fa828c62005bed565b511660005260038c811b01602052896040600020541562008528575b50620085229062005b81565b620084d1565b81996001600160a01b03620085466200852294620085579462005bed565b51166200200d826104c05162005bed565b9890508962008516565b50989593929650966127108a1015610680526127108a101562005bb55760048a60031b0154966200859d62008597878a6201542e565b62005d44565b9860009a8b610240525b6106805162005bb557610240518a8110156200865757620085f56001600160a01b038f92620085e39060006106805260048560031b0162005f0b565b90549060031b1c166104c051620170cc565b1562008615575b506200860b6102405162005b81565b61024052620085a7565b9b8b6200200d826200864f949f620086406001600160a01b03916004610240519160031b0162005f0b565b90549060031b1c169262005bed565b9a8c620085fc565b509b9398509591969499909893996000915b838310620086f857505050506106805162005bb5578151916001600160401b03831162003f1a576020600491620086a685848660031b016200611d565b019160031b01600052602060002060005b838110620086da5750505050620086ce9062005b81565b909491959295620083c6565b60019060206001600160a01b038551169401938184015501620086b7565b620087236200872a916001600160a01b0362008715868662005bed565b51166200200d828a62005bed565b9262005b81565b9162008669565b50505091926020915062007e899062005b81565b81959394929551818110156200409c57600403620089d2575050604080920160c094620087866200877a878451015162005ba7565b51968351015162005bcb565b51946200879d60a062007c9f818651015162005ba7565b5193620087b2885188511462001929620174fa565b620087c5885185511462001929620174fa565b620087d8885186511462001929620174fa565b60005b88518110156200883f57620087f1818662005bed565b519061271082101562005bb557600362008839926001600160a01b0362008819848e62005bed565b5116600052811b016020526200054f88600020546200822b838a62005bed565b620087db565b50909691959294939660005b83518110156200897f5762008861818862005bed565b5190612710918281101562005bb55760036001600160a01b03918262008888858a62005bed565b5116600052811b01602052620088a98b62008299848b600020549262005bed565b90620088b6848c62005bed565b51918583101562005bb5576003620088ef9385620088d5888d62005bed565b5116600052811b016020528a600020556200192962017621565b620088fb828a62005bed565b518381101562005bb5576003908262008915858b62005bed565b5116600052811b01602052620089368b6200733c848b600020549262005bed565b91905062008945838b62005bed565b519384101562005bb557620089799360039162008963858b62005bed565b5116600052811b01602052876000205562005b81565b6200884b565b5094620089a9929750620089a2919394506200899b906201723d565b9362017121565b9562017121565b9260005b835181101562007e7557806200054f62007e66620089cc938762005bed565b620089ad565b81959493955190808210156200409c57600591820362008c02575050506040918285019062008a1660a062008a0b818551015162005ba7565b519351015162005bcb565b5192825184510362008b995760005b835181101562008a7e5762008a3b818562005bed565b519061271082101562005bb557600362008a78926001600160a01b038b5116600052811b016020526200054f87600020546200822b838962005bed565b62008a25565b509092919260005b845181101562008b1a5762008a9c818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b0160205262008ad7886000205462008299848962005bed565b62008ae3848a62005bed565b519283101562005bb55760036200054f9362008b14968e5116600052811b0160205289600020556200192962017621565b62008a86565b5095939262008b2b9192506201723d565b916001600160a01b0381519462008b428662003fa1565b6001865260203681880137511662008b5a8562005ba7565b52519462008b688662003fbd565b60008652600036813760005b835181101562007e7557806200054f62007e6662008b93938762005bed565b62008b74565b6084855162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b60448201527f656e416d6f756e74206973206e6f7420657175616c00000000000000000000006064820152fd5b829693949651818110156200409c5760060362008ea05750505090604080920162008c3260c08251015162005ba7565b519462008c4960a062008a0b818551015162005ba7565b5192865183510362008e3757865184510362008dce5760005b875181101562008cc65762008c78818562005bed565b519061271082101562005bb557600362008cc0926001600160a01b0362008ca0848d62005bed565b5116600052811b016020526200054f87600020546200822b838962005bed565b62008c62565b509092919260005b875181101562008d7a5762008ce4818662005bed565b516127108082101562005bb557600383928b62008d0b6001600160a01b0396879262005bed565b5116600052811b0160205262008d2b886000205462008299848962005bed565b62008d37848a62005bed565b519283101562005bb55760036200054f9362008d749662008d5a8f889062005bed565b5116600052811b0160205289600020556200192962017621565b62008cce565b50959262008d8f91925062007e26906201723d565b92519462008d9d8662003fbd565b60008652600036813760005b835181101562007e7557806200054f62007e6662008dc8938762005bed565b62008da9565b6084855162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662061646472657373657320616e6420616d6f7560448201527f6e7473206973206e6f7420657175616c000000000000000000000000000000006064820152fd5b6084855162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f662061646472657373657320616e6420746f6b6560448201527f6e436c6173736573206973206e6f7420657175616c00000000000000000000006064820152fd5b8251818110156200409c57600703620090085750505060408091019362008ecc60c08651015162005ba7565b519262008ede60a08751015162005ba7565b519551519162008ef6855188511462001929620174fa565b60005b8551811015620080155762009002906200054f6001600160a01b038260028862008fea8e62008fdf8e62008fc88f8962008f348a8562005bed565b511660005262008f718962008f6981620138809a8b60205262008f6360ff8760002054161562001929620175e6565b62005bed565b519662005bed565b51968a62008fa783519b8c9662008f888862003efe565b600188526060602089019860008a528781019b8c52019b8c5262005bed565b511660005260205260002097511515889060ff801983541691151516179055565b51865461ff00191690151560081b61ff0016178655565b5160018501620067d9565b5191015562008ffa838a62005bed565b511662007241565b62008ef9565b8251959695939492818510156200409c57600894850362009100575050506200903a60c0604080950151015162005ba7565b519360005b8551811015620090eb57620090e5906001600160a01b038062009063838a62005bed565b5116600052620138809081602052620090ba60ff620090916001828c60002054161515146200192962017535565b826200909e868d62005bed565b5116600052836020528960002054891c161562001929620175ab565b620090c6838a62005bed565b51166000526020528560002061010061ff001982541617905562005b81565b6200903f565b50949093506020925062007e89915062005b81565b8051828110156200409c57600903620091d5575050506200912a60c0604080950151015162005ba7565b519360005b8551811015620090eb57620091cf90866001600160a01b038062009154848462005bed565b5116600052620091a8600189836200918a8762013880978860205262008f638660ff809760002054161515146200192962017535565b5116600052846020528a600020548a1c161515146200192962017570565b620091b4838a62005bed565b51166000526020528560002061ff0019815416905562005b81565b6200912f565b809796949293959751828110156200409c57600a03620092b457505050506040809401916200921a60a06200920f60c08651015162005ba7565b519451015162005ba7565b51916200922f845184511462001929620174fa565b60005b845181101562007e7557620092ae906001600160a01b038062009256838962005bed565b511660005262013880806020526200927e600160ff8c60002054161515146200192962017535565b6200928a838862005bed565b519162009298848a62005bed565b5116600052602052600289600020015562005b81565b62009232565b8097959751828110156200409c57600b03620093845750505050604080920193620092e460c08651015162005ba7565b5194515191620092fc865184511462001929620174fa565b60005b865181101562007e75576200937e906200054f6001600160a01b038062009327848c62005bed565b511660005262013880806020526200934f600160ff8b60002054161515146200192962017535565b6200935b848962005bed565b519162009369858d62005bed565b511660005260205260018860002001620067d9565b620092ff565b8097949593969751828110156200409c57600c03620094dd57505050604001606091828251015193620093b785620154d5565b60005b8551811015620094c75760e0620093d682878751015162005bed565b510151156200945e57620093fa620093f382878751015162005bed565b5162006db8565b62013882805460001992919083810190811162005b91576200941d8a9162006d3c565b5001805461ff0019166101001790555491820191821162005b91578762009448620094589362006d3c565b5001805460ff1916905562005b81565b620093ba565b620094796200947282878751015162005bed565b5162006e05565b62013882805460001992919083810190811162005b91576200949c8a9162006cc0565b5001805461ff0019166101001790555491820191821162005b91578762009448620094589362006cc0565b5095915093506020925062007e89915062005b81565b809796959392949751828110156200409c57600d03620096345750506040019460206200950f60a08851015162005ba7565b51965101519162009524875184511462015dd4565b60005b875181101562008015578080878a62009545620095d5958962005bed565b5115620095db57620095a66200958d8483620095786200956b620095b198889762005bed565b5162013882541162015e6c565b62008f638d620095946200958d858562005bed565b5162006d3c565b509060ff9889920154901c1662015ec3565b500154161562015f35565b86620095c26200958d838c62005bed565b5001805460ff1916600117905562005b81565b62009527565b620095a66200961c848362009607620095fa6200962398889762005bed565b5162013883541162015e6c565b62008f638d620095946200961c858562005bed565b5162006cc0565b86620095c26200961c838c62005bed565b809794939751828110156200409c57600e036200971b5750506040019160206200966360a08551015162005ba7565b51935101519562009678845188511462015dd4565b60005b845181101562008015578062009696620096a2928a62005bed565b51620096a85762005b81565b6200967b565b620096c5620096b8828862005bed565b5162013882541162015fa7565b6200970a87620096ef620096de6200958d858b62005bed565b5060ff9283910154891c1662016019565b88620097006200958d858b62005bed565b500154166201608b565b86620094486200958d838962005bed565b80919293509694959651828110156200409c57600f03620098415750506040016060918282510151936200974f85620154d5565b60005b8551811015620094c75760e06200976e82878751015162005bed565b51015115620097df576200978b620093f382878751015162005bed565b62013882805460001992919083810190811162005b9157620097ae8a9162006d3c565b5001805461ff0019166101001790555491820191821162005b915787620095c2620097d99362006d3c565b62009752565b620097f36200947282878751015162005bed565b62013882805460001992919083810190811162005b9157620098168a9162006cc0565b5001805461ff0019166101001790555491820191821162005b915787620095c2620097d99362006cc0565b809192939496955051828110156200409c57601003620098e657505060400151906200987660a0608084015193015162005ba7565b51936200988b835186511462001929620174fa565b60005b8351811015620098d357806200054f620098ad620098cd938762005bed565b51620098b98162004eaa565b620098c5838a62005bed565b51906201543c565b6200988e565b509350916020915062007e899062005b81565b8095929551828110156200409c5760110362009b96575050906040809401916200991b60a06200920f60c08651015162005ba7565b51916200992c8451845114620153e2565b60005b8451811015620099a5576200999f906200054f6001600160a01b038062009957848a62005bed565b51166000526201388580602052620099798b600020546200733c868b62005bed565b91909262009988868c62005bed565b51166000526020528a600020556200192962017499565b6200992f565b5093945091620099b6915062017121565b906201388692835494620099d0620085978551886201542e565b91600093845b88811062009b58575060005b865181101562009a96576000805b8a811062009a47575b501562009a12575b62009a0c9062005b81565b620099e2565b9462009a3e62009a0c916001600160a01b0362009a30898b62005bed565b51166200200d828962005bed565b95905062009a01565b62009a528162005db5565b906001600160a01b03918291549060031b1c169062009a72858c62005bed565b51161462009a8b5762009a859062005b81565b620099f0565b5050600138620099f9565b5096509490935062009aa88362005d44565b908151916001600160401b03831162003f1a5760209062009ac98462005f95565b019060005260005b82811062009b1a5750505060005b82811062009af75750505062007e8960209162005b81565b806200054f6001600160a01b0362001f2362009b14948662005bed565b62009adf565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa401550162009ad1565b9462009b8962009b90916001600160a01b0362009b758962005db5565b90549060031b1c166200200d828962005bed565b9562005b81565b620099d6565b8051828110156200409c5760120362009e2157505060408094019162009bc760a06200920f60c08651015162005ba7565b519162009bd88451845114620153e2565b60005b845181101562009c2b5762009c25906200054f6001600160a01b038062009c03848a62005bed565b51166000526201388580602052620099798b6000205462008299868b62005bed565b62009bdb565b50949150929162009c3c9062017121565b9062013886805462009c4e8162005d44565b9260009485925b80841062009d1c575050505062009c6c8362005d44565b908151916001600160401b03831162003f1a5760209062009c8d8462005f95565b019060005260005b82811062009cde5750505060005b82811062009cbb5750505062007e8960209162005b81565b806200054f6001600160a01b0362001f2362009cd8948662005bed565b62009ca3565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa401550162009c95565b9297600097929597949194998a5b865181101562009e0f5762009d3f8b62005db5565b906001600160a01b03918291549060031b1c169062009d5f838a62005bed565b51161462009d785762009d729062005b81565b62009d2a565b509950976001979592979491945b8062009ddd575b1562009da55762009d9e9062005b81565b9262009c55565b9562009dd662009d9e916001600160a01b0362009dc28a62005db5565b90549060031b1c166200200d828a62005bed565b9662005b81565b506001600160a01b0362009df18262005db5565b90549060031b1c166000526201388560205282600020541562009d8d565b50999890989795929794919462009d86565b8095929551828110156200409c5760130362009e8257505060408091015101519260005b845181101562009e7157806200054f62009e6462009e6b938862005bed565b5162016981565b62009e45565b5092509062007e8960209162005b81565b805191808310156200409c5760149283036200a0255750505060408091019062009eb160c08351015162005ba7565b519262009ec860a062007c9f818651015162005ba7565b519562009ed98551855114620160fd565b62009ee885518851146201616f565b60005b855181101562009fd05762009f01818962005bed565b5162009f0e828762005bed565b51612710918282101562005bb557600662009f2f9260031b01549062007088565b9062009f3c848962005bed565b51918383101562005bb557600662009f599360031b015562016238565b62009f65828a62005bed565b519062009f73838862005bed565b518181101562005bb5578392600362009f9c928b62007daf6001600160a01b0398899262005bed565b62009fa8848a62005bed565b519283101562005bb55760036200054f9362009fca9662007df4878e62005bed565b62009eeb565b50939262009fe69192965062007e26906201723d565b94519262009ff48462003fbd565b60008452600036813760005b835181101562007e7557806200054f62007e666200a01f938762005bed565b6200a000565b8196949593965190808210156200409c5760159182036200a57d575050505060408401906200a05960c08351015162005ba7565b51936200a07060a062007c9f818651015162005ba7565b51936200a085865185511462001929620174fa565b6200a098865186511462001929620174fa565b60005b86518110156200a0f5576200a0b1818662005bed565b519061271082101562005bb55760036200a0ef926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b6200a09b565b50909493919460005b85518110156200a207576200a114818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b016020526200a15060406000205462008299848962005bed565b906200a15d848a62005bed565b51918383101562005bb55760036200a18c93878f5116600052811b016020526040600020556200192962017621565b6200a198828862005bed565b518181101562005bb557600390846200a1b2858c62005bed565b5116600052811b016020526200a1d36040600020546200733c848962005bed565b6200a1df848a62005bed565b519283101562005bb55760036200054f936200a2019662008352878e62005bed565b6200a0fe565b50926200a21e9195969492506200838a906201723d565b926001600160a01b03604051916200a2368362003fa1565b600183526020368185013751166200a24e8262005ba7565b526000905b825182101562008731576200a269828462005bed565b51966200a277865162005d44565b936000956200a287845162005d44565b610600528698875b89518110156200a33957896200a2b38d6001600160a01b0362008426858562005bed565b15806200a2fb575b6200a2d3575b506200a2cd9062005b81565b6200a28f565b81996001600160a01b036200846d6200a2cd946200a2f19462005bed565b989050896200a2c1565b50506127108c101562005bb5576001600160a01b036200a31c828c62005bed565b511660005260038c811b016020528960406000205415156200a2bb565b509098969498979291939760005b89518110156200a3d7576127108c101562005bb5576001600160a01b036200a370828c62005bed565b511660005260038c811b0160205289604060002054156200a39e575b506200a3989062005b81565b6200a347565b81996001600160a01b036200a3bc6200a398946200a3cd9462005bed565b51166200200d826106005162005bed565b989050896200a38c565b50989593929650966127108a1015610140526127108a101562005bb55760048a60031b0154966200a40d62008597878a6201542e565b9860009a8b6103c0525b6101405162005bb5576103c0518a8110156200a4b8576200a4656001600160a01b038f926200a4539060006101405260048560031b0162005f0b565b90549060031b1c1661060051620170cc565b156200a485575b506200a47b6103c05162005b81565b6103c0526200a417565b9b8b6200200d826200a4b0949f620086406001600160a01b039160046103c0519160031b0162005f0b565b9a8c6200a46c565b509b9398509591969499909893996000915b8383106200a55957505050506101405162005bb5578151916001600160401b03831162003f1a5760206004916200a50785848660031b016200611d565b019160031b01600052602060002060005b8381106200a53b57505050506200a52f9062005b81565b9094919592956200a253565b60019060206001600160a01b0385511694019381840155016200a518565b620087236200a576916001600160a01b0362008715868662005bed565b916200a4ca565b8297949695975192818410156200409c5760169384036200a5ea57505050505060c060406200a5b0920151015162005ba7565b519260005b845181101562009e7157806200054f6001600160a01b036200a5dc6200a5e4948962005bed565b5116620071de565b6200a5b5565b8051828110156200409c576017036200a65357608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203233206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b8051828110156200409c576018036200a6c757505050505060c060406200a67e920151015162005ba7565b5162013892805460ff191660011790559260005b845181101562009e7157806200054f6001600160a01b036200a6b96200a6c1948962005bed565b51166200717b565b6200a692565b8097969751828110156200409c576019036200a85057505050505060008080604080940160a0808251015180516200a817575b505051906001600160a01b036200a71e6200733560c060e086015195015162005ba7565b511690602083519301915af1903d156200a80e573d916200a73f83620041b8565b926200a74e8351948562003fd9565b83523d6000602085013e5b156200a76e57505062007e8960209162005b81565b62005b7d92506200a7ef8151927f5468652063616c6c20746f2074686520636f6e7472616374206973206e6f742060208501527f7375636365737366756c2e2052657475726e20646174613a2000000000000000838501528381516200a7de816059946020868601910162004106565b810103603981018552018362003fd9565b5191829162461bcd60e51b83526020600484015260248301906200412b565b6060916200a759565b6200a8229062005ba7565b51516200a831575b806200a6fa565b81925062007335906200a8479251015162005ba7565b5190386200a82a565b8051828110156200409c57601a036200a95b57505050506200a87b60a0604080940151015162005ba7565b51906200a88c6003835114620153e2565b6200a8978262005ba7565b51926200a8b06200a8a88462005bcb565b519362005bdc565b51926200a9185750509162007e89916001602094146000146200a911576200a8f0906200a8e36201388d91825462007088565b9091556200192962017423565b6200054f6201388e6200a904815462007075565b909155620019296201745e565b5062005b81565b60649250519062461bcd60e51b82526020600483015260248201527f496e76616c6964207061796d656e7420747970650000000000000000000000006044820152fd5b80919293945051828110156200409c57601b036200ade4575050505050906200a99b6201388b54620070bf6200a9906201733b565b612710831062005b4e565b50506200a9a762017423565b506000805b61271081106200ad7f575b50506200a9c36200709a565b6200a9d26202712a5462005d44565b9060009384905b6127108210156200ad73578160031b9460ff600787015416156200ab28576000976002870154156200ab1657889798975b62005bb55760048701548810156200aafc576200aa2b886004890162005f0b565b90549060031b1c6001600160a01b0316988960005260038801602052604099868b60002054906200aa5c9162006fe1565b9b906200aa6862017423565b6200aa739162005b4e565b60009b60028b01546200aa869162006fe1565b91906200aa9262017423565b6200aa9d9162005b4e565b828d52620138876020528c20908154906200aab89162007088565b9091556200aac562017423565b6200aad09162005b4e565b6200aadc828962005bed565b526200aae89062005b81565b976200aaf49062005b81565b97986200aa0a565b929095506200ab0d91965062005b81565b9095946200a9d9565b929095506200ab0d9196975062005b81565b959392509350505b6200ab3b8262005d44565b91600091825b8281106200acde5750505062013888908154926200ab646200859785846201542e565b9360009081905b8082106200aca557505060005b8381106200ac1057505050508151916001600160401b03831162003f1a576020906200aba48462005f3d565b019060005260005b8281106200abd25750505062007e8960209160006201388d5560006201388e5562005b81565b60019060206001600160a01b03845116930192817ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df0155016200abac565b6000805b8381106200ac5d575b50156200ac36575b6200ac309062005b81565b6200ab78565b906200ac546200ac30916001600160a01b0362008715858762005bed565b9190506200ac25565b6001600160a01b03806200ac72858862005bed565b5116906200ac81838b62005bed565b5116146200ac9a576200ac949062005b81565b6200ac14565b50506001386200ac1d565b9091620087236200acd7916001600160a01b036200acc38662005d7c565b90549060031b1c166200200d828b62005bed565b906200ab6b565b6000805b8581106200ad2b575b50156200ad04575b6200acfe9062005b81565b6200ab41565b926200ad226200acfe916001600160a01b0362009a30878662005bed565b9390506200acf3565b6001600160a01b03806200ad40858762005bed565b5116906200ad4f838a62005bed565b5116146200ad68576200ad629062005b81565b6200ace2565b50506001386200aceb565b9394929150506200ab30565b8060031b9060ff600783015416156200addd576200adcb62007b336200054f946200adbf6200add79560026200adb58762006ee3565b9101549062006fe1565b92906200192962017423565b93906200192962017423565b6200a9ac565b506200a9b7565b8051828110156200409c57601c036200ae4d57608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203238206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b8051828110156200409c57601d036200ae73575b505050505062007e8960209162005b81565b8051828110156200409c57601e146200ae61578051828110156200409c57601f036200aec957505050506020916200aebf6200aeb8604062007e899401515162005ba7565b51620169b8565b913880806200ae61565b8051828110156200409c576020036200aeef575b505050505062007e896020916200aebf565b805190828210156200409c5760218092036200af0d575b506200aedd565b8051838110156200b55b576022036200af4e5750505050505062007e896020916201389260ff1981541690556200af43620060c4565b91388080806200af06565b8051838110156200b55b576023036200af75575b50505050505062007e896020916200af43565b8051838110156200b55b576024146200af62578051838110156200b55b576025146200af62579795949751918210156200b5475750036200b503575060408401906200afc660c08351015162005ba7565b51936200afdd60a062007c9f818651015162005ba7565b51936200aff2865185511462001929620174fa565b6200b005865186511462001929620174fa565b60005b86518110156200b062576200b01e818662005bed565b519061271082101562005bb55760036200b05c926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b6200b008565b50909493919460005b85518110156200b174576200b081818662005bed565b51906127108083101562005bb55760036001600160a01b0393848c5116600052811b016020526200b0bd60406000205462008299848962005bed565b906200b0ca848a62005bed565b51918383101562005bb55760036200b0f993878f5116600052811b016020526040600020556200192962017621565b6200b105828862005bed565b518181101562005bb557600390846200b11f858c62005bed565b5116600052811b016020526200b1406040600020546200733c848962005bed565b6200b14c848a62005bed565b519283101562005bb55760036200054f936200b16e9662008352878e62005bed565b6200b06b565b50926200b18b9195969492506200838a906201723d565b926001600160a01b03604051916200b1a38362003fa1565b600183526020368185013751166200b1bb8262005ba7565b526000905b82518210156200b4ea576200b1d6828462005bed565b51966200b1e4865162005d44565b936000956200b1f4845162005d44565b610420528698875b89518110156200b2a657896200b2208d6001600160a01b0362008426858562005bed565b15806200b268575b6200b240575b506200b23a9062005b81565b6200b1fc565b81996001600160a01b036200846d6200b23a946200b25e9462005bed565b989050896200b22e565b50506127108c101562005bb5576001600160a01b036200b289828c62005bed565b511660005260038c811b016020528960406000205415156200b228565b509098969498979291939760005b89518110156200b344576127108c101562005bb5576001600160a01b036200b2dd828c62005bed565b511660005260038c811b0160205289604060002054156200b30b575b506200b3059062005b81565b6200b2b4565b81996001600160a01b036200b3296200b305946200b33a9462005bed565b51166200200d826104205162005bed565b989050896200b2f9565b50989593929650966127108a1015610120526127108a101562005bb55760048a60031b0154966200b37a62008597878a6201542e565b9860009a8b610200525b6101205162005bb557610200518a8110156200b425576200b3d26001600160a01b038f926200b3c09060006101205260048560031b0162005f0b565b90549060031b1c1661042051620170cc565b156200b3f2575b506200b3e86102005162005b81565b610200526200b384565b9b8b6200200d826200b41d949f620086406001600160a01b03916004610200519160031b0162005f0b565b9a8c6200b3d9565b509b9398509591969499909893996000915b8383106200b4c657505050506101205162005bb5578151916001600160401b03831162003f1a5760206004916200b47485848660031b016200611d565b019160031b01600052602060002060005b8381106200b4a857505050506200b49c9062005b81565b9094919592956200b1c0565b60019060206001600160a01b0385511694019381840155016200b485565b620087236200b4e3916001600160a01b0362008715868662005bed565b916200b437565b50505091926020915062007e899091388080806200af62565b6064906040519062461bcd60e51b82526020600483015260248201527f496e76616c6964206f7065726174696f6e2074797065000000000000000000006044820152fd5b634e487b7160e01b60005260045260246000fd5b82634e487b7160e01b60005260045260246000fd5b606460405162461bcd60e51b815260206004820152601b60248201527f4f7065726174696f6e207479706520697320756e646566696e656400000000006044820152fd5b50915050565b600281036200b61b5760405162461bcd60e51b815260206004820152602a60248201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560448201526967696e2073797374656d60b01b6064820152608490fd5b6001146200b6265750565b906200b6366201388354620063b7565b805190600160401b821162003f1a57620271165482620271165580831062013df1575b50602001620271166000527f2a7aa4e7f2fefac7a07702701afb9c202f6f79fb2762c8e42b37a264307667fa6000915b83831062013dd0575050505060005b62013883548110156200b6d257806200054f6200b6b96200b6cc9362006cc0565b506200b6c58362006cfe565b9062014356565b6200b698565b506200b6e26201388254620063b7565b805190600160401b821162003f1a57620271155482620271155580831062013d33575b50602001620271156000527f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf926000915b83831062013d12575050505060005b62013882548110156200b77757806200054f6200b7656200b7719362006d3c565b506200b6c58362006d7a565b6200b744565b5060005b612710811015806200b94257600160ff6201389a8460031b0154161515146200b7b1575b506200b7ab9062005b81565b6200b77b565b916000835b62005bb557620138978360031b01548110156200b822576200b819929350600092816001600160a01b036200b7f58694620138978960031b0162005f0b565b90549060031b1c16600052620138968660031b016020526000604081205562005b81565b9093926200b7b6565b5091604051906200b8338262003fbd565b6000825262005bb5578051906001600160401b03821162003f1a576020906200b86583620138978660031b016200611d565b01620138978360031b01600052602060002060005b8381106200b9245750505050600381901b6201389a8101805460ff191690556000620138938201819055620138948201819055620138958201556201389801546200b7ab91906200b8cb9062005221565b601f908181116200b8f8575b50506000620138988260031b01556000620138998260031b0155906200b79f565b6200b91c91620138988460031b016000526020600020910160051c81019062005f24565b38806200b8d7565b60019060206001600160a01b0385511694019381840155016200b87a565b505060005b612710811062013c7d575060005b62013881548110156200b9b357806001600160a01b036200b97a6200b9ad9362005dee565b90549060031b1c166000526202711360205260006002604082208281556200b9a56001820162006448565b015562005b81565b6200b955565b506200b9c3620138815462005d44565b8051906001600160401b03821162003f1a57600160401b821162003f1a57602090620271145483620271145580841062013c44575b50016202711460005260005b82811062013c065750505060005b62013881548110156200ba93576001600160a01b036200ba328262005dee565b90549060031b1c1690620271145481101562005bb5576200ba8d9162027114600052817f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c01906001600160a01b031982541617905562005b81565b6200ba12565b509060005b62013881548110156200bb7357806200bab56200bb0b9262005dee565b906001600160a01b03918291549060031b1c1660005262013880602052604080600020916200bae48462005dee565b90549060031b1c1660005262027113602052600020908082036200bb11575b505062005b81565b6200ba98565b600280916200bb5460ff6200bb3581845416879060ff801983541691151516179055565b825460081c16859061ff00825491151560081b169061ff001916179055565b6200bb66600182016001860162013fec565b015491015538806200bb03565b5060005b6202711d548110156200bbc857806001600160a01b036200bb9c6200bbc29362005e27565b90549060031b1c166000526202711c6020526200054f6040600020606481019062005f24565b6200bb77565b506200bbd86201388a5462005d44565b8051906001600160401b03821162003f1a57600160401b821162003f1a576020906202711d54836202711d5580841062013bcd575b50016202711d60005260005b82811062013b8f5750505060005b6201388a548110156200bc6957806200054f6001600160a01b036200bc506200bc639462005e60565b90549060031b1c1662001f308362005e27565b6200bc27565b5060005b6201388a548110156200bcf857806200bc8a6200bcdf9262005e60565b906001600160a01b03918291549060031b1c1660005262013889602052604080600020916200bcb98462005e60565b90549060031b1c166000526202711c602052600020908082036200bce557505062005b81565b6200bc6d565b6200bcf09162014411565b38806200bb03565b506201388b546202711e556201388c546202711f556201388d5462027120556201388e5462027121556201388f546001600160401b03811162003f1a57600160401b811162003f1a57620271225481620271225580821062013b56575b507f846ab89c81ea9339188216a1864da1a19ebe28d411cbec99efa70ca6d389710d8054906000915b83831062013b1657505050506201389054600160401b811162003f1a57620271235481620271235580821062013ac2575b507f7f73709277f72a9bc7b284375e83603a53394744e9fa86da811e86c2aa78e05e620271236000527f4ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b12246000915b83831062013aa4575050505062013891546001600160401b03811162003f1a57600160401b811162003f1a57620271245481620271245580821062013a6b575b506202712460009081527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e94536680545b83831062013a2b575050505060ff620138925416151560ff8019620271255416911617620271255560005b62027119548110156200bee057806001600160a01b036200bebb6200beda9362005e99565b90549060031b1c16600052620271186020526000604081205562005b81565b6200be96565b506200bef0620138865462005d44565b8051906001600160401b03821162003f1a576020906200bf108362006014565b016202711960005260005b828110620139ed5750505060005b62013886548110156200bf6b57806200054f6001600160a01b036200bf526200bf659462005db5565b90549060031b1c1662001f308362005e99565b6200bf29565b5060005b62013886548110156200bfde57806200bf8c6200bfd89262005db5565b906001600160a01b03918291549060031b1c166000526201388560205260408060002054916200bfbc8462005db5565b90549060031b1c16600052620271186020526000205562005b81565b6200bf6f565b5060005b6202711b548110156200c02c57806001600160a01b036200c0076200c0269362005ed2565b90549060031b1c166000526202711a6020526000604081205562005b81565b6200bfe2565b506200c03c620138885462005d44565b8051906001600160401b03821162003f1a576020906200c05c836200606c565b016202711b60005260005b828110620139af5750505060005b62013888548110156200c0b757806200054f6001600160a01b036200c09e6200c0b19462005d7c565b90549060031b1c1662001f308362005ed2565b6200c075565b5060005b62013888548110156200c12a57806200c0d86200c1249262005d7c565b906001600160a01b03918291549060031b1c166000526201388760205260408060002054916200c1088462005d7c565b90549060031b1c166000526202711a6020526000205562005b81565b6200c0bb565b50906000905b6020830151805183101562010f5357826200c14b9162005bed565b51602081015160268110156200409c57156200b57057602081015160268110156200409c576001036200c72f57604001906200c18c60c08351015162005ba7565b51936200c1a360a062007c9f818651015162005ba7565b51916200c1b48651855114620160fd565b6200c1c386518451146201616f565b60005b86518110156200c324576200c1dc818662005bed565b5161271081101562005bb557600160ff6201389a6200c2049360031b015416151514620161e1565b6200c210818562005bed565b516200c21d828762005bed565b519061271082101562005bb557620138996200c23f9260031b01549062007088565b906200c24c838862005bed565b519161271083101562005bb557620138996200c26d9360031b015562016238565b6200c279818562005bed565b516200c286828762005bed565b519061271082101562005bb557620138966200c2c9926001600160a01b036200c2b0868d62005bed565b511660005260031b016020526040600020549062007088565b91906200c2d7828862005bed565b519061271082101562005bb5576200c31e93620138966200054f936001600160a01b036200c306878f62005bed565b511660005260031b01602052604060002055620162aa565b6200c1c6565b50926200c33b9192506200899b909594956201723d565b916040516200c34a8162003fbd565b6000815260003681376000945b80518610156200c715576200c36d868262005bed565b51610380526200c37e855162005d44565b966000946200c38e845162005d44565b6103005260009460005b88518110156200c46b578a896200c3c86001600160a01b036200c3bc858462005bed565b51166103805162017072565b15806200c422575b6200c3e9575b50506200c3e39062005b81565b6200c398565b986200c417916200200d826001600160a01b036200c40e879e976200c3e39862005bed565b51169262005bed565b9790508a896200c3d6565b50505061271061038051101562005bb5576001600160a01b036200c447828b62005bed565b5116600052620138966103805160031b016020528a8960406000205415156200c3d0565b50909895979498969291939660005b88518110156200c50a5761271061038051101562005bb5576001600160a01b03806200c4a7838c62005bed565b5116600052620138966103805160031b01602052604060002054156200c4da575b506200c4d49062005b81565b6200c47a565b819b6200c502916200c4f16200c4d4948d62005bed565b51166200200d826103005162005bed565b9a906200c4c8565b5098509695929190939661038051612710811015806102a05262005bb55760031b620138970154986200c54262008597898c6201542e565b6104a0526000610480526000610260525b6102a05162005bb557610260518a8110156200c61c576200c58a6200c5a89160006102a052620138976103805160031b0162005f0b565b91906001600160a01b03928391549060031b1c1661030051620170cc565b156200c5c8575b506200c5be6102605162005b81565b610260526200c553565b60006102a0526200c5e861026051620138976103805160031b0162005f0b565b90549060031b1c166200c602610480516104a05162005bed565b526200c6116104805162005b81565b61048052386200c5af565b50979294959093985095909560005b8281106200c6c9575050506102a05162005bb5576104a051516001600160401b03811162003f1a576200c66a81620138976103805160031b016200611d565b60206104a05101620138976103805160031b01600052602060002060005b8381106200c6ab57505050506200c69f9062005b81565b9492959091956200c357565b60019060206001600160a01b0385511694019381840155016200c688565b806001600160a01b036200c6e26200c70f938562005bed565b51166200c6f6610480516104a05162005bed565b526200c7056104805162005b81565b6104805262005b81565b6200c62b565b5050939092506200c727915062005b81565b90916200c130565b90602082949394015160268110156200409c576002036200c8ec576040809201908151938451916200c7866200c76a60a08098015162005ba7565b51966200c77b818751015162005bcb565b519551015162005bdc565b51948351875103620080fd578351855103620080945783518651036200802b575060005b86518110156200c8d9576200c7c0818862005bed565b5161271081101562005bb55760ff6201389a6200c7e49260031b015416156201631b565b6200c7f0818862005bed565b5161271081101562005bb55760031b6201389a01805460ff191660011790556200c81b818562005bed565b516200c828828962005bed565b519061271082101562005bb557620138986200c8489260031b01620067d9565b6200c854818662005bed565b516200c861828962005bed565b5161271081101562005bb55760031b6201389401556200c882818762005bed565b516200c88f828962005bed565b5161271081101562005bb55760031b6201389501556200c8b0818862005bed565b519061271082101562005bb5576000620138996200c8d39360031b015562005b81565b6200c7aa565b509592509350506200c727915062005b81565b909291602084015160268110156200409c576003036200ced45760408401906200c91b60c08351015162005ba7565b51906200c93260a062007c9f818651015162005ba7565b51936200c947835185511462001929620174fa565b6200c95a835186511462001929620174fa565b60005b83518110156200c9ba576200c973818662005bed565b519061271082101562005bb557620138966200c9b4926001600160a01b038b511660005260031b016020526200054f6040600020546200822b838a62005bed565b6200c95d565b509095919560005b87518110156200cb0f576200c9d8818662005bed565b5161271081101562005bb55762013896906001600160a01b0386511660005260031b016020526200ca1460406000205462008299838962005bed565b906200ca21838862005bed565b519161271083101562005bb557620138966200ca5c936001600160a01b0389511660005260031b016020526040600020556200192962017621565b6200ca68818662005bed565b5161271081101562005bb55762013896906001600160a01b036200ca8d848c62005bed565b511660005260031b016020526200caaf6040600020546200733c838962005bed565b91906200cabd828862005bed565b519061271082101562005bb5576200cb0993620138966200054f936001600160a01b036200caed8f889062005bed565b511660005260031b016020526040600020556200192962017697565b6200c9c2565b509194935091620089a26200cb24916201723d565b926001600160a01b03604051956200cb3c8762003fa1565b600187526020368189013751166200cb548662005ba7565b526000905b86518210156200cec2576200cb6f828862005bed565b516105a0526200cb80855162005d44565b966000946200cb90885162005d44565b6104e05260009460005b88518110156200cc64578a896200cbca6001600160a01b036200cbbe858462005bed565b51166105a05162017072565b15806200cc1b575b6200cbeb575b50506200cbe59062005b81565b6200cb9a565b986200cc10916200200d826001600160a01b036200c40e879e976200cbe59862005bed565b9790508a896200cbd8565b5050506127106105a051101562005bb5576001600160a01b036200cc40828b62005bed565b5116600052620138966105a05160031b016020528a8960406000205415156200cbd2565b509098949897969291939760005b88518110156200cd08576127106105a051101562005bb5576001600160a01b036200cc9e828b62005bed565b5116600052620138966105a05160031b01602052604060002054156200ccd0575b6200ccca9062005b81565b6200cc72565b996200ccff6200ccca916001600160a01b036200ccee8e8d62005bed565b51166200200d826104e05162005bed565b9a90506200ccbf565b5098509694939291956105a051612710811015806104605262005bb55760031b620138970154966200cd3f62008597878a6201542e565b996000996000610280525b6104605162005bb557610280518a8110156200cdf5576001600160a01b036200cd896200cd9b92600061046052620138976105a05160031b0162005f0b565b90549060031b1c166104e051620170cc565b156200cdba575b6200cdb06102805162005b81565b610280526200cd4a565b996200cdee906000610460528c6200200d826001600160a01b036200864061028051620138976105a05160031b0162005f0b565b996200cda2565b509a939794969299919850946000915b8383106200ce9e57505050506104605162005bb5578051906001600160401b03821162003f1a576020906200ce4683620138976105a05160031b016200611d565b01620138976105a05160031b01600052602060002060005b8381106200ce8057505050506200ce759062005b81565b90929591956200cb59565b60019060206001600160a01b0385511694019381840155016200ce5e565b620087236200cebb916001600160a01b0362009a30868662005bed565b916200ce05565b9295505092506200c727915062005b81565b9092602081015160268110156200409c576004036200d504576040016200cf0060c08251015162005ba7565b51936200cf1260c08351015162005bcb565b51906200cf2960a062007c9f818651015162005ba7565b51936200cf3e875184511462001929620174fa565b6200cf51875185511462001929620174fa565b6200cf64875186511462001929620174fa565b60005b87518110156200cfcf576200cf7d818662005bed565b519061271082101562005bb557620138966200cfc9926001600160a01b036200cfa7848d62005bed565b511660005260031b016020526200054f6040600020546200822b838a62005bed565b6200cf67565b509095919593929360005b83518110156200d134576200cff0818762005bed565b5161271081101562005bb55762013896906001600160a01b036200d015848862005bed565b511660005260031b016020526200d03760406000205462008299838862005bed565b906200d044838962005bed565b519161271083101562005bb557620138966200d08a936001600160a01b036200d06e878b62005bed565b511660005260031b016020526040600020556200192962017621565b6200d096818762005bed565b5161271081101562005bb55762013896906001600160a01b036200d0bb848c62005bed565b511660005260031b016020526200d0dd6040600020546200733c838862005bed565b9190506200d0ec818862005bed565b519161271083101562005bb557620138966200d12e936001600160a01b036200d116858e62005bed565b511660005260031b0160205260406000205562005b81565b6200cfda565b5091936200d150919350620089a26200899b919796976201723d565b6000945b80518610156200c715576200d16a868262005bed565b51610340526200d17b855162005d44565b966000946200d18b845162005d44565b6101a05260009460005b88518110156200d25f578a896200d1c56001600160a01b036200d1b9858462005bed565b51166103405162017072565b15806200d216575b6200d1e6575b50506200d1e09062005b81565b6200d195565b986200d20b916200200d826001600160a01b036200c40e879e976200d1e09862005bed565b9790508a896200d1d3565b50505061271061034051101562005bb5576001600160a01b036200d23b828b62005bed565b5116600052620138966103405160031b016020528a8960406000205415156200d1cd565b50909895979498969291939660005b88518110156200d2fe5761271061034051101562005bb5576001600160a01b03806200d29b838c62005bed565b5116600052620138966103405160031b01602052604060002054156200d2ce575b506200d2c89062005b81565b6200d26e565b819b6200d2f6916200d2e56200d2c8948d62005bed565b51166200200d826101a05162005bed565b9a906200d2bc565b5098509695929190939661034051612710811015806102c05262005bb55760031b620138970154986200d33662008597898c6201542e565b6105005260006103e052600060c0525b6102c05162005bb55760c0518a8110156200d40b576200d37c6200d39a9160006102c052620138976103405160031b0162005f0b565b91906001600160a01b03928391549060031b1c166101a051620170cc565b156200d3b8575b506200d3af60c05162005b81565b60c0526200d346565b60006102c0526200d3d760c051620138976103405160031b0162005f0b565b90549060031b1c166200d3f16103e0516105005162005bed565b526200d4006103e05162005b81565b6103e052386200d3a1565b50979294959093985095909560005b8281106200d4b8575050506102c05162005bb55761050051516001600160401b03811162003f1a576200d45981620138976103405160031b016200611d565b60206105005101620138976103405160031b01600052602060002060005b8381106200d49a57505050506200d48e9062005b81565b9492959091956200d154565b60019060206001600160a01b0385511694019381840155016200d477565b806001600160a01b036200d4d16200d4fe938562005bed565b51166200d4e56103e0516105005162005bed565b526200d4f46103e05162005b81565b6103e05262005b81565b6200d41a565b9290602084015160268110156200409c576005036200da7f5760408401906200d53760a062008a0b818551015162005ba7565b519282518451036200da155760005b83518110156200d5a3576200d55c818562005bed565b519061271082101562005bb557620138966200d59d926001600160a01b038a511660005260031b016020526200054f6040600020546200822b838962005bed565b6200d546565b509060005b83518110156200d64e576200d5be818562005bed565b5161271081101562005bb55762013896906001600160a01b0389511660005260031b016020526200d5fa60406000205462008299838862005bed565b91906200d608828762005bed565b519061271082101562005bb5576200d64893620138966200054f936001600160a01b038d511660005260031b016020526040600020556200192962017621565b6200d5a8565b5094939250906200d65f906201723d565b936001600160a01b03604051946200d6778662003fa1565b600186526020368188013751166200d68f8562005ba7565b52604051926200d69f8462003fbd565b6000845260003681376000905b86518210156200cec2576200d6c2828862005bed565b516102e0526200d6d3855162005d44565b966000946200d6e3885162005d44565b6101e05260009460005b88518110156200d7b7578a896200d71d6001600160a01b036200d711858462005bed565b51166102e05162017072565b15806200d76e575b6200d73e575b50506200d7389062005b81565b6200d6ed565b986200d763916200200d826001600160a01b036200c40e879e976200d7389862005bed565b9790508a896200d72b565b5050506127106102e051101562005bb5576001600160a01b036200d793828b62005bed565b5116600052620138966102e05160031b016020528a8960406000205415156200d725565b509098949897969291939760005b88518110156200d85b576127106102e051101562005bb5576001600160a01b036200d7f1828b62005bed565b5116600052620138966102e05160031b01602052604060002054156200d823575b6200d81d9062005b81565b6200d7c5565b996200d8526200d81d916001600160a01b036200d8418e8d62005bed565b51166200200d826101e05162005bed565b9a90506200d812565b5098509694939291956102e051612710811015806104405262005bb55760031b620138970154966200d89262008597878a6201542e565b9960009960006106a0525b6104405162005bb5576106a0518a8110156200d948576001600160a01b036200d8dc6200d8ee92600061044052620138976102e05160031b0162005f0b565b90549060031b1c166101e051620170cc565b156200d90d575b6200d9036106a05162005b81565b6106a0526200d89d565b996200d941906000610440528c6200200d826001600160a01b03620086406106a051620138976102e05160031b0162005f0b565b996200d8f5565b509a939794969299919850946000915b8383106200d9f157505050506104405162005bb5578051906001600160401b03821162003f1a576020906200d99983620138976102e05160031b016200611d565b01620138976102e05160031b01600052602060002060005b8381106200d9d357505050506200d9c89062005b81565b90929591956200d6ac565b60019060206001600160a01b0385511694019381840155016200d9b1565b620087236200da0e916001600160a01b0362009a30868662005bed565b916200d958565b608460405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b60448201527f656e416d6f756e74206973206e6f7420657175616c00000000000000000000006064820152fd5b92602081015160268110156200409c576006036200e09d576040016200daaa60c08251015162005ba7565b51936200dac160a062008a0b818551015162005ba7565b519285518351036200e0335785518451036200dfc95760005b86518110156200db42576200daf0818562005bed565b519061271082101562005bb557620138966200db3c926001600160a01b036200db1a848c62005bed565b511660005260031b016020526200054f6040600020546200822b838962005bed565b6200dada565b509060005b86518110156200dbe7576200db5d818562005bed565b5161271081101562005bb55762013896906001600160a01b036200db82848b62005bed565b511660005260031b016020526200dba460406000205462008299838862005bed565b91906200dbb2828762005bed565b519061271082101562005bb5576200dbe193620138966200054f936001600160a01b036200d06e878f62005bed565b6200db47565b50916200dbfe9193506200899b909594956201723d565b91604051926200dc0e8462003fbd565b6000845260003681376000945b80518610156200c715576200dc31868262005bed565b51610320526200dc42855162005d44565b966000946200dc52845162005d44565b6106c05260009460005b88518110156200dd26578a896200dc8c6001600160a01b036200dc80858462005bed565b51166103205162017072565b15806200dcdd575b6200dcad575b50506200dca79062005b81565b6200dc5c565b986200dcd2916200200d826001600160a01b036200c40e879e976200dca79862005bed565b9790508a896200dc9a565b50505061271061032051101562005bb5576001600160a01b036200dd02828b62005bed565b5116600052620138966103205160031b016020528a8960406000205415156200dc94565b50909895979498969291939660005b88518110156200ddc55761271061032051101562005bb5576001600160a01b03806200dd62838c62005bed565b5116600052620138966103205160031b01602052604060002054156200dd95575b506200dd8f9062005b81565b6200dd35565b819b6200ddbd916200ddac6200dd8f948d62005bed565b51166200200d826106c05162005bed565b9a906200dd83565b5098509695929190939661032051612710811015806107205262005bb55760031b620138970154986200ddfd62008597898c6201542e565b61064052600060e05260006103a0525b6107205162005bb5576103a0518a8110156200ded3576200de446200de6291600061072052620138976103205160031b0162005f0b565b91906001600160a01b03928391549060031b1c166106c051620170cc565b156200de82575b506200de786103a05162005b81565b6103a0526200de0d565b6000610720526200dea26103a051620138976103205160031b0162005f0b565b90549060031b1c166200debb60e0516106405162005bed565b526200dec960e05162005b81565b60e052386200de69565b50979294959093985095909560005b8281106200df80575050506107205162005bb55761064051516001600160401b03811162003f1a576200df2181620138976103205160031b016200611d565b60206106405101620138976103205160031b01600052602060002060005b8381106200df6257505050506200df569062005b81565b9492959091956200dc1b565b60019060206001600160a01b0385511694019381840155016200df3f565b806001600160a01b036200df996200dfc3938562005bed565b51166200dfac60e0516106405162005bed565b526200dfba60e05162005b81565b60e05262005b81565b6200dee2565b608460405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662061646472657373657320616e6420616d6f7560448201527f6e7473206973206e6f7420657175616c000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f662061646472657373657320616e6420746f6b6560448201527f6e436c6173736573206973206e6f7420657175616c00000000000000000000006064820152fd5b60208194929394015160268110156200409c576007036200e25457604001916200e0cc60c08451015162005ba7565b51916200e0de60a08551015162005ba7565b51935151916200e0f6845186511462001929620174fa565b60005b84518110156200e242576001600160a01b03806200e118838862005bed565b511660005262027113806020526200e13d60ff604060002054161562001929620175e6565b60026200e14b848862005bed565b516200e1c06200e15c868c62005bed565b519162008fdf8b604051966200e1728862003efe565b60018852886200e1998b60208b01946000865260408c0197885260608c01998a5262005bed565b511660005260205262008fc8604060002097511515889060ff801983541691151516179055565b519101556200e1d0828762005bed565b511690620271145491600160401b83101562003f1a576001830180620271145583101562005bb5576200e23c92620271146000527f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c01906001600160a01b031982541617905562005b81565b6200e0f9565b5094915092506200c727915062005b81565b602081015160268110156200409c576008036200e3435760c060406200e27e920151015162005ba7565b519160005b83518110156200e334576200e32e906001600160a01b03806200e2a7838862005bed565b51166000526202711390816020526200e2d1600160ff604060002054161515146200192962017535565b806200e2de848962005bed565b5116600052816020526200e30260ff60406000205460081c161562001929620175ab565b6200e30e838862005bed565b5116600052602052604060002061010061ff001982541617905562005b81565b6200e283565b50926200c72791925062005b81565b602081015160268110156200409c576009036200e4235760c060406200e36d920151015162005ba7565b519160005b83518110156200e334576200e41d906001600160a01b03806200e396838862005bed565b51166000526202711390816020526200e3c0600160ff604060002054161515146200192962017535565b806200e3cd848962005bed565b5116600052816020526200e3f5600160ff60406000205460081c161515146200192962017570565b6200e401838862005bed565b5116600052602052604060002061ff0019815416905562005b81565b6200e372565b602081015160268110156200409c57600a036200e50c57604001906200e45f60a06200e45460c08551015162005ba7565b519351015162005ba7565b51926200e474835185511462001929620174fa565b60005b83518110156200e4fb576200e4f5906001600160a01b03806200e49b838862005bed565b511660005262027113806020526200e4c4600160ff604060002054161515146200192962017535565b6200e4d0838962005bed565b51916200e4de848962005bed565b511660005260205260026040600020015562005b81565b6200e477565b50939092506200c727915062005b81565b60208194939294015160268110156200409c57600b036200e5ed57604001926200e53b60c08551015162005ba7565b51935151916200e553855184511462001929620174fa565b60005b85518110156200e5dd576200e5d7906200054f6001600160a01b03806200e57e848b62005bed565b511660005262027113806020526200e5a7600160ff604060002054161515146200192962017535565b6200e5b3848962005bed565b51916200e5c1858c62005bed565b51166000526020526001604060002001620067d9565b6200e556565b509350916200c727915062005b81565b909192602082015160268110156200409c57600c036200e73c57606060408301510151926200e61c84620154d5565b60005b84518110156200e4fb5760e06200e63f8260606040880151015162005bed565b510151156200e6c5576200e6676200e6608260606040880151015162005bed565b5162006e4d565b62027115548060001981011162005b91576200e6896005916000190162006d7a565b5001805461ff0019166101001790556202711554906000198201821062005b91576005620094486200e6bf936000190162006d7a565b6200e61f565b6200e6e46200e6dd8260606040880151015162005bed565b5162006e29565b62027116548060001981011162005b91576200e7066005916000190162006cfe565b5001805461ff0019166101001790556202711654906000198201821062005b91576005620094486200e6bf936000190162006cfe565b929190602081015160268110156200409c57600d036200e885576040019260206200e76c60a08651015162005ba7565b5194510151916200e781855184511462015dd4565b60005b85518110156200e5dd57806200e79f6200e819928662005bed565b51156200e81f576200e7c36200e7b6828962005bed565b5162027115541162015e6c565b6200e7ef60ff60056200e7e26200e7db858c62005bed565b5162006d7a565b50015460081c1662015ec3565b6200e80760ff6005620095a66200e7db858c62005bed565b6005620095c26200e7db838a62005bed565b6200e784565b6200e83c6200e82f828962005bed565b5162027116541162015e6c565b6200e85b60ff60056200e7e26200e854858c62005bed565b5162006cfe565b6200e87360ff6005620095a66200e854858c62005bed565b6005620095c26200e854838a62005bed565b602081015160268110156200409c57600e036200e9bd576040019260206200e8b260a08651015162005ba7565b5194510151916200e8c7855184511462015dd4565b60005b85518110156200e5dd57806200e8e56200e958928662005bed565b51156200e95e576200e9096200e8fc828962005bed565b5162027115541162015fa7565b6200e92e60ff60056200e9216200e7db858c62005bed565b50015460081c1662016019565b6200e94660ff6005620097006200e7db858c62005bed565b6005620094486200e7db838a62005bed565b6200e8ca565b6200e97b6200e96e828962005bed565b5162027116541162015fa7565b6200e99360ff60056200e9216200e854858c62005bed565b6200e9ab60ff6005620097006200e854858c62005bed565b6005620094486200e854838a62005bed565b909192602082015160268110156200409c57600f036200eafe57606060408301510151926200e9ec84620154d5565b60005b84518110156200e4fb5760e06200ea0f8260606040880151015162005bed565b510151156200ea8e576200ea306200e6608260606040880151015162005bed565b62027115548060001981011162005b91576200ea526005916000190162006d7a565b5001805461ff0019166101001790556202711554906000198201821062005b91576005620095c26200ea88936000190162006d7a565b6200e9ef565b6200eaa66200e6dd8260606040880151015162005bed565b62027116548060001981011162005b91576200eac86005916000190162006cfe565b5001805461ff0019166101001790556202711654906000198201821062005b91576005620095c26200ea88936000190162006cfe565b929190602081015160268110156200409c576010036200ec475760400151926200eb3160a0608086015195015162005ba7565b51916200eb46855184511462001929620174fa565b60005b85518110156200e5dd57806200eb646200ebda928862005bed565b516200eb708162004eaa565b6200eb7c828762005bed565b51906200eb898162004eaa565b6200eba06200eb976201765c565b82151562005b4e565b6200ebab8162004eaa565b600181036200ebe057506200ebcf6200ebc36201765c565b61271083111562005b4e565b6202711e5562005b81565b6200eb49565b6200ebeb8162004eaa565b600281036200ec0057506202711f5562005b81565b6200ec0b8162004eaa565b600381036200ec205750620271205562005b81565b806200ec2e60049262004eaa565b146200ec3b575062005b81565b6202712155386200a911565b602081015160268110156200409c576011036200ef0457604001906200ec7860a06200e45460c08551015162005ba7565b51936200ec898351865114620153e2565b60005b83518110156200ed0a576200ed04906200ece46001600160a01b03806200ecb4848962005bed565b51166000526202711890816020526200ecd86040600020546200733c868d62005bed565b93906200192962017499565b6200ecf0848962005bed565b511660005260205260406000205562005b81565b6200ec8c565b509350906200ed199062017121565b906202711954936200ed31620085978451876201542e565b9060009260005b8781106200eec6575060005b85518110156200edf8576000805b8981106200eda9575b50156200ed74575b6200ed6e9062005b81565b6200ed44565b936200eda06200ed6e916001600160a01b036200ed92888a62005bed565b51166200200d828862005bed565b9490506200ed63565b6200edb48162005e99565b906001600160a01b03918291549060031b1c16906200edd4858b62005bed565b5116146200eded576200ede79062005b81565b6200ed52565b50506001386200ed5b565b5095509392506200ee098262005d44565b8051906001600160401b03821162003f1a576020906200ee298362006014565b016202711960005260005b8281106200ee885750505060005b8281106200ee58575050506200c7279062005b81565b806200054f6001600160a01b036200ee756200ee82948662005bed565b511662001f308362005e99565b6200ee42565b60019060206001600160a01b03845116930192817fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10155016200ee34565b936200eef76200eefe916001600160a01b036200eee38862005e99565b90549060031b1c166200200d828862005bed565b9462005b81565b6200ed38565b602081949294015160268110156200409c576012036200f16f57604001906200ef3860a06200e45460c08551015162005ba7565b51936200ef498351865114620153e2565b60005b83518110156200ef9e576200ef98906200ece46001600160a01b03806200ef74848962005bed565b51166000526202711890816020526200ecd860406000205462008299868d62005bed565b6200ef4c565b50935091906200efae9062017121565b62027119546200efbe8162005d44565b906000926000915b8083106200f08c575050506200efdc8262005d44565b8051906001600160401b03821162003f1a576020906200effc8362006014565b016202711960005260005b8281106200f04e5750505060005b8281106200f02b575050506200c7279062005b81565b806200054f6001600160a01b036200ee756200f048948662005bed565b6200f015565b60019060206001600160a01b03845116930192817fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10155016200f007565b91956000959193959760005b85518110156200f160576200f0ad8962005e99565b906001600160a01b03918291549060031b1c16906200f0cd838962005bed565b5116146200f0e6576200f0e09062005b81565b6200f098565b509750956001959391955b806200f12d575b156200f110576200f1099062005b81565b916200efc6565b936200eef76200f109916001600160a01b036200eee38862005e99565b506001600160a01b036200f1418262005e99565b90549060031b1c1660005262027118602052604060002054156200f0f8565b5097969096959391956200f0f1565b602081949394015160268110156200409c576013036200f2135760408091015101519160005b83518110156200e334576200f1ab818562005bed565b51906202711754600160401b81101562003f1a576001810180620271175581101562005bb5576200f20d9260076200054f9262027117600052027f08f37177f6a5732df494aeff73d589b534878a053b84dfe1e41c467868b7c9fd01620168c1565b6200f195565b60208194939294015160268110156200409c576014036200f75857604001906200f24260c08351015162005ba7565b51936200f25960a062007c9f818651015162005ba7565b51916200f26a8651855114620160fd565b6200f27986518451146201616f565b60005b86518110156200f375576200f292818562005bed565b516200f29f828762005bed565b519061271082101562005bb557620138996200f2c19260031b01549062007088565b906200f2ce838862005bed565b519161271083101562005bb557620138996200f2ef9360031b015562016238565b6200f2fb818562005bed565b516200f308828762005bed565b519061271082101562005bb557620138966200f332926001600160a01b036200c2b0868d62005bed565b91906200f340828862005bed565b519061271082101562005bb5576200f36f93620138966200054f936001600160a01b036200c306878f62005bed565b6200f27c565b50926200f38c9192506200899b909594956201723d565b916040516200f39b8162003fbd565b6000815260003681376000945b80518610156200c715576200f3be868262005bed565b51610360526200f3cf855162005d44565b966000946200f3df845162005d44565b6105805260009460005b88518110156200f4b3578a896200f4196001600160a01b036200f40d858462005bed565b51166103605162017072565b15806200f46a575b6200f43a575b50506200f4349062005b81565b6200f3e9565b986200f45f916200200d826001600160a01b036200c40e879e976200f4349862005bed565b9790508a896200f427565b50505061271061036051101562005bb5576001600160a01b036200f48f828b62005bed565b5116600052620138966103605160031b016020528a8960406000205415156200f421565b50909895979498969291939660005b88518110156200f5525761271061036051101562005bb5576001600160a01b03806200f4ef838c62005bed565b5116600052620138966103605160031b01602052604060002054156200f522575b506200f51c9062005b81565b6200f4c2565b819b6200f54a916200f5396200f51c948d62005bed565b51166200200d826105805162005bed565b9a906200f510565b5098509695929190939661036051612710811015806105205262005bb55760031b620138970154986200f58a62008597898c6201542e565b61022052600061056052600060a0525b6105205162005bb55760a0518a8110156200f65f576200f5d06200f5ee91600061052052620138976103605160031b0162005f0b565b91906001600160a01b03928391549060031b1c1661058051620170cc565b156200f60c575b506200f60360a05162005b81565b60a0526200f59a565b6000610520526200f62b60a051620138976103605160031b0162005f0b565b90549060031b1c166200f645610560516102205162005bed565b526200f6546105605162005b81565b61056052386200f5f5565b50979294959093985095909560005b8281106200f70c575050506105205162005bb55761022051516001600160401b03811162003f1a576200f6ad81620138976103605160031b016200611d565b60206102205101620138976103605160031b01600052602060002060005b8381106200f6ee57505050506200f6e29062005b81565b9492959091956200f3a8565b60019060206001600160a01b0385511694019381840155016200f6cb565b806001600160a01b036200f7256200f752938562005bed565b51166200f739610560516102205162005bed565b526200f7486105605162005b81565b6105605262005b81565b6200f66e565b92602084015160268110156200409c576015036200fd105760408401906200f78560c08351015162005ba7565b51906200f79c60a062007c9f818651015162005ba7565b51936200f7b1835185511462001929620174fa565b6200f7c4835186511462001929620174fa565b60005b83518110156200f824576200f7dd818662005bed565b519061271082101562005bb557620138966200f81e926001600160a01b038b511660005260031b016020526200054f6040600020546200822b838a62005bed565b6200f7c7565b509095919560005b87518110156200f95d576200f842818662005bed565b5161271081101562005bb55762013896906001600160a01b0386511660005260031b016020526200f87e60406000205462008299838962005bed565b906200f88b838862005bed565b519161271083101562005bb557620138966200f8c6936001600160a01b0389511660005260031b016020526040600020556200192962017621565b6200f8d2818662005bed565b5161271081101562005bb55762013896906001600160a01b036200f8f7848c62005bed565b511660005260031b016020526200f9196040600020546200733c838962005bed565b91906200f927828862005bed565b519061271082101562005bb5576200f95793620138966200054f936001600160a01b036200caed8f889062005bed565b6200f82c565b509194935091620089a26200f972916201723d565b926001600160a01b03604051956200f98a8762003fa1565b600187526020368189013751166200f9a28662005ba7565b526000905b86518210156200cec2576200f9bd828862005bed565b51610160526200f9ce855162005d44565b966000946200f9de885162005d44565b6101c05260009460005b88518110156200fab2578a896200fa186001600160a01b036200fa0c858462005bed565b51166101605162017072565b15806200fa69575b6200fa39575b50506200fa339062005b81565b6200f9e8565b986200fa5e916200200d826001600160a01b036200c40e879e976200fa339862005bed565b9790508a896200fa26565b50505061271061016051101562005bb5576001600160a01b036200fa8e828b62005bed565b5116600052620138966101605160031b016020528a8960406000205415156200fa20565b509098949897969291939760005b88518110156200fb565761271061016051101562005bb5576001600160a01b036200faec828b62005bed565b5116600052620138966101605160031b01602052604060002054156200fb1e575b6200fb189062005b81565b6200fac0565b996200fb4d6200fb18916001600160a01b036200fb3c8e8d62005bed565b51166200200d826101c05162005bed565b9a90506200fb0d565b50985096949392919561016051612710811015806106205262005bb55760031b620138970154966200fb8d62008597878a6201542e565b996000996000610700525b6106205162005bb557610700518a8110156200fc43576001600160a01b036200fbd76200fbe992600061062052620138976101605160031b0162005f0b565b90549060031b1c166101c051620170cc565b156200fc08575b6200fbfe6107005162005b81565b610700526200fb98565b996200fc3c906000610620528c6200200d826001600160a01b036200864061070051620138976101605160031b0162005f0b565b996200fbf0565b509a939794969299919850946000915b8383106200fcec57505050506106205162005bb5578051906001600160401b03821162003f1a576020906200fc9483620138976101605160031b016200611d565b01620138976101605160031b01600052602060002060005b8381106200fcce57505050506200fcc39062005b81565b90929591956200f9a7565b60019060206001600160a01b0385511694019381840155016200fcac565b620087236200fd09916001600160a01b0362009a30868662005bed565b916200fc53565b909192602081015160268110156200409c576016036200fdd25760c060406200fd3d920151015162005ba7565b519160005b83518110156200e334576001600160a01b036200fd60828662005bed565b511690620271225491600160401b83101562003f1a576001830180620271225583101562005bb5576200fdcc92620271226000527f1f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a201906001600160a01b031982541617905562005b81565b6200fd42565b602081015160268110156200409c576017036200fe3f57608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203233206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c576018036200ff0f5760c060406200fe69920151015162005ba7565b5191600160ff1962027125541617620271255560005b83518110156200e334576001600160a01b036200fe9d828662005bed565b511690620271245491600160401b83101562003f1a576001830180620271245583101562005bb5576200ff0992620271246000527f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece801906001600160a01b031982541617905562005b81565b6200fe7f565b60208194929394015160268110156200409c576019036200ff37575b506200c7279062005b81565b602081015160268110156200409c57601a03620100c85760a060406200ff61920151015162005ba7565b51906200ff726003835114620153e2565b6200ff7d8262005ba7565b516200ff8d6200a8a88462005bcb565b519262010084576200c727926001036201007d576200ffb56201001f91620271205462007088565b6202712055604051906200ffc98262003f69565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f7720776860208301527f656e2070726f63657373696e6720636173680000000000000000000000000000604083015262005b4e565b6201007662010032620271215462007075565b620271215560405190620100468262003fa1565b601a82527f6469766964656e647320636f756e746572206f766572666c6f77000000000000602083015262005b4e565b906200ff2b565b5062010076565b606460405162461bcd60e51b815260206004820152601460248201527f496e76616c6964207061796d656e7420747970650000000000000000000000006044820152fd5b602081015160268110156200409c57601b03620106f0575091906202711e54620100f56200a9906201733b565b62027121546202711f541115620101166201010f620173c2565b8262005b4e565b62027120549062010128838362006fe1565b50506201013462017423565b506000805b61271082106201063c575b505090620101746201017a93926201016a6201015f6201733b565b612710861062005b4e565b62001929620173c2565b62006fe1565b90506201018662017423565b5060009060005b612710811062010564575b5090612710620101a9920462007159565b9050620101ba6202712a5462005d44565b906000946000905b61271082101562010557578160031b9460ff6201389a87015416156201031e5760009662013895870154156201030d57600098975b62005bb55762013897870154891015620102f3576201021c8962013897890162005f0b565b90549060031b1c6001600160a01b03169788600052620138968801602052604098868a60002054906201024f9162006fe1565b9a906201025b62017423565b620102669162005b4e565b60009a620138958b01546201027b9162006fe1565b91906201028762017423565b620102929162005b4e565b826000526202711a60205260002090815490620102af9162007088565b909155620102bc62017423565b620102c79162005b4e565b620102d3828962005bed565b52620102df9062005b81565b98620102eb9062005b81565b9897620101f7565b92909550620103059196975062005b81565b9094620101c2565b929095506201030591965062005b81565b95969392509350505b620103328262005d44565b9160009160005b828110620104c2575050506202711b54916201035a6200859784846201542e565b926000906000905b8082106201049d57505060005b8381106201040857505050508051906001600160401b03821162003f1a576020906201039b836200606c565b016202711b60005260005b828110620103ca575050506200c72790600062027120556000620271215562010076565b60019060206001600160a01b03845116930192817fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f399015501620103a6565b6000805b83811062010455575b50156201042e575b620104289062005b81565b6201036f565b906201044c62010428916001600160a01b0362009a30858762005bed565b9190506201041d565b6001600160a01b03806201046a858862005bed565b51169062010479838a62005bed565b51161462010492576201048c9062005b81565b6201040c565b505060013862010415565b909162008723620104bb916001600160a01b0362009dc28662005ed2565b9062010362565b6000805b8581106201050f575b5015620104e8575b620104e29062005b81565b62010339565b9262010506620104e2916001600160a01b0362009a30878662005bed565b939050620104d7565b6001600160a01b038062010524858762005bed565b51169062010533838a62005bed565b5116146201054c57620105469062005b81565b620104c6565b5050600138620104cf565b9394959291505062010327565b90918160039695961b60ff6201389a8201541615620106305762013895810154620138978201546000928391825b818410620105ce575050505062007b33620105c593620105bd6200054f9796946200713f9462006fe1565b929062006e71565b9493946201018d565b94929462005bb5576201062985620106216001600160a01b03620105fc6200054f9962013897880162005f0b565b90549060031b1c16956000966000526201389686016020526040600020549062007088565b979062007003565b9262010592565b50919094939462010198565b8160039897981b60ff6201389a8201541615620106e6576201389581015490600062013897820154916000926000925b818410620106a9575050505062007b336201069f936200adbf846201017462006f2d6200adcb966200054f9a9862006fe1565b9096959662010139565b93929362005bb557620106df84620106d76001600160a01b03620105fc6200054f9862013897880162005f0b565b969062007003565b926201066c565b5096959662010144565b602081015160268110156200409c57601c036201075d57608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203238206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c57601d0362010781575b506200c7279062010076565b602081015160268110156200409c57601e146201077557602081015160268110156200409c57601f0362010825576040620107bf9101515162005ba7565b51906202712354600160401b81101562003f1a576001810180620271235581101562005bb5576200c727926201081e91620271236000527f4ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b122401620067d9565b9062010775565b602081015160268110156200409c5760200362010849575b506200c727906201081e565b602081015160268110156200409c576021146201083d57602081015160268110156200409c57602203620108f0575060ff19620271255416620271255562027124546000620271245580620108a7575b506200c727905b906201083d565b620271246000527f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece8908101905b818110620108e3575062010899565b60008155600101620108d4565b602081015160268110156200409c5760230362010914575b506200c72790620108a0565b602081015160268110156200409c576024146201090857602081015160268110156200409c576025146201090857929091602084015160268110156200409c5760150362010f0f5760408401906201097160c08351015162005ba7565b51906201098860a062007c9f818651015162005ba7565b51936201099d835185511462001929620174fa565b620109b0835186511462001929620174fa565b60005b835181101562010a1057620109c9818662005bed565b519061271082101562005bb5576201389662010a0a926001600160a01b038b511660005260031b016020526200054f6040600020546200822b838a62005bed565b620109b3565b509095919560005b875181101562010b495762010a2e818662005bed565b5161271081101562005bb55762013896906001600160a01b0386511660005260031b0160205262010a6a60406000205462008299838962005bed565b9062010a77838862005bed565b519161271083101562005bb5576201389662010ab2936001600160a01b0389511660005260031b016020526040600020556200192962017621565b62010abe818662005bed565b5161271081101562005bb55762013896906001600160a01b0362010ae3848c62005bed565b511660005260031b0160205262010b056040600020546200733c838962005bed565b919062010b13828862005bed565b519061271082101562005bb55762010b4393620138966200054f936001600160a01b036200caed8f889062005bed565b62010a18565b509194935091620089a262010b5e916201723d565b926001600160a01b036040519562010b768762003fa1565b6001875260203681890137511662010b8e8662005ba7565b526000905b865182101562010efc5762010ba9828862005bed565b516106605262010bba855162005d44565b9660009462010bca885162005d44565b6106e05260009460005b885181101562010c9e578a8962010c046001600160a01b0362010bf8858462005bed565b51166106605162017072565b158062010c55575b62010c25575b505062010c1f9062005b81565b62010bd4565b9862010c4a916200200d826001600160a01b036200c40e879e9762010c1f9862005bed565b9790508a8962010c12565b50505061271061066051101562005bb5576001600160a01b0362010c7a828b62005bed565b5116600052620138966106605160031b016020528a89604060002054151562010c0c565b509098949897969291939760005b885181101562010d425761271061066051101562005bb5576001600160a01b0362010cd8828b62005bed565b5116600052620138966106605160031b016020526040600020541562010d0a575b62010d049062005b81565b62010cac565b9962010d3962010d04916001600160a01b0362010d288e8d62005bed565b51166200200d826106e05162005bed565b9a905062010cf9565b50985096949392919561066051612710811015806104005262005bb55760031b6201389701549662010d7962008597878a6201542e565b9960009960006105c0525b6104005162005bb5576105c0518a81101562010e2f576001600160a01b0362010dc362010dd592600061040052620138976106605160031b0162005f0b565b90549060031b1c166106e051620170cc565b1562010df4575b62010dea6105c05162005b81565b6105c05262010d84565b9962010e28906000610400528c6200200d826001600160a01b03620086406105c051620138976106605160031b0162005f0b565b9962010ddc565b509a939794969299919850946000915b83831062010ed857505050506104005162005bb5578051906001600160401b03821162003f1a5760209062010e8083620138976106605160031b016200611d565b01620138976106605160031b01600052602060002060005b83811062010eba575050505062010eaf9062005b81565b909295919562010b93565b60019060206001600160a01b03855116940193818401550162010e98565b6200872362010ef5916001600160a01b0362009a30868662005bed565b9162010e3f565b9295505092506200c72791509062010908565b606460405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206f7065726174696f6e2074797065000000000000000000006044820152fd5b5091905062010f62816201486e565b9060068110156200409c576002810362010fce5760405162461bcd60e51b815260206004820152602a60248201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560448201526967696e2073797374656d60b01b6064820152608490fd5b600381036201109a5750303b1562003ee4579060405180927f74579b180000000000000000000000000000000000000000000000000000000082526044820160406004840152815180915260206064840192019060005b81811062011080575050506201104b8291600094600319848303016024850152620055c7565b038183305af180156201107457620110605750565b6001600160401b03811162003f1a57604052565b6040513d6000823e3d90fd5b825184528694506020938401939092019160010162011025565b6005915014620110a75750565b906000905b602083015180518310156200b5b45782620110c79162005bed565b51602081015160268110156200409c57156200b57057602081015160268110156200409c576001036201130657604001906201110860c08351015162005ba7565b51936201111f60a062007c9f818651015162005ba7565b5191620111308651855114620160fd565b6201113f86518451146201616f565b60005b8651811015620112945762011158818662005bed565b5161271081101562005bb557600160ff60076201117e9360031b015416151514620161e1565b6201118a818562005bed565b5162011197828762005bed565b519061271082101562005bb5576006620111b79260031b01549062007088565b90620111c4838862005bed565b519161271083101562005bb5576006620111e39360031b015562016238565b620111ef818562005bed565b51620111fc828762005bed565b519061271082101562005bb55760036201123c926001600160a01b0362011224868d62005bed565b5116600052811b016020526040600020549062007088565b91906201124a828862005bed565b519061271082101562005bb5576201128e9360036200054f936001600160a01b0362011277878f62005bed565b5116600052811b01602052604060002055620162aa565b62011142565b50949150916200838a620112a8916201723d565b9360405192620112b88462003fbd565b60008452600036813760005b8351811015620112e957806200054f62007e66620112e3938762005bed565b620112c4565b5094509260209250620112fd915062005b81565b919050620110ac565b909192602082015160268110156200409c576002036201149d57604080920190815193845191620113406200c76a60a08098015162005ba7565b51948351875103620080fd578351855103620080945783518651036200802b575060005b865181101562011487576201137a818862005bed565b5161271081101562005bb55760ff60076201139c9260031b015416156201631b565b620113a8818862005bed565b5161271081101562005bb55760031b600701805460ff19166001179055620113d1818562005bed565b51620113de828962005bed565b519061271082101562005bb5576005620113fc9260031b01620067d9565b62011408818662005bed565b5162011415828962005bed565b5161271081101562005bb55760031b6001015562011434818762005bed565b5162011441828962005bed565b5161271081101562005bb55760031b6002015562011460818862005bed565b519061271082101562005bb55760006006620114819360031b015562005b81565b62011364565b50959150935060209250620112fd915062005b81565b929190602081015160268110156200409c57600303620114ca57602091926200054f620112fd9262016367565b602081015160268110156200409c576004036201176f57620114f460c06040830151015162005ba7565b51936201150960c06040840151015162005bcb565b51906201153060a06040620115248282880151015162005ba7565b51950151015162005bcb565b519362011545875184511462001929620174fa565b62011558875185511462001929620174fa565b6201156b875186511462001929620174fa565b60005b8751811015620115d35762011584818662005bed565b519061271082101562005bb5576003620115cd926001600160a01b03620115ac848d62005bed565b5116600052811b016020526200054f6040600020546200822b838a62005bed565b6201156e565b509095919593929360005b83518110156201172c57620115f4818762005bed565b5161271081101562005bb5576003906001600160a01b0362011617848862005bed565b5116600052811b016020526201163860406000205462008299838862005bed565b9062011645838962005bed565b519161271083101562005bb557600362011688936001600160a01b036201166d878b62005bed565b5116600052811b016020526040600020556200192962017621565b62011694818762005bed565b5161271081101562005bb5576003906001600160a01b03620116b7848c62005bed565b5116600052811b01602052620116d86040600020546200733c838862005bed565b919050620116e7818862005bed565b519161271083101562005bb557600362011726936001600160a01b036201170f858e62005bed565b5116600052811b0160205260406000205562005b81565b620115de565b50936201174691929693506200899b620089a2916201723d565b9260005b8351811015620112e957806200054f62007e6662011769938762005bed565b6201174a565b92602084015160268110156200409c576005036201193e576201179a60a06040860151015162005ba7565b5190620117af60a06040870151015162005bcb565b519282518451036200da155760005b83518110156201181857620117d4818562005bed565b519061271082101562005bb557600362011812926001600160a01b038a5116600052811b016020526200054f6040600020546200822b838962005bed565b620117be565b509060005b8351811015620118bd5762011833818562005bed565b5161271081101562005bb5576003906001600160a01b03895116600052811b016020526201186c60406000205462008299838862005bed565b91906201187a828762005bed565b519061271082101562005bb557620118b79360036200054f936001600160a01b038d5116600052811b016020526040600020556200192962017621565b6201181d565b5094925090620118cd906201723d565b906001600160a01b0360405193620118e58562003fa1565b60018552602036818701375116620118fd8462005ba7565b52604051946201190d8662003fbd565b60008652600036813760005b8351811015620112e957806200054f62007e6662011938938762005bed565b62011919565b92602081015160268110156200409c5760060362011af4576040016201196960c08251015162005ba7565b51936201198060a062008a0b818551015162005ba7565b519285518351036200e0335785518451036200dfc95760005b8651811015620119fe57620119af818562005bed565b519061271082101562005bb5576003620119f8926001600160a01b03620119d7848c62005bed565b5116600052811b016020526200054f6040600020546200822b838962005bed565b62011999565b509060005b865181101562011a9e5762011a19818562005bed565b5161271081101562005bb5576003906001600160a01b0362011a3c848b62005bed565b5116600052811b0160205262011a5d60406000205462008299838862005bed565b919062011a6b828762005bed565b519061271082101562005bb55762011a989360036200054f936001600160a01b036201166d878f62005bed565b62011a03565b50949162011ab39193506200838a906201723d565b916040519462011ac38662003fbd565b60008652600036813760005b8351811015620112e957806200054f62007e6662011aee938762005bed565b62011acf565b602081015160268110156200409c5760070362011c07576040019262011b1f60c08551015162005ba7565b519162011b3160a08651015162005ba7565b519451519162011b49845187511462001929620174fa565b60005b8451811015620112e95762011c01906200054f6001600160a01b038062011b74848a62005bed565b51166000528660028b62011bf162011bb48762011bac8162013880978860205262008f6360ff604060002054161562001929620175e6565b519362005bed565b519162008fdf8d6040519662011bca8862003efe565b60018852886200e1998c60208b01946000865260408c0197885260608c01998a5262005bed565b5191015562008ffa838962005bed565b62011b4c565b602081949394015160268110156200409c5760080362011c9f5760c0604062011c34920151015162005ba7565b519160005b835181101562011c8d5762011c87906001600160a01b038062011c5d838862005bed565b51166000526201388090816020526200e2d1600160ff604060002054161515146200192962017535565b62011c39565b50926020919250620112fd9062005b81565b602081015160268110156200409c5760090362011d225760c0604062011cc9920151015162005ba7565b519160005b835181101562011c8d5762011d1c906001600160a01b038062011cf2838862005bed565b51166000526201388090816020526200e3c0600160ff604060002054161515146200192962017535565b62011cce565b602081015160268110156200409c57600a0362011dd1576040019062011d5360a06200e45460c08551015162005ba7565b519262011d68835185511462001929620174fa565b60005b835181101562011dbe5762011db8906001600160a01b038062011d8f838862005bed565b511660005262013880806020526200e4c4600160ff604060002054161515146200192962017535565b62011d6b565b5093620112fd9193506020925062005b81565b60208194939294015160268110156200409c57600b0362011e85576040019262011e0060c08551015162005ba7565b519351519162011e18855184511462001929620174fa565b60005b855181101562011e725762011e6c906200054f6001600160a01b038062011e43848b62005bed565b511660005262013880806020526200e5a7600160ff604060002054161515146200192962017535565b62011e1b565b5093509160209150620112fd9062005b81565b909192602082015160268110156200409c57600c0362011fc6576060604083015101519262011eb484620154d5565b60005b845181101562011dbe5760e062011ed78260606040880151015162005bed565b5101511562011f565762011ef8620093f38260606040880151015162005bed565b62013882548060001981011162005b915762011f1a6005916000190162006d3c565b5001805461ff0019166101001790556201388254906000198201821062005b915760056200944862011f50936000190162006d3c565b62011eb7565b62011f6e620094728260606040880151015162005bed565b62013882548060001981011162005b915762011f906005916000190162006cc0565b5001805461ff0019166101001790556201388254906000198201821062005b915760056200944862011f50936000190162006cc0565b929190602081015160268110156200409c57600d03620120da5760400192602062011ff660a08651015162005ba7565b5194510151916201200b855184511462015dd4565b60005b855181101562011e7257806201202962012082928662005bed565b51156201208857620120406200956b828962005bed565b6201205860ff60056200e7e26200958d858c62005bed565b6201207060ff6005620095a66200958d858c62005bed565b6005620095c26200958d838a62005bed565b6201200e565b62012098620095fa828962005bed565b620120b060ff60056200e7e26200961c858c62005bed565b620120c860ff6005620095a66200961c858c62005bed565b6005620095c26200961c838a62005bed565b602081949294015160268110156200409c57600e03620121a1576040019060206201210a60a08451015162005ba7565b5192510151936201211f835186511462015dd4565b60005b835181101562011e7257806201213d62012149928862005bed565b516201214f5762005b81565b62012122565b6201215f620096b8828762005bed565b6201217760ff60056200e9216200958d858a62005bed565b6201218f60ff6005620097006200958d858a62005bed565b6005620094486200958d838862005bed565b90602082949394015160268110156200409c57600f03620122e35760606040830151015192620121d184620154d5565b60005b845181101562011dbe5760e0620121f48260606040880151015162005bed565b51015115620122735762012215620093f38260606040880151015162005bed565b62013882548060001981011162005b9157620122376005916000190162006d3c565b5001805461ff0019166101001790556201388254906000198201821062005b91576005620095c26201226d936000190162006d3c565b620121d4565b6201228b620094728260606040880151015162005bed565b62013882548060001981011162005b9157620122ad6005916000190162006cc0565b5001805461ff0019166101001790556201388254906000198201821062005b91576005620095c26201226d936000190162006cc0565b90602081949394015160268110156200409c57601003620123545760400151906201231760a0608084015193015162005ba7565b51936201232c835186511462001929620174fa565b60005b835181101562011e7257806200054f620098ad6201234e938762005bed565b6201232f565b602081949294015160268110156200409c57601103620125da57604001906201238860a06200e45460c08551015162005ba7565b5193620123998351865114620153e2565b60005b835181101562012414576201240e906200054f6001600160a01b0380620123c4848962005bed565b51166000526201388580602052620123e76040600020546200733c868d62005bed565b919092620123f6868b62005bed565b51166000526020526040600020556200192962017499565b6201239c565b50935090620124239062017121565b906201388654936201243b620085978451876201542e565b9060009260005b878110620125b7575060005b8551811015620124f4576000805b898110620124a5575b50156201247e575b620124789062005b81565b6201244e565b936201249c62012478916001600160a01b036200ed92888a62005bed565b9490506201246d565b620124b08162005db5565b906001600160a01b03918291549060031b1c1690620124d0858b62005bed565b511614620124e957620124e39062005b81565b6201245c565b505060013862012465565b509550939250620125058262005d44565b8051906001600160401b03821162003f1a57602090620125258362005f95565b016201388660005260005b828110620125795750505060005b8281106201255657505050620112fd60209162005b81565b806200054f6001600160a01b0362001f2362012573948662005bed565b6201253e565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa401550162012530565b936200eef7620125d4916001600160a01b036200eee38862005db5565b62012442565b602081949294015160268110156200409c576012036201284657604001906201260e60a06200e45460c08551015162005ba7565b51936201261f8351865114620153e2565b60005b835181101562012673576201266d906200054f6001600160a01b03806201264a848962005bed565b51166000526201388580602052620123e760406000205462008299868d62005bed565b62012622565b5093509190620126839062017121565b6201388654620126938162005d44565b906000926000915b8083106201276357505050620126b18262005d44565b8051906001600160401b03821162003f1a57602090620126d18362005f95565b016201388660005260005b828110620127255750505060005b8281106201270257505050620112fd60209162005b81565b806200054f6001600160a01b0362001f236201271f948662005bed565b620126ea565b60019060206001600160a01b03845116930192817f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa4015501620126dc565b91956000959193959760005b85518110156201283757620127848962005db5565b906001600160a01b03918291549060031b1c1690620127a4838962005bed565b511614620127bd57620127b79062005b81565b6201276f565b509750956001959391955b8062012804575b15620127e757620127e09062005b81565b916201269b565b936200eef7620127e0916001600160a01b036200eee38862005db5565b506001600160a01b03620128188262005db5565b90549060031b1c166000526201388560205260406000205415620127cf565b509796909695939195620127c8565b602081015160268110156200409c576013036201289f5760408091015101519260005b84518110156201288e57806200054f62009e6462012888938862005bed565b62012869565b50925090620112fd60209162005b81565b602081015160268110156200409c5760140362012a4a5760400190620128ca60c08351015162005ba7565b5193620128e160a062007c9f818651015162005ba7565b5191620128f28651855114620160fd565b6201290186518451146201616f565b60005b8651811015620129f5576201291a818562005bed565b5162012927828762005bed565b519061271082101562005bb5576006620129479260031b01549062007088565b9062012954838862005bed565b519161271083101562005bb5576006620129739360031b015562016238565b6201297f818562005bed565b516201298c828762005bed565b519061271082101562005bb5576003620129b4926001600160a01b0362011224868d62005bed565b9190620129c2828862005bed565b519061271082101562005bb557620129ef9360036200054f936001600160a01b0362011277878f62005bed565b62012904565b50949150916200838a62012a09916201723d565b936040519262012a198462003fbd565b60008452600036813760005b8351811015620112e957806200054f62007e6662012a44938762005bed565b62012a25565b9290602084015160268110156200409c5760150362012ffa57604084019062012a7860c08351015162005ba7565b519062012a8f60a062007c9f818651015162005ba7565b519362012aa4835185511462001929620174fa565b62012ab7835186511462001929620174fa565b60005b835181101562012b145762012ad0818662005bed565b519061271082101562005bb557600362012b0e926001600160a01b038b5116600052811b016020526200054f6040600020546200822b838a62005bed565b62012aba565b509095919560005b875181101562012c425762012b32818662005bed565b5161271081101562005bb5576003906001600160a01b03865116600052811b0160205262012b6b60406000205462008299838962005bed565b9062012b78838862005bed565b519161271083101562005bb557600362012bb0936001600160a01b03895116600052811b016020526040600020556200192962017621565b62012bbc818662005bed565b5161271081101562005bb5576003906001600160a01b0362012bdf848c62005bed565b5116600052811b0160205262012c006040600020546200733c838962005bed565b919062012c0e828862005bed565b519061271082101562005bb55762012c3c9360036200054f936001600160a01b03620083528f889062005bed565b62012b1c565b509194935091620089a262012c57916201723d565b926001600160a01b036040519562012c6f8762003fa1565b6001875260203681890137511662012c878662005ba7565b526000905b865182101562012fe55762012ca2828862005bed565b516101005262012cb3855162005d44565b9660009462012cc3885162005d44565b6101805260009460005b885181101562012d94578a8962012cfd6001600160a01b0362012cf1858462005bed565b51166101005162017008565b158062012d4e575b62012d1e575b505062012d189062005b81565b62012ccd565b9862012d43916200200d826001600160a01b036200c40e879e9762012d189862005bed565b9790508a8962012d0b565b50505061271061010051101562005bb5576001600160a01b0362012d73828b62005bed565b5116600052600361010051811b016020528a89604060002054151562012d05565b509098949897969291939760005b885181101562012e355761271061010051101562005bb5576001600160a01b0362012dce828b62005bed565b5116600052600361010051811b016020526040600020541562012dfd575b62012df79062005b81565b62012da2565b9962012e2c62012df7916001600160a01b0362012e1b8e8d62005bed565b51166200200d826101805162005bed565b9a905062012dec565b50985096949392919561010051612710811015806105e05262005bb55760031b600401549662012e6a62008597878a6201542e565b996000996000610540525b6105e05162005bb557610540518a81101562012f1c576001600160a01b0362012eb262012ec49260006105e05260046101005160031b0162005f0b565b90549060031b1c1661018051620170cc565b1562012ee3575b62012ed96105405162005b81565b6105405262012e75565b9962012f159060006105e0528c6200200d826001600160a01b03620086406105405160046101005160031b0162005f0b565b9962012ecb565b509a939794969299919850946000915b83831062012fc157505050506105e05162005bb5578051906001600160401b03821162003f1a5760209062012f6b8360046101005160031b016200611d565b0160046101005160031b01600052602060002060005b83811062012fa3575050505062012f989062005b81565b909295919562012c8c565b60019060206001600160a01b03855116940193818401550162012f81565b6200872362012fde916001600160a01b0362009a30868662005bed565b9162012f2c565b91945050620112fd9194506020925062005b81565b9092602081015160268110156200409c57601603620130585760c0604062013026920151015162005ba7565b519260005b84518110156201288e57806200054f6001600160a01b036200a5dc62013052948962005bed565b6201302b565b602081015160268110156200409c57601703620130c557608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203233206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c57601803620131325760c06040620130ef920151015162005ba7565b5192600160ff1962013892541617620138925560005b84518110156201288e57806200054f6001600160a01b036200a6b96201312c948962005bed565b62013105565b602081939293015160268110156200409c57601903620132bc5760008091604082910160a08082510151805162013283575b505051906001600160a01b03620131886200733560c060e086015195015162005ba7565b511690602083519301915af13d156201327a573d90620131a882620041b8565b91620131b8604051938462003fd9565b82523d6000602084013e5b15620131d75750620112fd60209162005b81565b62005b7d9062013259604051917f5468652063616c6c20746f2074686520636f6e7472616374206973206e6f742060208401527f7375636365737366756c2e2052657475726e20646174613a2000000000000000604084015282815162013248816059946020868601910162004106565b810103603981018452018262003fd9565b60405191829162461bcd60e51b83526020600484015260248301906200412b565b606090620131c3565b6201328e9062005ba7565b51516201329d575b8062013164565b8192506200733590620132b39251015162005ba7565b51903862013296565b602081015160268110156200409c57601a03620133765760a06040620132e6920151015162005ba7565b51620132f66003825114620153e2565b620133018162005ba7565b51916201331a620133128362005bcb565b519262005bdc565b51916201008457602092620112fd926001036200a911576201334562013354916201388d5462007088565b6201388d556200192962017423565b6200054f620133676201388e5462007075565b6201388e55620019296201745e565b602081015160268110156200409c57601b03620137ca57509190620133a76201388b54620070bf6200a9906201733b565b5050620133b362017423565b506000805b61271081106201377e575b5050620133cf6200709a565b620133de6202712a5462005d44565b906000946000905b61271082101562013771578160031b9460ff6007870154161562013536576000966002870154156201352557600098975b62005bb55760048701548910156201350b5762013438896004890162005f0b565b90549060031b1c6001600160a01b0316978860005260038801602052604098868a6000205490620134699162006fe1565b9a906201347562017423565b620134809162005b4e565b60009a60028b0154620134939162006fe1565b91906201349f62017423565b620134aa9162005b4e565b826000526201388760205260002090815490620134c79162007088565b909155620134d462017423565b620134df9162005b4e565b620134eb828962005bed565b52620134f79062005b81565b98620135039062005b81565b989762013417565b929095506201351d9196975062005b81565b9094620133e6565b929095506201351d91965062005b81565b95969392509350505b6201354a8262005d44565b9160009160005b828110620136dc57505050620138885491620135726200859784846201542e565b926000906000905b808210620136b757505060005b8381106201362257505050508051906001600160401b03821162003f1a57602090620135b38362005f3d565b016201388860005260005b828110620135e457505050620112fd60209160006201388d5560006201388e5562005b81565b60019060206001600160a01b03845116930192817ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df015501620135be565b6000805b8381106201366f575b501562013648575b620136429062005b81565b62013587565b906201366662013642916001600160a01b0362009a30858762005bed565b91905062013637565b6001600160a01b038062013684858862005bed565b51169062013693838a62005bed565b511614620136ac57620136a69062005b81565b62013626565b50506001386201362f565b909162008723620136d5916001600160a01b0362009dc28662005d7c565b906201357a565b6000805b85811062013729575b501562013702575b620136fc9062005b81565b62013551565b9262013720620136fc916001600160a01b0362009a30878662005bed565b939050620136f1565b6001600160a01b03806201373e858762005bed565b5116906201374d838a62005bed565b5116146201376657620137609062005b81565b620136e0565b5050600138620136e9565b939495929150506201353f565b8060039594951b9060ff60078301541615620137c0576200adcb62007b336200054f946200adbf620137b79560026200adb58762006ee3565b939293620133b8565b50939293620133c3565b602081015160268110156200409c57601c036201383757608460405162461bcd60e51b815260206004820152602960248201527f5265736572766564206f70636f6465206964203238206973206e6f7420696d706044820152683632b6b2b73a32b21760b91b6064820152fd5b602081015160268110156200409c57601d036201385d575b50620112fd60209162005b81565b602081015160268110156200409c57601e146201384f57602081015160268110156200409c57601f03620138ae57602091620138a66200aeb86040620112fd9401515162005ba7565b91506201384f565b602081015160268110156200409c57602003620138d4575b50620112fd602091620138a6565b602081015160268110156200409c57602114620138c657602081015160268110156200409c576022036201392a5750620112fd60209160ff19620138925416620138925562013922620060c4565b9150620138c6565b602081015160268110156200409c5760230362013950575b50620112fd60209162013922565b602081015160268110156200409c576024146201394257602081015160268110156200409c576025146201394257602081015160268110156200409c5760150362010f0f57602091620139a7620112fd9262016367565b915062013942565b60019060206001600160a01b03845116930192817fc59860dc09a642b584039e685e1d1ef32a7f12bf29c382ee17f417fe2f31f3990155016200c067565b60019060206001600160a01b03845116930192817fe43a1016fd4ea9a9b882244b4d001d1f2d6b7fe146dc2643bb2c59db4a7bb0e10155016200bf1b565b60016001600160a01b03819216920192835492817f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece801550191906200be6b565b62013a9d90827f18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece8918201910162005f24565b386200be3d565b6001808262013ab582948662013fec565b019201920191906200bdfd565b620271236000527f4ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b1224908282015b818301811062013b015750506200bdaf565b8062013b0f60019262006448565b0162013aef565b60016001600160a01b03819216920192835492817f1f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a201550191906200bd7e565b62013b8890827f1f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a2918201910162005f24565b386200bd55565b60019060206001600160a01b03845116930192817f7f4320370b90cfd882bd4442421f8b4dbea0ca3aefc8d29d4787126914d53c5a0155016200bc19565b62013bff90847f7f4320370b90cfd882bd4442421f8b4dbea0ca3aefc8d29d4787126914d53c5a918201910162005f24565b386200bc0d565b60019060206001600160a01b03845116930192817f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c0155016200ba04565b62013c7690847f8e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c918201910162005f24565b386200b9f8565b8062013c9f9160031b600160ff60078301541615151462013ca5575062005b81565b6200b947565b62013cb96004820162013897830162014185565b6201389a8101600160ff1982541617905580548162013893015560018101546201389482015560028101546201389582015562013cff6005820162013898830162013fec565b620138996006820154910155386200a911565b600660208262013d266001945186620068ac565b019201920191906200b735565b600681810204810362005b9157600683810204830362005b9157620271156000527f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf928360060281015b826006028201811062013d915750506200b705565b806000600692556000600182015562013dad60028201620065b3565b6000600382015562013dc26004820162006448565b600060058201550162013d7c565b600660208262013de46001945186620068ac565b019201920191906200b689565b8060060290600682040362005b91578260060260068104840362005b91576000906202711682527f2a7aa4e7f2fefac7a07702701afb9c202f6f79fb2762c8e42b37a264307667fa92830192015b82811062013e4f5750506200b659565b80826006925582600182015562013e6960028201620065b3565b82600382015562013e7d6004820162006448565b8260058201550162013e3f565b608460405162461bcd60e51b815260206004820152604060248201527f546865206265666f7265206f7065726174696f6e20706c7567696e207379737460448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60a460405162461bcd60e51b815260206004820152604760248201527f546865206265666f7265206f7065726174696f6e20706c7567696e207379737460448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e6720727560648201527f6c65206c697374000000000000000000000000000000000000000000000000006084820152fd5b81811462013fe8578154916001600160401b03831162003f1a5762013faa83836200611d565b60005260206000209060005260206000208154916000925b84841062013fd1575050505050565b600180919201938454928185015501929062013fc2565b5050565b9080821462013fe85762014001815462005221565b906001600160401b03821162003f1a5781906201402b8262014024865462005221565b866200678f565b600090601f83116001146201406457600092620140585750508160011b916000199060031b1c1916179055565b01549050388062006822565b81526020808220858352818320935090601f1985169083905b828210620140b95750509084600195949392106201409f57505050811b019055565b015460001960f88460031b161c191690553880806200686f565b84958192958501548155600180910196019401906201407d565b81811462013fe857815491620140ea8383620064d6565b6000526020600020906000526020600020906000905b8382106201410e5750505050565b806201411d6001928562013fec565b92810192918101910162014100565b81811462013fe85781549162014143838362006564565b6000526020600020906000526020600020906000905b838210620141675750505050565b80620141766001928562013f84565b92810192918101910162014159565b81811462013fe8578154916001600160401b03831162003f1a57620141ab83836200611d565b60005260206000209060005260206000208154916000925b848410620141d2575050505050565b60016001600160a01b0381921692019384549281850155019290620141c3565b81811462013fe85781549162014209838362006564565b6000526020600020906000526020600020906000905b8382106201422d5750505050565b806201423c6001928562014185565b9281019291810191016201421f565b81811462013fe8578154916201426283836200665a565b6000526020600020906000526020600020906000905b838210620142865750505050565b806001918403620142a3575b600780910193019101909162014278565b80548455620142e28280860190830160ff90620142c4828254168462006732565b620142d682825460081c16846200674c565b5460101c16906200676d565b620142f4600280830190860162013f84565b60038085019082018082036201430d575b505062014292565b6201431891620140d3565b6201432a60048083019086016201412c565b6201433c6005808301908601620141f2565b6201434e600680830190860162013fec565b388062014305565b919062006def5780820362014369575050565b60ff600580620053a29462014382848654168262006719565b600185015460018201556201439e60028601600283016201424b565b60038501546003820155620143ba600486016004830162013fec565b019201620143d782825416849060ff801983541691151516179055565b8054835461ff001916600891821c8416151590911b61ff00161783555460101c1662ff0000825491151560101b169062ff00001916179055565b9080821462013fe857908154906000915b60648310620144315750505050565b600180919401928354948184015501919262014422565b9062013882546020600093019081515190620144648262003ffb565b9162014474604051938462003fd9565b80835262014485601f199162003ffb565b013660208401376201449a8351518262006fe1565b90156201480457620144ac9062005d44565b90859284515115620147fb57620144c38262005d44565b965b855151811015620146445760008080805b8681106201455b57509050620144f881620144f2858762005bed565b62005435565b60068110156200409c576003146201451d575b50620145179062005b81565b620144c5565b6000905b8082106201453057506201450b565b909562009dd6620145549162014547898d62005bed565b516200200d828a62005bed565b9062014521565b62014574816201456d878d5162005bed565b5162014c43565b9390948083118062014630575b15620145e7575050918385620145dd575b60068110156200409c5760038e9114620145bd575b5050620145b49062005b81565b919091620144d6565b94620145d4916200200d82620145b4959862005bed565b93908c620145a7565b6000955062014592565b80949295919514806201461c575b15620145a75760068110156200409c5760038e9114620145bd575050620145b49062005b81565b5060068110156200409c57801515620145f5565b5060068610156200409c5785151562014581565b5093505090929350600093845b83518610156201479657620146716201466b878662005bed565b6200670b565b906006808310156200409c5760029283036201469c57505062014695909562005b81565b9462014651565b620146ac6201466b898862005bed565b92818410156200409c5760018094148062014782575b15620146d75750505062014695909562005b81565b620146ec6201466b8a899b9694959b62005bed565b92808410156200409c576004809414928362014756575b50826201472b575b50506201471f575b50620146959062005b81565b95506201469562014713565b909150881015620147415787141538806201470b565b602182634e487b7160e01b6000525260246000fd5b908093508a10156201476d57891415913862014703565b602184634e487b7160e01b6000525260246000fd5b50818310156200409c5780831415620146c2565b92509290935060068210156200409c5760038203620147f2575b620147bb8162005d44565b9360005b828110620147ce575050509190565b80620147df620147ec928462005bed565b516200200d828962005bed565b620147bf565b506000620147b0565b50909392505050565b608460405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201527f73206f766572666c6f77000000000000000000000000000000000000000000006064820152fd5b90620138835460206000930190815151906201488a8262003ffb565b916201489a604051938462003fd9565b808352620148ab601f199162003ffb565b01366020840137620148c08351518262006fe1565b90156201480457620148d29062005d44565b90859284515115620147fb57620148e98262005d44565b965b85515181101562014a575760008080805b8681106201496e575090506201491881620144f2858762005bed565b60068110156200409c576003146201493d575b50620149379062005b81565b620148eb565b6000905b8082106201495057506201492b565b909562009dd6620149679162014547898d62005bed565b9062014941565b620149878162014980878d5162005bed565b5162014cdf565b9390948083118062014a43575b15620149fa575050918385620149f0575b60068110156200409c5760038e9114620149d0575b5050620149c79062005b81565b919091620148fc565b94620149e7916200200d82620149c7959862005bed565b93908c620149ba565b60009550620149a5565b809492959195148062014a2f575b15620149ba5760068110156200409c5760038e9114620149d0575050620149c79062005b81565b5060068110156200409c5780151562014a08565b5060068610156200409c5785151562014994565b5093505090929350600093845b835186101562014b795762014a7e6201466b878662005bed565b906006808310156200409c57600292830362014aa957505062014aa2909562005b81565b9462014a64565b62014ab96201466b898862005bed565b92818410156200409c5760038094148062014b65575b1562014ae45750505062014aa2909562005b81565b62014af96201466b8a899b9694959b62005bed565b92808410156200409c576005809414928362014b4e575b508262014b38575b505062014b2c575b5062014aa29062005b81565b955062014aa262014b20565b9091508810156200409c57871415388062014b18565b908093508a10156200409c57891415913862014b10565b50818310156200409c578083141562014acf565b92509290935060068210156200409c576003820362014bc8575b62014b9e8162005d44565b9360005b82811062014bb1575050509190565b80620147df62014bc2928462005bed565b62014ba2565b50600062014b93565b1562014bd957565b608460405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f75742060448201527f6f662072616e67650000000000000000000000000000000000000000000000006064820152fd5b909160008093819362014c5c6201388254831062014bd1565b60ff600562014c6b8462006d3c565b50015460081c161562014cd357828262014c8792600162014ea1565b62014c93575b50929190565b809450600192935062014ca7915062006d3c565b50015490600362014cc860ff62014cbe8662006d3c565b5054169462006d3c565b500154913862014c8d565b50509150915080918190565b909160008093819362014cf86201388354831062014bd1565b60ff600562014d078462006cc0565b50015460081c161562014cd357828262014d22928262014ea1565b62014d2d5750929190565b809450600192935062014d41915062006cc0565b50015490600362014cc860ff62014d588662006cc0565b5054169462006cc0565b1562014d6a57565b608460405162461bcd60e51b815260206004820152603160248201527f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960448201527f6e646578206f7574206f662072616e67650000000000000000000000000000006064820152fd5b1562014ddc57565b608460405162461bcd60e51b815260206004820152602f60248201527f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460448201527f6578206f7574206f662072616e676500000000000000000000000000000000006064820152fd5b6201388490815481101562005bb557600791600052027f84d95adeb12a1259eb9eb7c14e7511a374a468bb7f8ac3d8ec617dbcd1336deb0190600090565b805482101562005bb5576000526007602060002091020190600090565b909291908015620152105762014ebd6201388254831062014d62565b62014ed9600262014ece8462006d3c565b500154841062014dd4565b8015620151f25762014f09600162014f0085600262014ef88762006d3c565b500162014e84565b50015460ff1690565b62014f148162004eaa565b8062014f24575050505050600090565b62014f2f8162004eaa565b6003810362014f42575050505050600190565b62014f4d8162004eaa565b6004810362014f60575050505050600090565b62014f6b8162004eaa565b60019080820362014f8457505092620056279362015238565b90929362014f928262004eaa565b600280921462014fa8575b505050505050600090565b8215620151d55762014fd18462014fc5838562014ef88a62006d3c565b50015460081c60ff1690565b925b60009586865b62015163575b5062014feb8762005d44565b9760005b88811062015106575050505050620150078262004091565b8183036201506657505091906000915b818310620150255750505090565b9091928062015043575b6201503b909362005b81565b919062015017565b506201503b6201505e62015058858462005bed565b51151590565b90506201502f565b909150620150748262004091565b8103620150cd57509060009182915b818310620150915750505090565b9091928015620150b0575b620150a8909362005b81565b919062015083565b50620150a8620150c562015058858462005bed565b90506201509c565b60039150620150dc8162004091565b14620150ef575038808080808062014f9d565b6201510262015058620056279262005ba7565b1590565b808a62015142620151396201512f848b620151278c8262014ef88d62006cc0565b500162005f0b565b90549060031b1c90565b86868962014ea1565b620151566201515d946200054f9362005bed565b9015159052565b62014fef565b8462015175858262014ef88662006cc0565b500154811015620151cf576201519b6201512f828762015127888262014ef88962006cc0565b620151b4575b620151ad879162005b81565b9062014fd9565b96620151ad620151c5889262005b81565b98915050620151a1565b62014fdf565b620151eb8462014fc5838562014ef88a62006cc0565b9262014fd3565b6201520a600162014f0085600262014ef88762006cc0565b62014f09565b620152216201388354831062014d62565b62015232600262014ece8462006cc0565b62014ed9565b90929160036201528a9183600014620153125760ff60016201526187600262014ef88662006d3c565b50015460101c16945b84156201530157600262014ef8620152829362006d3c565b500162005565565b91603d8110156200409c57602c8103620152d1575050620152b46200733560208093015162005ba7565b5191015160268110156200409c57620152cd90620176d2565b1490565b90929060018103620152e65750505050600090565b600314620152f657505050600090565b620056279262015382565b600262014ef8620152829362006cc0565b60ff60016201532887600262014ef88662006cc0565b50015460101c16946201526a565b156201533e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f70657261746f722061646472657373206973206e6f742070726f76696465646044820152fd5b919060406200733592016201539c60018251511462015336565b620153b76001620153ae835162005ba7565b51511462015336565b620153cd6001600160a01b039384925162005ba7565b51169215620153dc5751161490565b51161490565b15620153ea57565b606460405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206e756d626572206f6620706172616d6574657273000000006044820152fd5b9190820180921162005b9157565b620154478162004eaa565b620154556200eb976201765c565b620154608162004eaa565b600181036201547f5750620154786200ebc36201765c565b6201388b55565b6201548a8162004eaa565b600281036201549b57506201388c55565b620154a68162004eaa565b60038103620154b757506201388d55565b80620154c560049262004eaa565b14620154ce5750565b6201388e55565b9060005b825181101562015dcf5760e0620154f1828562005bed565b51015115620159c557620155116201550a828562005bed565b516200670b565b6006808210156200409c576004918203620156a3575060209060016003836201553b868962005bed565b510151060362015558575050620155529062005b81565b620154d9565b62005b7d828462015688606362015589620155828562015579868e62005bed565b51015162006190565b9362006190565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b496040958651978894620155f862005c528388016026907f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b81526201562882518093601396878501910162004106565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201527f2c20342c20372c2031302c202e2e2e5d00000000000000000000000000000000605382015203604381018552018362003fd9565b5193849362461bcd60e51b855284015260248301906200412b565b620156b36201550a848762005bed565b81811015620159b0576001036201581057506020906002600383620156d9868962005bed565b5101510603620156f0575050620155529062005b81565b62005b7d828462015688605d62015711620155828562015579868e62005bed565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946201578062005c528388016026907f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b8152620157b082518093601396878501910162004106565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c203860338201527f2c2031312c202e2e2e5d00000000000000000000000000000000000000000000605382015203603d81018552018362003fd9565b620158206201550a848762005bed565b908110156201474157600203620159625760209060038262015843858862005bed565b5101510662015859575050620155529062005b81565b62005b7d8284620156886201587f620158788462015579858d62005bed565b9262006190565b91620159536040938451958693620158d062005c528387016026907f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815281519062015901826013948d868501910162004106565b0101603e907f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d000060208201520190565b03601f19810184528362003fd9565b62005b7d9060405191829162461bcd60e51b8352820160609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b602183634e487b7160e01b6000525260246000fd5b620159d56201550a828562005bed565b600690818110156200409c5760050362015b29575060206001600382620159fd858862005bed565b510151060362015a135750620155529062005b81565b62005b7d8262015b0c605262015a3462015582866201557981998c62005bed565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c64855198899362015aa162005c528387016025907f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815282519062015ad2826013958c878501910162004106565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562003fd9565b5192839262461bcd60e51b8452600484015260248301906200412b565b62015b396201550a838662005bed565b90808210156200409c57600391820362015c95575060026020918262015b60858862005bed565b510151060362015b765750620155529062005b81565b62005b7d8262015b0c605c62015b9762015582866201557981998c62005bed565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e454544855198899362015c0462005c528387016025907f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815282519062015c35826013958c878501910162004106565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c60338201527f2031312c202e2e2e5d0000000000000000000000000000000000000000000000605382015203603c81018752018562003fd9565b62015ca56201550a848762005bed565b908110156200409c5760020362015d8a576020908162015cc6848762005bed565b5101510662015cdb5750620155529062005b81565b62005b7d8262015b0c62015cfa62015878856201557981988b62005bed565b9162015d7b604093845197889362015d4a62005c528387016025907f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b60208201520190565b017201038363ab3b4b7103bb4ba341034b73232bc1606d1b815281519062015901826013948b868501910162004106565b03601f19810186528562003fd9565b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642072657475726e20747970653a20554e444546494e454400006044820152606490fd5b509050565b1562015ddc57565b60a460405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201527f74206265207468652073616d65000000000000000000000000000000000000006084820152fd5b1562015e7457565b608460405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152fd5b1562015ecb57565b608460405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201527f696e697469616c697a65640000000000000000000000000000000000000000006064820152fd5b1562015f3d57565b608460405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201527f61647920656e61626c65640000000000000000000000000000000000000000006064820152fd5b1562015faf57565b608460405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f20626520646973616260448201527f6c656400000000000000000000000000000000000000000000000000000000006064820152fd5b156201602157565b608460405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201527f20696e697469616c697a656400000000000000000000000000000000000000006064820152fd5b156201609357565b608460405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201527f656164792064697361626c6564000000000000000000000000000000000000006064820152fd5b156201610557565b608460405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201527f617373206973206e6f7420657175616c000000000000000000000000000000006064820152fd5b156201617757565b608460405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201527f6973206e6f7420657175616c00000000000000000000000000000000000000006064820152fd5b15620161e957565b608460405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152fd5b156201624057565b608460405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e20697360448201527f206f766572666c6f7700000000000000000000000000000000000000000000006064820152fd5b15620162b257565b608460405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152fd5b156201632357565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906201637c60c08351015162005ba7565b51916201639e60a062016393818451015162005ba7565b519251015162005bcb565b5193620163b3845183511462001929620174fa565b620163c6845186511462001929620174fa565b60005b84518110156201642457620163df818462005bed565b519061271082101562005bb5576201641e916001600160a01b03865116600052600390811b016020526200054f6040600020546200822b838a62005bed565b620163c9565b5092919360005b8351811015620165505762016441818462005bed565b5190612710918281101562005bb5576001600160a01b03908189511660005260039081602091811b0181526201648260406000205462008299868962005bed565b906201648f868a62005bed565b51918783101562005bb55784620164bc93878f5116600052811b0184526040600020556200192962017621565b620164c8848862005bed565b518581101562005bb557829084620164e1878c62005bed565b5116600052811b018152620165016040600020546200733c868962005bed565b91909262016510868a62005bed565b519687101562005bb5576201654a966200054f9562016530888d62005bed565b5116600052811b0190526040600020556200192962017697565b6201642b565b50506200838a62016561916201723d565b9060405193620165718562003fa1565b60018552602036818701376001600160a01b0390816107c0525116620165978562005ba7565b526000935b8151851015620168ba57620165b2858362005bed565b5194620165c0845162005d44565b91600093620165d0825162005d44565b6107e0528496855b87518110156201667957620165ff6107c051620165f6838b62005bed565b51168b62017008565b158062016641575b6201661e575b620166189062005b81565b620165d8565b956201663862016618916107c051620087158a8c62005bed565b9690506201660d565b506127108a101562005bb5576107c0516201665d828a62005bed565b511660005260038a811b01602052604060002054151562016607565b509793929096949195976000986127108610159560031b9860038a019a5b895181101562016713578762005bb5576107c051620166b7828c62005bed565b51166000528b60205260406000205415620166de575b620166d89062005b81565b62016697565b976201670a620166d8918b620166f98c6107c0519262005bed565b51166200200d826107e05162005bed565b989050620166cd565b50949591939650985096909596806107805262005bb55760040180610760525495620167446200859786896201542e565b61074052600097886107a0525b6107805162005bb5576107a05188811015620167ef576201678062016796916000610780526107605162005f0b565b6107c05191549060031b1c166107e051620170cc565b15620167b5575b620167ab6107a05162005b81565b6107a05262016751565b97620167e890620167cd6107a0516107605162005f0b565b6107c05191549060031b1c166200200d826107405162005bed565b976201679d565b5095939096509690969391936000915b8383106201688957505050506107805162005bb55761074051516001600160401b03811162003f1a576201683781610760516200611d565b6020610740510161076051600052602060002060006107c051905b848110620168725750505050506201686a9062005b81565b93926201659c565b600190602083865116950194818501550162016852565b62008723620168b3916107c051620168a2868662005bed565b51166200200d826107405162005bed565b91620167ff565b5050509050565b90805180516001600160401b03811162003f1a57620168e181856200611d565b6020809201846000528260002060005b8381106201696e575050505060c082600692620053a295940151600185015560408101516002850155606081015160038501556201694460808201511515600486019060ff801983541691151516179055565b6201695760a082015160058601620067d9565b0151151591019060ff801983541691151516179055565b82518282015591840191600101620168f1565b620138848054600160401b81101562003f1a57620169a59160018201905562014e46565b91909162006def57620053a291620168c1565b62013890908154600160401b81101562003f1a576001810180845581101562005bb557620053a2926000527f7f73709277f72a9bc7b284375e83603a53394744e9fa86da811e86c2aa78e05e01620067d9565b908062016a16575050565b620053a291600052601f6020600020910160051c81019062005f24565b90600160401b811162003f1a57815481835580821062016a5257505050565b620053a292600052601f6020600020918180850160051c840194168062016a81575b500160051c019062005f24565b600019908186019182549160200360031b1c1690553862016a74565b60009262016ab762016ab0859462014e46565b50620053bf565b9380935b85515185101562016bbd575061271084101562005bb55760039380851b946001600160a01b0385166000526020908601815262016b05604096600188600020549101549062006fe1565b9384911562016b7a579062016b1a9162007088565b96901562016b3757505062016b2f9062005b81565b939062016abb565b60649250519062461bcd60e51b82526004820152601460248201527f746f74616c20706f776572206f766572666c6f770000000000000000000000006044820152fd5b60648389519062461bcd60e51b82526004820152600e60248201527f706f776572206f766572666c6f770000000000000000000000000000000000006044820152fd5b93505092505090565b1562016bce57565b606460405162461bcd60e51b815260206004820152601360248201527f63757272656e74596573206f766572666c6f77000000000000000000000000006044820152fd5b600162016c1f8262014e46565b5001546202712e546000928184526202712b908160205262016c48816004604088200162005f0b565b90549060031b1c918386528060205262016c69826005604089200162005f0b565b90549060031b1c93865260205260ff600662016c9d62016c8f848360408b200162005f0b565b90549060031b1c9362014e46565b5001541662016cf2575062016ce29262016cd362016ccd938362016cc562016cda9562006fab565b969062016bc6565b6201542e565b9062006fe1565b929062016bc6565b111562016cec5790565b50600190565b62010174925062016ce29362016d0c62016cda9362006fab565b949062016bc6565b9092919262016d24825162005d44565b60009162016d33815162005d44565b8390845b865181101562016dce576001600160a01b0362016d5a81620165f6848b62005bed565b158062016d99575b62016d7a575b5062016d749062005b81565b62016d37565b819662016d919162009a3062016d74948b62005bed565b959062016d68565b506127108a101562005bb5578062016db2838a62005bed565b511660005260038a811b01602052604060002054151562016d62565b509295919694509260005b875181101562016e4f5761271086101562005bb5576001600160a01b038062016e03838b62005bed565b5116600052600387811b016020526040600020541562016e30575b5062016e2a9062005b81565b62016dd9565b819562016e47916200ed9262016e2a948c62005bed565b949062016e1e565b509250945092612710831015938462005bb55760049586600395861b019687549462016e806200859782886201542e565b9460009689889a5b62016ff357818b101562016f2957506000998b62016ec362016eab838362005f0b565b90546001600160a01b0392918e1b1c82168a620170cc565b1562016ee6575b50509062016edb8b94939262005b81565b9a9091929362016e88565b91998c95949392909162016efc908c9062005f0b565b9054908d1b1c1662016f0f828b62005bed565b5262016f1b9062005b81565b9890919293508b3862016eca565b9697949a98505091975092506000915b83831062016fcf575050505062016fba578051926001600160401b03841162016fa5575062016f6983836200611d565b602080910191600052806000209060005b84811062016f89575050505050565b83516001600160a01b0316838201559281019260010162016f7a565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6200872362016fec916001600160a01b0362008715868662005bed565b9162016f39565b603285634e487b7160e01b6000525260246000fd5b9060005b61271083101562005bb5576003600484821b018054831015620170685782620170359162005f0b565b916001600160a01b0392839254911b1c169083161462017060576201705a9062005b81565b6201700c565b505050600190565b5050505050600090565b9060005b61271083101562005bb55760036201389784821b018054831015620170685782620170a19162005f0b565b916001600160a01b0392839254911b1c16908316146201706057620170c69062005b81565b62017076565b9060005b82518110156201710b576001600160a01b0380620170ef838662005bed565b5116908316146201706057620171059062005b81565b620170d0565b505050600090565b801562005b91576000190190565b9081519060005b60001983810184811162005b9157821015620171ef576001820180831162005b91575b84811062017166575050620171609062005b81565b62017128565b6001600160a01b03806201717b858962005bed565b5116816201718a848a62005bed565b511614620171a5575b506201719f9062005b81565b6201714b565b828692960182811162005b91576201719f92620171e892620171cc620171e1938b62005bed565b5116620171da898b62005bed565b5262017113565b9562017113565b9062017193565b505090620171fd8162005d44565b9060005b81811062017210575090925050565b806001600160a01b036201722962017237938862005bed565b51166200200d828662005bed565b62017201565b80519160005b60001984810185811162005b9157821015620172f5576001820180831162005b91575b858110620172815750506201727b9062005b81565b62017243565b6201728d838662005bed565b516201729a828762005bed565b5114620172b3575b620172ad9062005b81565b62017266565b948181019080821162005b9157620172e6620172ed91620172d9620172ad948962005bed565b51620171da8a8a62005bed565b9662017113565b9050620172a2565b50509091620173048162005d44565b9060005b81811062017317575090925050565b806201732862017335928762005bed565b516200200d828662005bed565b62017308565b604051620173498162003efe565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e2060408201527f3130303000000000000000000000000000000000000000000000000000000000606082015290565b604051620173d08162003f69565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527f20666f72206469766964656e6473207965740000000000000000000000000000604082015290565b604051620174318162003fa1565b601c81527f6469766964656e6473206f7065726174696f6e206f766572666c6f7700000000602082015290565b6040516201746c8162003fa1565b600d81527f556e6b6e6f776e204572726f7200000000000000000000000000000000000000602082015290565b604051620174a78162003f69565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c637560208201527f6c6174696f6e0000000000000000000000000000000000000000000000000000604082015290565b604051620175088162003fa1565b601281527f496e76616c696420506172616d65746572730000000000000000000000000000602082015290565b604051620175438162003fa1565b601581527f4d656d62657220646f6573206e6f742065786973740000000000000000000000602082015290565b6040516201757e8162003fa1565b601781527f4d656d626572206973206e6f742073757370656e646564000000000000000000602082015290565b604051620175b98162003fa1565b601b81527f4d656d62657220697320616c72656164792073757370656e6465640000000000602082015290565b604051620175f48162003fa1565b601581527f4d656d62657220616c7265616479206578697374730000000000000000000000602082015290565b6040516201762f8162003fa1565b601181527f4e6f20656e6f7567682062616c616e6365000000000000000000000000000000602082015290565b6040516201766a8162003fa1565b601881527f496e76616c696420706172616d6574657220746f207365740000000000000000602082015290565b604051620176a58162003fa1565b601581527f546f6b656e20616d6f756e74206f766572666c6f770000000000000000000000602082015290565b60268110156200409c578015620178c0576001811462016cec5760028114620178ba5760038114620178b45760048114620178ae5760058114620178a85760068114620178a257600781146201789c57600881146201789657600981146201789057600a81146201788a57600b81146201788457600c81146201787e57600d81146201787857600e81146201787257600f81146201786c57601081146201786657601181146201786057601281146201785a57601381146201785457601481146201784e57601581146201784857601881146201784257601781146201783c57601981146201783657601a81146201783057601b81146201782a57601c81146201782457601d81146201781e57601e81146201781857601f81146201781257602081146201780c576021146201780757600090565b602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b50600090565b90815181101562005bb5570160200190565b60405190620178e78262003f69565b60288252604036602084013760005b601481106201790457505090565b60139080820391821162005b91578160031b917f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81160362005b915760ff80831162005b915762017963600180941b6001600160a01b0386166200616f565b60f081168282160391821162005b91577f0f00000000000000000000000000000000000000000000000000000000000000620179a39160f41b1662017a3f565b9082841b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416840362005b915762017a13917fff000000000000000000000000000000000000000000000000000000000000009160001a62017a08858a620178c6565b5360f81b1662017a3f565b92810180911162005b915762017a3262017a399360001a9186620178c6565b5362005b81565b620178f6565b60f81c600a81101562017a805760300160ff811162005b915760f81b7fff000000000000000000000000000000000000000000000000000000000000001690565b60570160ff811162005b915760f81b7fff00000000000000000000000000000000000000000000000000000000000000169056fea2646970667358221220a88b2310de1c810e72a47968a10611bf5aba2909acc6aaec5b26a486d5c735f764736f6c63430008130033", + "bytecode": "0x60808060405234620000195762031ebd90816200001f8239f35b600080fdfe6109c08060405260043610156200001557600080fd5b600090813560e01c908163036ee85014620028bc575080630fda3e1e146200282457806310ade3ea14620027f55780631797631d146200276e5780631c75255a146200270957806323b65c7814620026825780632514a6b4146200245c5780632eeb063b146200228c5780633fb18aec146200222257806356424cf414620022035780635c00d98714620021e05780635d0b184914620002055780635f1231ea14620020f65780635f5d5f00146200206f578063681ece9d146200202b5780636c0d4fa41462001e985780637daa10ce1462001e7b5780638129fc1c1462001aac57806383e4cccf1462001843578063864f9f7a146200180557806386ad77e214620014a45780638c7a63ae1462001414578063942d59fa14620012315780639f36145f14620011ab578063a064c4f11462001180578063acf80bc41462001142578063aec266871462001058578063aefca42a1462001037578063c41f94821462000fef578063c591aa981462000fa1578063d5a172f21462000f75578063d6a93c511462000f24578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e36200521b565b50610c80620001f162002ad7565b6200020060405180926200290c565bf35b80fd5b50346200020257806003193601126200020257602061073854604051908152f35b5060031960203682011262000df7576001600160401b036004351162000df757606090600435360301126200020257604051620002638162002a26565b62000273600435600401620028f7565b8152600435602401356101608190526001600160401b03811162000dff57600435013660238201121562000dff576004620002b5910135806101805262002b80565b90620002c5604051928362002ab3565b6101805182526020820161012052610180516101605160043501906024369160051b8301011162000c125760240160a052825b6101805160051b6101605160043501602460a0519282010182101562000e0357813560808190526001600160401b031062000dff57606091350136036023190112620002025762000350604051806101005262002a26565b62000369602460805161016051600435010101620028f7565b610100515260446080516101605160043501010135602681101562000df7576020610100510152608051610160516004350101606481013560c05260018060401b0360648201351162000df7576101006064820135909101360360231901126200020257620003df604051806101a052620029ec565b60c051608051610160516004350101016001600160401b0360248201351162000df75762000417906024369181810135010162004858565b6101a0515260c0516080516101605160043501010160448101359060018060401b03821162000dff5736604383830101121562000dff570160240135916200045f8362002b80565b906200046f604051928362002ab3565b838252602082019060c051608051610160516004350101013660448760051b81840135840101011162000c1657806044809201350101915b604460c051608051610160516004350101018760051b9082810135010101831015620004e85760208091620004dc85620048e3565b815201920191620004a7565b506101a051602001929092525060c051608051610160519395600435909401010192506001600160401b0360648401351162000c12573660436064850135850101121562000c1257602460648401358401013590620005478262002b80565b9062000557604051928362002ab3565b82825260208201606486013560c05160805161016051600435010101013660448660051b8301011162000dfb57604401905b606487013560c051608051610160516004350101010160448660051b820101831015620006a9576001600160401b03833511620006a55760e08335820136036043190112620006a55760405191620005e18362002a42565b6001600160401b03843583016044013511620006a1576200060e36604486358501818101350101620048f1565b835283358201606481013560208501526084810135604085015260a48101356060850152620006409060c401620048e3565b60808401526001600160401b038435830160e4013511620006a157602092839262000690906101049062000681368935830160e48101350160440162002e8f565b60a085015287350101620048e3565b60c082015281520191019062000589565b8980fd5b8880fd5b505050929350905060406101a051015260c051608051610160516004350101019260018060401b03608485013511620002025736604360848601358601011215620002025760246084850135850101359362000716620007098662002b80565b6040518060e05262002ab3565b8460e05152602060e0510192608482013560c05160805161016051600435010101013660448860051b8301011162000c12576044016101405293925b608482013560c0516080516101605160043501010101610140519060448860051b82010182101562000c1a576001600160401b0382351162000c165761010082359091013603604319011262000c125760405190620007b182620029ec565b60448135608486013560c0516080516101605160043501010101010135600681101562000c0e57825260648135608486013560c051608051610160516004350101010101013560208301528035608485013560c0516080516101605160043501010101019560018060401b0360848801351162000c0e573660636084890135890101121562000c0e576200084f604460848901358901013562002b80565b976200085f604051998a62002ab3565b60446084890135890101358952602089019060848901358435608489013560c05160805161016051600435010101010101366064604460848d01358d01013560051b83010111620006a557606401915b60848a0135853560848a013560c051608051610160516004350101010101016064604460848d01358d01013560051b82010184101562000afd576001600160401b03843511620006a15760c08435820136036063190112620006a157604051906200091a82620029d0565b84358101606481013583526005608490910135101562000af9578435810160848101356020840152600460a490910135101562000af9578435810160a4810135604084015260c481013560608401526001600160401b0360e4909101351162000af95762000995368635830160e481013501606401620048f1565b60808301526001600160401b038535820161010401351162000af957608085358201610104810135013603606319011262000af95760405190620009d9826200299e565b6001600160401b038635820161010481013501606401351162000af55762000a1536606461010489358501908101350181810135010162004858565b82526001600160401b038635820161010481013501608401351162000af55762000a5336873583016101048101350160848101350160640162004957565b60208301526001600160401b03863582016101048101350160a401351162000af55762000a9436873583016101048101350160a481013501606401620049e2565b60408301526001600160401b03863582016101048101350160c401351162000af55760209384939092909162000adf9036908935016101048101350160c48101350160640162002e8f565b606082015260a0820152815201920191620008af565b8b80fd5b8a80fd5b505097505096604083015260a48135608486013560c051608051610160516004350101010101013560608301528035608485013560c05160805161016051600435010101010160018060401b0360c48201351162000c0e57610124602094939262000b7762000bf2936044369160c4810135010162002e8f565b608085015262000ba260e4823560848a013560c05160805161016051600435010101010101620048e3565b60a085015262000bce610104823560848a013560c05160805161016051600435010101010101620048e3565b60c085015235608487013560c05160805161016051600435010101010101620048e3565b60e0820152815201926020610140510161014052939262000752565b8580fd5b8380fd5b8480fd5b505050509091925060e05160606101a051015260c051608051610160516004350101019160018060401b0360a48401351162000df75736604360a4850135850101121562000df757602460a4840135840101359262000c798462002b80565b9162000c89604051938462002ab3565b848352602083019060a483013560c05160805161016051600435010101013660448860051b8301011162000c0e57604401915b60448760051b60a486013560c0516080516101605160043501010101010183101562000cfe5760058335101562000c0e57823581526020928301920162000cbc565b509450505092909260806101a051015260c0516080516101605160043501010160c48101359060018060401b03821162000c1657602462000d43923692010162004957565b60a06101a051015260c0516080516101605160043501010160e48101359060018060401b03821162000c1657602462000d809236920101620049e2565b60c06101a051015260c051608051610160516004350101016101048101359060018060401b03821162000c1657602462000dbe923692010162002e8f565b60e06101a05101526101a05160406101005101526101005161012051526020610120510161012052602060a0510160a0529091620002f8565b5080fd5b8780fd5b8280fd5b60208401858152849084600435604401356001600160401b03811162000df75762000e3690600436918135010162002e8f565b604084015282516001600160a01b03919062000e8f90831662000e8662000e6762000e613362031960565b62004adb565b62000e7f62000e79878a511662031960565b62004b41565b9062004b98565b90331462004bdf565b8251805182101562000efc579062000ef062000ef6928462000eb384339362004c79565b5151161462000ee962000eca62000e613362031960565b62000e7f62000e798862000ee0888c5162004c79565b51511662031960565b9062004bdf565b62004c12565b62000e8f565b62000f2062000f0b86620067c5565b60405191829160208352602083019062002d45565b0390f35b503462000202578060031936011262000202575b6064811062000f4d575b602090604051908152f35b60ff60078260031b0154161562000f6f5762000f699062004c12565b62000f38565b62000f42565b50346200020257806003193601126200020257610730546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b0362000fd0620028db565b1681526107378452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c0620010126004356200628d565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b50346200020257806003193601126200020257602061073254604051908152f35b50346200020257806003193601126200020257610735908154916200107d8362002b80565b916200108d604051938462002ab3565b8383526020938484018093835285832083915b8383106200110a5750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620010db5785850386f35b909192938280620010f9600193603f198a8203018652885162002d45565b9601920196019592919092620010cd565b600188819260409a99979a516200112f8162001127818962002bd5565b038262002ab3565b81520192019201919096939596620010a0565b50346200020257602036600319011262000202576020906040906001600160a01b036200116e620028db565b16815261032783522054604051908152f35b50346200020257602036600319011262000202576020620011a3600435620060e5565b604051908152f35b503462000202576020366003190112620002025760406200120691600435815261073660205220620011dd8162003634565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003199565b9360208601526040850152620012226060850183831662003434565b60081c16151560808301520390f35b5034620002025760208060031936011262000df757604051620012548162002a09565b60405192620012638462002a26565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e0830152806101008093015260043581526107368352604090209160405192620012c48462002a09565b620012cf8162003634565b8452620012df6003820162003442565b84830190815292620012f46004830162003442565b60408601908152956200130a6005840162003442565b868201908152926200131f6006820162003442565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff88166200135b90876200520e565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d016200138c9162003199565b9451601f198d8703810160408f015295620013a79162002ee7565b905191858d830301908d0152620013be9162002ee7565b905190838b82030160808c0152620013d69162002ee7565b9051918982030160a08a0152620013ed9162002ee7565b955160c08801525160e087015251908501620014099162003434565b511515908301520390f35b503462000202576020366003190112620002025760043590606482101562001490575060031b60018101546002820154916200148660056200146760068401549362001127604051809481930162002bd5565b6040519485948552602085015260806040850152608084019062002d45565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b503462000202578060031936011262000202576103228054620014c78162002b80565b91620014d7604051938462002ab3565b81835283526020808420849184015b838310620016b1578585610323805490620015018262002b80565b9362001511604051958662002ab3565b82855260208501918152602081209080925b84841062001559576200154a8662000f208960405193849360408552604085019062002fcf565b90838203602085015262002fcf565b6040516200156781620029ec565b6200157760ff855416826200350b565b600184015460208201526002840154620015918162002b80565b90620015a1604051928362002ab3565b80825260208201600287018652602086209086905b8382106200162e5750505050600192826020926040600695015260038701546060820152604051620015f181620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520193019301929162001523565b600860206001926040516200164381620029d0565b8654815260ff858801548181166200165b8162002edc565b85840152851c166200166d8162002937565b6040820152600287015460608201526200168a6003880162003442565b60808201526200169d60048801620035d2565b60a0820152815201930191019091620015b6565b604051620016bf81620029ec565b620016cf60ff845416826200350b565b60018301546020820152600283018054620016ea8162002b80565b91620016fa604051938462002ab3565b81835289526020808a20908a9084015b8382106200178257505050506001928260209260406006950152600386015460608201526040516200174581620011278160048b0162002bd5565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201920192019190620014e6565b600860206001926040516200179781620029d0565b8654815260ff85880154818116620017af8162002edc565b85840152851c16620017c18162002937565b604082015260028701546060820152620017de6003880162003442565b6080820152620017f160048801620035d2565b60a08201528152019301910190916200170a565b50346200020257602036600319011262000202576020906040906001600160a01b0362001831620028db565b16815261032583522054604051908152f35b5034620002025760208060031936011262000df7578160043591620018864784111562000ee9620018748662005028565b6200187f4762005028565b9062004cc1565b338252620018f1610325808352620018ca604085205486111562000ee9620018ae8862005028565b338852848752620018c3604089205462005028565b9062004d2d565b338452808352620018e085604086205462004fed565b929062000ee9620018ae8862005028565b33845282528060408420551562001933575b508080809381811562001929575b3390f1156200191d5780f35b604051903d90823e3d90fd5b506108fc62001911565b9050610326805491620019468362004d95565b918593865b81811062001a39575050620019608462004d95565b805192906001600160401b03841162001a25579080849392620019868a98979662004f2a565b0191865280862090865b84811062001a06575050505050825b828110620019af57505062001903565b91925090620019fc9062000ef06001600160a01b03620019d0838662004c79565b5116620019dd8362004de9565b90919082549060031b9160018060a01b03809116831b921b1916179055565b908492916200199f565b83516001600160a01b0316818401558997509281019260010162001990565b634e487b7160e01b88526041600452602488fd5b62001a448162004de9565b90546001600160a01b03916003913391831b1c83160362001a73575b505062001a6d9062004c12565b6200194b565b9662001aa391839862001a8a62001a6d9562004de9565b9054911b1c1662001a9c828962004c79565b5262004c12565b95903862001a60565b5034620002025780600319360112620002025761073080546001600160a01b03191633179055610733805460ff19166001908117909155604051909190819062001af68162002a5e565b52906103228054600082558062001e12575b508252818060405162001b1b8162002a5e565b5262001dfe576103238054600082558062001d7f575b5082526127106107345562001d7162001b4962005b54565b836040519162001b598362002a5e565b81835262001c616040519162001b6f8362002a5e565b8383526040519462001b818662002a5e565b8486526040519362001b938562002a5e565b8585526040519462001ba58662002a5e565b8686526040519162001bb7836200299e565b8252602097888301526040820152606094858201526040519162001bdb83620029d0565b8683526003888401528660408401528686840152608083015260a082015262001c048262004c22565b5262001c108162004c22565b506040519062001c2082620029ec565b6004825287868301526040820152838382015260405162001c418162002a5e565b84815260808201528660a08201528660c08201528660e082015262005c60565b62001c6b62005b54565b60405162001c798162002a5e565b83815260405162001c8a8162002a5e565b84815260405162001c9b8162002a5e565b85815260405162001cac8162002a5e565b8681526040519162001cbe8362002a5e565b8783526040519362001cd0856200299e565b8452888401526040830152848201526040519162001cee83620029d0565b8583526003878401528560408401528585840152608083015260a082015262001d178262004c22565b5262001d238162004c22565b50856040519462001d3486620029ec565b60058652850152604084015282015260405162001d518162002a5e565b84815260808201528260a08201528260c08201528360e082015262005cac565b61138861038f556103905580f35b92506006838102938185040362001de85760009382855260208520908101905b81811062001daf57505062001b31565b8086849255868682015562001dc7600282016200543e565b86600382015562001ddb60048201620052d3565b8660058201550162001d9f565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001de85760009382855260208520908101905b81811062001e4257505062001b08565b8086849255868682015562001e5a600282016200543e565b86600382015562001e6e60048201620052d3565b8660058201550162001e32565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001eb562002ad7565b6040519162001ec483620029ec565b61038f5483526103905490602091828501526103915460408501526103925460608501526040518061039390848254918281520191845284842090845b8181106200200d575050508162001f1a91038262002ab3565b6080850152610394805462001f2f8162002b80565b9162001f3f604051938462002ab3565b818352835283832083908584015b83831062001fdf575050505060a08501526040518092839161039591808354928381520192855280852094905b82821062001fbb5750505062001f939250038262002ab3565b60c083015260ff6103965416151560e083015262000f20610397546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062001f7a565b600187819260409998995162001ffb8162001127818962002bd5565b81520192019201919095949562001f4d565b82546001600160a01b03168452928601926001928301920162001f01565b5034620002025760203660031901126200020257600435906064821015620014905762000f206200206260048460031b0162002b22565b6040519182918262002958565b5034620002025780600319360112620002025760405161032180548083529083526020808301937f375af38c615bc3b651d74d7d59974b82de2cfc350734166de4356711f3dca12992915b828210620020d55762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620020ba565b5034620002025760209081600319360112620002025760409062002119620028db565b816060845162002129816200299e565b82815286810183905285810182905201526001600160a01b03168152610320835220604051906200215a826200299e565b620021d581549160ff83161515845260ff8585019360081c1615158352600260405191620021998362002191816001850162002bd5565b038462002ab3565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002d45565b905160808301520390f35b50346200020257602036600319011262000202576020620011a360043562005d82565b503462000202578060031936011262000202576020620011a36200618c565b50346200020257604036600319011262000202576001600160401b0360043581811162000dff576200225990369060040162002e8f565b916024359182116200020257602062002282846200227b366004870162002e8f565b9062006589565b6040519015158152f35b50346200020257806003193601126200020257604051620022ad8162002a5e565b6040516106c383825b606482106200244557505050620022cd8162002a7a565b815260405191620022de83620029ec565b61072754835261072854906020918285015261072954604085015261072a5460608501526040518061072b90848254918281520191845284842090845b8181106200242757505050816200233491038262002ab3565b608085015261072c8054620023498162002b80565b9162002359604051938462002ab3565b818352835283832083908584015b838310620023f9575050505060a08501526040518092839161072d91808354928381520192855280852094905b828210620023d557505050620023ad9250038262002ab3565b60c083015260ff61072e5416151560e083015262000f2061072f546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062002394565b6001878192604099989951620024158162001127818962002bd5565b81520192019201919095949562002367565b82546001600160a01b0316845292860192600192830192016200231b565b6001602081928554815201930191019091620022b6565b5034620002025760208060031936011262000df7576004356200248b4782111562000ee9620018748462005028565b3383528280808061032794858752620024d0604083205482111562000ee9620024b48462005028565b338652898b52620024c9604087205462005028565b90620051a2565b33825285875262002510620024ea82604085205462004fed565b919062000ee9620024fb8562005028565b3387528a8c52620024c9604088205462005028565b338352868852604083205581811562002678575b3390f1156200266d57338352815260408220541562002541575080f35b610328805491620025528362004d95565b918493855b818110620026135750506200256c8462004d95565b805192906001600160401b038411620025ff5781906200258c8562004eef565b0191865280862090865b848110620025e3575050505050825b828110620025b35750505080f35b620025dd9062000ef06001600160a01b03620025d0838662004c79565b5116620019dd8362004dcd565b620025a5565b83516001600160a01b0316838201559281019260010162002596565b634e487b7160e01b87526041600452602487fd5b6200261e8162004dcd565b90546001600160a01b03916003913391831b1c8316036200264d575b5050620026479062004c12565b62002557565b966200266491839862001a8a620026479562004dcd565b9590386200263a565b6040513d84823e3d90fd5b506108fc62002524565b5034620002025780600319360112620002025760405161032680548083529083526020808301937f953a1f58387b28901d66ca469c0f2f10840990fe6eba2d456bb60fb027f000d992915b828210620026e85762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620026cd565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000dff5760648210156200275a579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b5034620002025780600319360112620002025760405161032880548083529083526020808301937fe1b7123756d5187477d16898f0ed5b46851d48ab984ff1401c7617fb3825ab6e92915b828210620027d45762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620027b9565b50346200020257806003193601126200020257602060ff610733541660405190620028208162002937565b8152f35b5034620002025760209081600319360112620002025762002844620028db565b6200284e6200521b565b506001600160a01b031681526103298252604080822090519190620028738362002a5e565b60405193849192915b60648310620028a657610c808587620028958162002a7a565b81526200020060405180926200290c565b600182819286548152019401920191926200287c565b90503462000df7578160031936011262000df757602090610731548152f35b600435906001600160a01b0382168203620028f257565b600080fd5b35906001600160a01b0382168203620028f257565b516000915b606483106200291f57505050565b60019082518152602080910192019201919062002911565b600411156200294257565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062002980575050505090565b83516001600160a01b03168552938101939281019260010162002971565b608081019081106001600160401b03821117620029ba57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b03821117620029ba57604052565b61010081019081106001600160401b03821117620029ba57604052565b61012081019081106001600160401b03821117620029ba57604052565b606081019081106001600160401b03821117620029ba57604052565b60e081019081106001600160401b03821117620029ba57604052565b602081019081106001600160401b03821117620029ba57604052565b610c8081019081106001600160401b03821117620029ba57604052565b604081019081106001600160401b03821117620029ba57604052565b601f909101601f19168101906001600160401b03821190821017620029ba57604052565b6040519062002ae68262002a5e565b6040518261032b6000835b6064821062002b0b5750505062002b088262002a7a565b52565b600160208192855481520193019101909162002af1565b9060405191828154918282526020928383019160005283600020936000905b82821062002b5c5750505062002b5a9250038362002ab3565b565b85546001600160a01b03168452600195860195889550938101939091019062002b41565b6001600160401b038111620029ba5760051b60200190565b90600182811c9216801562002bca575b602083101462002bb457565b634e487b7160e01b600052602260045260246000fd5b91607f169162002ba8565b906000929180549162002be88362002b98565b91828252600193848116908160001462002c4f575060011462002c0c575b50505050565b90919394506000526020928360002092846000945b83861062002c3a57505050500101903880808062002c06565b80548587018301529401938590820162002c21565b9294505050602093945060ff191683830152151560051b0101903880808062002c06565b90815462002c818162002b80565b9260409362002c938551918262002ab3565b828152809460208092019260005281600020906000935b85851062002cba57505050505050565b6001848192845162002cd28162001127818a62002bd5565b81520193019401939162002caa565b90815180825260208080930193019160005b82811062002d02575050505090565b83516001600160a01b03168552938101939281019260010162002cf3565b60005b83811062002d345750506000910152565b818101518382015260200162002d23565b9060209162002d608151809281855285808601910162002d20565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002d985750505050505090565b909192939495848062002db483856001950387528a5162002d45565b980193019301919493929062002d87565b93929162002dd785610ca0936200290c565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002e6362002e2c6080840151610100610d408a0152610dc089019062002ce1565b62002e4c60a085015191610cbf1992838b830301610d608c015262002d6c565b9060c08501519089830301610d808a015262002ce1565b9101511515610da0860152930152565b6001600160401b038111620029ba57601f01601f191660200190565b81601f82011215620028f25780359062002ea98262002e73565b9262002eb9604051948562002ab3565b82845260208383010111620028f257816000926020809301838601378301015290565b600511156200294257565b90815180825260208080930193019160005b82811062002f08575050505090565b83518552938101939281019260010162002ef9565b90815180825260208092019182818360051b82019501936000915b84831062002f495750505050505090565b909192939495848062002f6583856001950387528a5162002ee7565b980193019301919493929062002f38565b90815180825260208092019182818360051b82019501936000915b84831062002fa25750505050505090565b909192939495848062002fbe83856001950387528a5162002ce1565b980193019301919493929062002f91565b90815180825260208092019081926005928183851b82019601946000915b84831062002fff575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029425783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b828110620030bf5750505050509282916200308960019560608085015190840152608080850151908483039085015262002d45565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062002fed565b919395968062003185600193959761011f198b82030189528951908151815283820151620030ed8162002edc565b8482015287820151620031008162002937565b888201526060908183015182820152816200317562003164620031536080620031368189015160c080848a015288019062002ee7565b9560a0809901519881880391015287519080875286019062002d6c565b888701518582038a87015262002f1d565b8b8601518482038d86015262002f76565b9301519181840391015262002d45565b970195019101918b96959493919262003054565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620031fb5750505050906040620031f89392015190604081840391015262002d45565b90565b858703607f19018352835180516001600160a01b03168852602081015194979394929391929060268210156200294257604091602084015201519060606040820152620032578251610100606084015261016083019062002d6c565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003419575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b8281106200339457505050506060840151838203605f190160c0850152620032d8925062002fcf565b608083015190605f198382030160e0840152602080835192838152019201906000905b8082106200337057505050620033638360209360e06200334c62003334879660a060019a0151605f198683030161010087015262002f1d565b60c0850151848203605f190161012086015262002f76565b92015190610140605f198285030191015262002d45565b98019401929101620031d2565b9091926020806001928651620033868162002edc565b8152019401920190620032fb565b90919293602080600192601f19868203018852885190620033fd620033c2835160e080855284019062002ee7565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002d45565b60c09283015115159190920152970196950193929101620032af565b90919260208060019286511515815201940192019062003279565b906003821015620029425752565b9060405191828154918282526020928383019160005283600020936000905b8282106200347a5750505062002b5a9250038362002ab3565b85548452600195860195889550938101939091019062003461565b90604051620034a48162002a42565b60c060ff60068395620034b78162003442565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152604051620034fc8162001127816005860162002bd5565b60a08601520154161515910152565b6006821015620029425752565b908154620035268162002b80565b9262003536604051948562002ab3565b818452600090815260208082208186015b84841062003556575050505050565b6001838192620035668562003442565b81520192019301929062003547565b908154620035838162002b80565b9262003593604051948562002ab3565b818452600090815260208082208186015b848410620035b3575050505050565b6001838192620035c38562002b22565b815201920193019290620035a4565b9060036060604051620035e5816200299e565b620036308195620035f68162002c73565b8352620036066001820162003518565b6020840152620036196002820162003575565b604084015262002191604051809681930162002bd5565b0152565b90604051620036438162002a26565b82546001600160a01b03168152600183018054919384929091620036678262002b80565b9162003677604051938462002ab3565b80835260208301916000526020600020916000905b828210620036b9575050505091620036306040926002946020840152620021918451809681930162002bd5565b604051620036c78162002a26565b84546001600160a01b038116825260a01c60ff16602681101562002942576020820152604051620036f881620029ec565b620037066001870162002c73565b815260028601604051808260208294549384815201906000526020600020926000905b80601f8301106200468657620038629454918181106200466f575b81811062004655575b8181106200463b575b81811062004621575b81811062004608575b818110620045ee575b818110620045d4575b818110620045ba575b818110620045a0575b81811062004586575b8181106200456c575b81811062004552575b81811062004538575b8181106200451e575b81811062004504575b818110620044ea575b818110620044d0575b818110620044b6575b8181106200449c575b81811062004482575b81811062004468575b8181106200444e575b81811062004434575b8181106200441a575b81811062004400575b818110620043e6575b818110620043cc575b818110620043b2575b81811062004398575b8181106200437e575b81811062004364575b1062004353575b50038262002ab3565b6020820152600386018054620038788162002b80565b9162003888604051938462002ab3565b81835260208301906000526020600020906000905b8382106200433257505050506040820152600486018054620038bf8162002b80565b91620038cf604051938462002ab3565b81835260208301906000526020600020906000905b838210620041d557505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003ecc5784600997946020979460019a979462003a5b94549181811062003eae575b81811062003e8d575b81811062003e6c575b81811062003e4b575b81811062003e2b575b81811062003e0a575b81811062003de9575b81811062003dc8575b81811062003da7575b81811062003d86575b81811062003d65575b81811062003d44575b81811062003d23575b81811062003d02575b81811062003ce1575b81811062003cc0575b81811062003c9f575b81811062003c7e575b81811062003c5d575b81811062003c3c575b81811062003c1b575b81811062003bfa575b81811062003bd9575b81811062003bb8575b81811062003b97575b81811062003b76575b81811062003b55575b81811062003b34575b81811062003b13575b81811062003af2575b81811062003ad1575b1062003ab65750038262002ab3565b608082015262003a6e60068a0162003518565b60a082015262003a8160078a0162003575565b60c082015260405162003a9d81620011278160088e0162002bd5565b60e082015260408201528152019401910190926200368c565b90889160f81c62003ac78162002edc565b8152013862003859565b928a8d9160ff8560f01c1662003ae78162002edc565b815201930162003a4c565b928a8d9160ff8560e81c1662003b088162002edc565b815201930162003a43565b928a8d9160ff8560e01c1662003b298162002edc565b815201930162003a3a565b928a8d9160ff8560d81c1662003b4a8162002edc565b815201930162003a31565b928a8d9160ff8560d01c1662003b6b8162002edc565b815201930162003a28565b928a8d9160ff8560c81c1662003b8c8162002edc565b815201930162003a1f565b928a8d9160ff8560c01c1662003bad8162002edc565b815201930162003a16565b928a8d9160ff8560b81c1662003bce8162002edc565b815201930162003a0d565b928a8d9160ff8560b01c1662003bef8162002edc565b815201930162003a04565b928a8d9160ff8560a81c1662003c108162002edc565b8152019301620039fb565b928a8d9160ff8560a01c1662003c318162002edc565b8152019301620039f2565b928a8d9160ff8560981c1662003c528162002edc565b8152019301620039e9565b928a8d9160ff8560901c1662003c738162002edc565b8152019301620039e0565b928a8d9160ff8560881c1662003c948162002edc565b8152019301620039d7565b928a8d9160ff8560801c1662003cb58162002edc565b8152019301620039ce565b928a8d9160ff8560781c1662003cd68162002edc565b8152019301620039c5565b928a8d9160ff8560701c1662003cf78162002edc565b8152019301620039bc565b928a8d9160ff8560681c1662003d188162002edc565b8152019301620039b3565b928a8d9160ff8560601c1662003d398162002edc565b8152019301620039aa565b928a8d9160ff8560581c1662003d5a8162002edc565b8152019301620039a1565b928a8d9160ff8560501c1662003d7b8162002edc565b815201930162003998565b928a8d9160ff8560481c1662003d9c8162002edc565b81520193016200398f565b928a8d9160ff8560401c1662003dbd8162002edc565b815201930162003986565b928a8d9160ff8560381c1662003dde8162002edc565b81520193016200397d565b928a8d9160ff8560301c1662003dff8162002edc565b815201930162003974565b928a8d9160ff8560281c1662003e208162002edc565b81520193016200396b565b928a8d9160ff85831c1662003e408162002edc565b815201930162003962565b928a8d9160ff8560181c1662003e618162002edc565b815201930162003959565b928a8d9160ff8560101c1662003e828162002edc565b815201930162003950565b928a8d9160ff8560081c1662003ea38162002edc565b815201930162003947565b928a8d9160ff851662003ec18162002edc565b81520193016200393e565b926001610400602092865460ff811662003ee68162002edc565b825260ff8160081c1662003efa8162002edc565b8583015260ff8160101c1662003f108162002edc565b604083015260ff8160181c1662003f278162002edc565b606083015260ff81861c1662003f3d8162002edc565b608083015260ff8160281c1662003f548162002edc565b60a083015260ff8160301c1662003f6b8162002edc565b60c083015262003f8160ff8260381c1662002edc565b60ff8160381c1660e083015260ff8160401c1662003f9f8162002edc565b61010083015260ff8160481c1662003fb78162002edc565b61012083015260ff8160501c1662003fcf8162002edc565b61014083015260ff8160581c1662003fe78162002edc565b61016083015260ff8160601c1662003fff8162002edc565b61018083015260ff8160681c16620040178162002edc565b6101a083015260ff8160701c166200402f8162002edc565b6101c083015260ff8160781c16620040478162002edc565b6101e083015260ff8160801c166200405f8162002edc565b61020083015260ff8160881c16620040778162002edc565b61022083015260ff8160901c166200408f8162002edc565b61024083015260ff8160981c16620040a78162002edc565b61026083015260ff8160a01c16620040bf8162002edc565b61028083015260ff8160a81c16620040d78162002edc565b6102a083015260ff8160b01c16620040ef8162002edc565b6102c083015260ff8160b81c16620041078162002edc565b6102e083015260ff8160c01c166200411f8162002edc565b61030083015260ff8160c81c16620041378162002edc565b61032083015260ff8160d01c166200414f8162002edc565b61034083015260ff8160d81c16620041678162002edc565b61036083015260ff8160e01c166200417f8162002edc565b61038083015260ff8160e81c16620041978162002edc565b6103a083015260ff8160f01c16620041af8162002edc565b6103c083015260f81c620041c38162002edc565b6103e082015201940192019162003915565b604051620041e381620029ec565b620041f360ff855416826200350b565b600184015460208201526002840180546200420e8162002b80565b916200421e604051938462002ab3565b81835260208301906000526020600020906000905b838210620042ab57505050506001928260209260406006950152600387015460608201526040516200426e81620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201930191019091620038e4565b600190602060405191620042bf83620029d0565b85548352838601549260ff8416620042d78162002edc565b8382015260ff600894851c16620042ee8162002937565b6040820152600287015460608201526200430b6003880162003442565b60808201526200431e60048801620035d2565b60a082015281520193019101909162004233565b60076020600192620043448662003495565b8152019301910190916200389d565b60f81c151581526020013862003859565b92602060019160ff8560f01c161515815201930162003852565b92602060019160ff8560e81c161515815201930162003849565b92602060019160ff8560e01c161515815201930162003840565b92602060019160ff8560d81c161515815201930162003837565b92602060019160ff8560d01c16151581520193016200382e565b92602060019160ff8560c81c161515815201930162003825565b92602060019160ff8560c01c16151581520193016200381c565b92602060019160ff8560b81c161515815201930162003813565b92602060019160ff8560b01c16151581520193016200380a565b92602060019160ff8560a81c161515815201930162003801565b92602060019160ff8560a01c1615158152019301620037f8565b92602060019160ff8560981c1615158152019301620037ef565b92602060019160ff8560901c1615158152019301620037e6565b92602060019160ff8560881c1615158152019301620037dd565b92602060019160ff8560801c1615158152019301620037d4565b92602060019160ff8560781c1615158152019301620037cb565b92602060019160ff8560701c1615158152019301620037c2565b92602060019160ff8560681c1615158152019301620037b9565b92602060019160ff8560601c1615158152019301620037b0565b92602060019160ff8560581c1615158152019301620037a7565b92602060019160ff8560501c16151581520193016200379e565b92602060019160ff8560481c161515815201930162003795565b92602060019160ff8560401c16151581520193016200378c565b92602060019160ff8560381c161515815201930162003783565b92602060019160ff8560301c16151581520193016200377a565b92602060019160ff8560281c161515815201930162003771565b92602060019160ff85831c161515815201930162003768565b92602060019160ff8560181c16151581520193016200375f565b92602060019160ff8560101c161515815201930162003756565b92602060019160ff8560081c16151581520193016200374d565b92602060019160ff85161515815201930162003744565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003729565b9080601f83011215620028f257813590620048738262002b80565b9262004883604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620048b35750505050505090565b82356001600160401b038111620028f2578691620048d78484809489010162002e8f565b815201920191620048a2565b35908115158203620028f257565b81601f82011215620028f2578035916200490b8362002b80565b926200491b604051948562002ab3565b808452602092838086019260051b820101928311620028f2578301905b82821062004947575050505090565b8135815290830190830162004938565b9080601f83011215620028f257813590620049728262002b80565b9262004982604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620049b25750505050505090565b82356001600160401b038111620028f2578691620049d684848094890101620048f1565b815201920191620049a1565b9080601f83011215620028f257813591620049fd8362002b80565b9260409262004a0f8451958662002ab3565b8185526020938486019185600594851b86010194818611620028f257868101935b86851062004a4357505050505050505090565b84356001600160401b038111620028f257820183603f82011215620028f257888101359062004a728262002b80565b9162004a818751938462002ab3565b808352868b8401918a1b83010191868311620028f25791878c94929593015b81811062004ab957505082935081520194019362004a30565b91938091939562004aca84620028f7565b8152019101918b9391949262004aa0565b9062002b5a604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b30815180926020868601910162002d20565b810103602581018552018362002ab3565b9062002b5a6040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004b87815180926020868601910162002d20565b810103602081018552018362002ab3565b602062002b5a91939293604051948162004bbc879351809286808701910162002d20565b820162004bd28251809386808501910162002d20565b0103808552018362002ab3565b1562004be85750565b60405162461bcd60e51b81526020600482015290819062004c0e90602483019062002d45565b0390fd5b600019811462001de85760010190565b80511562004c305760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c305760400190565b80516002101562004c305760600190565b80516003101562004c305760800190565b805182101562004c305760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002b5a916020949360405195869262004cf162004ce383860162004c8e565b918281519485920162002d20565b016e0161030b732103130b630b731b29d1608d1b815262004d1c825180936020878501910162002d20565b010360101981018552018362002ab3565b601962002b5a916020949360405195869262004d4f62004ce383860162004c8e565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004d84825180936020878501910162002d20565b010360061981018552018362002ab3565b9062004da18262002b80565b62004db0604051918262002ab3565b828152809262004dc3601f199162002b80565b0190602036910137565b610328805482101562004c305760005260206000200190600090565b610326805482101562004c305760005260206000200190600090565b610321805482101562004c305760005260206000200190600090565b6106c2805482101562004c305760005260206000200190600090565b61032a805482101562004c305760005260206000200190600090565b6106be805482101562004c305760005260206000200190600090565b6106c0805482101562004c305760005260206000200190600090565b805482101562004c305760005260206000200190600090565b8181029291811591840414171562001de857565b919082549060031b91821b91600019901b1916179055565b81811062004ee2575050565b6000815560010162004ed6565b600160401b8111620029ba576103289081549080835581811062004f1257505050565b62002b5a926000526020600020918201910162004ed6565b600160401b8111620029ba576103269081549080835581811062004f1257505050565b8054600082558062004f5d575050565b62002b5a9160005260206000209081019062004ed6565b600160401b8111620029ba576106be9081549080835581811062004f1257505050565b600160401b8111620029ba576106c09081549080835581811062004f1257505050565b6103958054600082558062004f5d575050565b90600160401b8111620029ba5781549080835581811062004f1257505050565b919082811162004ffe576001920390565b50600091508190565b811562005012570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101562005193575b506904ee2d6d415b85acef8160201b8083101562005183575b50662386f26fc100008083101562005173575b506305f5e1008083101562005163575b506127108083101562005153575b50606482101562005142575b600a8092101562005137575b60019081602181860195620050c48762002e73565b96620050d4604051988962002ab3565b808852620050e5601f199162002e73565b01366020890137860101905b620050fe575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200513157919082620050f1565b620050f7565b9160010191620050af565b9190606460029104910191620050a3565b6004919392049101913862005097565b6008919392049101913862005089565b6010919392049101913862005079565b6020919392049101913862005066565b6040935081049150386200504d565b601e62002b5a9160209493604051958692620051c462004ce383860162004c8e565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620051fd825180936020878501910162002d20565b010360011981018552018362002ab3565b6003821015620029425752565b604051906200522a8262002a5e565b60405182620052398262002a7a565b610c8036833752565b906200524e8262002b80565b6040906200525f8251918262002ab3565b838152809362005272601f199162002b80565b019160005b838110620052855750505050565b60209082516200529581620029ec565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e083015282860101520162005277565b620052df815462002b98565b9081620052ea575050565b81601f60009311600114620052fd575055565b9080839182526200531e601f60208420940160051c84016001850162004ed6565b5555565b805490600081558162005333575050565b6000526020600020908101905b8181106200534c575050565b806200535a600192620052d3565b0162005340565b90600160401b8111620029ba578154918181558282106200538157505050565b600052602060002091820191015b8181106200539b575050565b80620053a9600192620052d3565b016200538f565b8054906000815581620053c1575050565b6000526020600020908101905b818110620053da575050565b80620053e860019262004f4d565b01620053ce565b90600160401b8111620029ba578154918181558282106200540f57505050565b600052602060002091820191015b81811062005429575050565b806200543760019262004f4d565b016200541d565b8054600091828155816200545157505050565b6001600160fd1b0382168203620054de5782526020822091600391821b8301925b838110620054805750505050565b8082600892558260018201558260028201556200549f84820162004f4d565b620054ad6004820162005322565b620054bb60058201620053b0565b620054c960068201620053b0565b620054d760078201620052d3565b0162005472565b634e487b7160e01b83526011600452602483fd5b600160401b8211620029ba578054908281558183106200551157505050565b6001600160fd1b03828116830362001de8578316830362001de857600090815260208120600392831b810193831b015b8381106200554f5750505050565b8082600892558260018201558260028201556200556e84820162004f4d565b6200557c6004820162005322565b6200558a60058201620053b0565b6200559860068201620053b0565b620055a660078201620052d3565b0162005541565b516006811015620029425790565b906006811015620029425760ff80198354169116179055565b90620055e08162002edc565b60ff80198354169116179055565b90620055fa8162002937565b61ff0082549160081b169061ff001916179055565b9190601f81116200561f57505050565b62002b5a926000526020600020906020601f840160051c830193106200564e575b601f0160051c019062004ed6565b909150819062005640565b81519192916001600160401b038111620029ba5762005685816200567e845462002b98565b846200560f565b602080601f8311600114620056c4575081929394600092620056b8575b50508160011b916000199060031b1c1916179055565b015190503880620056a2565b90601f198316958460005282600020926000905b8882106200571357505083600195969710620056f9575b505050811b019055565b015160001960f88460031b161c19169055388080620056ef565b80600185968294968601518155019501930190620056d8565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b815160068110156200294257620057879082620055bb565b602082015160018201556002810160408301516020815191620057ab8385620054f2565b01916000526020600020916000905b8282106200581e57505050509060e0600562002b5a9360608401516003820155620057ed60808501516004830162005659565b01916200580160a08201511515846200572c565b6200581360c08201511515846200573d565b015115159062005755565b8051805185556200585e60018601620058476020840151620058408162002edc565b82620055d4565b604083015190620058588262002937565b620055ee565b60608101516002860155608081015180519060038701906001600160401b038311620029ba5760209062005893848462004fcd565b0190600052602060002060005b83811062005b3f575050505060a0015180518051906004870190602090620058c9848462005361565b01906000526020600020906000905b83821062005b1f57505050506005850160208201516020815191620058fe8385620053ef565b019160005260206000206000925b82841062005abb57505050506006850160408201516020815191620059328385620053ef565b019160005260206000206000925b82841062005a4e5750505050606001518051906001600160401b038211620029ba57620059808262005976600789015462002b98565b600789016200560f565b602090601f8311600114620059d3579282600893602093600196600092620059c7575b5050600019600383901b1c191690851b1760078801555b01940191019092620057ba565b015190503880620059a3565b906007870160005260206000209160005b601f198516811062005a35575083602093600196938793600897601f1981161062005a1b575b505050811b016007880155620059ba565b015160001960f88460031b161c1916905538808062005a0a565b91926020600181928685015181550194019201620059e4565b80518051906001600160401b038211620029ba5760209062005a71838662004fcd565b0183600052602060002060005b83811062005a9d57505050506001602081920192019301929062005940565b82516001600160a01b03168183015560209092019160010162005a7e565b80518051906001600160401b038211620029ba5760209062005ade838662004fcd565b0183600052602060002060005b83811062005b0a5750505050600160208192019201930192906200590c565b60019060208451940193818401550162005aeb565b600160208262005b328394518762005659565b01930191019091620058d8565b600190602084519401938184015501620058a0565b60409081519162005b658362002a97565b60018352829160005b60208082101562005bd85783516020929162005b8a82620029d0565b60008252600081830152600086830152606060008184015280608084015286519062005bb6826200299e565b808252808383015280888301528082015260a083015282880101520162005b6e565b505091925050565b610323805482101562004c30576000526006602060002091020190600090565b6106bb805482101562004c30576000526006602060002091020190600090565b610322805482101562004c30576000526006602060002091020190600090565b6106ba805482101562004c30576000526006602060002091020190600090565b6103228054600160401b811015620029ba5762005c839160018201905562005c20565b91909162005c965762002b5a916200576f565b634e487b7160e01b600052600060045260246000fd5b6103238054600160401b811015620029ba5762005c839160018201905562005be0565b6106bb8054600160401b811015620029ba5762005c839160018201905562005c00565b6106ba8054600160401b811015620029ba5762005c839160018201905562005c40565b1562005d1d57565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b606481101562004c305762005daf8162005da86002620031f89460031b01549162005f41565b9062005ebb565b919062005d15565b606481101562004c3057600390811b61039a81015490600061039c820190815490809561039b829501915b83861062005e0057505050505050620031f89162005daf9162005ebb565b9690919293949662004c305762005e538762005e4b62005e2562000ef09a8962004e91565b905490861b1c6001600160a01b031660009081526020879052604081205490946200606a565b999062005edd565b949392919062005de2565b606481101562004c305762005daf8162005da861039a620031f89460031b01549162005fe7565b90811562005eb257606462005e9e818402938462005007565b0362005eaa5760019190565b600091508190565b60019150600090565b9190821562005ed35762005e9e818402938462005007565b5060019150600090565b1562005ee557565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6064811015908162004c3057600390811b906004928383019182549260009582879601935b85871062005f78575050505050505090565b97969091929394959762005fd25762005fc68862005e4b62005fa062000ef09a9b8762004e91565b905490881b1c6001600160a01b031660009081526020899052604081205490946200606a565b95949392919062005f66565b603282634e487b7160e01b6000525260246000fd5b6064811015908162004c305790600391821b9061039c82019081549060009461039b869501915b8386106200601f5750505050505090565b9590919293949562004c30576200604c866200604462005e2562000ef0998962004e91565b989062005edd565b94939291906200600e565b906001820191821062005eaa5760019190565b9190820191821062005eaa5760019190565b156200608457565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b606481101562004c30576200610b8162005da86001620031f89460031b01549162005f41565b91906200607c565b606481101562004c3057600390811b61039981015490600061039c820190815490809561039b829501915b8386106200615c57505050505050620031f8916200610b9162005ebb565b9690919293949662004c3057620061818762005e4b62005e2562000ef09a8962004e91565b94939291906200613e565b61038f54620061d26200619e620313c0565b91620061b06127109384831062004bdf565b620061c86103925461039054111562000ee96203142e565b6103915462005ebb565b919050620061df62031484565b5060009081925b6064841062006202575b620061fd9350046200624f565b905090565b9160ff60078560031b015416156200624857836200623562006241926200622e62000ef0969762005d82565b906200606a565b949062000ee962031484565b92620061e6565b91620061f0565b9080156200626757620062629162005007565b600191565b5050600090600090565b9190820180921162001de857565b9190820391821162001de857565b906107b2906301e1853e80840483810180821162001de8576001820181811162001de857604583019082821162001de8576064620062d092049060021c6200627f565b9561017183019682881162001de857620062f1906101908099049062006271565b9084840294848604148415171562001de85762015180948583029280840487149015171562001de85762006331926200632a9162006271565b906200627f565b9160049586910815958662006550575b506040516101a081016001600160401b038111828210176200653b57604052600c9687825261018080366020850137601f91826200637f8562004c22565b5215620065315760ff601d5b16620063978462004c46565b5281620063a48462004c57565b52601e620063b28462004c68565b5282518810156200651c578160a08401528251600510156200651c57601e60c08401528251600610156200651c578160e08401528251600710156200651c57816101008401528251600810156200651c57601e6101208401528251600910156200651c57816101408401528251600a10156200651c57601e6101608401528251600b10156200651c57820152600096905b81881062006497575b50508282049460018601809611620064825760018701809711620064825750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b909692620064a6848362004c79565b5185810290808204871490151715620064ff5781106200651457620064cc848362004c79565b519085820291808304871490151715620064ff57620064f791620064f0916200627f565b9362004c12565b969062006443565b601188634e487b7160e01b6000525260246000fd5b92966200644c565b603288634e487b7160e01b6000525260246000fd5b60ff601c6200638b565b604187634e487b7160e01b6000525260246000fd5b9095506064860615908115916200656b575b50943862006341565b90508506153862006562565b90815181101562004c30570160200190565b90815181511162006640576000905b620065a783518251906200627f565b8211620066385760019260005b82518110156200662d576001600160f81b031980620065df620065d8848862006271565b8562006577565b511690620065ee838662006577565b5116036200660757620066019062004c12565b620065b4565b5092509060005b62006625576200661e9062004c12565b9062006598565b505050600190565b50929190916200660e565b505050600090565b5050600090565b61032a80549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e3d565b610395805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b610393805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b61032180549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e05565b60405190620067408262002a97565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067768262002a26565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200695c5781620067ee88620067f69362004c79565b5101620073dc565b602692838210156200294257601a918203620068b4578762006819915162004c79565b5192828401519081101562002942570362006872575093620068636200686b926200685b6200685460a0604062000ef09a0151015162004c22565b5162004c22565b51906200606a565b9590620073ea565b92620067cb565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068cd81620067ee89869a979a5162004c79565b82811015620029425760140362006906575050906200686362000ef0956200622e620068ff846200686b965162004c79565b5162007437565b6200691890620067ee85855162004c79565b90811015620029425760151462006936575b506200686b9062004c12565b906200686362006955956200622e620068ff846200686b965162004c79565b906200692a565b505050909250803410600014620069d25760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007253575b506107339182549260ff841693620069f38562002937565b60019480860362006a2d5750505062006a2391925062006a1d62006a1782620074ce565b620075a5565b6200762f565b620031f862006731565b62006a388162002937565b60028114808062007246575b1562006e6f5750505062006a5882620074e3565b1562006e305762006a6982620074e3565b1562006df45762006aa290602080930190600260ff8560018060a01b0362006a92865162004c22565b5151169460409687915162004c22565b510151015192541662006ab58162002937565b0362006db45781600052610737808552836000209261073880549485600052875260ff86600020541662006d76578351948060005261073693848952600396878960002001540362006d105783600052885286600020906000528752856000208960ff19825416179055886000905b62006b6e575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b57620308b4565b519162006b648362002a97565b6015835282015290565b845181101562006d0a5786825480600052858a5262006b938389846000200162004e91565b905490891b1c908a84888b62006baa838d62004c79565b511562006c6857505050505062006c0d62006bed85549283600052888d526200622e62006bdf87600480986000200162004e91565b9054908d1b1c91896203079f565b9092600052878c5262006c0685858d6000200162004e91565b9062004ebe565b1562006c26575062006c1f9062004c12565b8962006b24565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006ca562006cb7966200622e87999462006c06979860005284895262006c9887600580986000200162004e91565b9054911b1c918d6203079f565b959097600052528c6000200162004e91565b1562006cc85762006c1f9062004c12565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b2a565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e7f82979495969762002937565b6003821491828062007239575b1562006f0e5750505050505062006ea3816200754a565b1562006ebe5762006eb4906202df85565b620031f862006767565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f198162002937565b81806200722b575b806200721e575b156200714857505050509060ff9062006f4062030ac6565b54169062006f4e8262002937565b81036200700c575062006f6181620074ce565b1562006f7b578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200701a60039262002937565b146200705357505b604051620070308162002a97565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200705e816200754a565b156200706f5762006eb4906202df85565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b620071538162002937565b821562007209575b505080620071fb575b62007173575050505062007022565b60ff19161790556200718581620074ce565b156200719f578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b506107325442101562007164565b6200721691925062002937565b38806200715b565b5061073254421062006f28565b506107315442101562006f21565b5061073254421062006e8c565b5061073154421062006a44565b60018060a01b03908184511660005261032590816020526040600020541562007349575b62007283903462004fed565b90156200730557620072a69083865116600052826020526040600020546200606a565b929015620072c45784511660005260205260406000205538620069db565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b60009081610326928354915b828110620073a1575b50156200736f575b50905062007277565b86518516600160401b821015620029ba57620019dd82620072839560016200739a9501905562004de9565b3862007366565b86620073ad8262004de9565b919054818c51169260031b1c1614620073d157620073cb9062004c12565b62007355565b50506001386200735e565b516026811015620029425790565b15620073f257565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007451818351015162004c46565b5151841015620074c6579262006863620074b6604094620074ae85620074a686620074948b6200749b8362000ef09f9e6200749490620074bc9e51015162004c46565b5162004c79565b519451015162004c57565b519062005ebb565b9290620073ea565b6200606a565b919290506200743c565b509093505050565b602001515115620074de57600190565b600090565b602001516001815103620075075762007500620031f89162004c22565b516200750d565b50600090565b60208101516026811015620029425760200362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b602001516001815103620075075762007567620031f89162004c22565b5160208101516026811015620029425760210362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b15620075ad57565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763a81620141ae565b5162013cb157600681101562002942576003811462013c585780620076975760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200a5fb575060008061032a54905b8181106200a5b4575b5050156200a598575b60005b6020908183015191825182101562007724576200771681610329620076fc620076f662000ef095620067ee886200771e9a62004c79565b620316cf565b9160018060a01b0388511660005252604060002062022f40565b429162004ebe565b620076bf565b50505060005b602080830151805183101562007772576200774f91620067ee84620076f69362004c79565b90606482101562004c30576200776c91429061032b015562004c12565b6200772a565b505050906000905b602083015180518310156200a5925782620077959162004c79565b51602081018051602690818110156200294257156200a54f578151818110156200294257600103620079e2575050604080910190620077d960c08351015162004c22565b5192620077fb60a0620077f0818651015162004c22565b519451015162004c46565b51956200780c85518551146202cca5565b6200781b85518851146202cd0b565b60005b8551811015620079605762007834818662004c79565b516064908181101562004c3057600160ff60076200785b9360031b0154161515146202cd6d565b62007867828a62004c79565b5162007874838862004c79565b51908282101562004c30576006620078929260031b0154906200606a565b906200789f848962004c79565b51918383101562004c30576006620078bc9360031b01556202cdc5565b620078c8828a62004c79565b5190620078d6838862004c79565b518181101562004c30576001600160a01b039392620079169160039086620078ff878e62004c79565b5116600052811b016020528760002054906200606a565b62007922848a62004c79565b519283101562004c3057600362000ef0936200795a9662007944878e62004c79565b5116600052811b0160205287600020556202ce24565b6200781e565b5093926200797d919296506200797690620312cf565b92620311b3565b9451926200798b8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b6620079bf938762004c79565b51878a62030dc7565b62007997565b5094509260209250620079d9915062004c12565b9190506200777a565b815181811015620029425760020362007c78575050604080910180519283519562007a2762007a1660a08097015162004c22565b51956200749b818651015162004c46565b5193875186510362007c2557875184510362007bd157875185510362007b7a575060005b855181101562007b645762007a61818762004c79565b51906064918281101562004c305762007a8660ff6007809360031b015416156202ce7d565b62007a92828962004c79565b518381101562004c305760031b01805460ff1916600117905562007ab7818a62004c79565b5162007ac4828962004c79565b51908382101562004c3057600562007ae09260031b0162005659565b62007aec818662004c79565b5162007af9828962004c79565b518381101562004c305760031b6001015562007b16818762004c79565b5162007b23828962004c79565b518381101562004c305760031b6002015562007b40818862004c79565b519182101562004c30576000600662007b5e9360031b015562004c12565b62007a4b565b50955093905060209250620079d9915062004c12565b5162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b819593949295518181101562002942576003036200826f575050604084019062007ca760c08351015162004c22565b519362007cbe60a0620077f0818651015162004c22565b519362007cd3865185511462000ee962031533565b62007ce6865186511462000ee962031533565b60005b865181101562007d4e5762007cff818662004c79565b5190606482101562004c3057600362007d489260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b51111562000ee962031637565b62007ce9565b50909493919460005b855181101562007e815762007d6d818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b0160205262007daf60406000205462007da7848962004c79565b519062004fed565b9062007dbc848a62004c79565b51918383101562004c3057600362007deb93878f5116600052811b0160205260406000205562000ee962031637565b62007df7828862004c79565b518181101562004c30576003908462007e11858c62004c79565b5116600052811b0160205262007e326040600020546200685b848962004c79565b62007e3e848a62004c79565b519283101562004c3057600362000ef09362007e7b9662007e60878e62004c79565b5116600052811b0160205260406000205562000ee96203169c565b62007d57565b5091509162007e9862007e9f9196959496620312cf565b95620311b3565b926040519462007eaf8662002a97565b6001865260203681880137516001600160a01b031662007ecf8662004c22565b526000905b86518210156200825a5762007eea828862004c79565b516108c05262007efb855162004d95565b9660009462007f0b885162004d95565b6108a0528594865b885181101562007fe1578a8962007f436001600160a01b0362007f37858462004c79565b51166108c051620310b9565b158062007f9c575b62007f64575b505062007f5e9062004c12565b62007f13565b9862007f919162001a9c82859c62007f8862007f5e9760018060a01b039262004c79565b51169262004c79565b9790508a8962007f51565b50505060646108c051101562004c30576001600160a01b0362007fc0828b62004c79565b511660005260036108c051811b016020528a89604060002054151562007f4b565b509098949897969291939760005b8851811015620080825760646108c051101562004c30576001600160a01b036200801a828b62004c79565b511660005260036108c051811b016020526040600020541562008049575b620080439062004c12565b62007fef565b99620080439062008079906001600160a01b03620080688e8d62004c79565b511662001a9c826108a05162004c79565b9a905062008038565b5098509694939291956108c0516064811015806107205262004c305760031b6004015496620080bc620080b6878a62006271565b62004d95565b996000998a6104c0525b6107205162004c30576104c0518a8110156200817b57620080fb620081189160006107205260046108c05160031b0162004e91565b90546108a05160039290921b1c6001600160a01b03169062031166565b1562008137575b6200812d6104c05162004c12565b6104c052620080c6565b99808c62001a9c62008174936200815b6104c05160046108c05160031b0162004e91565b905460039190911b1c6001600160a01b03169262004c79565b996200811f565b509a939794969299919850946000915b8383106200822057505050506107205162004c30578051906001600160401b038211620029ba57602090620081ca8360046108c05160031b0162004fcd565b0160046108c05160031b01600052602060002060005b838110620082025750505050620081f79062004c12565b909295919562007ed4565b82516001600160a01b031681830155602090920191600101620081e0565b62008253906200824c906001600160a01b036200823e868662004c79565b511662001a9c828962004c79565b9262004c12565b916200818b565b91945050620079d99194506020925062004c12565b81959394929551818110156200294257600403620084f5575050604080920160c094620082b0620082a4878451015162004c22565b51968351015162004c46565b5194620082c760a0620077f0818651015162004c22565b5193620082dc885188511462000ee962031533565b620082ef885185511462000ee962031533565b62008302885186511462000ee962031533565b60005b885181101562008369576200831b818662004c79565b5190606482101562004c305762008363916003906001600160a01b0362008343848e62004c79565b5116600052811b0160205262000ef0886000205462007d3b838a62004c79565b62008305565b50909691959294939660005b8351811015620084a9576200838b818862004c79565b51906064918281101562004c30576001600160a01b039060039082620083b2858a62004c79565b5116600052811b01602052620083d38b62007da7848b600020549262004c79565b90620083e0848c62004c79565b51918583101562004c30576003620084199385620083ff888d62004c79565b5116600052811b016020528a6000205562000ee962031637565b62008425828a62004c79565b518381101562004c3057600390826200843f858b62004c79565b5116600052811b01602052620084608b6200685b848b600020549262004c79565b9190506200846f838b62004c79565b519384101562004c3057620084a3936003916200848d858b62004c79565b5116600052811b01602052876000205562004c12565b62008375565b5094620084cc92975062007e9891939450620084c590620312cf565b93620311b3565b9260005b8351811015620079c5578062000ef0620079b6620084ef938762004c79565b620084d0565b8195949395519080821015620029425760059182036200870957505050604091828501906200853960a06200852e818551015162004c22565b519351015162004c46565b51928251845103620086b85760005b83518110156200859f576200855e818562004c79565b5190606482101562004c30576003620085999260018060a01b038b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008548565b509092919260005b84518110156200863957620085bd818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b01602052620085f6886000205462007da7848962004c79565b62008602848a62004c79565b519283101562004c3057600362000ef09362008633968e5116600052811b01602052896000205562000ee962031637565b620085a7565b509593926200864a919250620312cf565b91805193620086598562002a97565b6001855260203681870137516001600160a01b0316620086798562004c22565b525194620086878662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620086b2938762004c79565b62008693565b845162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029425760060362008971575050509060408092016200873960c08251015162004c22565b51946200875060a06200852e818551015162004c22565b5192865183510362008920578651845103620088d45760005b8751811015620087cd576200877f818562004c79565b5190606482101562004c3057620087c7916003906001600160a01b03620087a7848d62004c79565b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008769565b509092919260005b87518110156200888057620087eb818662004c79565b5160648082101562004c30576001600160a01b0392916003908462008811858e62004c79565b5116600052811b0160205262008831886000205462007da7848962004c79565b6200883d848a62004c79565b519283101562004c3057600362000ef0936200887a96620088608f889062004c79565b5116600052811b01602052896000205562000ee962031637565b620087d5565b509592620088959192506200797690620312cf565b925194620088a38662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620088ce938762004c79565b620088af565b845162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029425760070362008ac0575050506040809101936200899d60c08651015162004c22565b5192620089af60a08751015162004c22565b5195515191620089c7855188511462000ee962031533565b60005b855181101562007b645762008aba9062000ef06001600160a01b038260028862008aa28e62008a978e62008a8d8f8962008a058a8562004c79565b511660005262008a418962008a39816103209a8b60205262008a3360ff8760002054161562000ee962031604565b62004c79565b519662004c79565b51968a62008a7783519b8c9662008a58886200299e565b600188526060602089019860008a528781019b8c52019b8c5262004c79565b511660005260205260002097511515886200572c565b511515866200573d565b516001850162005659565b5191015562008ab2838a62004c79565b511662006707565b620089ca565b8251959695939492818510156200294257600894850362008bb75750505062008af260c0604080950151015162004c22565b519360005b855181101562008ba25762008b9c906001600160a01b038062008b1b838a62004c79565b5116600052610320908160205262008b7160ff62008b486001828c600020541615151462000ee962031563565b8262008b55868d62004c79565b5116600052836020528960002054891c161562000ee9620315cb565b62008b7d838a62004c79565b51166000526020528560002061010061ff001982541617905562004c12565b62008af7565b509490935060209250620079d9915062004c12565b805182811015620029425760090362008c8b5750505062008be160c0604080950151015162004c22565b519360005b855181101562008ba25762008c8590866001600160a01b038062008c0b848462004c79565b511660005262008c5e6001898362008c4087610320978860205262008a338660ff8097600020541615151462000ee962031563565b5116600052846020528a600020548a1c1615151462000ee962031596565b62008c6a838a62004c79565b51166000526020528560002061ff0019815416905562004c12565b62008be6565b809796949293959751828110156200294257600a0362008d69575050505060408094019162008cd060a062008cc560c08651015162004c22565b519451015162004c22565b519162008ce5845184511462000ee962031533565b60005b8451811015620079c55762008d63906001600160a01b038062008d0c838962004c79565b51166000526103208060205262008d33600160ff8c600020541615151462000ee962031563565b62008d3f838862004c79565b519162008d4d848a62004c79565b5116600052602052600289600020015562004c12565b62008ce8565b8097959751828110156200294257600b0362008e38575050505060408092019362008d9960c08651015162004c22565b519451519162008db1865184511462000ee962031533565b60005b8651811015620079c55762008e329062000ef06001600160a01b038062008ddc848c62004c79565b51166000526103208060205262008e03600160ff8b600020541615151462000ee962031563565b62008e0f848962004c79565b519162008e1d858d62004c79565b51166000526020526001886000200162005659565b62008db4565b8097949593969751828110156200294257600c0362008f8f5750505060400160609182825101519362008e6b856202c2eb565b60005b855181101562008f795760e062008e8a82878751015162004c79565b5101511562008f115762008eae62008ea782878751015162004c79565b5162005c60565b610322805460001992919083810190811162001de85762008ed08a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005c20565b5001805460ff1916905562004c12565b62008e6e565b62008f2c62008f2582878751015162004c79565b5162005cac565b610322805460001992919083810190811162001de85762008f4e8a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005be0565b50959150935060209250620079d9915062004c12565b809796959392949751828110156200294257600d03620090e457505060400194602062008fc160a08851015162004c22565b51965101519162008fd687518451146202c9e4565b60005b875181101562007b64578080878a62008ff762009086958962004c79565b51156200908c57620090576200903e8483620090296200901d6200906298889762004c79565b5161032254116202ca6d565b62008a338d620090456200903e858562004c79565b5162005c20565b509060ff9889920154901c166202cac5565b50015416156202cb26565b86620090736200903e838c62004c79565b5001805460ff1916600117905562004c12565b62008fd9565b62009057620090cc8483620090b7620090ab620090d398889762004c79565b5161032354116202ca6d565b62008a338d62009045620090cc858562004c79565b5162005be0565b8662009073620090cc838c62004c79565b809794939751828110156200294257600e03620091ca5750506040019160206200911360a08551015162004c22565b5193510151956200912884518851146202c9e4565b60005b845181101562007b6457806200914662009152928a62004c79565b51620091585762004c12565b6200912b565b6200917462009168828862004c79565b5161032254116202cb87565b620091b9876200919e6200918d6200903e858b62004c79565b5060ff9283910154891c166202cbe0565b88620091af6200903e858b62004c79565b500154166202cc42565b8662008efb6200903e838962004c79565b80919293509694959651828110156200294257600f03620092ee575050604001606091828251015193620091fe856202c2eb565b60005b855181101562008f795760e06200921d82878751015162004c79565b510151156200928d576200923a62008ea782878751015162004c79565b610322805460001992919083810190811162001de8576200925c8a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005c20565b62009201565b620092a162008f2582878751015162004c79565b610322805460001992919083810190811162001de857620092c38a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005be0565b8091929394969550518281101562002942576010036200939357505060400151906200932360a0608084015193015162004c22565b519362009338835186511462000ee962031533565b60005b835181101562009380578062000ef06200935a6200937a938762004c79565b51620093668162002edc565b62009372838a62004c79565b51906202c1af565b6200933b565b5093509160209150620079d99062004c12565b80959295518281101562002942576011036200961c57505090604080940191620093c860a062008cc560c08651015162004c22565b5191620093d984518451146202c163565b60005b845181101562009451576200944b9062000ef06001600160a01b038062009404848a62004c79565b511660005261032580602052620094258b600020546200685b868b62004c79565b91909262009434868c62004c79565b51166000526020528a6000205562000ee9620314e9565b620093dc565b5093945091620094629150620311b3565b90610326928354946200947b620080b685518862006271565b91600093845b888110620095dc575060005b865181101562009534576000805b8a8110620094e5575b5015620094bd575b620094b79062004c12565b6200948d565b94620094b790620094dc906001600160a01b036200823e898b62004c79565b959050620094ac565b620094f08162004de9565b90546001600160a01b0360039290921b1c81169062009510858c62004c79565b5116146200952957620095239062004c12565b6200949b565b5050600138620094a4565b50965094909350620095468362004d95565b805191906001600160401b038311620029ba57602090620095678462004f2a565b0190600052602060002060005b838110620095be575050505060005b8281106200959b57505050620079d960209162004c12565b620095b89062000ef06001600160a01b03620019d0838662004c79565b62009583565b82516001600160a01b03168183015560209092019160010162009574565b946200960f6200961691620095f18862004de9565b905460039190911b1c6001600160a01b031662001a9c828962004c79565b9562004c12565b62009481565b80518281101562002942576012036200988b5750506040809401916200964d60a062008cc560c08651015162004c22565b51916200965e84518451146202c163565b60005b8451811015620096b057620096aa9062000ef06001600160a01b038062009689848a62004c79565b511660005261032580602052620094258b6000205462007da7868b62004c79565b62009661565b509491509291620096c190620311b3565b906103268054620096d28162004d95565b9260009485925b808410620097865750505050620096f08362004d95565b805191906001600160401b038311620029ba57602090620097118462004f2a565b0190600052602060002060005b83811062009768575050505060005b8281106200974557505050620079d960209162004c12565b620097629062000ef06001600160a01b03620019d0838662004c79565b6200972d565b82516001600160a01b0316818301556020909201916001016200971e565b9297600097929597949194998a5b86518110156200987957620097a98b62004de9565b90546001600160a01b0360039290921b1c811690620097c9838a62004c79565b511614620097e257620097dc9062004c12565b62009794565b509950976001979592979491945b8062009849575b156200980f57620098089062004c12565b92620096d9565b95620098426200980891620098248962004de9565b905460039190911b1c6001600160a01b031662001a9c828a62004c79565b9662004c12565b50620098558162004de9565b60018060a01b0391549060031b1c16600052610325602052826000205415620097f7565b509998909897959297949194620097f0565b8095929551828110156200294257601303620098ec57505060408091015101519260005b8451811015620098db578062000ef0620098ce620098d5938862004c79565b516202df19565b620098af565b50925090620079d960209162004c12565b805191808310156200294257601492830362009a8e575050506040809101906200991b60c08351015162004c22565b51926200993260a0620077f0818651015162004c22565b51956200994385518551146202cca5565b6200995285518851146202cd0b565b60005b855181101562009a39576200996b818962004c79565b5162009978828762004c79565b516064918282101562004c30576006620099989260031b0154906200606a565b90620099a5848962004c79565b51918383101562004c30576006620099c29360031b01556202cdc5565b620099ce828a62004c79565b5190620099dc838862004c79565b518181101562004c30576001600160a01b03939262009a059160039086620078ff878e62004c79565b62009a11848a62004c79565b519283101562004c3057600362000ef09362009a339662007944878e62004c79565b62009955565b50939262009a4f919296506200797690620312cf565b94519262009a5d8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b662009a88938762004c79565b62009a69565b8151818110156200294257601590810362009aba57505050506020919262000ef0620079d9926202d41e565b825191808310156200294257601692830362009b2257505050505060c0604062009ae8920151015162004c22565b519260005b8451811015620098db5762009b1c9062000ef06001600160a01b0362009b14838962004c79565b5116620066bc565b62009aed565b835181811015620029425760170362009b7b5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029425760180362009bee57505050505060c0604062009ba6920151015162004c22565b51610396805460ff191660011790559260005b8451811015620098db5762009be89062000ef06001600160a01b0362009be0838962004c79565b511662006671565b62009bb9565b839796975181811015620029425760190362009d6257505050505060008080604080940160a08082510151805162009d29575b5050519060e08201519162009c456200685460c060018060a01b0393015162004c22565b511690602083519301915af1903d1562009d20573d9162009c668362002e73565b9262009c758351948562002ab3565b83523d6000602085013e5b1562009c95575050620079d960209162004c12565b62004c0e925062009d0181519260008051602062031c88833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b8385015283815162009cf0816059946020868601910162002d20565b810103603981018552018362002ab3565b5162461bcd60e51b815260206004820152918291602483019062002d45565b60609162009c80565b62009d349062004c22565b515162009d43575b8062009c21565b819250620068549062009d599251015162004c22565b51903862009d3c565b8351818110156200294257601a0362009e62575050505062009d8d60a0604080940151015162004c22565b519062009d9e60038351146202c163565b62009da98262004c22565b519262009dc262009dba8462004c46565b519362004c57565b519262009e2857505091620079d99160016020941460001462009e215762009e019062009df46103919182546200606a565b90915562000ee962031484565b62000ef061039262009e14815462006057565b90915562000ee9620314be565b5062004c12565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b90919280945051818110156200294257601b036200a2f5575050505050919062009ea261038f54620061b062009e97620313c0565b612710831062004bdf565b505062009eae62031484565b506000805b606481106200a284575b505062009ec96200618c565b62009ed76107345462004d95565b9060009485935b60648510156200a2775760ff60078660031b015416156200a0365760009560028660031b0154156200a02757869796975b62004c305760048660031b01548810156200a00e5762009f37886004600389901b0162004e91565b600160a01b6001900391549060031b1c1696876000528660031b6003016020526040978589600020549062009f6c9162005ebb565b999062009f7862031484565b62009f839162004bdf565b6000998960031b6002015462009f999162005ebb565b919062009fa562031484565b62009fb09162004bdf565b828b526103276020528a209081549062009fca916200606a565b90915562009fd762031484565b62009fe29162004bdf565b62009fee828862004c79565b5262009ffa9062004c12565b976200a0069062004c12565b979662009f0f565b91946200a01e9196975062004c12565b93909462009ede565b91946200a01e91965062004c12565b949592915092505b6200a0498262004d95565b91600091825b8281106200a1e157505050610328908154926200a071620080b6858462006271565b9360009081905b8082106200a1a657505060005b8381106200a1025750508351939150506001600160401b038311620029ba576020906200a0b28462004eef565b0190600052602060002060005b8381106200a0e45750505050620079d960209160006103915560006103925562004c12565b82516001600160a01b0316818301556020909201916001016200a0bf565b6000805b8381106200a15e575b50156200a128575b6200a1229062004c12565b6200a085565b906200a122906200a155906001600160a01b036200a147858762004c79565b511662001a9c828a62004c79565b9190506200a117565b6001600160a01b03806200a173858862004c79565b5116906200a182838b62004c79565b5116146200a19b576200a1959062004c12565b6200a106565b50506001386200a10f565b90916200824c6200a1da916200a1bc8562004dcd565b905460039190911b1c6001600160a01b031662001a9c828b62004c79565b906200a078565b6000805b8581106200a22f575b50156200a207575b6200a2019062004c12565b6200a04f565b926200a201906200a226906001600160a01b036200823e878662004c79565b9390506200a1f6565b6001600160a01b03806200a244858762004c79565b5116906200a253838a62004c79565b5116146200a26c576200a2669062004c12565b6200a1e5565b50506001386200a1ee565b949592915092506200a03e565b806003959394951b9060ff600783015416156200a2ea576200a2d4620074b662000ef0946200a2c86200a2e09560026200a2be8762005d82565b9101549062005ebb565b929062000ee962031484565b939062000ee962031484565b9392919362009eb3565b509392919362009ebd565b8351818110156200294257601c036200a34e5760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b8351818110156200294257601d036200a374575b5050505050620079d960209162004c12565b8351818110156200294257601e146200a362578351818110156200294257601f036200a3ca57505050506020916200a3c06200a3b96040620079d99401515162004c22565b516202df4f565b913880806200a362565b83518181101562002942576020036200a3f0575b5050505050620079d96020916200a3c0565b835181811015620029425760218091036200a40d575b506200a3de565b8451828110156200a53a576022036200a44d57505050505050620079d960209161039660ff1981541690556200a44262004fba565b91388080806200a406565b8451828110156200a53a576023036200a474575b505050505050620079d96020916200a442565b845194828610156200a53a5760248096036200a492575b506200a461565b8051838110156200a526576025146200a48b5751918210156200a5125750036200a4d65750506020916200a4ca620079d9926202d41e565b9138808080806200a48b565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200a5ae906001600160a01b031662006647565b620076bc565b6200a5bf8162004e3d565b9054855160039290921b1c6001600160a01b039081169116146200a5ee576200a5e89062004c12565b620076aa565b50505060013880620076b3565b600281036200a61f5760405162461bcd60e51b81528062004c0e60048201620075e4565b6001146200a62a5750565b6200a6386103235462005242565b805190600160401b8211620029ba576106bb54826106bb5580831062013bdd575b506020016106bb60005260206000206000915b83831062013bbc575050505060005b610323548110156200a6b4578062000ef06200a69b6200a6ae9362005be0565b506200a6a78362005c00565b90620140e3565b6200a67b565b506200a6c36103225462005242565b805190600160401b8211620029ba576106ba54826106ba5580831062013b20575b506020016106ba60005260206000206000915b83831062013aff575050505060005b610322548110156200a738578062000ef06200a7266200a7329362005c20565b506200a6a78362005c40565b6200a706565b5060005b6064811015806200a8f557600160ff61039f8460031b0154161515146200a770575b506200a76a9062004c12565b6200a73c565b916000835b62004c305761039c8360031b01548110156200a7df576200a7d6929350600092816200a7aa859361039c8860031b0162004e91565b9054600391821b1c6001600160a01b031660009081529087901b61039b01602052604081205562004c12565b9093926200a775565b5091604051906200a7f08262002a5e565b6000825262004c30578051906001600160401b038211620029ba576020906200a8218361039c8660031b0162004fcd565b0161039c8360031b01600052602060002060005b8381106200a8d75750505050600381901b61039f8101805460ff1916905560006103988201819055610399820181905561039a82015561039d01546200a76a91906200a8819062002b98565b601f908181116200a8ac575b5050600061039d8260031b0155600061039e8260031b0155906200a75e565b6200a8cf9161039d8460031b016000526020600020910160051c81019062004ed6565b38806200a88d565b82516001600160a01b0316818301556020909201916001016200a835565b505060005b6064811062013a71575060005b610321548110156200a96257806200a9236200a95c9262004e05565b60018060a01b0391549060031b1c166000526106b860205260006002604082208281556200a95460018201620052d3565b015562004c12565b6200a907565b506200a9716103215462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106b954836106b95580841062013a4f575b50016106b9600052602060002060005b83811062013a31575050505060005b610321548110156200aa35576200a9da8162004e05565b90546106b95460039290921b1c6001600160a01b0316919081101562004c30576106b960005260008051602062031ca8833981519152810180546001600160a01b0319169092179091556200aa2f9062004c12565b6200a9c3565b509060005b610321548110156200aaf457806200aa566200aaa99262004e05565b9060018060a01b03918291549060031b1c16600052610320602052604080600020916200aa838462004e05565b90549060031b1c166000526106b8602052600020908082036200aaaf575b505062004c12565b6200aa3a565b600280916200aad560ff6200aac881845416876200572c565b825460081c16856200573d565b6200aae7600182016001860162013d7f565b015491015538806200aaa1565b5060005b6106c2548110156200ab4657806200ab146200ab409262004e21565b60018060a01b0391549060031b1c166000526106c160205262000ef06040600020606481019062004ed6565b6200aaf8565b506200ab5561032a5462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106c254836106c25580841062013a0f575b50016106c2600052602060002060005b838110620139f1575050505060005b61032a548110156200abea578062000ef06200abc76200abe49362004e3d565b905460039190911b1c6001600160a01b0316620019dd8362004e21565b6200aba7565b5060005b61032a548110156200ac7557806200ac0a6200ac5c9262004e3d565b9060018060a01b03918291549060031b1c16600052610329602052604080600020916200ac378462004e3d565b90549060031b1c166000526106c1602052600020908082036200ac6257505062004c12565b6200abee565b6200ac6d9162014177565b38806200aaa1565b5061032b80546000905b60648210620139d857505061038f546107275550610390546107285561039154610729556103925461072a55610393546001600160401b038111620029ba57600160401b8111620029ba5761072b548161072b55808210620139aa575b5061072b60009081527f5633a4c6d9b97531e399e3f8ca4246ad061775375fff6b4bcce16d5826063f97805460008051602062031b6883398151915291905b8484106201398857505050505061039454600160401b8111620029ba5761072c548161072c5580821062013946575b5061072c600090815260008051602062031c088339815191527faa8d8c5069de1a96df104a74e1e1a7598fabc0d586553b00a0e002f860df95975b83831062013928575050610395549150506001600160401b038111620029ba57600160401b8111620029ba5761072d548161072d55808210620138fa575b5061072d60009081527f9b9d7759e89c320201cfa750871914a6fc9f76735934f3be5ccb8595391f512c805460008051602062031ac883398151915291905b848410620138d857505050505060ff6103965416151560ff801961072e541691161761072e5560005b6106be548110156200ae7557806200ae476200ae6f9262004e59565b905460039190911b1c6001600160a01b031660009081526106bd602052604081205562004c12565b6200ae2b565b506200ae846103265462004d95565b8051906001600160401b038211620029ba576020906200aea48362004f74565b016106be600052602060002060005b838110620138ba575050505060005b610326548110156200af05578062000ef06200aee26200aeff9362004de9565b905460039190911b1c6001600160a01b0316620019dd8362004e59565b6200aec2565b5060005b610326548110156200af7457806200af256200af6e9262004de9565b9060018060a01b03918291549060031b1c1660005261032560205260408060002054916200af538462004de9565b90549060031b1c166000526106bd6020526000205562004c12565b6200af09565b5060005b6106c0548110156200afc257806200af946200afbc9262004e75565b905460039190911b1c6001600160a01b031660009081526106bf602052604081205562004c12565b6200af78565b506200afd16103285462004d95565b8051906001600160401b038211620029ba576020906200aff18362004f97565b016106c0600052602060002060005b8381106201389c575050505060005b610328548110156200b052578062000ef06200b02f6200b04c9362004dcd565b905460039190911b1c6001600160a01b0316620019dd8362004e75565b6200b00f565b5060005b610328548110156200b0c157806200b0726200b0bb9262004dcd565b9060018060a01b03918291549060031b1c1660005261032760205260408060002054916200b0a08462004dcd565b90549060031b1c166000526106bf6020526000205562004c12565b6200b056565b506106c2546000805b82811062013857575b501562013821575b5060005b60208301519081518110156200b1375762000ef0620077166200b111620076f66020620067ee866200b1319862004c79565b86516001600160a01b031660009081526106c16020526040902062022f40565b6200b0df565b505060005b602083015180518210156200b18457620076f66020620067ee846200b1619462004c79565b90606482101562004c30576200b17e9142906106c3015562004c12565b6200b13c565b5050906000905b602081015180518310156200fe7557826200b1a69162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036200b77057604001906200b1e760c08351015162004c22565b51936200b1fe60a0620077f0818651015162004c22565b51916200b20f86518551146202cca5565b6200b21e86518451146202cd0b565b60005b86518110156200b377576200b237818662004c79565b51606481101562004c3057600160ff61039f6200b25d9360031b0154161515146202cd6d565b6200b269818562004c79565b516200b276828762004c79565b5190606482101562004c305761039e6200b2969260031b0154906200606a565b906200b2a3838862004c79565b5191606483101562004c305761039e6200b2c29360031b01556202cdc5565b6200b2ce818562004c79565b516200b2db828762004c79565b5190606482101562004c30576200b31d9161039b906001600160a01b036200b304868d62004c79565b511660005260031b01602052604060002054906200606a565b91906200b32b828862004c79565b5190606482101562004c30576200b3719362000ef09261039b906001600160a01b036200b359878f62004c79565b511660005260031b016020526040600020556202ce24565b6200b221565b50926200b38e919250620084c590959495620312cf565b916040516200b39d8162002a5e565b6000815260003681376000945b80518610156200b756576200b3c0868262004c79565b516107a0526200b3d1855162004d95565b966000946200b3e1845162004d95565b6103805260009460005b88518110156200b4b2578a896200b41b6001600160a01b036200b40f858462004c79565b51166107a0516203110f565b15806200b46b575b6200b43c575b50506200b4369062004c12565b6200b3eb565b986200b4609162001a9c82859c62007f886200b4369760018060a01b039262004c79565b9790508a896200b429565b50505060646107a051101562004c30576001600160a01b036200b48f828b62004c79565b511660005261039b6107a05160031b016020528a8960406000205415156200b423565b50909895979498969291939660005b88518110156200b54f5760646107a051101562004c30576001600160a01b03806200b4ed838c62004c79565b511660005261039b6107a05160031b01602052604060002054156200b51f575b506200b5199062004c12565b6200b4c1565b819b6200b547916200b5366200b519948d62004c79565b511662001a9c826103805162004c79565b9a906200b50d565b509850969592919093966107a0516064811015806104805262004c305760031b61039c0154986200b585620080b6898c62006271565b6108005260006102005260006107c0525b6104805162004c30576107c0518a8110156200b65f576200b5cc6200b5ec9160006104805261039c6107a05160031b0162004e91565b9054610380516001600160a01b03939260031b9190911c83169062031166565b156200b60c575b506200b6026107c05162004c12565b6107c0526200b596565b6000610480526200b62b6107c05161039c6107a05160031b0162004e91565b90549060031b1c166200b645610200516108005162004c79565b526200b6546102005162004c12565b61020052386200b5f3565b50979294959093985095909560005b8281106200b70a575050506104805162004c305761080051516001600160401b038111620029ba576200b6ac8161039c6107a05160031b0162004fcd565b6020610800510161039c6107a05160031b01600052602060002060005b8381106200b6ec57505050506200b6e09062004c12565b9492959091956200b3aa565b82516001600160a01b0316818301556020909201916001016200b6c9565b6200b750906001600160a01b036200b723828562004c79565b51166200b737610200516108005162004c79565b526200b7466102005162004c12565b6102005262004c12565b6200b66e565b5050939092506200b768915062004c12565b90916200b18b565b906020829493940151602681101562002942576002036200b921576040809201908151938451916200b7c76200b7ab60a08098015162004c22565b51966200b7bc818751015162004c46565b519551015162004c57565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b86518110156200b90e576200b801818862004c79565b51606481101562004c305760ff61039f6200b8239260031b015416156202ce7d565b6200b82f818862004c79565b51606481101562004c305760031b61039f01805460ff191660011790556200b858818562004c79565b516200b865828962004c79565b5190606482101562004c305761039d6200b8839260031b0162005659565b6200b88f818662004c79565b516200b89c828962004c79565b51606481101562004c305760031b61039901556200b8bb818762004c79565b516200b8c8828962004c79565b51606481101562004c305760031b61039a01556200b8e7818862004c79565b5190606482101562004c3057600061039e6200b9089360031b015562004c12565b6200b7eb565b509592509350506200b768915062004c12565b9092916020840151602681101562002942576003036200bf3f5760408401906200b95060c08351015162004c22565b51906200b96760a0620077f0818651015162004c22565b51936200b97c835185511462000ee962031533565b6200b98f835186511462000ee962031533565b60005b83518110156200b9ec576200b9a8818662004c79565b5190606482101562004c305761039b6200b9e69260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200b992565b509095919560005b87518110156200bb36576200ba0a818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200ba4360406000205462007da7838962004c79565b906200ba50838862004c79565b5191606483101562004c305761039b6200ba889360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200ba94818662004c79565b51606481101562004c305761039b906001600160a01b036200bab7848c62004c79565b511660005260031b016020526200bad96040600020546200685b838962004c79565b91906200bae7828862004c79565b5190606482101562004c30576200bb309361039b62000ef0938d6200bb148760018060a01b039262004c79565b511660005260031b0160205260406000205562000ee96203169c565b6200b9f4565b50926200bb55919294506200bb4e90969596620312cf565b94620311b3565b92604051906200bb658262002a97565b6001825260203681840137516001600160a01b03166200bb858262004c22565b526000945b80518610156200b756576200bba0868262004c79565b51610580526200bbb1855162004d95565b966000946200bbc1845162004d95565b6106a05260009460005b88518110156200bc92578a896200bbfb6001600160a01b036200bbef858462004c79565b5116610580516203110f565b15806200bc4b575b6200bc1c575b50506200bc169062004c12565b6200bbcb565b986200bc409162001a9c82859c62007f886200bc169760018060a01b039262004c79565b9790508a896200bc09565b505050606461058051101562004c30576001600160a01b036200bc6f828b62004c79565b511660005261039b6105805160031b016020528a8960406000205415156200bc03565b50909895979498969291939660005b88518110156200bd3657606461058051101562004c30576001600160a01b036200bccc828b62004c79565b511660005261039b6105805160031b01602052604060002054156200bcfd575b6200bcf79062004c12565b6200bca1565b996200bcf7906200bd2d906001600160a01b036200bd1c8e8d62004c79565b511662001a9c826106a05162004c79565b9a90506200bcec565b50985096959291909396610580516064811015806105005262004c305760031b61039c0154986200bd6c620080b6898c62006271565b6105205260006105c05260006106e0525b6105005162004c30576106e0518a8110156200be48576200bdb36200bdd09160006105005261039c6105805160031b0162004e91565b90546106a05160039290921b1c6001600160a01b03169062031166565b156200bdef575b6200bde56106e05162004c12565b6106e0526200bd7d565b6000610500526200be0e6106e05161039c6105805160031b0162004e91565b60018060a01b0391549060031b1c166200be2f6105c0516105205162004c79565b526200be3e6105c05162004c12565b6105c0526200bdd7565b50979294959093985095909560005b8281106200bef3575050506105005162004c305761052051516001600160401b038111620029ba576200be958161039c6105805160031b0162004fcd565b6020610520510161039c6105805160031b01600052602060002060005b8381106200bed557505050506200bec99062004c12565b9492959091956200bb8a565b82516001600160a01b0316818301556020909201916001016200beb2565b6200bf39906001600160a01b036200bf0c828562004c79565b51166200bf206105c0516105205162004c79565b526200bf2f6105c05162004c12565b6105c05262004c12565b6200be57565b90926020810151602681101562002942576004036200c5645760400160c0936200bf7d6200bf71868451015162004c22565b51958351015162004c46565b51906200bf9460a0620077f0818651015162004c22565b51936200bfa9875184511462000ee962031533565b6200bfbc875185511462000ee962031533565b6200bfcf875186511462000ee962031533565b60005b87518110156200c039576200bfe8818662004c79565b5190606482101562004c30576200c0339161039b906001600160a01b036200c011848d62004c79565b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200bfd2565b509095919593929360005b83518110156200c198576200c05a818762004c79565b51606481101562004c305761039b906001600160a01b036200c07d848862004c79565b511660005260031b016020526200c09f60406000205462007da7838862004c79565b906200c0ac838962004c79565b5191606483101562004c30576200c0f19261039b906001600160a01b036200c0d5878b62004c79565b511660005260031b0160205260406000205562000ee962031637565b6200c0fd818762004c79565b51606481101562004c305761039b906001600160a01b036200c120848c62004c79565b511660005260031b016020526200c1426040600020546200685b838862004c79565b9190506200c151818862004c79565b5191606483101562004c30576200c1929261039b906001600160a01b036200c17a858e62004c79565b511660005260031b0160205260406000205562004c12565b6200c044565b5091936200c1b491935062007e98620084c591979697620312cf565b6000945b80518610156200b756576200c1ce868262004c79565b51610860526200c1df855162004d95565b966000946200c1ef845162004d95565b6107605260009460005b88518110156200c2c0578a896200c2296001600160a01b036200c21d858462004c79565b5116610860516203110f565b15806200c279575b6200c24a575b50506200c2449062004c12565b6200c1f9565b986200c26e9162001a9c82859c62007f886200c2449760018060a01b039262004c79565b9790508a896200c237565b505050606461086051101562004c30576001600160a01b036200c29d828b62004c79565b511660005261039b6108605160031b016020528a8960406000205415156200c231565b50909895979498969291939660005b88518110156200c35d57606461086051101562004c30576001600160a01b03806200c2fb838c62004c79565b511660005261039b6108605160031b01602052604060002054156200c32d575b506200c3279062004c12565b6200c2cf565b819b6200c355916200c3446200c327948d62004c79565b511662001a9c826107605162004c79565b9a906200c31b565b50985096959291909396610860516064811015806108e05262004c305760031b61039c0154986200c393620080b6898c62006271565b6103005260006103e0526000610840525b6108e05162004c3057610840518a8110156200c46d576200c3da6200c3fa9160006108e05261039c6108605160031b0162004e91565b9054610760516001600160a01b03939260031b9190911c83169062031166565b156200c41a575b506200c4106108405162004c12565b610840526200c3a4565b60006108e0526200c4396108405161039c6108605160031b0162004e91565b90549060031b1c166200c4536103e0516103005162004c79565b526200c4626103e05162004c12565b6103e052386200c401565b50979294959093985095909560005b8281106200c518575050506108e05162004c305761030051516001600160401b038111620029ba576200c4ba8161039c6108605160031b0162004fcd565b6020610300510161039c6108605160031b01600052602060002060005b8381106200c4fa57505050506200c4ee9062004c12565b9492959091956200c1b8565b82516001600160a01b0316818301556020909201916001016200c4d7565b6200c55e906001600160a01b036200c531828562004c79565b51166200c5456103e0516103005162004c79565b526200c5546103e05162004c12565b6103e05262004c12565b6200c47c565b92906020840151602681101562002942576005036200cb0a5760408401906200c59760a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156200c600576200c5bc818562004c79565b5190606482101562004c305761039b6200c5fa9260018060a01b038a511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200c5a6565b509060005b83518110156200c6a5576200c61b818562004c79565b51606481101562004c305761039b9060018060a01b0389511660005260031b016020526200c65460406000205462007da7838862004c79565b91906200c662828762004c79565b5190606482101562004c30576200c69f9361039b62000ef09360018060a01b038d511660005260031b0160205260406000205562000ee962031637565b6200c605565b50916200c6b69194959350620312cf565b92604051926200c6c68462002a97565b6001845260203681860137516001600160a01b03166200c6e68462004c22565b52604051926200c6f68462002a5e565b6000845260003681376000945b80518610156200b756576200c719868262004c79565b51610640526200c72a855162004d95565b966000946200c73a845162004d95565b6104a05260009460005b88518110156200c80b578a896200c7746001600160a01b036200c768858462004c79565b5116610640516203110f565b15806200c7c4575b6200c795575b50506200c78f9062004c12565b6200c744565b986200c7b99162001a9c82859c62007f886200c78f9760018060a01b039262004c79565b9790508a896200c782565b505050606461064051101562004c30576001600160a01b036200c7e8828b62004c79565b511660005261039b6106405160031b016020528a8960406000205415156200c77c565b50909895979498969291939660005b88518110156200c8af57606461064051101562004c30576001600160a01b036200c845828b62004c79565b511660005261039b6106405160031b01602052604060002054156200c876575b6200c8709062004c12565b6200c81a565b996200c870906200c8a6906001600160a01b036200c8958e8d62004c79565b511662001a9c826104a05162004c79565b9a90506200c865565b50985096959291909396610640516064811015806104405262004c305760031b61039c0154986200c8e5620080b6898c62006271565b610540526000610360526000610460525b6104405162004c3057610460518a8110156200c9c1576200c92c6200c9499160006104405261039c6106405160031b0162004e91565b90546104a05160039290921b1c6001600160a01b03169062031166565b156200c968575b6200c95e6104605162004c12565b610460526200c8f6565b6000610440526200c9876104605161039c6106405160031b0162004e91565b60018060a01b0391549060031b1c166200c9a8610360516105405162004c79565b526200c9b76103605162004c12565b610360526200c950565b50979294959093985095909560005b8281106200ca6c575050506104405162004c305761054051516001600160401b038111620029ba576200ca0e8161039c6106405160031b0162004fcd565b6020610540510161039c6106405160031b01600052602060002060005b8381106200ca4e57505050506200ca429062004c12565b9492959091956200c703565b82516001600160a01b0316818301556020909201916001016200ca2b565b6200cab2906001600160a01b036200ca85828562004c79565b51166200ca99610360516105405162004c79565b526200caa86103605162004c12565b6103605262004c12565b6200c9d0565b60405162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b926020810151602681101562002942576006036200d0ed576040016200cb3560c08251015162004c22565b51936200cb4c60a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156200cbcc576200cb7b818562004c79565b5190606482101562004c30576200cbc69161039b906001600160a01b036200cba4848c62004c79565b511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200cb65565b509060005b86518110156200cc6e576200cbe7818562004c79565b51606481101562004c305761039b906001600160a01b036200cc0a848b62004c79565b511660005260031b016020526200cc2c60406000205462007da7838862004c79565b91906200cc3a828762004c79565b5190606482101562004c30576200cc689362000ef09261039b906001600160a01b036200c0d5878f62004c79565b6200cbd1565b50916200cc85919350620084c590959495620312cf565b91604051926200cc958462002a5e565b6000845260003681376000945b80518610156200b756576200ccb8868262004c79565b51610420526200ccc9855162004d95565b966000946200ccd9845162004d95565b6102e05260009460005b88518110156200cdaa578a896200cd136001600160a01b036200cd07858462004c79565b5116610420516203110f565b15806200cd63575b6200cd34575b50506200cd2e9062004c12565b6200cce3565b986200cd589162001a9c82859c62007f886200cd2e9760018060a01b039262004c79565b9790508a896200cd21565b505050606461042051101562004c30576001600160a01b036200cd87828b62004c79565b511660005261039b6104205160031b016020528a8960406000205415156200cd1b565b50909895979498969291939660005b88518110156200ce4757606461042051101562004c30576001600160a01b03806200cde5838c62004c79565b511660005261039b6104205160031b01602052604060002054156200ce17575b506200ce119062004c12565b6200cdb9565b819b6200ce3f916200ce2e6200ce11948d62004c79565b511662001a9c826102e05162004c79565b9a906200ce05565b50985096959291909396610420516064811015806107405262004c305760031b61039c0154986200ce7d620080b6898c62006271565b6102c05260006101c0526000610600525b6107405162004c3057610600518a8110156200cf57576200cec46200cee49160006107405261039c6104205160031b0162004e91565b90546102e0516001600160a01b03939260031b9190911c83169062031166565b156200cf04575b506200cefa6106005162004c12565b610600526200ce8e565b6000610740526200cf236106005161039c6104205160031b0162004e91565b90549060031b1c166200cf3d6101c0516102c05162004c79565b526200cf4c6101c05162004c12565b6101c052386200ceeb565b50979294959093985095909560005b8281106200d002575050506107405162004c30576102c051516001600160401b038111620029ba576200cfa48161039c6104205160031b0162004fcd565b60206102c0510161039c6104205160031b01600052602060002060005b8381106200cfe457505050506200cfd89062004c12565b9492959091956200cca2565b82516001600160a01b0316818301556020909201916001016200cfc1565b6200d048906001600160a01b036200d01b828562004c79565b51166200d02f6101c0516102c05162004c79565b526200d03e6101c05162004c12565b6101c05262004c12565b6200cf66565b60405162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b602081949293940151602681101562002942576007036200d28857604001916200d11c60c08451015162004c22565b51916200d12e60a08551015162004c22565b51935151916200d146845186511462000ee962031533565b60005b84518110156200d276576001600160a01b03806200d168838862004c79565b51166000526106b8806020526200d18c60ff604060002054161562000ee962031604565b60026200d19a848862004c79565b516200d2046200d1ab868c62004c79565b519162008a978b604051966200d1c1886200299e565b60018852886200d1e88b60208b01946000865260408c0197885260608c01998a5262004c79565b511660005260205262008a8d604060002097511515886200572c565b519101556200d214828762004c79565b516106b954929116600160401b831015620029ba5760018301806106b95583101562004c30576106b960005260008051602062031ca883398151915290920180546001600160a01b0319169092179091556200d2709062004c12565b6200d149565b5094915092506200b768915062004c12565b6020810151602681101562002942576008036200d3765760c060406200d2b2920151015162004c22565b519160005b83518110156200d367576200d361906001600160a01b03806200d2db838862004c79565b51166000526106b890816020526200d304600160ff6040600020541615151462000ee962031563565b806200d311848962004c79565b5116600052816020526200d33560ff60406000205460081c161562000ee9620315cb565b6200d341838862004c79565b5116600052602052604060002061010061ff001982541617905562004c12565b6200d2b7565b50926200b76891925062004c12565b6020810151602681101562002942576009036200d4555760c060406200d3a0920151015162004c22565b519160005b83518110156200d367576200d44f906001600160a01b03806200d3c9838862004c79565b51166000526106b890816020526200d3f2600160ff6040600020541615151462000ee962031563565b806200d3ff848962004c79565b5116600052816020526200d427600160ff60406000205460081c1615151462000ee962031596565b6200d433838862004c79565b5116600052602052604060002061ff0019815416905562004c12565b6200d3a5565b602081015160268110156200294257600a036200d53d57604001906200d49160a06200d48660c08551015162004c22565b519351015162004c22565b51926200d4a6835185511462000ee962031533565b60005b83518110156200d52c576200d526906001600160a01b03806200d4cd838862004c79565b51166000526106b8806020526200d4f5600160ff6040600020541615151462000ee962031563565b6200d501838962004c79565b51916200d50f848962004c79565b511660005260205260026040600020015562004c12565b6200d4a9565b50939092506200b768915062004c12565b60208194939294015160268110156200294257600b036200d61d57604001926200d56c60c08551015162004c22565b51935151916200d584855184511462000ee962031533565b60005b85518110156200d60d576200d6079062000ef06001600160a01b03806200d5af848b62004c79565b51166000526106b8806020526200d5d7600160ff6040600020541615151462000ee962031563565b6200d5e3848962004c79565b51916200d5f1858c62004c79565b5116600052602052600160406000200162005659565b6200d587565b509350916200b768915062004c12565b909192602082015160268110156200294257600c036200d76857606060408301510151926200d64c846202c2eb565b60005b84518110156200d52c5760e06200d66f8260606040880151015162004c79565b510151156200d6f3576200d6976200d6908260606040880151015162004c79565b5162005cf2565b6106ba548060001981011162001de8576200d6b86005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de857600562008efb6200d6ed936000190162005c40565b6200d64f565b6200d7126200d70b8260606040880151015162004c79565b5162005ccf565b6106bb548060001981011162001de8576200d7336005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de857600562008efb6200d6ed936000190162005c00565b929190602081015160268110156200294257600d036200d8af576040019260206200d79860a08651015162004c22565b5194510151916200d7ad85518451146202c9e4565b60005b85518110156200d60d57806200d7cb6200d844928662004c79565b51156200d84a576200d7ee6200d7e2828962004c79565b516106ba54116202ca6d565b6200d81a60ff60056200d80d6200d806858c62004c79565b5162005c40565b50015460081c166202cac5565b6200d83260ff6005620090576200d806858c62004c79565b6005620090736200d806838a62004c79565b6200d7b0565b6200d8666200d85a828962004c79565b516106bb54116202ca6d565b6200d88560ff60056200d80d6200d87e858c62004c79565b5162005c00565b6200d89d60ff6005620090576200d87e858c62004c79565b6005620090736200d87e838a62004c79565b602081015160268110156200294257600e036200d9e5576040019260206200d8dc60a08651015162004c22565b5194510151916200d8f185518451146202c9e4565b60005b85518110156200d60d57806200d90f6200d981928662004c79565b51156200d987576200d9326200d926828962004c79565b516106ba54116202cb87565b6200d95760ff60056200d94a6200d806858c62004c79565b50015460081c166202cbe0565b6200d96f60ff6005620091af6200d806858c62004c79565b600562008efb6200d806838a62004c79565b6200d8f4565b6200d9a36200d997828962004c79565b516106bb54116202cb87565b6200d9bb60ff60056200d94a6200d87e858c62004c79565b6200d9d360ff6005620091af6200d87e858c62004c79565b600562008efb6200d87e838a62004c79565b909192602082015160268110156200294257600f036200db2257606060408301510151926200da14846202c2eb565b60005b84518110156200d52c5760e06200da378260606040880151015162004c79565b510151156200dab4576200da586200d6908260606040880151015162004c79565b6106ba548060001981011162001de8576200da796005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de8576005620090736200daae936000190162005c40565b6200da17565b6200dacc6200d70b8260606040880151015162004c79565b6106bb548060001981011162001de8576200daed6005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de8576005620090736200daae936000190162005c00565b9291906020810151602681101562002942576010036200dc675760400151926200db5560a0608086015195015162004c22565b51916200db6a855184511462000ee962031533565b60005b85518110156200d60d57806200db886200dbfd928862004c79565b516200db948162002edc565b6200dba0828762004c79565b51906200dbad8162002edc565b6200dbc46200dbbb62031666565b82151562004bdf565b6200dbcf8162002edc565b600181036200dc0357506200dbf36200dbe762031666565b61271083111562004bdf565b6107275562004c12565b6200db6d565b6200dc0e8162002edc565b600281036200dc2257506107285562004c12565b6200dc2d8162002edc565b600381036200dc4157506107295562004c12565b806200dc4f60049262002edc565b146200dc5c575062004c12565b61072a553862009e21565b6020810151602681101562002942576011036200df0a57604001906200dc9860a06200d48660c08551015162004c22565b51936200dca983518651146202c163565b60005b83518110156200dd29576200dd23906200dd036001600160a01b03806200dcd4848962004c79565b51166000526106bd90816020526200dcf76040600020546200685b868d62004c79565b939062000ee9620314e9565b6200dd0f848962004c79565b511660005260205260406000205562004c12565b6200dcac565b509350906200dd3890620311b3565b906106be54936200dd4f620080b684518762006271565b9060009260005b8781106200deca575060005b85518110156200de17576000805b8981106200ddc8575b50156200dd92575b6200dd8c9062004c12565b6200dd62565b936200dd8c906200ddbf906001600160a01b036200ddb1888a62004c79565b511662001a9c828862004c79565b9490506200dd81565b6200ddd38162004e59565b90546001600160a01b0360039290921b1c8116906200ddf3858b62004c79565b5116146200de0c576200de069062004c12565b6200dd70565b50506001386200dd79565b5095509392506200de288262004d95565b8051906001600160401b038211620029ba576020906200de488362004f74565b016106be600052602060002060005b8381106200deac575050505060005b8281106200de7c575050506200b7689062004c12565b6200dea69062000ef06001600160a01b036200de99838662004c79565b5116620019dd8362004e59565b6200de66565b82516001600160a01b0316818301556020909201916001016200de57565b936200defd6200df04916200dedf8762004e59565b905460039190911b1c6001600160a01b031662001a9c828862004c79565b9462004c12565b6200dd56565b6020819492940151602681101562002942576012036200e14e57604001906200df3e60a06200d48660c08551015162004c22565b51936200df4f83518651146202c163565b60005b83518110156200dfa3576200df9d906200dd036001600160a01b03806200df7a848962004c79565b51166000526106bd90816020526200dcf760406000205462007da7868d62004c79565b6200df52565b50935091906200dfb390620311b3565b6106be546200dfc28162004d95565b906000926000915b8083106200e075575050506200dfe08262004d95565b8051906001600160401b038211620029ba576020906200e0008362004f74565b016106be600052602060002060005b8381106200e057575050505060005b8281106200e034575050506200b7689062004c12565b6200e0519062000ef06001600160a01b036200de99838662004c79565b6200e01e565b82516001600160a01b0316818301556020909201916001016200e00f565b91956000959193959760005b85518110156200e13f576200e0968962004e59565b90546001600160a01b0360039290921b1c8116906200e0b6838962004c79565b5116146200e0cf576200e0c99062004c12565b6200e081565b509750956001959391955b806200e10e575b156200e0f9576200e0f29062004c12565b916200dfca565b936200defd6200e0f2916200dedf8762004e59565b506200e11a8162004e59565b60018060a01b0391549060031b1c166000526106bd602052604060002054156200e0e1565b5097969096959391956200e0da565b6020819493940151602681101562002942576013036200e1ef5760408091015101519160005b83518110156200d367576200e18a818562004c79565b51906106bc54600160401b811015620029ba5760018101806106bc5581101562004c30576106bc6000526200e1e99262000ef0916007027f0487500372b3cc67c23af8f14e14f40d94d05acb10821fef30e703b5df87397d016202de6d565b6200e174565b602081949392940151602681101562002942576014036200e72a57604001906200e21e60c08351015162004c22565b51936200e23560a0620077f0818651015162004c22565b51916200e24686518551146202cca5565b6200e25586518451146202cd0b565b60005b86518110156200e34b576200e26e818562004c79565b516200e27b828762004c79565b5190606482101562004c305761039e6200e29b9260031b0154906200606a565b906200e2a8838862004c79565b5191606483101562004c305761039e6200e2c79360031b01556202cdc5565b6200e2d3818562004c79565b516200e2e0828762004c79565b5190606482101562004c30576200e3099161039b906001600160a01b036200b304868d62004c79565b91906200e317828862004c79565b5190606482101562004c30576200e3459362000ef09261039b906001600160a01b036200b359878f62004c79565b6200e258565b50926200e362919250620084c590959495620312cf565b916040516200e3718162002a5e565b6000815260003681376000945b80518610156200b756576200e394868262004c79565b516107e0526200e3a5855162004d95565b966000946200e3b5845162004d95565b6105e05260009460005b88518110156200e486578a896200e3ef6001600160a01b036200e3e3858462004c79565b51166107e0516203110f565b15806200e43f575b6200e410575b50506200e40a9062004c12565b6200e3bf565b986200e4349162001a9c82859c62007f886200e40a9760018060a01b039262004c79565b9790508a896200e3fd565b50505060646107e051101562004c30576001600160a01b036200e463828b62004c79565b511660005261039b6107e05160031b016020528a8960406000205415156200e3f7565b50909895979498969291939660005b88518110156200e5235760646107e051101562004c30576001600160a01b03806200e4c1838c62004c79565b511660005261039b6107e05160031b01602052604060002054156200e4f3575b506200e4ed9062004c12565b6200e495565b819b6200e51b916200e50a6200e4ed948d62004c79565b511662001a9c826105e05162004c79565b9a906200e4e1565b509850969592919093966107e0516064811015806104e05262004c305760031b61039c0154986200e559620080b6898c62006271565b6107005260006103c0526000610820525b6104e05162004c3057610820518a8110156200e633576200e5a06200e5c09160006104e05261039c6107e05160031b0162004e91565b90546105e0516001600160a01b03939260031b9190911c83169062031166565b156200e5e0575b506200e5d66108205162004c12565b610820526200e56a565b60006104e0526200e5ff6108205161039c6107e05160031b0162004e91565b90549060031b1c166200e6196103c0516107005162004c79565b526200e6286103c05162004c12565b6103c052386200e5c7565b50979294959093985095909560005b8281106200e6de575050506104e05162004c305761070051516001600160401b038111620029ba576200e6808161039c6107e05160031b0162004fcd565b6020610700510161039c6107e05160031b01600052602060002060005b8381106200e6c057505050506200e6b49062004c12565b9492959091956200e37e565b82516001600160a01b0316818301556020909201916001016200e69d565b6200e724906001600160a01b036200e6f7828562004c79565b51166200e70b6103c0516107005162004c79565b526200e71a6103c05162004c12565b6103c05262004c12565b6200e642565b926020840151602681101562002942576015036200ed235760408401906200e75760c08351015162004c22565b51906200e76e60a0620077f0818651015162004c22565b51936200e783835185511462000ee962031533565b6200e796835186511462000ee962031533565b60005b83518110156200e7f3576200e7af818662004c79565b5190606482101562004c305761039b6200e7ed9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200e799565b509095919560005b87518110156200e921576200e811818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200e84a60406000205462007da7838962004c79565b906200e857838862004c79565b5191606483101562004c305761039b6200e88f9360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200e89b818662004c79565b51606481101562004c305761039b906001600160a01b036200e8be848c62004c79565b511660005260031b016020526200e8e06040600020546200685b838962004c79565b91906200e8ee828862004c79565b5190606482101562004c30576200e91b9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200e7fb565b50926200e939919294506200bb4e90969596620312cf565b92604051906200e9498262002a97565b6001825260203681840137516001600160a01b03166200e9698262004c22565b526000945b80518610156200b756576200e984868262004c79565b51610680526200e995855162004d95565b966000946200e9a5845162004d95565b6103405260009460005b88518110156200ea76578a896200e9df6001600160a01b036200e9d3858462004c79565b5116610680516203110f565b15806200ea2f575b6200ea00575b50506200e9fa9062004c12565b6200e9af565b986200ea249162001a9c82859c62007f886200e9fa9760018060a01b039262004c79565b9790508a896200e9ed565b505050606461068051101562004c30576001600160a01b036200ea53828b62004c79565b511660005261039b6106805160031b016020528a8960406000205415156200e9e7565b50909895979498969291939660005b88518110156200eb1a57606461068051101562004c30576001600160a01b036200eab0828b62004c79565b511660005261039b6106805160031b01602052604060002054156200eae1575b6200eadb9062004c12565b6200ea85565b996200eadb906200eb11906001600160a01b036200eb008e8d62004c79565b511662001a9c826103405162004c79565b9a90506200ead0565b50985096959291909396610680516064811015806103a05262004c305760031b61039c0154986200eb50620080b6898c62006271565b6102405260006107805260006106c0525b6103a05162004c30576106c0518a8110156200ec2c576200eb976200ebb49160006103a05261039c6106805160031b0162004e91565b90546103405160039290921b1c6001600160a01b03169062031166565b156200ebd3575b6200ebc96106c05162004c12565b6106c0526200eb61565b60006103a0526200ebf26106c05161039c6106805160031b0162004e91565b60018060a01b0391549060031b1c166200ec13610780516102405162004c79565b526200ec226107805162004c12565b610780526200ebbb565b50979294959093985095909560005b8281106200ecd7575050506103a05162004c305761024051516001600160401b038111620029ba576200ec798161039c6106805160031b0162004fcd565b6020610240510161039c6106805160031b01600052602060002060005b8381106200ecb957505050506200ecad9062004c12565b9492959091956200e96e565b82516001600160a01b0316818301556020909201916001016200ec96565b6200ed1d906001600160a01b036200ecf0828562004c79565b51166200ed04610780516102405162004c79565b526200ed136107805162004c12565b6107805262004c12565b6200ec3b565b9091926020810151602681101562002942576016036200edd55760c060406200ed50920151015162004c22565b519160005b83518110156200d367576001600160a01b036200ed73828662004c79565b5161072b54929116600160401b831015620029ba57600183018061072b5583101562004c305761072b60005260008051602062031b6883398151915290920180546001600160a01b0319169092179091556200edcf9062004c12565b6200ed55565b6020810151602681101562002942576017036200ee325760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036200eef05760c060406200ee5c920151015162004c22565b5191600160ff1961072e54161761072e5560005b83518110156200d367576001600160a01b036200ee8e828662004c79565b5161072d54929116600160401b831015620029ba57600183018061072d5583101562004c305761072d60005260008051602062031ac883398151915290920180546001600160a01b0319169092179091556200eeea9062004c12565b6200ee70565b602081949293940151602681101562002942576019036200ef18575b506200b7689062004c12565b602081015160268110156200294257601a036200f08f5760a060406200ef42920151015162004c22565b51906200ef5360038351146202c163565b6200ef5e8262004c22565b516200ef6e62009dba8462004c46565b51926200f053576200b768926001036200f04c576200ef956200eff391610729546200606a565b61072955604051906200efa88262002a26565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004bdf565b6200f0456200f00561072a5462006057565b61072a55604051906200f0188262002a97565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004bdf565b906200ef0c565b506200f045565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b602081015160268110156200294257601b036200f61c57509190610727546200f0bb62009e97620313c0565b61072a546107285411156200f0da6200f0d36203142e565b8262004bdf565b61072954906200f0eb838362005ebb565b50506200f0f762031484565b506000805b606482106200f5cd575b5050906200f1366200f13c93926200f12c6200f121620313c0565b612710861062004bdf565b62000ee96203142e565b62005ebb565b90506200f14862031484565b5060009060005b606481106200f4fa575b50906127106200f16a92046200624f565b90506200f17a6107345462004d95565b906000946000905b60648210156200f4ed578160031b9460ff61039f87015416156200f2d75760009661039a870154156200f2c657600098975b62004c305761039c8701548910156200f2ac576200f1d78961039c890162004e91565b600160a01b6001900391549060031b1c16978860005261039b8801602052604098868a60002054906200f20a9162005ebb565b9a906200f21662031484565b6200f2219162004bdf565b60009a61039a8b01546200f2359162005ebb565b91906200f24162031484565b6200f24c9162004bdf565b826000526106bf602052600020908154906200f268916200606a565b9091556200f27562031484565b6200f2809162004bdf565b6200f28c828962004c79565b526200f2989062004c12565b986200f2a49062004c12565b98976200f1b4565b929095506200f2be9196975062004c12565b90946200f182565b929095506200f2be91965062004c12565b95969392509350505b6200f2eb8262004d95565b9160009160005b8281106200f457575050506106c054916200f312620080b6848462006271565b926000906000905b8082106200f43a57505060005b8381106200f3a45750508251929150506001600160401b038211620029ba576020906200f3548362004f97565b016106c0600052602060002060005b8381106200f38657505050506200b76890600061072955600061072a556200f045565b82516001600160a01b0316818301556020909201916001016200f363565b6000805b8381106200f3f2575b50156200f3ca575b6200f3c49062004c12565b6200f327565b906200f3c4906200f3e9906001600160a01b036200823e858762004c79565b9190506200f3b9565b6001600160a01b03806200f407858862004c79565b5116906200f416838a62004c79565b5116146200f42f576200f4299062004c12565b6200f3a8565b50506001386200f3b1565b90916200824c6200f45091620098248562004e75565b906200f31a565b6000805b8581106200f4a5575b50156200f47d575b6200f4779062004c12565b6200f2f2565b926200f477906200f49c906001600160a01b036200823e878662004c79565b9390506200f46c565b6001600160a01b03806200f4ba858762004c79565b5116906200f4c9838a62004c79565b5116146200f4e2576200f4dc9062004c12565b6200f45b565b50506001386200f464565b939495929150506200f2e0565b90918160039695961b60ff61039f82015416156200f5c15761039a81015461039c8201546000928391825b8184106200f5615750505050620074b66200f558936200f55062000ef0979694620062359462005ebb565b929062005d15565b9493946200f14f565b94929462004c30576200f5ba856200f5b26200f58662000ef09861039c870162004e91565b905460039190911b1c6001600160a01b0316600090815261039b8601602052604081205490966200606a565b979062005edd565b926200f525565b5091909493946200f159565b8160039897981b60ff61039f82015416156200f61257916200a2d4620074b66200f608936200a2c862000ef09661039a6200a2be8762005e5e565b909695966200f0fc565b509695966200f106565b602081015160268110156200294257601c036200f6795760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036200f69d575b506200b768906200f045565b602081015160268110156200294257601e146200f69157602081015160268110156200294257601f036200f72d5760406200f6db9101515162004c22565b519061072c54600160401b811015620029ba57600181018061072c5581101562004c305761072c6000526200b768926200f7269160008051602062031c088339815191520162005659565b906200f691565b6020810151602681101562002942576020036200f751575b506200b768906200f726565b6020810151602681101562002942576021146200f745576020810151602681101562002942576022036200f7d757506200b7689060ff1961072e541661072e5561072d54600061072d55806200f7ab575b505b906200f745565b61072d6000526200f7d09060008051602062031ac88339815191529081019062004ed6565b386200f7a2565b6020810151602681101562002942576023036200f7fb575b506200b768906200f7a4565b6020810151602681101562002942576024146200f7ef576020810151602681101562002942576025146200f7ef579290916020840151602681101562002942576015036200fe375760408401906200f85860c08351015162004c22565b51906200f86f60a0620077f0818651015162004c22565b51936200f884835185511462000ee962031533565b6200f897835186511462000ee962031533565b60005b83518110156200f8f4576200f8b0818662004c79565b5190606482101562004c305761039b6200f8ee9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200f89a565b509095919560005b87518110156200fa22576200f912818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200f94b60406000205462007da7838962004c79565b906200f958838862004c79565b5191606483101562004c305761039b6200f9909360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200f99c818662004c79565b51606481101562004c305761039b906001600160a01b036200f9bf848c62004c79565b511660005260031b016020526200f9e16040600020546200685b838962004c79565b91906200f9ef828862004c79565b5190606482101562004c30576200fa1c9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200f8fc565b50926200fa3a919294506200bb4e90969596620312cf565b92604051906200fa4a8262002a97565b6001825260203681840137516001600160a01b03166200fa6a8262004c22565b526000945b80518610156200fe24576200fa85868262004c79565b51610660526200fa96855162004d95565b966000946200faa6845162004d95565b6108805260009460005b88518110156200fb77578a896200fae06001600160a01b036200fad4858462004c79565b5116610660516203110f565b15806200fb30575b6200fb01575b50506200fafb9062004c12565b6200fab0565b986200fb259162001a9c82859c62007f886200fafb9760018060a01b039262004c79565b9790508a896200faee565b505050606461066051101562004c30576001600160a01b036200fb54828b62004c79565b511660005261039b6106605160031b016020528a8960406000205415156200fae8565b50909895979498969291939660005b88518110156200fc1b57606461066051101562004c30576001600160a01b036200fbb1828b62004c79565b511660005261039b6106605160031b01602052604060002054156200fbe2575b6200fbdc9062004c12565b6200fb86565b996200fbdc906200fc12906001600160a01b036200fc018e8d62004c79565b511662001a9c826108805162004c79565b9a90506200fbd1565b50985096959291909396610660516064811015806106205262004c305760031b61039c0154986200fc51620080b6898c62006271565b6105a0526000610400526000610280525b6106205162004c3057610280518a8110156200fd2d576200fc986200fcb59160006106205261039c6106605160031b0162004e91565b90546108805160039290921b1c6001600160a01b03169062031166565b156200fcd4575b6200fcca6102805162004c12565b610280526200fc62565b6000610620526200fcf36102805161039c6106605160031b0162004e91565b60018060a01b0391549060031b1c166200fd14610400516105a05162004c79565b526200fd236104005162004c12565b610400526200fcbc565b50979294959093985095909560005b8281106200fdd8575050506106205162004c30576105a051516001600160401b038111620029ba576200fd7a8161039c6106605160031b0162004fcd565b60206105a0510161039c6106605160031b01600052602060002060005b8381106200fdba57505050506200fdae9062004c12565b9492959091956200fa6f565b82516001600160a01b0316818301556020909201916001016200fd97565b6200fe1e906001600160a01b036200fdf1828562004c79565b51166200fe05610400516105a05162004c79565b526200fe146104005162004c12565b6104005262004c12565b6200fd3c565b5050939092506200b7689150906200f7ef565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b509190506200fe8482620145d6565b929060068110156200294257600281036200feb45760405162461bcd60e51b81528062004c0e60048201620075e4565b6003810362010e4357506107338054600260ff82166200fed48162002937565b1462010dfe5760ff19166002179055610738549060018201821162001de8576001820161073855610324549092600019929060005b86518110156200ff85576200ff2c846200ff24838a62004c79565b511062030c1a565b8460026200ff466200ff3f848b62004c79565b516202de4d565b500154106200ff61575b6200ff5b9062004c12565b6200ff09565b93506200ff5b60026200ff796200ff3f878a62004c79565b5001549490506200ff50565b5090936000199360005b87518110156200fffc576200ffaa856200ff24838b62004c79565b8560036200ffbd6200ff3f848c62004c79565b500154106200ffd8575b6200ffd29062004c12565b6200ff8f565b94506200ffd260036200fff06200ff3f888b62004c79565b5001549590506200ffc7565b509194600191935062010010875162004d95565b6201001c885162004d95565b62010028895162004d95565b90620100358a5162004d95565b9260405197620100458962002a09565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e08501526000610100850152016000526107366020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b8211620029ba57600184015482600186015580831062010c3f575b5060200190600184016000526020600020916000905b828210620105de57505050506040620100fe9101516002830162005659565b60208301518051906001600160401b038211620029ba576020600384019162010128848462004fcd565b0190600052602060002060005b838110620105c9575050505060408301518051906001600160401b038211620029ba57602060048401916201016b848462004fcd565b0190600052602060002060005b838110620105b4575050505060608301518051906001600160401b038211620029ba5760206005840191620101ae848462004fcd565b0190600052602060002060005b8381106201059f575050505060808301518051906001600160401b038211620029ba5760206006840191620101f1848462004fcd565b0190600052602060002060005b8381106201058a575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029425761010062010256926201025d9560ff8019855416911617835501511515906200573d565b426200606a565b90156201054a576107385460005261073660205280600760406000200155610731556201029b6107385491826000526007604060002001546200606a565b91901562010507576000526107366020528060086040600020015561073255610738546000526009604060002001600260ff1982541617905560005b82518110156201031d578062000ef0620102f662010317938662004c79565b516107385460005261073660205262006c0683600360406000200162004e91565b620102d7565b50906000905b80518210156201050357610738549182600052610736602052620103606201035382600360406000200162004e91565b90549060031b1c6202de4d565b5054936201036e8562004d95565b9460005b818110620104b857505060009260005b8651811015620104865762010398818862004c79565b51946064958681101562004c305760031b60010154620103b9838a62004c79565b51908782101562004c30576006620103d79260031b01549062005ebb565b919015620104435790620103eb916200606a565b959015620104055750620103ff9062004c12565b62010382565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152fd5b8660405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b50945092620104b09262000ef09160005261073660205262006c0683600660406000200162004e91565b909162010323565b620104fd9086600052610736602052620104ea81620104e36201035388600360406000200162004e91565b5062004e91565b90549060031b1c62001a9c828a62004c79565b62010372565b5050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620101fe565b600190602084519401938184015501620101bb565b60019060208451940193818401550162010178565b60019060208451940193818401550162010135565b805180518554602083015190916001600160a01b031690602681101562002942576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010638848462005361565b01906000526020600020906000905b83821062010c1f5750505050602081015180516001600160401b038111620029ba57602060028801926201067c838562030721565b019160005260206000209060005b8160051c811062010be35750601f198116810362010b9e575b5050506040810151805190600160401b8211620029ba57600387015482600389015580831062010b16575b50602001600387016000526020600020906000905b83821062010af557505050506060810151805190600160401b8211620029ba57600487015482600489015580831062010a74575b50602001600487016000526020600020906000905b83821062010a535750505050608081015180516001600160401b038111620029ba576020600588019262010761838562030721565b019160005260206000209060005b8160051c811062010a145750601f1981168103620109c6575b5050506006850160a08201516020815191620107a58385620053ef565b019160005260206000206000925b8284106201096257505050506007850160c08201516020815191620107d98385620053ef565b019160005260206000206000925b828410620108f5575050505060e001518051906001600160401b038211620029ba5762010827826201081d600889015462002b98565b600889016200560f565b602090601f83116001146201087a5792826009936020936001966000926201086e575b5050600019600383901b1c191690851b1760088801555b01940191019092620100df565b0151905038806201084a565b906008870160005260206000209160005b601f1985168110620108dc575083602093600196938793600997601f19811610620108c2575b505050811b01600888015562010861565b015160001960f88460031b161c19169055388080620108b1565b919260206001819286850151815501940192016201088b565b80518051906001600160401b038211620029ba5760209062010918838662004fcd565b0183600052602060002060005b83811062010944575050505060016020819201920193019290620107e7565b82516001600160a01b03168183015560209092019160010162010925565b80518051906001600160401b038211620029ba5760209062010985838662004fcd565b0183600052602060002060005b838110620109b1575050505060016020819201920193019290620107b3565b60019060208451940193818401550162010992565b60009260005b601f19831683038110620109ea57505060051c015538808062010788565b9093602062010a0a6001928488519162010a048362002edc565b6203078b565b95019101620109cc565b6000805b6020811062010a2f5750838201556001016201076f565b9490602062010a496001928885519162010a048362002edc565b9201950162010a18565b600660208262010a6760019451876200576f565b019301910190916201072c565b600681810204810362001de857600683810204830362001de8576004880160005260206000208360060281015b826006028201811062010ab657505062010717565b806000600692556000600182015562010ad2600282016200543e565b6000600382015562010ae760048201620052d3565b600060058201550162010aa1565b600760208262010b0960019451876202de6d565b01930191019091620106e3565b600781810204810362001de857600783810204830362001de8576003880160005260206000208360070281015b826007028201811062010b58575050620106ce565b8062010b6660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010b9060058201620052d3565b600060068201550162010b43565b60009260005b601f1983168303811062010bc257505060051c0155388080620106a3565b9093602062010bd96001928488511515916203078b565b9501910162010ba4565b6000805b6020811062010bfe5750838201556001016201068a565b9490602062010c156001928885511515916203078b565b9201950162010be7565b600160208262010c328394518762005659565b0193019101909162010647565b600981810204810362001de857600983810204830362001de8576001850160005260206000208360090281015b826009028201811062010c81575050620100c9565b6000815562010c936001820162005322565b62010ca86002820180549060008155620306f9565b6003810154600060038301558062010d88575b506004810154600060048301558062010d19575b508062010ce860056009930180549060008155620306f9565b62010cf660068201620053b0565b62010d0460078201620053b0565b62010d1260088201620052d3565b0162010c6c565b600681810204810362001de857600482016000526020600020906006028101905b81811062010d49575062010ccf565b806000600692556000600182015562010d65600282016200543e565b6000600382015562010d7a60048201620052d3565b600060058201550162010d3a565b600781810204810362001de857600382016000526020600020906007028101905b81811062010db8575062010cbb565b8062010dc660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010df060058201620052d3565b600060068201550162010da9565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b6005919293501462010e525750565b9060008061032a54905b818110620137da575b505015620137be575b60005b602083015190815181101562010ec95762000ef06200771662010ea3620076f66020620067ee8662010ec39862004c79565b86516001600160a01b031660009081526103296020526040902062022f40565b62010e71565b505060005b6020830151805182101562010f1657620076f66020620067ee8462010ef39462004c79565b90606482101562004c305762010f1091429061032b015562004c12565b62010ece565b50506000905b602083015180518310156200a592578262010f379162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036201117a576040019062010f7860c08351015162004c22565b519362010f8f60a0620077f0818651015162004c22565b519162010fa086518551146202cca5565b62010faf86518451146202cd0b565b60005b8651811015620111015762010fc8818662004c79565b51606481101562004c3057600160ff600762010fed9360031b0154161515146202cd6d565b62010ff9818562004c79565b5162011006828762004c79565b5190606482101562004c30576006620110259260031b0154906200606a565b9062011032838862004c79565b5191606483101562004c30576006620110509360031b01556202cdc5565b6201105c818562004c79565b5162011069828762004c79565b5190606482101562004c3057620110a9916003906001600160a01b0362011091868d62004c79565b5116600052811b01602052604060002054906200606a565b9190620110b7828862004c79565b5190606482101562004c3057620110fb9362000ef0926003906001600160a01b03620110e4878f62004c79565b5116600052811b016020526040600020556202ce24565b62010fb2565b5094915091620111156201111c91620312cf565b91620311b3565b93604051926201112c8462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b662011157938762004c79565b62011138565b509450926020925062011171915062004c12565b91905062010f1c565b9091926020820151602681101562002942576002036201130b57604080920190815193845191620111b46200b7ab60a08098015162004c22565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b8651811015620112f557620111ee818862004c79565b51606481101562004c305760ff60076201120f9260031b015416156202ce7d565b6201121b818862004c79565b51606481101562004c305760031b600701805460ff1916600117905562011243818562004c79565b5162011250828962004c79565b5190606482101562004c305760056201126d9260031b0162005659565b62011279818662004c79565b5162011286828962004c79565b51606481101562004c305760031b60010155620112a4818762004c79565b51620112b1828962004c79565b51606481101562004c305760031b60020155620112cf818862004c79565b5190606482101562004c305760006006620112ef9360031b015562004c12565b620111d8565b5095915093506020925062011171915062004c12565b92919060208101516026811015620029425760030362011338576020919262000ef062011171926202cec9565b602081015160268110156200294257600403620115db576201136260c06040830151015162004c22565b51936201137760c06040840151015162004c46565b51906201139e60a06040620113928282880151015162004c22565b51950151015162004c46565b5193620113b3875184511462000ee962031533565b620113c6875185511462000ee962031533565b620113d9875186511462000ee962031533565b60005b87518110156201144157620113f2818662004c79565b5190606482101562004c30576201143b916003906001600160a01b036201141a848d62004c79565b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b620113dc565b509095919593929360005b8351811015620115985762011462818762004c79565b51606481101562004c30576003906001600160a01b0362011484848862004c79565b5116600052811b01602052620114a560406000205462007da7838862004c79565b90620114b2838962004c79565b5191606483101562004c3057620114f5926003906001600160a01b03620114da878b62004c79565b5116600052811b0160205260406000205562000ee962031637565b62011501818762004c79565b51606481101562004c30576003906001600160a01b0362011523848c62004c79565b5116600052811b01602052620115446040600020546200685b838862004c79565b91905062011553818862004c79565b5191606483101562004c305762011592926003906001600160a01b036201157b858e62004c79565b5116600052811b0160205260406000205562004c12565b6201144c565b5093620115b29192969350620084c562007e9891620312cf565b9260005b83518110156201115d578062000ef0620079b6620115d5938762004c79565b620115b6565b92602084015160268110156200294257600503620117a4576201160660a06040860151015162004c22565b51906201161b60a06040870151015162004c46565b519282518451036200cab85760005b8351811015620116825762011640818562004c79565b5190606482101562004c305760036201167c9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6201162a565b509060005b835181101562011723576201169d818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b01602052620116d460406000205462007da7838862004c79565b9190620116e2828762004c79565b5190606482101562004c30576201171d93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b62011687565b50949250906201173390620312cf565b9060405192620117438462002a97565b6001845260203681860137516001600160a01b0316620117638462004c22565b5260405194620117738662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b66201179e938762004c79565b6201177f565b926020810151602681101562002942576006036201195957604001620117cf60c08251015162004c22565b5193620117e660a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b8651811015620118645762011815818562004c79565b5190606482101562004c30576201185e916003906001600160a01b036201183d848c62004c79565b5116600052811b0160205262000ef060406000205462007d3b838962004c79565b620117ff565b509060005b865181101562011903576201187f818562004c79565b51606481101562004c30576003906001600160a01b03620118a1848b62004c79565b5116600052811b01602052620118c260406000205462007da7838862004c79565b9190620118d0828762004c79565b5190606482101562004c3057620118fd9362000ef0926003906001600160a01b03620114da878f62004c79565b62011869565b509491620119189193506201111590620312cf565b9160405194620119288662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b662011953938762004c79565b62011934565b60208101516026811015620029425760070362011a6b57604001926201198460c08551015162004c22565b51916201199660a08651015162004c22565b5194515191620119ae845187511462000ee962031533565b60005b84518110156201115d5762011a659062000ef06001600160a01b0380620119d9848a62004c79565b51166000528660028b62011a5562011a188762011a1081610320978860205262008a3360ff604060002054161562000ee962031604565b519362004c79565b519162008a978d6040519662011a2e886200299e565b60018852886200d1e88c60208b01946000865260408c0197885260608c01998a5262004c79565b5191015562008ab2838962004c79565b620119b1565b60208194939401516026811015620029425760080362011b025760c0604062011a98920151015162004c22565b519160005b835181101562011af05762011aea906001600160a01b038062011ac1838862004c79565b511660005261032090816020526200d304600160ff6040600020541615151462000ee962031563565b62011a9d565b50926020919250620111719062004c12565b60208101516026811015620029425760090362011b845760c0604062011b2c920151015162004c22565b519160005b835181101562011af05762011b7e906001600160a01b038062011b55838862004c79565b511660005261032090816020526200d3f2600160ff6040600020541615151462000ee962031563565b62011b31565b602081015160268110156200294257600a0362011c32576040019062011bb560a06200d48660c08551015162004c22565b519262011bca835185511462000ee962031533565b60005b835181101562011c1f5762011c19906001600160a01b038062011bf1838862004c79565b5116600052610320806020526200d4f5600160ff6040600020541615151462000ee962031563565b62011bcd565b5093620111719193506020925062004c12565b60208194939294015160268110156200294257600b0362011ce5576040019262011c6160c08551015162004c22565b519351519162011c79855184511462000ee962031533565b60005b855181101562011cd25762011ccc9062000ef06001600160a01b038062011ca4848b62004c79565b5116600052610320806020526200d5d7600160ff6040600020541615151462000ee962031563565b62011c7c565b5093509160209150620111719062004c12565b909192602082015160268110156200294257600c0362011e22576060604083015101519262011d14846202c2eb565b60005b845181101562011c1f5760e062011d378260606040880151015162004c79565b5101511562011db45762011d5862008ea78260606040880151015162004c79565b610322548060001981011162001de85762011d796005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005c20565b62011d17565b62011dcc62008f258260606040880151015162004c79565b610322548060001981011162001de85762011ded6005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005be0565b929190602081015160268110156200294257600d0362011f365760400192602062011e5260a08651015162004c22565b51945101519162011e6785518451146202c9e4565b60005b855181101562011cd2578062011e8562011ede928662004c79565b511562011ee45762011e9c6200901d828962004c79565b62011eb460ff60056200d80d6200903e858c62004c79565b62011ecc60ff6005620090576200903e858c62004c79565b6005620090736200903e838a62004c79565b62011e6a565b62011ef4620090ab828962004c79565b62011f0c60ff60056200d80d620090cc858c62004c79565b62011f2460ff600562009057620090cc858c62004c79565b600562009073620090cc838a62004c79565b602081949294015160268110156200294257600e0362011ffd5760400190602062011f6660a08451015162004c22565b51925101519362011f7b83518651146202c9e4565b60005b835181101562011cd2578062011f9962011fa5928862004c79565b5162011fab5762004c12565b62011f7e565b62011fbb62009168828762004c79565b62011fd360ff60056200d94a6200903e858a62004c79565b62011feb60ff6005620091af6200903e858a62004c79565b600562008efb6200903e838862004c79565b90602082949394015160268110156200294257600f036201213b57606060408301510151926201202d846202c2eb565b60005b845181101562011c1f5760e0620120508260606040880151015162004c79565b51015115620120cd576201207162008ea78260606040880151015162004c79565b610322548060001981011162001de857620120926005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005c20565b62012030565b620120e562008f258260606040880151015162004c79565b610322548060001981011162001de857620121066005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005be0565b90602081949394015160268110156200294257601003620121ac5760400151906201216f60a0608084015193015162004c22565b519362012184835186511462000ee962031533565b60005b835181101562011cd2578062000ef06200935a620121a6938762004c79565b62012187565b6020819492940151602681101562002942576011036201240e5760400190620121e060a06200d48660c08551015162004c22565b5193620121f183518651146202c163565b60005b83518110156201226b57620122659062000ef06001600160a01b03806201221c848962004c79565b5116600052610325806020526201223e6040600020546200685b868d62004c79565b9190926201224d868b62004c79565b511660005260205260406000205562000ee9620314e9565b620121f4565b509350906201227a90620311b3565b90610326549362012291620080b684518762006271565b9060009260005b878110620123f3575060005b85518110156201234b576000805b898110620122fc575b5015620122d4575b620122ce9062004c12565b620122a4565b93620122ce90620122f3906001600160a01b036200ddb1888a62004c79565b949050620122c3565b620123078162004de9565b90546001600160a01b0360039290921b1c81169062012327858b62004c79565b51161462012340576201233a9062004c12565b620122b2565b5050600138620122bb565b5095509392506201235c8262004d95565b8051906001600160401b038211620029ba576020906201237c8362004f2a565b01610326600052602060002060005b838110620123d5575050505060005b828110620123b2575050506201117160209162004c12565b620123cf9062000ef06001600160a01b03620019d0838662004c79565b6201239a565b82516001600160a01b0316818301556020909201916001016201238b565b936200defd62012408916200dedf8762004de9565b62012298565b6020819492940151602681101562002942576012036201265357604001906201244260a06200d48660c08551015162004c22565b51936201245383518651146202c163565b60005b8351811015620124a657620124a09062000ef06001600160a01b03806201247e848962004c79565b5116600052610325806020526201223e60406000205462007da7868d62004c79565b62012456565b5093509190620124b690620311b3565b61032654620124c58162004d95565b906000926000915b8083106201257a57505050620124e38262004d95565b8051906001600160401b038211620029ba57602090620125038362004f2a565b01610326600052602060002060005b8381106201255c575050505060005b82811062012539575050506201117160209162004c12565b620125569062000ef06001600160a01b03620019d0838662004c79565b62012521565b82516001600160a01b03168183015560209092019160010162012512565b91956000959193959760005b855181101562012644576201259b8962004de9565b90546001600160a01b0360039290921b1c811690620125bb838962004c79565b511614620125d457620125ce9062004c12565b62012586565b509750956001959391955b8062012613575b15620125fe57620125f79062004c12565b91620124cd565b936200defd620125f7916200dedf8762004de9565b506201261f8162004de9565b60018060a01b0391549060031b1c1660005261032560205260406000205415620125e6565b509796909695939195620125df565b602081015160268110156200294257601303620126ac5760408091015101519260005b84518110156201269b578062000ef0620098ce62012695938862004c79565b62012676565b509250906201117160209162004c12565b602081015160268110156200294257601403620128555760400190620126d760c08351015162004c22565b5193620126ee60a0620077f0818651015162004c22565b5191620126ff86518551146202cca5565b6201270e86518451146202cd0b565b60005b8651811015620128005762012727818562004c79565b5162012734828762004c79565b5190606482101562004c30576006620127539260031b0154906200606a565b9062012760838862004c79565b5191606483101562004c305760066201277e9360031b01556202cdc5565b6201278a818562004c79565b5162012797828762004c79565b5190606482101562004c3057620127bf916003906001600160a01b0362011091868d62004c79565b9190620127cd828862004c79565b5190606482101562004c3057620127fa9362000ef0926003906001600160a01b03620110e4878f62004c79565b62012711565b5094915091620111156201281491620312cf565b9360405192620128248462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b66201284f938762004c79565b62012830565b6020810151602681101562002942576015036201287f576020919262000ef062011171926202cec9565b602081015160268110156200294257601603620128db5760c06040620128a9920151015162004c22565b519260005b84518110156201269b57620128d59062000ef06001600160a01b0362009b14838962004c79565b620128ae565b602081015160268110156200294257601703620129385760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601803620129a35760c0604062012962920151015162004c22565b5192600160ff196103965416176103965560005b84518110156201269b576201299d9062000ef06001600160a01b0362009be0838962004c79565b62012976565b60208193929301516026811015620029425760190362012b185760008091604082910160a08082510151805162012adf575b5050519060e082015191620129f96200685460c060018060a01b0393015162004c22565b511690602083519301915af13d1562012ad6573d9062012a198262002e73565b9162012a29604051938462002ab3565b82523d6000602084013e5b1562012a4857506201117160209162004c12565b62004c0e9062012ab56040519160008051602062031c88833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162012aa4816059946020868601910162002d20565b810103603981018452018262002ab3565b60405162461bcd60e51b815260206004820152918291602483019062002d45565b60609062012a34565b62012aea9062004c22565b515162012af9575b80620129d5565b819250620068549062012b0f9251015162004c22565b51903862012af2565b602081015160268110156200294257601a0362012bce5760a0604062012b42920151015162004c22565b5162012b5260038251146202c163565b62012b5d8162004c22565b519162012b7662012b6e8362004c46565b519262004c57565b51916200f05357602092620111719260010362009e215762012ba062012bae91610391546200606a565b6103915562000ee962031484565b62000ef062012bc06103925462006057565b6103925562000ee9620314be565b602081015160268110156200294257601b0362012ffc5750919062012bfe61038f54620061b062009e97620313c0565b505062012c0a62031484565b506000805b6064811062012fb0575b505062012c256200618c565b62012c336107345462004d95565b906000946000905b606482101562012fa3578160031b9460ff6007870154161562012d8b5760009660028701541562012d7a57600098975b62004c3057600487015489101562012d605762012c8c896004890162004e91565b9054600391821b1c6001600160a01b031660008181529189016020526040918290205491999162012cbf90889062005ebb565b9a9062012ccb62031484565b62012cd69162004bdf565b60009a60028b015462012ce99162005ebb565b919062012cf562031484565b62012d009162004bdf565b826000526103276020526000209081549062012d1c916200606a565b90915562012d2962031484565b62012d349162004bdf565b62012d40828962004c79565b5262012d4c9062004c12565b9862012d589062004c12565b989762012c6b565b9290955062012d729196975062004c12565b909462012c3b565b9290955062012d7291965062004c12565b95969392509350505b62012d9f8262004d95565b9160009160005b82811062012f0d57505050610328549162012dc6620080b6848462006271565b926000906000905b80821062012ef057505060005b83811062012e5a5750508251929150506001600160401b038211620029ba5760209062012e088362004eef565b01610328600052602060002060005b83811062012e3c57505050506201117160209160006103915560006103925562004c12565b82516001600160a01b03168183015560209092019160010162012e17565b6000805b83811062012ea8575b501562012e80575b62012e7a9062004c12565b62012ddb565b9062012e7a9062012e9f906001600160a01b036200823e858762004c79565b91905062012e6f565b6001600160a01b038062012ebd858862004c79565b51169062012ecc838a62004c79565b51161462012ee55762012edf9062004c12565b62012e5e565b505060013862012e67565b90916200824c62012f0691620098248562004dcd565b9062012dce565b6000805b85811062012f5b575b501562012f33575b62012f2d9062004c12565b62012da6565b9262012f2d9062012f52906001600160a01b036200823e878662004c79565b93905062012f22565b6001600160a01b038062012f70858762004c79565b51169062012f7f838a62004c79565b51161462012f985762012f929062004c12565b62012f11565b505060013862012f1a565b9394959291505062012d94565b8060039594951b9060ff6007830154161562012ff2576200a2d4620074b662000ef0946200a2c862012fe99560026200a2be8762005d82565b93929362012c0f565b5093929362012c19565b602081015160268110156200294257601c03620130595760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036201307f575b506201117160209162004c12565b602081015160268110156200294257601e146201307157602081015160268110156200294257601f03620130d057602091620130c86200a3b96040620111719401515162004c22565b915062013071565b602081015160268110156200294257602003620130f6575b5062011171602091620130c8565b602081015160268110156200294257602180910362013117575b50620130e8565b602082015160268110156200a53a57602203620131545750506201117160209160ff196103965416610396556201314d62004fba565b9162013110565b602082015160268110156200a53a576023036201317b575b5050620111716020916201314d565b602082015160268110156200a53a576024146201316c57602082015160268110156200a53a576025146201316c57602082959394920151906026821015620137aa57506015036200fe37576040840190620131db60c08351015162004c22565b5190620131f260a0620077f0818651015162004c22565b519362013207835185511462000ee962031533565b6201321a835186511462000ee962031533565b60005b8351811015620132755762013233818662004c79565b5190606482101562004c305760036201326f9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6201321d565b509095919560005b87518110156201339c5762013293818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b01602052620132ca60406000205462007da7838962004c79565b90620132d7838862004c79565b5191606483101562004c305760036201330d9360018060a01b03895116600052811b0160205260406000205562000ee962031637565b62013319818662004c79565b51606481101562004c30576003906001600160a01b036201333b848c62004c79565b5116600052811b016020526201335c6040600020546200685b838962004c79565b91906201336a828862004c79565b5190606482101562004c30576201339693600362000ef0938d62007e608760018060a01b039262004c79565b6201327d565b5092620133b4919294506200bb4e90969596620312cf565b9260405190620133c48262002a97565b6001825260203681840137516001600160a01b0316620133e48262004c22565b526000945b80518610156201379557620133ff868262004c79565b516102605262013410855162004d95565b9660009462013420845162004d95565b6103205260009460005b8851811015620134ef578a896201345a6001600160a01b036201344e858462004c79565b511661026051620310b9565b1580620134aa575b6201347b575b5050620134759062004c12565b6201342a565b986201349f9162001a9c82859c62007f88620134759760018060a01b039262004c79565b9790508a8962013468565b505050606461026051101562004c30576001600160a01b03620134ce828b62004c79565b5116600052600361026051811b016020528a89604060002054151562013462565b50909895979498969291939660005b88518110156201359157606461026051101562004c30576001600160a01b0362013529828b62004c79565b5116600052600361026051811b016020526040600020541562013558575b620135529062004c12565b620134fe565b99620135529062013588906001600160a01b03620135778e8d62004c79565b511662001a9c826103205162004c79565b9a905062013547565b50985096959291909396610260516064811015806101e05262004c305760031b6004015498620135c6620080b6898c62006271565b6102205260006102a0526000610560525b6101e05162004c3057610560518a811015620136a0576201360c620136299160006101e05260046102605160031b0162004e91565b90546103205160039290921b1c6001600160a01b03169062031166565b1562013648575b6201363e6105605162004c12565b61056052620135d7565b60006101e052620136666105605160046102605160031b0162004e91565b60018060a01b0391549060031b1c16620136876102a0516102205162004c79565b52620136966102a05162004c12565b6102a05262013630565b50979294959093985095909560005b82811062013749575050506101e05162004c305761022051516001600160401b038111620029ba57620136ec8160046102605160031b0162004fcd565b6020610220510160046102605160031b01600052602060002060005b8381106201372b57505050506201371f9062004c12565b949295909195620133e9565b82516001600160a01b03168183015560209092019160010162013708565b6201378f906001600160a01b0362013762828562004c79565b5116620137766102a0516102205162004c79565b52620137856102a05162004c12565b6102a05262004c12565b620136af565b5050936201117191935060209250916201316c565b634e487b7160e01b60005260045260246000fd5b8151620137d4906001600160a01b031662006647565b62010e6e565b620137e58162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462013814576201380e9062004c12565b62010e5c565b5050506001388062010e65565b82516001600160a01b0316600160401b821015620029ba57620019dd8260016201385094016106c25562004e21565b386200b0db565b620138628162004e21565b9054865160039290921b1c6001600160a01b0390811691161462013891576201388b9062004c12565b6200b0ca565b50506001386200b0d3565b82516001600160a01b0316818301556020909201916001016200b000565b82516001600160a01b0316818301556020909201916001016200aeb3565b600191820180546001600160a01b03909216848601559390910192906200ae02565b61072d600052620139219060008051602062031ac883398151915290810190830162004ed6565b386200adc3565b600180826201393982948662013d7f565b019201920191906200ad85565b61072c60005260008051602062031c08833981519152908282015b8183018110620139735750506200ad4a565b8062013981600192620052d3565b0162013961565b600191820180546001600160a01b03909216848601559390910192906200ad1b565b61072b600052620139d19060008051602062031b6883398151915290810190830162004ed6565b386200acdc565b60018091930191825493816106c301550190916200ac7f565b82516001600160a01b0316818301556020909201916001016200ab98565b62013a2a906106c26000528484600020918201910162004ed6565b386200ab88565b82516001600160a01b0316818301556020909201916001016200a9b4565b62013a6a906106b96000528484600020918201910162004ed6565b386200a9a4565b8062013a939160031b600160ff60078301541615151462013a99575062004c12565b6200a8fa565b62013aac6004820161039c830162013f18565b61039f8101600160ff1982541617905580548161039801556001810154610399820155600281015461039a82015562013aed6005820161039d830162013d7f565b61039e60068201549101553862009e21565b600660208262013b1360019451866200576f565b019201920191906200a6f7565b600681810204810362001de857600683810204830362001de8576106ba6000527f4bc0fef855e05548476b22fb01fb9c435488f87351c9bc2f734e5ca5bc2141996006840281015b826006028201811062013b7d5750506200a6e4565b806000600692556000600182015562013b99600282016200543e565b6000600382015562013bae60048201620052d3565b600060058201550162013b68565b600660208262013bd060019451866200576f565b019201920191906200a66c565b8060060290600682040362001de8578260060260068104840362001de8576000906106bb82526020822092830192015b82811062013c1d5750506200a659565b80826006925582600182015562013c37600282016200543e565b82600382015562013c4b60048201620052d3565b8260058201550162013c0d565b608460405162461bcd60e51b8152602060048201526040602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b8152602060048201526047602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b81811462010503578154916001600160401b038311620029ba5762013d41838362004fcd565b60005260206000209060005260206000208154916000925b84841062013d68575050505050565b600180919201938454928185015501929062013d59565b90808214620105035762013d94815462002b98565b906001600160401b038211620029ba57819062013dbe8262013db7865462002b98565b866200560f565b600090601f831160011462013df75760009262013deb5750508160011b916000199060031b1c1916179055565b015490503880620056a2565b81526020808220858352818320935090601f1985169083905b82821062013e4c57505090846001959493921062013e3257505050811b019055565b015460001960f88460031b161c19169055388080620056ef565b849581929585015481556001809101960194019062013e10565b818114620105035781549162013e7d838362005361565b6000526020600020906000526020600020906000905b83821062013ea15750505050565b8062013eb06001928562013d7f565b92810192918101910162013e93565b818114620105035781549162013ed68383620053ef565b6000526020600020906000526020600020906000905b83821062013efa5750505050565b8062013f096001928562013d1b565b92810192918101910162013eec565b81811462010503578154916001600160401b038311620029ba5762013f3e838362004fcd565b60005260206000209060005260206000208154916000925b84841062013f65575050505050565b600191820180546001600160a01b039092168486015593909101929062013f56565b818114620105035781549162013f9e8383620053ef565b6000526020600020906000526020600020906000905b83821062013fc25750505050565b8062013fd16001928562013f18565b92810192918101910162013fb4565b818114620105035781549162013ff78383620054f2565b6000526020600020906000526020600020906000905b8382106201401b5750505050565b80600191840362014038575b60088091019301910190916201400d565b80548455620140658280860190830160ff90620140598282541684620055d4565b5460081c1690620055ee565b6002808201549085015562014081600380830190860162013d1b565b60048085019082018082036201409a575b505062014027565b620140a59162013e66565b620140b7600580830190860162013ebf565b620140c9600680830190860162013f87565b620140db600780830190860162013d7f565b388062014092565b919062005c9657808203620140f6575050565b60ff60058062002b5a946201410f8486541682620055bb565b600185015460018201556201412b600286016002830162013fe0565b6003850154600382015562014147600486016004830162013d7f565b0192016201415982825416846200572c565b6201416b82825460081c16846200573d565b5460101c169062005755565b908082146201050357908154906000915b60648310620141975750505050565b600180919401928354948184015501919262014188565b906103225491600092602082019182515190620141cb8262002b80565b91620141db604051938462002ab3565b808352620141ec601f199162002b80565b01366020840137620142018451518462005ebb565b90156201457e57620142139062004d95565b9186938551511562014574576201422a8162004d95565b975b865151811015620143bc5760008080805b87858c888410620142d25750839450620142669392506201426091508862004c79565b6200350b565b600681101562002942576003146201428b575b50620142859062004c12565b6201422c565b6000905b8a818310620142a057505062014279565b8298620142b7620142cb9394620142c49362004c79565b5162001a9c828b62004c79565b9762004c12565b906201428f565b620142e5620142ec939285925162004c79565b51620149a3565b93909480831180620143a8575b156201435f57505091838562014355575b6006811015620029425760038f911462014335575b50506201432c9062004c12565b9190916201423d565b946201434c9162001a9c826201432c959862004c79565b93908d6201431f565b600095506201430a565b809492959195148062014394575b156201431f576006811015620029425760038f9114620143355750506201432c9062004c12565b50600681101562002942578015156201436d565b5060068610156200294257851515620142f9565b505093505090929350600093845b83518610156201450f57620143ea620143e4878662004c79565b620055ad565b9060068083101562002942576002928303620144155750506201440e909562004c12565b94620143ca565b62014425620143e4898862004c79565b92818410156200294257600180941480620144fb575b1562014450575050506201440e909562004c12565b62014465620143e48a899b9694959b62004c79565b9280841015620029425760048094149283620144cf575b5082620144a4575b505062014498575b506201440e9062004c12565b95506201440e6201448c565b909150881015620144ba57871415388062014484565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620144e65789141591386201447c565b602184634e487b7160e01b6000525260246000fd5b50818310156200294257808314156201443b565b92509290935060068210156200294257600382036201456b575b620145348162004d95565b9360005b82811062014547575050509190565b806201455862014565928462004c79565b5162001a9c828962004c79565b62014538565b50600062014529565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b906103235491600092602082019182515190620145f38262002b80565b9162014603604051938462002ab3565b80835262014614601f199162002b80565b01366020840137620146298451518462005ebb565b90156201457e576201463b9062004d95565b918693855151156201457457620146528162004d95565b975b865151811015620147ca5760008080805b87858c888410620146e05750839450620146889392506201426091508862004c79565b60068110156200294257600314620146ad575b50620146a79062004c12565b62014654565b6000905b8a818310620146c25750506201469b565b8298620142b7620146d99394620142c49362004c79565b90620146b1565b620146f3620146fa939285925162004c79565b5162014a42565b93909480831180620147b6575b156201476d57505091838562014763575b6006811015620029425760038f911462014743575b50506201473a9062004c12565b91909162014665565b946201475a9162001a9c826201473a959862004c79565b93908d6201472d565b6000955062014718565b8094929591951480620147a2575b156201472d576006811015620029425760038f9114620147435750506201473a9062004c12565b50600681101562002942578015156201477b565b506006861015620029425785151562014707565b505093505090929350600093845b8351861015620148ed57620147f2620143e4878662004c79565b90600680831015620029425760029283036201481d57505062014816909562004c12565b94620147d8565b6201482d620143e4898862004c79565b92818410156200294257600380941480620148d9575b15620148585750505062014816909562004c12565b6201486d620143e48a899b9694959b62004c79565b9280841015620029425760058094149283620148c2575b5082620148ac575b5050620148a0575b50620148169062004c12565b95506201481662014894565b909150881015620029425787141538806201488c565b908093508a10156200294257891415913862014884565b508183101562002942578083141562014843565b92509290935060068210156200294257600382036201493c575b620149128162004d95565b9360005b82811062014925575050509190565b806201455862014936928462004c79565b62014916565b50600062014907565b156201494d57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b91929060009081948294620149bd61032254841062014945565b60ff6005620149cc8562005c20565b50015460081c161562014a355782620149e9928592600162014c1c565b620149f5575b50929190565b809450600192935062014a09915062005c20565b50015490600362014a2a60ff62014a208662005c20565b5054169462005c20565b5001549138620149ef565b5050509150915080918190565b9192906000908194829462014a5c61032354841062014945565b60ff600562014a6b8562005be0565b50015460081c161562014a35578262014a879285928362014c1c565b62014a925750929190565b809450600192935062014aa6915062005be0565b50015490600362014a2a60ff62014abd8662005be0565b5054169462005be0565b9062002b5a606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262014b3e815180926020868601910162002d20565b810103604181018552018362002ab3565b606d62002b5a919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262014bc1815180926020605f8701910162002d20565b82016d016103737b2329034b73232bc1d160951b605f82015262014bef825180936020878501910162002d20565b0103604d81018552018362002ab3565b805482101562004c305760005260206000209060031b0190600090565b93929190841562014fad5762014c4661032254841062000ee962014c408662005028565b62014ac7565b62014c7d600262014c578562005c20565b500154851062000ee962014c6b8662005028565b62014c768862005028565b9062014b4f565b841562014f8e5762014cad600162014ca486600262014c9c8862005c20565b500162014bff565b50015460ff1690565b945b62014cba8662002edc565b8562014ccb57505050505050600090565b62014cd68662002edc565b60039580870362014ced5750505050505050600190565b62014cf88162002edc565b6004810362014d0d5750505050505050600090565b62014d188162002edc565b6001810362014d2e5750620031f8955062014fdd565b91959392949062014d3f8362002edc565b600280931462014d56575b50505050505050600090565b801562014f705762014d80600162014d74848662014c9c8962005c20565b50015460081c60ff1690565b935b811562014f54578562014d9b848662014c9c8562005c20565b500154965b62014dab8862004d95565b9860005b89811062014ec95750505050505062014dc88262002937565b6001820362014e2b57505050906001916000915b81831062014dea5750505090565b9091928062014e08575b62014e00909362004c12565b919062014ddc565b5062014e0062014e2362014e1d858462004c79565b51151590565b905062014df4565b62014e368262002937565b810362014e905750509060009182915b81831062014e545750505090565b909192801562014e73575b62014e6b909362004c12565b919062014e46565b5062014e6b62014e8862014e1d858462004c79565b905062014e5f565b90915062014e9e8162002937565b1462014eb257503880808080808062014d4a565b62014ec562014e1d620031f89262004c22565b1590565b808b62014f12828c8a8c8a8c1562014f335762014f08949262014efe949262014c9c62014ef69362005c20565b500162004e91565b90549060031b1c90565b8787878b62014c1c565b62014f2662014f2d9462000ef09362004c79565b9015159052565b62014daf565b62014f4e949262014efe949262014c9c62014ef69362005be0565b62014f08565b8562014f66848662014c9c8562005be0565b5001549662014da0565b62014f87600162014d74848662014c9c8962005be0565b9362014d82565b62014fa6600162014ca486600262014c9c8862005be0565b9462014caf565b62014fc661032354841062000ee962014c408662005028565b62014fd7600262014c578562005be0565b62014c7d565b93926004620150279186600014620151f557600262015002878262014c9c8562005c20565b500154955b8715620151e457600262014c9c6201501f9362005c20565b5001620035d2565b916032841115620151d857603384101580620151cc575b620151bf57609784101580620151b3575b620151a65760d38410158062015199575b6201518d5761012d8410158062015181575b62015174576101918410158062015167575b6201515a576101af841015806201514d575b62015140576101cd8410158062015133575b62015126576101f58410158062015119575b6201510c5761025984101580620150ff575b620150f157506102bd831015620150e65750505050600090565b620031f89362022e31565b9050620031f893506202a144565b506102bc841115620150cc565b50620031f893506201d479565b50610258841115620150ba565b50620031f893506202aaa8565b506101f4841115620150a8565b50620031f893506202b50b565b506101cc84111562015096565b50620031f89350620225a0565b506101ae84111562015084565b50620031f89350620273b8565b50610190841062015072565b50620031f89362015212565b5061012c84111562015060565b50620031f8935062022c1c565b5060b48411156201504f565b5050620031f8926201e0d9565b5060958411156201503e565b50620031f893620243bf565b600262014c9c6201501f9362005be0565b600262015208878262014c9c8562005be0565b5001549562015007565b9260d38114620157e15760d48114620157d45760d58114620157c75760d68114620157ba5760d78114620157ad5760d88114620157a05760d98114620157945760da8114620157875760db81146201577a5760dc81146201576e5760dd81146201575f5760de8114620157505760df8114620157435760e08114620157365760e181146201572a5760e281146201571d5760e38114620157105760e48114620157045760e58114620156f55760e68114620156e65760e78114620156d95760e88114620156cc5760e98114620156bf5760ea8114620156b25760eb8114620156a55760ec8114620156985760ed81146201568b5760ee81146201567e5760ef8114620156715760f08114620156645760f18114620156575760f281146201564a5760f381146201563d5760f48114620156305760f58114620156235760f68114620156165760f78114620156095760f88114620155fc5760f98114620155f05760fa8114620155e45760fb8114620155d85760fc8114620155cc5760fd8114620155c05760fe8114620155b45760ff8114620155a85761010081146201559c5761010181146201559057610102811462015584576101038114620155785761010481146201556c5761010581146201556057610106811462015554576101078114620155485761010881146201553c576101098114620155305761010a8114620155245761010b8114620155185761010c81146201550c5761010d8114620155005761010e8114620154f45761010f8114620154e8576101108114620154dc576101118114620154d0576101128114620154c4576101138114620154b8576101148114620154ac576101158114620154a057610116146201549557505050600090565b620031f8926201cb32565b50620031f8926201c90b565b50620031f8926201c6e4565b50620031f8926201c3e3565b50620031f8926201c1c4565b50620031f8926201bfa5565b50620031f8926201bd73565b50620031f8926201bbaa565b50620031f8926201b9e1565b50620031f8926201b7a9565b50620031f8926201b5e2565b50620031f8926201b2b7565b50620031f8926201b085565b50620031f8926201aebc565b50620031f8926201acf3565b50620031f8926201aae5565b50620031f8926201a8ad565b50620031f8926201a6e6565b50620031f8926201a3b4565b50620031f8926201a154565b50620031f89262019f83565b50620031f89262019da2565b50620031f89262019bdb565b50620031f89262019985565b50620031f892620197bc565b50620031f892620195f3565b50620031f89262019312565b50620031f89262019012565b50620031f89262018d25565b50620031f89262018a25565b50620031f89250620188a0565b50620031f892506201875b565b50620031f89250620185e9565b50620031f89250620184a4565b50620031f892506201835f565b50620031f892506201821b565b50620031f89250620180a6565b50620031f8925062017f62565b50620031f8925062017e1e565b50620031f8925062017cdd565b50620031f8925062017b9a565b50620031f8925062017a59565b50620031f8925062017910565b50620031f89250620177cc565b50620031f8925062017688565b50620031f8925062017513565b50620031f8925062017375565b50620031f8925062017232565b509050620031f89150620171d7565b509050620031f891506201717a565b50620031f89262016f3c565b50620031f8925062016dad565b50620031f8925062016c5e565b50620031f89262016a47565b50620031f892506201689f565b50620031f8925062016752565b509050620031f89150620166f7565b509050620031f891506201668a565b50620031f8926201643e565b50620031f89250620162af565b50620031f892506201615a565b50620031f89262015f2c565b50620031f8925062015d74565b50620031f8925062015c18565b50620031f8925062015b17565b50620031f89250620159ea565b50620031f89250620158e9565b50620031f8925090602001906001825151036201589057600162015806835162004c22565b515103620158365762015819906201ce37565b91901562006640576200685462015831915162004c22565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001825151036201599157600162015907835162004c22565b51510362015937576201591a906201ce37565b91901562006640576200685462015932915162004c22565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015abe57600262015a08835162004c22565b51510362015a625762015a1b906201ce37565b9015620066405762015a3262006854835162004c22565b51811015918262015a4257505090565b62015a5c91925062015a55905162004c22565b5162004c46565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015bbf57600162015b35835162004c22565b51510362015b655762015b48906201ce37565b91901562006640576200685462015b60915162004c22565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90604001600191828251510362015d1a578262015c36835162004c22565b51510362015cc05762015c49906201d1aa565b156200663857829160009182945b62015c65575b505050905090565b805185101562015cba576001600160a01b038062015c84878462004c79565b51169062015c9762006854855162004c22565b51160362015cb25762015cab849562004c12565b9462015c57565b505091505090565b62015c5d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362015ed2578262015d92835162004c22565b51511062015e785762015da5906201d1aa565b156200663857600091835b62015dbc575b50505090565b815183101562015e7257600080855b62015df4575b501562015deb5762015de4849362004c12565b9262015db0565b50505050600090565b62015e058396949295965162004c22565b515181101562015e67576001600160a01b038062015e24888562004c79565b51169062015e388362007494875162004c22565b51161462015e5a579062015e4e84939262004c12565b90939594919262015dcb565b5091809493503862015dd1565b949390929462015dd1565b62015db6565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016100578462015f4e845162004c22565b515103620160a65762015f61906201d1aa565b1562015fff5784931562016016576000935b62015f7f575050505090565b805184101562005131576001600160a01b038062015f9e868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262015fc9888662004c79565b51166000528452600020015462015fe562006854855162004c22565b510362015fff5762015ff8859462004c12565b9362015f73565b5050505050600090565b5050505050505050600090565b6000935b62016026575050505090565b805184101562005131576001600160a01b038062016045868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016070888662004c79565b5116600052845260002001546201608c62006854855162004c22565b510362015fff576201609f859462004c12565b936201601a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016255578262016178835162004c22565b515103620161fb576201618b906201d1aa565b919091156200663857600091835b620161a75750505050600090565b8051831015620161f55783926001600160a01b0380620161c8838562004c79565b511690620161db62006854865162004c22565b511614620050f757620161ee9062004c12565b9262016199565b62015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620163e45782620162cd835162004c22565b5151106201638a57620162e0906201d1aa565b15620066385782916000935b620162fa5750505050600090565b8151841015620161f5576000835b62016322575b506201631b839462004c12565b93620162ec565b93929162016331825162004c22565b515185101562016381576001600160a01b038062016350868462004c79565b511690620163648762007494865162004c22565b51161462015cb2576201637983949562004c12565b909262016308565b9192936201630e565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016630578462016460845162004c22565b515103620165d65762016473906201d1aa565b9190911562015fff5784931562016534576000935b62016497575050505050600090565b81518410156201652e5784936001600160a01b039081620164b9828662004c79565b511660005261032080845260409060ff826000205416620164ea575b5050620164e3915062004c12565b9362016488565b8293620164fa6002948862004c79565b5116600052845260002001546201651662006854865162004c22565b51146201652657803880620164d5565b505050505090565b62015fff565b6000935b62016547575050505050600090565b81518410156201652e5784936001600160a01b03908162016569828662004c79565b51166000526106b880845260409060ff8260002054166201659a575b505062016593915062004c12565b9362016538565b8293620165aa6002948862004c79565b511660005284526000200154620165c662006854865162004c22565b5114620165265780388062016585565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62016695816201d1aa565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620166ca838762004c79565b51169083511603620166e757620166e19062004c12565b620166ab565b5050905090565b50505050600190565b62016702816201d1aa565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062016735838662004c79565b5116908351161462006625576201674c9062004c12565b62016716565b90604001600191828251510362016845578262016770835162004c22565b515103620167eb5762016783906201d233565b156200663857829160009182945b6201679e57505050905090565b805185101562015cba576001600160a01b0380620167bd878462004c79565b511690620167d062006854855162004c22565b51160362015cb257620167e4849562004c12565b9462016791565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620169ed5782620168bd835162004c22565b5151106201699357620168d0906201d233565b156200663857600091835b620168e65750505090565b815183101562015e7257600080855b62016915575b501562015deb576201690e849362004c12565b92620168db565b620169268396949295965162004c22565b515181101562016988576001600160a01b038062016945888562004c79565b511690620169598362007494875162004c22565b5116146201697b57906201696f84939262004c12565b909395949192620168f5565b50918094935038620168fb565b9493909294620168fb565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016c04578462016a69845162004c22565b51510362016baa5762016a7c906201d233565b1562015fff5784931562016b1a576000935b62016a9a575050505090565b805184101562005131576001600160a01b038062016ab9868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262016ae4888662004c79565b51166000528452600020015462016b0062006854855162004c22565b510362015fff5762016b13859462004c12565b9362016a8e565b6000935b62016b2a575050505090565b805184101562005131576001600160a01b038062016b49868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016b74888662004c79565b51166000528452600020015462016b9062006854855162004c22565b510362015fff5762016ba3859462004c12565b9362016b1e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016d53578262016c7c835162004c22565b51510362016cf95762016c8f906201d233565b919091156200663857600091835b62016cab5750505050600090565b8051831015620161f55783926001600160a01b038062016ccc838562004c79565b51169062016cdf62006854865162004c22565b511614620050f75762016cf29062004c12565b9262016c9d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016ee2578262016dcb835162004c22565b51511062016e885762016dde906201d233565b15620066385782916000935b62016df85750505050600090565b8151841015620161f5576000835b62016e20575b5062016e19839462004c12565b9362016dea565b93929162016e2f825162004c22565b515185101562016e7f576001600160a01b038062016e4e868462004c79565b51169062016e628762007494865162004c22565b51161462015cb25762016e7783949562004c12565b909262016e06565b91929362016e0c565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362017120578462016f5e845162004c22565b515103620170c65762016f71906201d233565b9190911562015fff5784931562017024576000935b62016f95575050505050600090565b81518410156201652e5784936001600160a01b03908162016fb7828662004c79565b511660005261032080845260409060ff82600020541662016fe8575b505062016fe1915062004c12565b9362016f86565b829362016ff86002948862004c79565b5116600052845260002001546201701462006854865162004c22565b5114620165265780388062016fd3565b6000935b62017037575050505050600090565b81518410156201652e5784936001600160a01b03908162017059828662004c79565b51166000526106b880845260409060ff8260002054166201708a575b505062017083915062004c12565b9362017028565b82936201709a6002948862004c79565b511660005284526000200154620170b662006854865162004c22565b5114620165265780388062017075565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62017185816201d233565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620171ba838762004c79565b51169083511603620166e757620171d19062004c12565b6201719b565b620171e2816201d233565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062017215838662004c79565b5116908351161462006625576201722c9062004c12565b620171f6565b9060200160019182825151036201731b578262017250835162004c22565b515103620172c15762017263906201d26c565b9050156200663857829160009182945b6201728057505050905090565b805185101562015cba5762017296858262004c79565b51620172a762006854845162004c22565b510362015cb257620172ba849562004c12565b9462017273565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620174b9578262017393835162004c22565b5151106201745f57620173a6906201d26c565b9050156200663857600091835b620173be5750505090565b815183101562015e7257600080855b620173ed575b501562015deb57620173e6849362004c12565b92620173b3565b620173fe8396949295965162004c22565b5151811015620174545762017414868362004c79565b51620174268262007494865162004c22565b51146201744757906201743b84939262004c12565b909395949192620173cd565b50918094935038620173d3565b9493909294620173d3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201762e57600262017532835162004c22565b515103620175d45762017545906201d26c565b9050919091156200663857829160009182945b6201756557505050905090565b815185101562015cba576201757b858362004c79565b516201758c62006854835162004c22565b51118015620175ae575b62015cb257620175a7849562004c12565b9462017558565b50620175bb858362004c79565b51620175cc62015a55835162004c22565b511062017596565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620177725782620176a6835162004c22565b5151036201771857620176b9906201d26c565b9050156200663857829160009182945b620176d657505050905090565b805185101562015cba57620176ec858262004c79565b51620176fd62006854845162004c22565b51101562015cb25762017711849562004c12565b94620176c9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620178b65782620177ea835162004c22565b5151036201785c57620177fd906201d26c565b9050156200663857829160009182945b6201781a57505050905090565b805185101562015cba5762017830858262004c79565b516201784162006854845162004c22565b51111562015cb25762017855849562004c12565b946201780d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620179ff57826201792e835162004c22565b515103620179a55762017941906201d26c565b909391501562006638578060009384925b6201796b575b5050506200685462015831915162004c22565b90919381518510156201799e576200defd62017995916201798d878562004c79565b519062006271565b91908162017952565b9362017958565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017b40578262017a77835162004c22565b51510362017ae65762017a8a906201d26c565b909391501562006638578060009384925b62017ab4575b5050506200685462015932915162004c22565b909193815185101562017adf576200defd62017ad6916201798d878562004c79565b91908162017a9b565b9362017aa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200190600190818351510362017c8357600262017bba845162004c22565b51510362017c295762017bcd906201d26c565b909150156200663857906000918183925b62017bf7575b50505062015a3262006854835162004c22565b909192825184101562017c2257620064f062017c19916201798d868662004c79565b91908062017bde565b9262017be4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017dc4578262017cfb835162004c22565b51510362017d6a5762017d0e906201d26c565b909391501562006638578060009384925b62017d38575b5050506200685462015b60915162004c22565b909193815185101562017d63576200defd62017d5a916201798d878562004c79565b91908162017d1f565b9362017d25565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017f08578262017e3c835162004c22565b51510362017eae5762017e4f906201d26c565b90929150156200663857600091835b62017e6c5750505050600090565b8051831015620161f5578262017e8485948362004c79565b5162017e9562006854855162004c22565b5110620050f75762017ea79062004c12565b9262017e5e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201804c578262017f80835162004c22565b51510362017ff25762017f93906201d26c565b9291921562015deb57600092845b62017fb0575050505050600090565b80518410156201652e578362017fc886958462004c79565b5162017fd962006854865162004c22565b5111620165265762017feb9062004c12565b9362017fa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620181c1576002620180c5835162004c22565b5151036201816757620180d8906201d26c565b929091921562015deb57600092845b620180f6575050505050600090565b80518410156201652e57836201810e86958562004c79565b516201811f62006854855162004c22565b5111158062018140575b6201652657620181399062004c12565b93620180e7565b506201814d818562004c79565b516201815e62015a55855162004c22565b51101562018129565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018305578262018239835162004c22565b515103620182ab576201824c906201d26c565b9291921562015deb57600092845b62018269575050505050600090565b80518410156201652e57836201828186958462004c79565b516201829262006854865162004c22565b51146201652657620182a49062004c12565b936201825a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201844a57826201837d835162004c22565b515103620183f05762018390906201d26c565b9050919091156200663857600091835b620183ae5750505050600090565b8051831015620161f55782620183c685948362004c79565b51620183d762006854855162004c22565b5110620050f757620183e99062004c12565b92620183a0565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201858f5782620184c2835162004c22565b5151036201853557620184d5906201d26c565b9050919091156200663857600091835b620184f35750505050600090565b8051831015620161f557826201850b85948362004c79565b516201851c62006854855162004c22565b5111620050f7576201852e9062004c12565b92620184e5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201870157600262018608835162004c22565b515103620186a7576201861b906201d26c565b9050156200663857600091835b620186365750505050600090565b8151831015620161f557826201864e85948462004c79565b516201865f62006854845162004c22565b5111158062018680575b620050f757620186799062004c12565b9262018628565b506201868d818462004c79565b516201869e62015a55845162004c22565b51101562018669565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018846578262018779835162004c22565b515103620187ec576201878c906201d26c565b9050919091156200663857600091835b620187aa5750505050600090565b8051831015620161f55782620187c285948362004c79565b51620187d362006854855162004c22565b5114620050f757620187e59062004c12565b926201879c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620189cb5782620188be835162004c22565b5151106201897157620188d1906201d26c565b905015620066385782916000935b620188ed5750505050600090565b8151841015620161f5576000835b62018915575b506201890e839462004c12565b93620188df565b93929162018924825162004c22565b515185101562018968576201893a848262004c79565b516201894c8662007494855162004c22565b511462015cb2576201896083949562004c12565b9092620188fb565b91929362018901565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362018ccb578462018a47845162004c22565b51511062018c715762018a5a906201d233565b9290921562015fff5784931562018b6e576000935b62018a7b575050505090565b825184101562005131576001600160a01b038062018a9a868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b62018ae0575b505050501562015fff5762018ad9859462004c12565b9362018a6f565b9092989591939662018af3865162004c22565b51518a101562018b62578162018b0a8a8362004c79565b5116600052838352600285600020015462018b2b8b62007494895162004c22565b511462018b4f5762018b408798999a62004c12565b93919097999894929662018abd565b9650509396505050843880808062018ac3565b96938296995062018ac3565b6000935b62018b7e575050505090565b825184101562005131576001600160a01b038062018b9d868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b62018be3575b505050501562015fff5762018bdc859462004c12565b9362018b72565b9092989591939662018bf6865162004c22565b51518a101562018c65578162018c0d8a8362004c79565b5116600052838352600285600020015462018c2e8b62007494895162004c22565b511462018c525762018c438798999a62004c12565b93919097999894929662018bc0565b9650509396505050843880808062018bc6565b96938296995062018bc6565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362018fb8578362018d44835162004c22565b51511062018f5e5762018d57906201d233565b9490941562015fff5783921562018e695793926000905b62018d7d575050505050600090565b83518110156201652e576001600160a01b038062018d9c838762004c79565b511660005261032080875260409160ff83600020541662018dd2575b5050509362018dc983949562004c12565b90949362018d6e565b6000929190865b62018de6575b5062018db8565b90929791939662018df8865162004c22565b515189101562018e5e578162018e0f898362004c79565b5116600052838352600285600020015462018e308a62007494895162004c22565b511462018e525762018e4487989962004c12565b939190979894929862018dd9565b50505050505091505090565b969382985062018ddf565b93926000905b62018e7e575050505050600090565b83518110156201652e576001600160a01b038062018e9d838762004c79565b51166000526106b880875260409160ff83600020541662018ed3575b5050509362018eca83949562004c12565b90949362018e6f565b6000929190865b62018ee7575b5062018eb9565b90929791939662018ef9865162004c22565b515189101562018f53578162018f10898362004c79565b5116600052838352600285600020015462018f318a62007494895162004c22565b511462018e525762018f4587989962004c12565b939190979894929862018eda565b969382985062018ee0565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101906001938483515103620192b8578462019034845162004c22565b5151106201925e5762019047906201d1aa565b9290921562015fff578493156201915b576000935b62019068575050505090565b825184101562005131576001600160a01b038062019087868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b620190cd575b505050501562015fff57620190c6859462004c12565b936201905c565b90929895919396620190e0865162004c22565b51518a10156201914f5781620190f78a8362004c79565b51166000528383526002856000200154620191188b62007494895162004c22565b51146201913c576201912d8798999a62004c12565b939190979998949296620190aa565b96505093965050508438808080620190b0565b969382969950620190b0565b6000935b6201916b575050505090565b825184101562005131576001600160a01b03806201918a868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b620191d0575b505050501562015fff57620191c9859462004c12565b936201915f565b90929895919396620191e3865162004c22565b51518a1015620192525781620191fa8a8362004c79565b511660005283835260028560002001546201921b8b62007494895162004c22565b51146201923f57620192308798999a62004c12565b939190979998949296620191ad565b96505093965050508438808080620191b3565b969382969950620191b3565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362019599578362019331835162004c22565b5151106201953f5762019344906201d1aa565b9490941562015fff578392156201944a5793926000905b6201936a575050505050600090565b83518110156201652e576001600160a01b038062019389838762004c79565b511660005261032080875260409160ff836000205416620193bf575b50505093620193b683949562004c12565b9094936201935b565b6000929190865b620193d3575b50620193a5565b909297919396620193e5865162004c22565b51518910156201943f5781620193fc898362004c79565b511660005283835260028560002001546201941d8a62007494895162004c22565b511462018e52576201943187989962004c12565b9391909798949298620193c6565b9693829850620193cc565b93926000905b6201945f575050505050600090565b83518110156201652e576001600160a01b03806201947e838762004c79565b51166000526106b880875260409160ff836000205416620194b4575b50505093620194ab83949562004c12565b90949362019450565b6000929190865b620194c8575b506201949a565b909297919396620194da865162004c22565b5151891015620195345781620194f1898362004c79565b51166000528383526002856000200154620195128a62007494895162004c22565b511462018e52576201952687989962004c12565b9391909798949298620194bb565b9693829850620194c1565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019762578462019615845162004c22565b515103620197085762019628906201d1aa565b1562015fff578493156201969f576000935b62019646575050505090565b805184101562005131576001600160a01b0362019664858362004c79565b511660005261032582526040600020546201968462006854855162004c22565b51101562015fff5762019698859462004c12565b936201963a565b6000935b620196af575050505090565b805184101562005131576001600160a01b03620196cd858362004c79565b51166000526106bd8252604060002054620196ed62006854855162004c22565b51101562015fff5762019701859462004c12565b93620196a3565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201992b5784620197de845162004c22565b515103620198d157620197f1906201d1aa565b1562015fff5784931562019868576000935b6201980f575050505090565b805184101562005131576001600160a01b036201982d858362004c79565b511660005261032582526040600020546201984d62006854855162004c22565b51111562015fff5762019861859462004c12565b9362019803565b6000935b62019878575050505090565b805184101562005131576001600160a01b0362019896858362004c79565b51166000526106bd8252604060002054620198b662006854855162004c22565b51111562015fff57620198ca859462004c12565b936201986c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101600193848251510362019b81576002620199a7835162004c22565b51510362019b2757620199ba906201d1aa565b9290921562015fff5784931562019a79576000935b620199db575050505090565b825184101562005131576001600160a01b0380620199fa868662004c79565b5116600052610325808352604090816000205462019a1d62006854875162004c22565b511192831562019a43575b50505062015fff5762019a3c859462004c12565b93620199cf565b9091925062019a53878762004c79565b511660005282526000205462019a6e62015a55845162004c22565b511038808062019a28565b6000935b62019a89575050505090565b825184101562005131576001600160a01b038062019aa8868662004c79565b51166000526106bd808352604090816000205462019acb62006854875162004c22565b511192831562019af1575b50505062015fff5762019aea859462004c12565b9362019a7d565b9091925062019b01878762004c79565b511660005282526000205462019b1c62015a55845162004c22565b511038808062019ad6565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019d48578462019bfd845162004c22565b51510362019cee5762019c10906201d1aa565b1562015fff5784931562019c86576000935b62019c2e575050505090565b805184101562005131576001600160a01b0362019c4c858362004c79565b5116600052610325825260406000205462019c6c62006854855162004c22565b510362015fff5762019c7f859462004c12565b9362019c22565b6000935b62019c96575050505090565b805184101562005131576001600160a01b0362019cb4858362004c79565b51166000526106bd825260406000205462019cd462006854855162004c22565b510362015fff5762019ce7859462004c12565b9362019c8a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019f29578462019dc4845162004c22565b51510362019ecf5762019dd7906201d1aa565b1562015fff5784931562019e625760009182945b62019dfc575b505050505050600090565b815185101562019e5c5785946001600160a01b0362019e1c828562004c79565b511684526103258252604084205462019e3a62006854875162004c22565b511062019e535762019e4c9062004c12565b9462019deb565b50505050505090565b62019df1565b60009182945b62019e7857505050505050600090565b815185101562019e5c5785946001600160a01b0362019e98828562004c79565b511684526106bd8252604084205462019eb662006854875162004c22565b511062019e535762019ec89062004c12565b9462019e68565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201a0fa578462019fa5845162004c22565b5151036201a0a05762019fb8906201d1aa565b1562015fff578493156201a0335760009182945b62019fdc57505050505050600090565b815185101562019e5c5785946001600160a01b0362019ffc828562004c79565b51168452610325825260408420546201a01a62006854875162004c22565b511162019e53576201a02c9062004c12565b9462019fcc565b60009182945b6201a04957505050505050600090565b815185101562019e5c5785946001600160a01b036201a069828562004c79565b511684526106bd825260408420546201a08762006854875162004c22565b511162019e53576201a0999062004c12565b946201a039565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910160019384825151036201a35a5760026201a176835162004c22565b5151036201a300576201a189906201d1aa565b9190911562015fff578493156201a24d576000935b6201a1ad575050505050600090565b81518410156201652e5784936001600160a01b03806201a1ce838662004c79565b511660005261032580865260409081600020546201a1f162006854875162004c22565b51111592836201a216575b50505062016526576201a20f9062004c12565b936201a19e565b909192506201a226848762004c79565b51166000528552600020546201a24162015a55845162004c22565b5110153880806201a1fc565b6000935b6201a260575050505050600090565b81518410156201652e5784936001600160a01b03806201a281838662004c79565b51166000526106bd80865260409081600020546201a2a462006854875162004c22565b51111592836201a2c9575b50505062016526576201a2c29062004c12565b936201a251565b909192506201a2d9848762004c79565b51166000528552600020546201a2f462015a55845162004c22565b5110153880806201a2af565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201a53157836201a3d3845162004c22565b5151036201a4d757156201a45c576201a3ec906201d1aa565b156200663857829160009182945b6201a40757505050905090565b805185101562015cba576201a4316001600160a01b036201a429878462004c79565b51166201a5e7565b6201a44162006854845162004c22565b51101562015cb2576201a455849562004c12565b946201a3fa565b6201a467906201d1aa565b156200663857829160009182945b6201a48257505050905090565b805185101562015cba576201a4ac6001600160a01b036201a4a4878462004c79565b51166201a58b565b6201a4bc62006854845162004c22565b51101562015cb2576201a4d0849562004c12565b946201a475565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201a59f57505090565b90916200824c6201a5e0916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b9062006271565b906201a591565b60009081905b606482106201a5fb57505090565b90916200824c6201a633916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a5ed565b600091906201a694576000905b606482106201a65557505090565b90916200824c6201a68d916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a647565b81905b606482106201a6a557505090565b90916200824c6201a6df916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b906201a697565b916020019060019283835151036201a85357836201a705845162004c22565b5151036201a7f957156201a786576201a71e906201d1aa565b156200663857829160009182945b6201a73957505050905090565b805185101562015cba576201a75b6001600160a01b036201a429878462004c79565b6201a76b62006854845162004c22565b51111562015cb2576201a77f849562004c12565b946201a72c565b6201a791906201d1aa565b156200663857829160009182945b6201a7ac57505050905090565b805185101562015cba576201a7ce6001600160a01b036201a4a4878462004c79565b6201a7de62006854845162004c22565b51111562015cb2576201a7f2849562004c12565b946201a79f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201aa8b5760026201a8cd845162004c22565b5151036201aa3157156201a986576201a8e6906201d1aa565b919091156200663857829160009182945b6201a90457505050905090565b815185101562015cba576001600160a01b036201a927816201a429888662004c79565b6201a93762006854845162004c22565b51119081156201a95b575b5062015cb2576201a954849562004c12565b946201a8f7565b6201a96d91506201a429878562004c79565b6201a97d62015a55835162004c22565b5110386201a942565b6201a991906201d1aa565b919091156200663857829160009182945b6201a9af57505050905090565b815185101562015cba576001600160a01b036201a9d2816201a4a4888662004c79565b6201a9e262006854845162004c22565b51119081156201aa06575b5062015cb2576201a9ff849562004c12565b946201a9a2565b6201aa1891506201a4a4878562004c79565b6201aa2862015a55835162004c22565b5110386201a9ed565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160208091019160019384845151036201ac9957846201ab06855162004c22565b5151036201ac3f57156201ab87576201ab2091506201d1aa565b156200663857829160009182945b6201ab3b57505050905090565b805185101562015cba576201ab5d6001600160a01b036201a429878462004c79565b6201ab6d62006854845162004c22565b510362015cb2576201ab80849562004c12565b946201ab2e565b6201ab92906201d1aa565b9290921562015deb57600092845b6201abac575050505090565b805184101562005131576001600160a01b036201abca858362004c79565b511660009081905b606482106201ac075750506201abed62006854845162004c22565b510362015fff576201ac00859462004c12565b936201aba0565b90916200824c6201ac38916201a5d98560031b8560005261039b81018a526103996040600020549101549062004eaa565b906201abd2565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201ae6257836201ad12845162004c22565b5151036201ae0857156201ad94576201ad2b906201d1aa565b919091156200663857600091835b6201ad475750505050600090565b8051831015620161f55783926201ad6b6001600160a01b036201a429838562004c79565b6201ad7b62006854855162004c22565b5110620050f7576201ad8d9062004c12565b926201ad39565b6201ad9f906201d1aa565b919091156200663857600091835b6201adbb5750505050600090565b8051831015620161f55783926201addf6001600160a01b036201a4a4838562004c79565b6201adef62006854855162004c22565b5110620050f7576201ae019062004c12565b926201adad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b02b57836201aedb845162004c22565b5151036201afd157156201af5d576201aef4906201d1aa565b919091156200663857600091835b6201af105750505050600090565b8051831015620161f55783926201af346001600160a01b036201a429838562004c79565b6201af4462006854855162004c22565b5111620050f7576201af569062004c12565b926201af02565b6201af68906201d1aa565b919091156200663857600091835b6201af845750505050600090565b8051831015620161f55783926201afa86001600160a01b036201a4a4838562004c79565b6201afb862006854855162004c22565b5111620050f7576201afca9062004c12565b926201af76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b25d5760026201b0a5845162004c22565b5151036201b20357156201b15b576201b0be906201d1aa565b156200663857600091835b6201b0d75750505050600090565b8151831015620161f55783926001600160a01b036201b0fc816201a429848762004c79565b6201b10c62006854855162004c22565b51111590816201b12f575b50620050f7576201b1289062004c12565b926201b0c9565b6201b14191506201a429838662004c79565b6201b15162015a55845162004c22565b511015386201b117565b6201b166906201d1aa565b156200663857600091835b6201b17f5750505050600090565b8151831015620161f55783926001600160a01b036201b1a4816201a4a4848762004c79565b6201b1b462006854855162004c22565b51111590816201b1d7575b50620050f7576201b1d09062004c12565b926201b171565b6201b1e991506201a4a4838662004c79565b6201b1f962015a55845162004c22565b511015386201b1bf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b43457836201b2d6845162004c22565b5151036201b3da57156201b35f576201b2ef906201d1aa565b156200663857829160009182945b6201b30a57505050905090565b805185101562015cba576201b3346001600160a01b036201b32c878462004c79565b51166201b4e3565b6201b34462006854845162004c22565b51101562015cb2576201b358849562004c12565b946201b2fd565b6201b36a906201d1aa565b156200663857829160009182945b6201b38557505050905090565b805185101562015cba576201b3af6001600160a01b036201b3a7878462004c79565b51166201b48e565b6201b3bf62006854845162004c22565b51101562015cb2576201b3d3849562004c12565b946201b378565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201b4a257505090565b90916200824c6201b4dc916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b494565b60009081905b606482106201b4f757505090565b90916200824c6201b52f916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b4e9565b600091906201b590576000905b606482106201b55157505090565b90916200824c6201b589916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b543565b81905b606482106201b5a157505090565b90916200824c6201b5db916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b593565b916020019060019283835151036201b74f57836201b601845162004c22565b5151036201b6f557156201b682576201b61a906201d1aa565b156200663857829160009182945b6201b63557505050905090565b805185101562015cba576201b6576001600160a01b036201b32c878462004c79565b6201b66762006854845162004c22565b51111562015cb2576201b67b849562004c12565b946201b628565b6201b68d906201d1aa565b156200663857829160009182945b6201b6a857505050905090565b805185101562015cba576201b6ca6001600160a01b036201b3a7878462004c79565b6201b6da62006854845162004c22565b51111562015cb2576201b6ee849562004c12565b946201b69b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b9875760026201b7c9845162004c22565b5151036201b92d57156201b882576201b7e2906201d1aa565b919091156200663857829160009182945b6201b80057505050905090565b815185101562015cba576001600160a01b036201b823816201b32c888662004c79565b6201b83362006854845162004c22565b51119081156201b857575b5062015cb2576201b850849562004c12565b946201b7f3565b6201b86991506201b32c878562004c79565b6201b87962015a55835162004c22565b5110386201b83e565b6201b88d906201d1aa565b919091156200663857829160009182945b6201b8ab57505050905090565b815185101562015cba576001600160a01b036201b8ce816201b3a7888662004c79565b6201b8de62006854845162004c22565b51119081156201b902575b5062015cb2576201b8fb849562004c12565b946201b89e565b6201b91491506201b3a7878562004c79565b6201b92462015a55835162004c22565b5110386201b8e9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201bb5057836201ba00845162004c22565b5151036201baf657156201ba82576201ba19906201d1aa565b919091156200663857600091835b6201ba355750505050600090565b8051831015620161f55783926201ba596001600160a01b036201b32c838562004c79565b6201ba6962006854855162004c22565b5110620050f7576201ba7b9062004c12565b926201ba27565b6201ba8d906201d1aa565b919091156200663857600091835b6201baa95750505050600090565b8051831015620161f55783926201bacd6001600160a01b036201b3a7838562004c79565b6201badd62006854855162004c22565b5110620050f7576201baef9062004c12565b926201ba9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160200190600192836201bbbf845162004c22565b5151036201bd195783835151036201bcbf57156201bc4b576201bbe2906201d1aa565b919091156200663857600091835b6201bbfe5750505050600090565b8051831015620161f55783926201bc226001600160a01b036201b32c838562004c79565b6201bc3262006854855162004c22565b5111620050f7576201bc449062004c12565b926201bbf0565b6201bc56906201d1aa565b919091156200663857600091835b6201bc725750505050600090565b8051831015620161f55783926201bc966001600160a01b036201b3a7838562004c79565b6201bca662006854855162004c22565b5111620050f7576201bcb89062004c12565b926201bc64565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b916020019060026201bd86835162004c22565b5151036201bf4b5760019283835151036201bef157156201be49576201bdac906201d1aa565b156200663857600091835b6201bdc55750505050600090565b8151831015620161f55783926001600160a01b036201bdea816201b32c848762004c79565b6201bdfa62006854855162004c22565b51111590816201be1d575b50620050f7576201be169062004c12565b926201bdb7565b6201be2f91506201b32c838662004c79565b6201be3f62015a55845162004c22565b511015386201be05565b6201be54906201d1aa565b156200663857600091835b6201be6d5750505050600090565b8151831015620161f55783926001600160a01b036201be92816201b3a7848762004c79565b6201bea262006854855162004c22565b51111590816201bec5575b50620050f7576201bebe9062004c12565b926201be5f565b6201bed791506201b3a7838662004c79565b6201bee762015a55845162004c22565b511015386201bead565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060019384835151036201c16a5760026201bfc8845162004c22565b5151036201c11057156201c072576201bfe1906201d1aa565b9290921562015deb57600092845b6201bffb575050505090565b805184101562005131576201c01562006854845162004c22565b51606481101562004c30576001600160a01b036201c034868462004c79565b5116600052600390811b0182526040600020546201c05762015a55855162004c22565b51101562015fff576201c06b859462004c12565b936201bfef565b6201c07d906201d1aa565b9290921562015deb57600092845b6201c097575050505090565b805184101562005131576201c0b162006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c0d4878562004c79565b511660005260031b0182526040600020546201c0f562015a55855162004c22565b51101562015fff576201c109859462004c12565b936201c08b565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208092019060019384835151036201c3895760026201c1e7845162004c22565b5151036201c32f57156201c291576201c200906201d1aa565b9290921562015deb57600092845b6201c21a575050505090565b805184101562005131576201c23462006854845162004c22565b51606481101562004c30576001600160a01b036201c253868462004c79565b5116600052600390811b0182526040600020546201c27662015a55855162004c22565b51111562015fff576201c28a859462004c12565b936201c20e565b6201c29c906201d1aa565b9290921562015deb57600092845b6201c2b6575050505090565b805184101562005131576201c2d062006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c2f3878562004c79565b511660005260031b0182526040600020546201c31462015a55855162004c22565b51111562015fff576201c328859462004c12565b936201c2aa565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101600392836201c3f9835162004c22565b5151036201c6855760019485835151036201c62b57156201c523576201c41f906201d1aa565b9390931562015fff57600093855b6201c43a57505050505090565b80518510156201c51d576201c45462006854845162004c22565b516064908181101562004c30576001600160a01b03908490826201c4798a8762004c79565b5116600052811b01865260409081600020546201c49b62015a55885162004c22565b51119283156201c4c1575b50505062019df1576201c4ba869562004c12565b946201c42d565b909192506201c4d562006854875162004c22565b519081101562004c305784916201c4ed898662004c79565b5116600052811b018552600020546201c5126201c50b855162004c22565b5162004c57565b51103880806201c4a6565b62016526565b6201c531909392936201d1aa565b9390931562015fff57600093855b6201c54c57505050505090565b80518510156201c51d576201c56662006854845162004c22565b5160648082101562004c30576001600160a01b0391826201c588898662004c79565b511660005261039b8091881b01855260409182600020546201c5af62015a55895162004c22565b51119384156201c5d6575b5050505062019df1576201c5cf869562004c12565b946201c53f565b90919293506201c5eb62006854885162004c22565b519182101562004c30576201c601898662004c79565b5116600052861b018352600020546201c61f6201c50b855162004c22565b5110388080806201c5ba565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201c6fa835162004c22565b5151036201c8b15760019384835151036201c85757156201c7b5576201c720906201d1aa565b9290921562015deb57600092845b6201c73d575050505050600090565b80518410156201652e576201c75762006854845162004c22565b5193606485101562004c305785946001600160a01b036201c779838562004c79565b5116600052600390811b0183526040600020546201c79c62015a55865162004c22565b511062016526576201c7ae9062004c12565b936201c72e565b6201c7c0906201d1aa565b9290921562015deb57600092845b6201c7dd575050505050600090565b80518410156201652e576201c7f762006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201c81d848662004c79565b511660005260031b0183526040600020546201c83e62015a55865162004c22565b511062016526576201c8509062004c12565b936201c7ce565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060026201c921835162004c22565b5151036201cad85760019384835151036201ca7e57156201c9dc576201c947906201d1aa565b9290921562015deb57600092845b6201c964575050505050600090565b80518410156201652e576201c97e62006854845162004c22565b5193606485101562004c305785946001600160a01b036201c9a0838562004c79565b5116600052600390811b0183526040600020546201c9c362015a55865162004c22565b511162016526576201c9d59062004c12565b936201c955565b6201c9e7906201d1aa565b9290921562015deb57600092845b6201ca04575050505050600090565b80518410156201652e576201ca1e62006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201ca44848662004c79565b511660005260031b0183526040600020546201ca6562015a55865162004c22565b511162016526576201ca779062004c12565b936201c9f5565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b916020809101600392836201cb48835162004c22565b5151036201cdd85760019485835151036201cd7e57156201cc6d576201cb6e906201d1aa565b9390931562015fff57600093855b6201cb8c57505050505050600090565b805185101562019e5c576201cba662006854845162004c22565b51946064958681101562004c305787966001600160a01b03918590836201cbce868862004c79565b5116600052811b018752604080600020546201cbef62015a55895162004c22565b51111592836201cc14575b50505062019e53576201cc0d9062004c12565b946201cb7c565b91985091506201cc2962006854875162004c22565b519788101562004c3057889785916201cc43858762004c79565b5116600052811b018652600020546201cc616201c50b865162004c22565b5110153880806201cbfa565b6201cc7b909392936201d1aa565b9390931562015fff57600093855b6201cc9957505050505050600090565b805185101562019e5c576201ccb362006854845162004c22565b519460648087101562004c305787966001600160a01b0390816201ccd8858762004c79565b511660005261039b8091891b01865260409081600020546201ccff62015a558a5162004c22565b51111593846201cd25575b5050505062019e53576201cd1e9062004c12565b946201cc89565b9193509198506201cd3b62006854885162004c22565b519081101562004c305789986201cd53858762004c79565b5116600052871b018452600020546201cd716201c50b865162004c22565b511015388080806201cd0a565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201ce42816201cfc7565b156201cfbe576040810190606082510151511515806201cf83575b156201ce6f5750516060015151600191565b604082510151511515806201cf6a575b156201ce915750516040015151600191565b60808251015151151590816201cf50575b50156201ceb457516080015151600191565b805160c081015151156201cefb57506201ced360c08251015162004c22565b51516201cee457505b600090600090565b60c06201cef49151015162004c22565b5151600191565b602081015151156201cf135750516020015151600191565b60a0015180516201cf27575b50506201cedc565b6201cf329062004c22565b51516201cf4057806201cf1f565b60a06201cef49151015162004c22565b60209150015160268110156200294257601014386201cea2565b506020810151602681101562002942576013146201ce7f565b5060208101805160268110156200294257600c149081156201cfa7575b506201ce5d565b90505160268110156200294257600f14386201cfa0565b50600090600090565b60200180519060269081831015620029425760018093146201d1a55780518281101562002942576002146201d1a55780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760051462015db6578051838110156201d1905760061462015db6578051838110156201d1905760071462015db6578051838110156201d1905760081462015db6578051838110156201d1905760091462015db6578051838110156201d19057600a1462015db6578051838110156201d19057600b1462015db6578051838110156201d19057600c1462015db6578051838110156201d19057600d1462015db6578051838110156201d19057600e1462015db6578051838110156201d19057600f1462015db6578051838110156201d1905760101462015db6578051838110156201d1905760111462015db6578051838110156201d1905760121462015db6578051838110156201d1905760131462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db65751918210156201d17b5750601e14620031f85750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201d1b5816201cfc7565b156201d224576020810151602681101562002942576004146201d211576040015160c0015180516201d1ff57506040516201d1f08162002a5e565b60008152600036813790600090565b6201d20a9062004c22565b5190600190565b60c060406201d20a920151015162004c46565b506040516201d1f08162002a5e565b6020810151602681101562002942576004146201d25957506040516201d1f08162002a5e565b60c060406201d20a920151015162004c22565b6201d277816201d3bc565b156201d3ac57602081019081519160269081841015620029425760018094146201d3915780518281101562002942576003146201d3915780519082821015620029425760048092146201d375578051838110156201d190576005146201d375578051838110156201d190576006146201d375578051838110156201d190576014146201d375578051838110156201d190576015146201d3755751918210156201d17b5750601e146201d357575050604051906201d3348262002a5e565b60008252604051916201d3478362002a5e565b6000835260003681379190600090565b604001916201d37060a0620077f0818651015162004c22565b519190565b505050604001916201d37060a0620077f0818651015162004c22565b5050604001916201d37060a0620077f0818651015162004c22565b50604051906201d3348262002a5e565b60200180519060269081831015620029425760018093146201d1a5578051828110156200294257600214620066385780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db6578051838110156201d19057601e1462015db6578051838110156201d1905760051462015db65751918210156201d17b5750600614620031f85750600090565b916101f581146201d523576101f681146201d517576101f781146201d50b576101f881146201d4ff576101f981146201d4f3576101fa81146201d4e7576101fb81146201d4db576101fc146201d4d0575050600090565b620031f8916201df74565b50620031f8916201ddcf565b50620031f8916201dc6a565b50620031f8916201db05565b50620031f8916201d9a0565b50620031f8916201d7fb565b50620031f8916201d696565b50620031f891906020019060019182815151036201d63c57826201d548825162004c22565b5151036201d5e2576020820151602681101562002942576002036200663857600091835b6201d57a5750505050600090565b604081019260a0936201d591858251015162004c57565b51518210156201d5da57816200749487966201d5b09351015162004c57565b516201d5c162006854855162004c22565b5110620050f7576201d5d39062004c12565b926201d56c565b505062015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d7a157826201d6b5825162004c22565b5151036201d747576020820151602681101562002942576002036200663857600091835b6201d6e75750505050600090565b604081019260a0936201d6fe858251015162004c57565b51518210156201d5da57816200749487966201d71d9351015162004c57565b516201d72e62006854855162004c22565b5111620050f7576201d7409062004c12565b926201d6d9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d9465760026201d81b825162004c22565b5151036201d8ec576020820151602681101562002942576002036200663857600091835b6201d84d5750505050600090565b604081019260a0936201d864858251015162004c57565b51518210156201d5da5781856201d88582620074948a998651015162004c57565b516201d89662006854885162004c22565b51111592836201d8bb575b505050620050f7576201d8b49062004c12565b926201d83f565b5101516201d8cf9250620074949062004c57565b516201d8e062015a55855162004c22565b5110158138806201d8a1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201daab57826201d9bf825162004c22565b5151036201da51576020820151602681101562002942576002036200663857600091835b6201d9f15750505050600090565b604081019260a0936201da08858251015162004c57565b51518210156201d5da57816200749487966201da279351015162004c57565b516201da3862006854855162004c22565b5114620050f7576201da4a9062004c12565b926201d9e3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dc1057826201db24825162004c22565b5151036201dbb6576020820151602681101562002942576002036200663857600091835b6201db565750505050600090565b604081019260a0936201db6d858251015162004c68565b51518210156201d5da57816200749487966201db8c9351015162004c46565b516201db9d62006854855162004c22565b5110620050f7576201dbaf9062004c12565b926201db48565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dd7557826201dc89825162004c22565b5151036201dd1b576020820151602681101562002942576002036200663857600091835b6201dcbb5750505050600090565b604081019260a0936201dcd2858251015162004c68565b51518210156201d5da57816200749487966201dcf19351015162004c46565b516201dd0262006854855162004c22565b5111620050f7576201dd149062004c12565b926201dcad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201df1a5760026201ddef825162004c22565b5151036201dec0576020820151602681101562002942576002036200663857600091835b6201de215750505050600090565b604081019260a0936201de38858251015162004c68565b51518210156201d5da5781856201de5982620074948a998651015162004c46565b516201de6a62006854885162004c22565b51111592836201de8f575b505050620050f7576201de889062004c12565b926201de13565b5101516201dea39250620074949062004c46565b516201deb462015a55855162004c22565b5110158138806201de75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201e07f57826201df93825162004c22565b5151036201e025576020820151602681101562002942576002036200663857600091835b6201dfc55750505050600090565b604081019260a0936201dfdc858251015162004c68565b51518210156201d5da57816200749487966201dffb9351015162004c46565b516201e00c62006854855162004c22565b5114620050f7576201e01e9062004c12565b926201dfb7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91603381036201e1c3575060209150016001815151036201e1735760016201e102825162004c22565b5151036201e12057620068546201e11a915162004c22565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201e2ac575060209150016001815151036201e25c5760016201e1eb825162004c22565b5151036201e20957620068546201e203915162004c22565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201e3be575060209150016001815151036201e36e5760026201e2d4825162004c22565b5151036201e314576201e2ec62006854825162004c22565b5142101590816201e2fb575090565b6201e30d915062015a55905162004c22565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201e4c2575060209150016001815151036201e4685760016201e3e6825162004c22565b5151036201e40e5762015831620068546201e401426200628d565b5050505050925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603781036201e5b9575060209150016001815151036201e55f5760016201e4ea825162004c22565b5151036201e5055762015932620068546201e401426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603881036201e6bd575060209150016001815151036201e6635760026201e5e1825162004c22565b5151036201e609576201e5f4426200628d565b505050505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603981036201e7c2575060209150016001815151036201e7685760016201e6e5825162004c22565b5151036201e70e5762015831620068546201e700426200628d565b505050509390505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603a81036201e8b9575060209150016001815151036201e85f5760016201e7ea825162004c22565b5151036201e8055762015932620068546201e700426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603b81036201e9be575060209150016001815151036201e9645760026201e8e1825162004c22565b5151036201e90a576201e8f4426200628d565b50505050905062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603c81036201eac3575060209150016001815151036201ea695760016201e9e6825162004c22565b5151036201ea0f5762015831620068546201ea01426200628d565b505050949150505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603d81036201ebba575060209150016001815151036201eb605760016201eaeb825162004c22565b5151036201eb065762015932620068546201ea01426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603e81036201ecbf575060209150016001815151036201ec655760026201ebe2825162004c22565b5151036201ec0b576201ebf5426200628d565b50505091505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603f81036201edc4575060209150016001815151036201ed6a5760016201ece7825162004c22565b5151036201ed105762015831620068546201ed02426200628d565b505095925050505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040928184036201eeba575050602001906001825151036201ee625760016201edee835162004c22565b5151036201ee0a575062015932620068546201ed02426200628d565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604182036201efbc575050602001906001825151036201ef645760026201eee2835162004c22565b5151036201ef0c57506201eef6426200628d565b50509250505062015a3262006854835162004c22565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9092604284036201efd45750620031f8925062020232565b604384036201efea5750620031f892506202043c565b60448481036201f002575050620031f892506202063e565b604585036201f019575050620031f89250620208bb565b604685036201f030575050620031f8925062020abd565b604785036201f047575050620031f8925062020cbf565b604885036201f05e575050620031f8925062020fa2565b604985036201f075575050620031f89250620212ad565b604a85036201f08c575050620031f8925062021589565b604b85036201f0a3575050620031f892506202194c565b604c85036201f0ba575050620031f8925062021af5565b604d85036201f0d1575050620031f8925062021bf9565b604e85036201f0e8575050620031f8925062021d51565b604f85036201f0ff575050620031f8925062021ed0565b605085036201f116575050620031f8925062021fd4565b91909293605581146000146201f2d6575060208401926002845151036201f27e57600192836201f147865162004c46565b5151036201f227575090829160009586945b6201f174575b50505050506200685462015831915162004c46565b90919293956201f1878383015162004c22565b51518710156201f220576201f1dd9084156201f1e85762009842906201f1c160646201f1b98b620074948c5162004c22565b51106202212c565b6201a5d96201f1d68a620074948b5162004c22565b51620060e5565b93929190836201f159565b62009842906201f20460646201f1b98b620074948c5162004c22565b6201a5d96201f2198a620074948b5162004c22565b5162006113565b956201f15f565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605681036201f457575060208401926002845151036201f3ff57600192836201f300865162004c46565b5151036201f3a8575090829160009586945b6201f32d575b50505050506200685462015932915162004c46565b90919293956201f3408383015162004c22565b51518710156201f3a1576201f37a9084156201f3855762009842906201f1c160646201f3728b620074948c5162004c22565b51106202219e565b93929190836201f312565b62009842906201f20460646201f3728b620074948c5162004c22565b956201f318565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605781036201f61b575060208401946002865151036201f5c25760026201f483875162004c46565b5151036201f56a5750600092835b6201f49f8287015162004c22565b51518510156201f53057906201f4f6856201f49f9389876000146201f5005760646201f4d96200960f94620074946201f4e1945162004c22565b511062022210565b6201a5d96201f1d689620074948d5162004c22565b949091506201f491565b60646201f4d96200960f94620074946201f51b945162004c22565b6201a5d96201f21989620074948d5162004c22565b935050939250506201f54762006854835162004c46565b5181101591826201f55757505090565b62015a5c91925062015a55905162004c46565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605881036201f7d0575060208401926002845151036201f77857600192836201f649865162004c46565b5151036201f721575090829160009586945b6201f6755750505050506200685462015831915162004c46565b90919293956201f6888383015162004c22565b51518710156201f220576201f6de9084156201f6e95762009842906201f6c260646201f6ba8b620074948c5162004c22565b511062022282565b6201a5d96201f6d78a620074948b5162004c22565b5162005d82565b93929190836201f65b565b62009842906201f70560646201f6ba8b620074948c5162004c22565b6201a5d96201f71a8a620074948b5162004c22565b5162005db7565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605981036201f949575060208401926002845151036201f8f157600192836201f7fa865162004c46565b5151036201f89a575090829160009586945b6201f8265750505050506200685462015932915162004c46565b90919293956201f8398383015162004c22565b51518710156201f3a1576201f8739084156201f87e5762009842906201f6c260646201f86b8b620074948c5162004c22565b5110620222f4565b93929190836201f80c565b62009842906201f70560646201f86b8b620074948c5162004c22565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a81036201fad3575060208401946002865151036201fa7a5760026201f975875162004c46565b5151036201fa225750600092835b6201f9918287015162004c22565b51518510156201f53057906201f9e8856201f9919389876000146201f9f25760646201f9cb6200960f94620074946201f9d3945162004c22565b511062022366565b6201a5d96201f6d789620074948d5162004c22565b949091506201f983565b60646201f9cb6200960f94620074946201fa0d945162004c22565b6201a5d96201f71a89620074948d5162004c22565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b81036201fcaa575060208401926002845151036201fc5257600192836201fb01865162004c46565b5151036201fbfb575090829160009586945b6201fb2d5750505050506200685462015831915162004c46565b90919293956201fb408383015162004c22565b51518710156201f2205783156201fbaf5760646201fb71816201fb698a620074948b5162004c22565b5110620223d8565b6201fb828862007494895162004c22565b519081101562004c30576201fba4916006620098429260031b01549062006271565b93929190836201fb13565b60646201fbc7816201fb698a620074948b5162004c22565b6201fbd88862007494895162004c22565b519081101562004c30576201fba49161039e620098429260031b01549062006271565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036201fe7d575060208401926002845151036201fe2557600192836201fcd4865162004c46565b5151036201fdce575090829160009586945b6201fd005750505050506200685462015932915162004c46565b90919293956201fd138383015162004c22565b51518710156201f3a15783156201fd825760646201fd44816201fd3c8a620074948b5162004c22565b51106202244a565b6201fd558862007494895162004c22565b519081101562004c30576201fd77916006620098429260031b01549062006271565b93929190836201fce6565b60646201fd9a816201fd3c8a620074948b5162004c22565b6201fdab8862007494895162004c22565b519081101562004c30576201fd779161039e620098429260031b01549062006271565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d8196929394961460001462020054575060208401926002845151036201fffb5760026201fead855162004c46565b5151036201ffa35750600080955b6201fec98187015162004c22565b51518710156201ff8c5783156201ff3b576064916201fefb836201fef38a620074948a5162004c22565b5110620224bc565b6201ff0c8862007494885162004c22565b519283101562004c3057620142c46201ff329160066201fec99560031b01549062006271565b9691506201febb565b6064916201ff54836201fef38a620074948a5162004c22565b6201ff658862007494885162004c22565b519283101562004c3057620142c46201ff329161039e6201fec99560031b01549062006271565b509293509350506201f54762006854835162004c46565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e0362015deb576020840192600284515103620201da576001928362020081865162004c46565b51510362020183575090829160009586945b620200ae575b50505050506200685462015b60915162004c46565b9091929395620200c18383015162004c22565b51518710156202017c57831562020130576064620200f281620200ea8a620074948b5162004c22565b51106202252e565b620201038862007494895162004c22565b519081101562004c305762020125916006620098429260031b01549062006271565b939291908362020093565b60646202014881620200ea8a620074948b5162004c22565b620201598862007494895162004c22565b519081101562004c3057620201259161039e620098429260031b01549062006271565b9562020099565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b906040810190600182515103620203e257600162020251835162004c22565b5151036202038857602001916001835151036202032e57600162020276845162004c22565b515103620202d45715620202b05762006854620202a862015831926201a4296200685460018060a01b03925162004c22565b925162004c22565b62006854620202a862015831926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906040810190600182515103620205e45760016202045b835162004c22565b5151036202058a57602001916001835151036202053057600162020480845162004c22565b515103620204d65715620204b25762006854620202a862015932926201a4296200685460018060a01b03925162004c22565b62006854620202a862015932926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040820191600183515103620208615760016202065c845162004c22565b515103620208075760200190600182515103620207ad57600262020681835162004c22565b515103620207535715620206f75760018060a01b03620206ab816201a42962006854865162004c22565b620206bb62006854845162004c22565b5111159283620206cb5750505090565b620206eb92935062015a55916201a42962006854620202a8935162004c22565b51101538808062015db6565b60018060a01b0362020713816201a4a462006854865162004c22565b6202072362006854845162004c22565b5111159283620207335750505090565b620206eb92935062015a55916201a4a462006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020a63576001620208da835162004c22565b51510362020a095760200191600183515103620209af576001620208ff845162004c22565b515103620209555715620209315762006854620202a862015831926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015831926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020c6557600162020adc835162004c22565b51510362020c0b576020019160018351510362020bb157600162020b01845162004c22565b51510362020b57571562020b335762006854620202a862015932926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015932926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604082019160018351510362020ed657600162020cdd845162004c22565b51510362020e7c576020019060018251510362020e2257600262020d02835162004c22565b51510362020dc8571562020d6c5760018060a01b0362020d2c816201b32c62006854865162004c22565b62020d3c62006854845162004c22565b511115928362020d4c5750505090565b620206eb92935062015a55916201b32c62006854620202a8935162004c22565b60018060a01b0362020d88816201b3a762006854865162004c22565b62020d9862006854845162004c22565b511115928362020da85750505090565b620206eb92935062015a55916201b3a762006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b1562020f3857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620211e257600162020fc2845162004c22565b5151036202118957602001926001845151036202113057600262020fe7855162004c22565b515103620210d7571562021069576202101360646202100b62006854865162004c22565b511062020f30565b6202102362006854845162004c22565b5190606482101562004c3057600362015a55926201583194620210526200685460018060a01b03925162004c22565b5116600052811b0160205260002054925162004c22565b6202107f60646202100b62006854865162004c22565b6202108f62006854845162004c22565b5190606482101562004c305761039b62015a55926201583194620210bf6200685460018060a01b03925162004c22565b511660005260031b0160205260002054925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202124357565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620214be576001620212cd845162004c22565b5151036202146557602001926001845151036202140c576002620212f2855162004c22565b515103620213b357156202135d576202131e60646202131662006854865162004c22565b51106202123b565b6202132e62006854845162004c22565b5190606482101562004c3057600362015a55926201593294620210526200685460018060a01b03925162004c22565b6202137360646202131662006854865162004c22565b6202138362006854845162004c22565b5190606482101562004c305761039b62015a55926201593294620210bf6200685460018060a01b03925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202151f57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820192600184515103620218f3576001620215a9855162004c22565b5151036202189a57602080930192600184515103620218425760039182620215d2865162004c22565b515103620217e45715620216e357620215fe6064620215f662006854875162004c22565b511062021517565b6202160e62006854855162004c22565b5191606483101562004c305760018060a01b039581876202163462006854845162004c22565b5116946000958652811b018352848420546202165562015a55885162004c22565b51111596876202166a575b5050505050505090565b90919293949596506202168262006854885162004c22565b51916064831015620216cf57916201c50b959391620216ac62006854620216bf9997955162004c22565b51168452811b0190522054925162004c22565b5110153880808080808062021660565b634e487b7160e01b86526032600452602486fd5b620216f96064620215f662006854875162004c22565b6202170962006854855162004c22565b51606481101562004c305760018060a01b0395866202172d62006854835162004c22565b511693600094855261039b8093821b018452858520546202175362015a55895162004c22565b511115978862021769575b505050505050505090565b9091929394959697506202178262006854895162004c22565b51926064841015620217d05791620217bf97959391620217ad620068546201c50b9997955162004c22565b511685521b0190522054925162004c22565b51101538808080808080806202175e565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620219f65760016202196a835162004c22565b5151036202199c57156202198a576201583162006854620202a862021ab8565b6201583162006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021a61575090565b908160031b60ff61039f820154161562021ab25762021a9f62021aac9262021a9761039962021aa594015462005da88762005fe7565b92906200607c565b62006271565b9162004c12565b62021a54565b50905090565b6000805b6064811062021ac9575090565b9060ff60078360031b01541615620061fd5762021aa562021aef916201a5d984620060e5565b62021abc565b906020019060018251510362021b9f57600162021b13835162004c22565b51510362021b45571562021b33576201593262006854620202a862021ab8565b6201593262006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021cf757600262021c17835162004c22565b51510362021c9d571562021c615762021c2f62021ab8565b62021c3f62006854835162004c22565b511115908162021c4d575090565b905062015a5c62015a55620202a862021ab8565b62021c6b62021a50565b62021c7b62006854835162004c22565b511115908162021c89575090565b905062015a5c62015a55620202a862021a50565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021dfb57600162021d6f835162004c22565b51510362021da1571562021d8f576201583162006854620202a862021e93565b6201583162006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021e66575090565b9060ff61039f8360031b01541615620061fd5762021aa562021e8d916201a5d98462005e5e565b62021e59565b6000805b6064811062021ea4575090565b9060ff60078360031b01541615620061fd5762021aa562021eca916201a5d98462005d82565b62021e97565b906020019060018251510362021f7a57600162021eee835162004c22565b51510362021f20571562021f0e576201593262006854620202a862021e93565b6201593262006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620220d257600262021ff2835162004c22565b5151036202207857156202203c576202200a62021e93565b6202201a62006854835162004c22565b511115908162022028575090565b905062015a5c62015a55620202a862021e93565b6202204662021e55565b6202205662006854835162004c22565b511115908162022064575090565b905062015a5c62015a55620202a862021e55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202213457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620221a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202221857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202228a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620222fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202236e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620223e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202245257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620224c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202253657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462022608576101928114620225fc576101938114620225f0576101968114620225e45761019714620225d9575050600090565b620031f89162022b3e565b50620031f89162022a59565b50620031f891620228b4565b50620031f89162022773565b50620031f891906020019060019182815151036202271957826202262d825162004c22565b515103620226bf57602082015160268110156200294257600a036200663857600091835b6202265f5750505050600090565b604081019260a09362022676858251015162004c22565b51518210156201d5da5781620074948796620226959351015162004c22565b51620226a662006854855162004c22565b5114620050f757620226b89062004c12565b9262022651565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202285a57602082015160268110156200294257600a03620066385782916000935b620227b05750505050600090565b6040810160a0620227c5818351015162004c22565b51518610156201d5da57906000855b620227f0575b505050620227e9839462004c12565b93620227a2565b620227fc855162004c22565b515181101562022854576202281a8762007494858551015162004c22565b516202282c8262007494885162004c22565b51146202284a57906202284186939262004c12565b909192620227d4565b5050505050905090565b620227da565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001906001918281515103620229ff576002620228d4825162004c22565b515103620229a557602082015160268110156200294257600a036200663857600091835b620229065750505050600090565b604081019260a0936202291d858251015162004c22565b51518210156201d5da5781856202293e82620074948a998651015162004c22565b516202294f62006854885162004c22565b511115928362022974575b505050620050f7576202296d9062004c12565b92620228f8565b510151620229889250620074949062004c22565b516202299962015a55855162004c22565b5110158138806202295a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600191828151510362022ae557602082015160268110156200294257600b036200663857600091835b62022a905750505050600090565b60408101515192835181101562022ade5762022ac762022ab282879662004c79565b5162022abf855162004c22565b519062031908565b620050f75762022ad79062004c12565b9262022a82565b5062015deb565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362022bc357602082015160268110156200294257600b036200663857600091835b62022b755750505050600090565b60408101515192835181101562022ade5762022bac62022b9782879662004c79565b5162022ba4855162004c22565b519062006589565b620050f75762022bbc9062004c12565b9262022b67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b916097811462022c405760981462022c35575050600090565b620031f89162022d51565b50602001805151620031f892906000190162022cf857600162022c64835162004c22565b51510362022c9e57602001516026811015620029425762006854620202a862022c8d92620316cf565b511462022c9957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9190916020809301600191828251510362022dd857938293946000935b62022d7d575050505050600090565b62022d89835162004c22565b51518410156201652e5781810151936026851015620029425762022dae8695620316cf565b62022dbf8262007494875162004c22565b5114620165265762022dd19062004c12565b9362022d6e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462022f34576102be811462022f28576102bf811462022f1c576102c0811462022f10576102c1811462022f04576102c2811462022ef8576102c3811462022eec576102c4811462022ee0576102c5811462022ed4576102c6811462022ec8576102c7811462022ebc576102c81462022eb157505050600090565b620031f89262024159565b50620031f89262023f5e565b50620031f89262023d59565b50620031f89262023ae9565b50620031f892620238e4565b50620031f892620236d5565b50620031f892620235b6565b50620031f8926202348f565b50620031f89262023368565b50620031f8926202320e565b50620031f892620230ba565b50620031f89262022f51565b606482101562004c30570190600090565b916020809101926001845151036202306057600162022f71855162004c22565b51510362023006571562022fcd57620202a862022fbf620158319362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b9062022f40565b90549060031b1c426200627f565b620202a862022fbf620158319362022fb8620076f6620068549560018060a01b038451166000526106c1815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602080910192600184515103620231b4576001620230da855162004c22565b5151036202315a57156202312157620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101926001845151036202330e5760026202322e855162004c22565b515103620232b45715620232805781516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b62015a3262006854835162004c22565b81516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202343557600162023386845162004c22565b515103620233db5715620233c957620076f66020620233a69201620073dc565b606481101562004c305762006854620202a8620158319261032b0154426200627f565b620076f66020620233a69201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202355c576001620234ad845162004c22565b515103620235025715620234f057620076f66020620234cd9201620073dc565b606481101562004c305762006854620202a8620159329261032b0154426200627f565b620076f66020620234cd9201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202367b576002620235d4845162004c22565b5151036202362157156202360f57620076f66020620235f49201620073dc565b606481101562004c3057620232709061032b0154426200627f565b620076f66020620235f49201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90929160409384820160019384825151036202388b5784620236f8835162004c22565b515103620238325795849596600014620237a4576000945b6202372057505050505050600090565b6202372c825162004c22565b515185101562019e5c57859460018060a01b03620237508262007494865162004c22565b5116600052602061032981526202378b620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b9288015162004c22565b511062019e53576202379d9062004c12565b9462023710565b6000945b620237b857505050505050600090565b620237c4825162004c22565b515185101562019e5c57859460018060a01b03620237e88262007494865162004c22565b51166000526020610329815262023819620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511062019e53576202382b9062004c12565b94620237a8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909291604093848201600193848251510362023a90578462023907835162004c22565b51510362023a375795849596600014620239a9576000945b6202392f57505050505050600090565b6202393b825162004c22565b515185101562019e5c57859460018060a01b036202395f8262007494865162004c22565b51166000526020610329815262023990620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e5357620239a29062004c12565b946202391f565b6000945b620239bd57505050505050600090565b620239c9825162004c22565b515185101562019e5c57859460018060a01b03620239ed8262007494865162004c22565b51166000526020610329815262023a1e620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e535762023a309062004c12565b94620239ad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023d0057600262023b0c825162004c22565b51510362023ca75784959660001462023be3576000945b62023b3357505050505050600090565b62023b3f815162004c22565b515185101562019e5c57859460018060a01b0362023b638262007494855162004c22565b51166000526020610329815262023b8c62022fbf8660002062022fb8620076f6858901620073dc565b9086019062023ba062006854835162004c22565b51811015918262023bc5575b505062019e535762023bbe9062004c12565b9462023b23565b62023bd891925062015a55905162004c22565b511015388062023bac565b6000945b62023bf757505050505050600090565b62023c03815162004c22565b515185101562019e5c57859460018060a01b0362023c278262007494855162004c22565b51166000526020610329815262023c5062022fbf8660002062022fb8620076f6858901620073dc565b9086019062023c6462006854835162004c22565b51811015918262023c89575b505062019e535762023c829062004c12565b9462023be7565b62023c9c91925062015a55905162004c22565b511015388062023c70565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023f05578462023d7b825162004c22565b51510362023eac5784959660001462023e22576000945b62023d9f57505050505090565b62023dab815162004c22565b51518510156201c51d5760018060a01b0362023dcd8662007494845162004c22565b51166000526020610329815262023e086200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b9287015162004c22565b511162019df15762023e1b869562004c12565b9462023d92565b6000945b62023e3357505050505090565b62023e3f815162004c22565b51518510156201c51d5760018060a01b0362023e618662007494845162004c22565b51166000526020610329815262023e926200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511162019df15762023ea5869562004c12565b9462023e26565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362024100578462023f80825162004c22565b515103620240a7578495966000146202401d576000945b62023fa457505050505090565b62023fb0815162004c22565b51518510156201c51d5760018060a01b0362023fd28662007494845162004c22565b511660005260206103298152620240036200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df15762024016869562004c12565b9462023f97565b6000945b6202402e57505050505090565b6202403a815162004c22565b51518510156201c51d5760018060a01b036202405c8662007494845162004c22565b5116600052602061032981526202408d6200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df157620240a0869562004c12565b9462024021565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b92916040808201926001938481515103620243665760026202417c825162004c22565b5151036202430d578495966000146202424e576000945b620241a057505050505090565b620241ac815162004c22565b51518510156201c51d5760018060a01b03620241ce8662007494845162004c22565b511660005260206103298152620241f762022fbf8560002062022fb8620076f6858801620073dc565b908501906202420b62006854835162004c22565b51811091821562024231575b505062019df1576202422a869562004c12565b9462024193565b6202424491925062015a55905162004c22565b5110388062024217565b6000945b6202425f57505050505090565b6202426b815162004c22565b51518510156201c51d5760018060a01b036202428d8662007494845162004c22565b511660005260206106c18152620242b662022fbf8560002062022fb8620076f6858801620073dc565b90850190620242ca62006854835162004c22565b518110918215620242f0575b505062019df157620242e9869562004c12565b9462024252565b6202430391925062015a55905162004c22565b51103880620242d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600193808503620243d75750620031f8935062024aa7565b60028103620243ed5750620031f8935062024b91565b60038103620244f7575050906040019180835151036202449b5762024413835162004c22565b5151036202443c57620244366200685460018060a01b0380935116935162004c22565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362024510575050620031f8935062024cd6565b6005810362024527575050620031f8935062024e1b565b600681036202453e575050620031f8935062024f60565b6007810362024555575050620031f893506202519c565b600881036202456c575050620031f89350620253fa565b6009810362024583575050620031f8935062025636565b600a81036202459a575050620031f8935062025866565b600b8103620245b1575050620031f8935062025b5d565b600c8103620245c8575050620031f8935062025d85565b600d8103620245df575050620031f8935062025fd1565b600e8103620245f6575050620031f89350620261c8565b600f81036202460d575050620031f893506202650d565b6010810362024624575050620031f8935062026704565b601181036202463b575050620031f8935062026824565b6012810362024652575050620031f8935062026944565b6013810362024669575050620031f8935062026ada565b6014810362024680575050620031f8935062026bfa565b6015810362024697575050620031f8935062026d1a565b60198103620246ae575050620031f8935062026ea3565b601a8103620246c5575050620031f8935062026fdb565b601b8103620246dc575050620031f8935062027113565b601c819592939495146000146202481f5750602001938085515103620247c65762024708855162004c22565b5151036202476d575060009015620247475750516001600160a01b03166000908152610327602052604090205490620158319062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201583190620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601d81036202495a5750602001938085515103620249015762024843855162004c22565b515103620248a8575060009015620248825750516001600160a01b03166000908152610327602052604090205490620159329062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201593290620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601e810362024a8c5750602001938451510362024a335760026202497f855162004c22565b515103620249da575060009015620249bc5750516001600160a01b03166000908152610327602052604090205462015a3262006854835162004c22565b90516001600160a01b031681526106bf602052604090205462023270565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b9294509291601f141590506200663857620031f89262027282565b91909160018251510362024b38571562024b0457620031f89160018060a01b039051166000526103206020526200112762024afe62024aef6001604060002001935162004c22565b51926040519283809262002bd5565b62031908565b620031f89160018060a01b039051166000526106b86020526200112762024afe62024aef6001604060002001935162004c22565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b916020019160018351510362024c7a57600162024baf845162004c22565b51510362024c1b571562024bec57516001600160a01b031660009081526103206020526040902060020154905162015b6090620068549062004c22565b516001600160a01b031660009081526106b86020526040902060020154905162015b6090620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024dbf57600162024cf4845162004c22565b51510362024d60571562024d3157516001600160a01b03166000908152610320602052604090206002015490516201583190620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024f0457600162024e39845162004c22565b51510362024ea5571562024e7657516001600160a01b03166000908152610320602052604090206002015490516201593290620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202514057600262024f81845162004c22565b515103620250e05762024f9962006854845162004c22565b5162024faa62015a55855162004c22565b51106202505a57156202502b5760018060a01b0390818451166000526103209182825260026040600020015462024fe662006854865162004c22565b511115948562024ff857505050505090565b9091929394505116600052526202501d62015a55600260406000200154925162004c22565b511015388080808062016526565b60018060a01b0390818451166000526106b89182825260026040600020015462024fe662006854865162004c22565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202531b57620251bf835162004c22565b515115620252b3579483949560001462025243576000935b620251e6575050505050600090565b620251f2835162004c22565b51518410156201652e57849360018060a01b0383511660005261032082526002604060002001546202522a8262007494875162004c22565b511462016526576202523c9062004c12565b93620251d7565b6000935b62025256575050505050600090565b62025262835162004c22565b51518410156201652e57849360018060a01b038351166000526106b882526002604060002001546202529a8262007494875162004c22565b51146201652657620252ac9062004c12565b9362025247565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202537f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202555757600262025418845162004c22565b515103620254f7578015620254db576202544560646202543d62006854865162004c22565b511062025377565b1562025492576202545b62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201583162015a55604060002054925162004c22565b620254a262006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201583162015a55604060002054925162004c22565b620254f160646202543d62006854865162004c22565b62025445565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620255bb57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202579357600262025654845162004c22565b5151036202573357801562025717576202568160646202567962006854865162004c22565b5110620255b3565b15620256ce576202569762006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201593262015a55604060002054925162004c22565b620256de62006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201593262015a55604060002054925162004c22565b6202572d60646202567962006854865162004c22565b62025681565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620257f757565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b91909160208092019160018351510362025a8d57600391826202588a855162004c22565b51510362025a2a57801562025a0e57620258b76064620258af62006854875162004c22565b5110620257ef565b156202596b57620258cd62006854845162004c22565b5191606483101562004c305760018060a01b03948186825116946000958652811b01835260408420546202590662015a55875162004c22565b5111159586620259195750505050505090565b909192939495506202593062006854875162004c22565b51916064831015620216cf5751168452811b019052604090205490516202595c906201c50b9062004c22565b51101538808080808062019e53565b6202597b62006854845162004c22565b51606481101562004c305760018060a01b03948581511693600094855261039b8093821b0184526040852054620259b762015a55885162004c22565b5111159687620259cb575050505050505090565b9091929394959650620259e362006854885162004c22565b51926064841015620217d057511685521b01905260409020549051620216bf906201c50b9062004c22565b62025a246064620258af62006854875162004c22565b620258b7565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b1562025aee57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025cb457600262025b7b845162004c22565b51510362025c5a57801562025c3e5762025ba8606462025ba062006854865162004c22565b511062025ae6565b1562025bf55762025bbe62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b0160205262015b6062015a55604060002054925162004c22565b62025c0562006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b0160205262015b6062015a55604060002054925162004c22565b62025c54606462025ba062006854865162004c22565b62025ba8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b1562025d1657565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025f7757600262025da3845162004c22565b51510362025f1d57801562025f015762025dd0606462025dc862006854865162004c22565b511062025d0e565b1562025e745762025de662006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e605762025e3762006854845162004c22565b51906064821015620014905750620202a86201583192600662015a559360031b01549062005007565b634e487b7160e01b81526011600452602490fd5b62025e8462006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e605762025ed762006854845162004c22565b51906064821015620014905750620202a8620158319261039e62015a559360031b01549062005007565b62025f17606462025dc862006854865162004c22565b62025dd0565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b91602001916001835151036202616e57600262025fef845162004c22565b51510362026114571562026087576202600d62006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202605e62006854845162004c22565b51906064821015620014905750620202a86201593292600662015a559360031b01549062005007565b6202609762006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e6057620260ea62006854845162004c22565b51906064821015620014905750620202a8620159329261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90602080930191600183515103620264b3576002620261e8845162004c22565b51510362026459571562026322576202620662006854835162004c22565b516064908181101562004c305760018060a01b03948584511693600094855260038093811b0182526040852054848102908082048614901517156202630e576202625562006854885162004c22565b5185811015620217d057841b60060154620262709162005007565b6202628062015a55885162004c22565b511115968762026294575050505050505090565b9091929394959650620262ac62006854885162004c22565b519185831015620217d05751168552821b820190526040832054828102939080159085048414171562025e6057620262e962006854865162004c22565b51928310156200149057501b60060154620216bf916201c50b91620202a89162005007565b634e487b7160e01b86526011600452602486fd5b6202633262006854835162004c22565b519060648083101562004c305760018060a01b03948583511693600094855261039b809160031b018252604085205493838502948086048514901517156202630e576202638462006854885162004c22565b519484861015620217d057620263a59061039e809760031b01549062005007565b620263b562015a55895162004c22565b5111159788620263ca57505050505050505090565b909192939495969750620263e362006854895162004c22565b51918583101562026445575116865260031b0190526040832054928184029380850483149015171562025e60576202642062006854865162004c22565b519182101562001490575060031b0154620217bf916201c50b91620202a89162005007565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620266aa5760026202652b845162004c22565b515103620266505715620265c3576202654962006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202659a62006854845162004c22565b51906064821015620014905750620202a862015b6092600662015a559360031b01549062005007565b620265d362006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e60576202662662006854845162004c22565b51906064821015620014905750620202a862015b609261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620267ca57600162026722845162004c22565b515103620267705780156202675057620202a86200685491620158319360018060a01b03905116906201a63a565b505162015831906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620268ea57600162026842845162004c22565b515103620268905780156202687057620202a86200685491620159329360018060a01b03905116906201a63a565b505162015932906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026a8057600262026963835162004c22565b51510362026a26578015620269d45782516001600160a01b03906202698b908216836201a63a565b6202699b62006854855162004c22565b5111159384620269ac575050505090565b620269c793945091620202a89162015a55935116906201a63a565b51101538808080620050f7565b5081516001600160a01b0390620269ed9082166201a5e7565b620269fd62006854845162004c22565b511115928362026a0d5750505090565b620206eb92935062015a5591620202a89151166201a5e7565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026ba057600162026af8845162004c22565b51510362026b4657801562026b2657620202a86200685491620158319360018060a01b03905116906201b536565b505162015831906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026cc057600162026c18845162004c22565b51510362026c6657801562026c4657620202a86200685491620159329360018060a01b03905116906201b536565b505162015932906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026e4957600262026d39835162004c22565b51510362026def57801562026d9d5782516001600160a01b039062026d61908216836201b536565b62026d7162006854855162004c22565b511115938462026d82575050505090565b620269c793945091620202a89162015a55935116906201b536565b5081516001600160a01b039062026db69082166201b4e3565b62026dc662006854845162004c22565b511115928362026dd65750505090565b620206eb92935062015a5591620202a89151166201b4e3565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026f8157600162026ec1845162004c22565b51510362026f27571562026efb57516001600160a01b03166000908152610325602052604090205490516201583190620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620270b957600162026ff9845162004c22565b5151036202705f57156202703357516001600160a01b03166000908152610325602052604090205490516201593290620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020809101916001835151036202722857600262027134845162004c22565b515103620271ce5715620271a25760018060a01b039081845116600052610325918282526040600020546202716e62006854865162004c22565b51111594856202718057505050505090565b9091929394505116600052526202501d62015a55604060002054925162004c22565b60018060a01b0390818451166000526106bd918282526040600020546202716e62006854865162004c22565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b909160400160019283825151036202735e57839215620272fd576000925b620272ae5750505050600090565b620272ba825162004c22565b5151831015620161f557839260018060a01b038083511690620272e38362007494875162004c22565b511614620050f757620272f69062004c12565b92620272a0565b6000925b6202730f5750505050600090565b6202731b825162004c22565b5151831015620161f557839260018060a01b038083511690620273448362007494875162004c22565b511614620050f757620273579062004c12565b9262027301565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9161012d81146202764b5761012e81146202763f5761012f811462027633576101308114620276275761013181146202761b5761013281146202760f57610133811462027603576101348114620275f7576101358114620275eb576101368114620275df576101378114620275d3576101388114620275c7576101398114620275bb5761013a8114620275af5761013b8114620275a35761013c8114620275975761013d81146202758a5761013e81146202757d5761013f81146202757057610140811462027563576101418114620275575761014281146202754b5761014381146202753f57610144811462027533576101458114620275275761014681146202751b5761014781146202750f57610173811462027502576101748114620274f65761017514620274eb575050600090565b620031f89162029e66565b50620031f89162029ca3565b5050620031f89062029c47565b50620031f89162029af9565b50620031f891620297af565b50620031f89162029635565b50620031f891620294b4565b50620031f891620292ef565b50620031f8916202918d565b50620031f89162029012565b5050620031f89062028f0b565b5050620031f89062028df6565b5050620031f89062028cf4565b5050620031f89062028bec565b50620031f89162028a6b565b50620031f891620288ea565b50620031f89162028767565b50620031f891620285e4565b50620031f89162028463565b50620031f891620282e2565b50620031f8916202815f565b50620031f89162027fdc565b50620031f89162027e9d565b50620031f89162027d5e565b50620031f89162027c39565b50620031f89162027b15565b50620031f891620279d7565b50620031f89162027899565b50620031f89162027775565b50620031f891906020019060019182815151036202771c57602082015160268110156200294257600d0362006638576202768683926202a012565b6000935b620276985750505050600090565b620276a4825162004c22565b5151841015620161f5576000835b620276cc575b50620276c5839462004c12565b936202768a565b93929181518510156202771357620276ea8462007494835162004c22565b51620276f7868462004c79565b511462015cb2576202770b83949562004c12565b9092620276b2565b919293620276b8565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202784057602082015160268110156200294257600d036200663857620277aa83926202a012565b6000935b620277bc5750505050600090565b620277c8825162004c22565b5151841015620161f5576000835b620277f0575b50620277e9839462004c12565b93620277ae565b939291815185101562027837576202780e8462007494835162004c22565b516202781b868462004c79565b511462015cb2576202782f83949562004c12565b9092620277d6565b919293620277dc565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202797e57602082015160268110156200294257600d036200663857620278ce83926202a012565b6000925b620278dd5750505090565b620278e9825162004c22565b515183101562015e7257600080855b62027918575b501562015deb5762027911849362004c12565b92620278d2565b829593919495518110156202797357620279388662007494845162004c22565b5162027945828562004c79565b51146202796657906202795a84939262004c12565b909395949192620278f8565b50918094935038620278fe565b9493909294620278fe565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027abc57602082015160268110156200294257600d03620066385762027a0c83926202a012565b6000925b62027a1b5750505090565b62027a27825162004c22565b515183101562015e7257600080855b62027a56575b501562015deb5762027a4f849362004c12565b9262027a10565b8295939194955181101562027ab15762027a768662007494845162004c22565b5162027a83828562004c79565b511462027aa4579062027a9884939262004c12565b90939594919262027a36565b5091809493503862027a3c565b949390929462027a3c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027be057602082015160268110156200294257600e03620066385762027b4a83926202a012565b6000935b62027b5c5750505050600090565b62027b68825162004c22565b5151841015620161f5576000835b62027b90575b5062027b89839462004c12565b9362027b4e565b939291815185101562027bd75762027bae8462007494835162004c22565b5162027bbb868462004c79565b511462015cb25762027bcf83949562004c12565b909262027b76565b91929362027b7c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027d0457602082015160268110156200294257600e03620066385762027c6e83926202a012565b6000935b62027c805750505050600090565b62027c8c825162004c22565b5151841015620161f5576000835b62027cb4575b5062027cad839462004c12565b9362027c72565b939291815185101562027cfb5762027cd28462007494835162004c22565b5162027cdf868462004c79565b511462015cb25762027cf383949562004c12565b909262027c9a565b91929362027ca0565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027e4357602082015160268110156200294257600e03620066385762027d9383926202a012565b6000925b62027da25750505090565b62027dae825162004c22565b515183101562015e7257600080855b62027ddd575b501562015deb5762027dd6849362004c12565b9262027d97565b8295939194955181101562027e385762027dfd8662007494845162004c22565b5162027e0a828562004c79565b511462027e2b579062027e1f84939262004c12565b90939594919262027dbd565b5091809493503862027dc3565b949390929462027dc3565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027f8257602082015160268110156200294257600e03620066385762027ed283926202a012565b6000925b62027ee15750505090565b62027eed825162004c22565b515183101562015e7257600080855b62027f1c575b501562015deb5762027f15849362004c12565b9262027ed6565b8295939194955181101562027f775762027f3c8662007494845162004c22565b5162027f49828562004c79565b511462027f6a579062027f5e84939262004c12565b90939594919262027efc565b5091809493503862027f02565b949390929462027f02565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202810557600262027ffc825162004c22565b515103620280ab57602082015160268110156200294257600d0362006638576202802783926202a012565b906000925b6202803a5750505050600090565b8151831015620161f557826202805285948462004c79565b516202806362006854845162004c22565b5111158062028084575b620050f7576202807d9062004c12565b926202802c565b5062028091818462004c79565b51620280a262015a55845162004c22565b5110156202806d565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001906001918281515103620282885760026202817f825162004c22565b5151036202822e57602082015160268110156200294257600d036200663857620281aa83926202a012565b906000925b620281bd5750505050600090565b8151831015620161f55782620281d585948462004c79565b51620281e662006854845162004c22565b5111158062028207575b620050f757620282009062004c12565b92620281af565b5062028214818462004c79565b516202822562015a55845162004c22565b511015620281f0565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202840957600262028302825162004c22565b515103620283af57602082015160268110156200294257600d0362006638576202832d83926202a012565b60009182945b6202834057505050905090565b815185101562015cba5762028356858362004c79565b516202836762006854835162004c22565b5111801562028389575b62015cb25762028382849562004c12565b9462028333565b5062028396858362004c79565b51620283a762015a55835162004c22565b511062028371565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202858a57600262028483825162004c22565b5151036202853057602082015160268110156200294257600d036200663857620284ae83926202a012565b60009182945b620284c157505050905090565b815185101562015cba57620284d7858362004c79565b51620284e862006854835162004c22565b511180156202850a575b62015cb25762028503849562004c12565b94620284b4565b5062028517858362004c79565b516202852862015a55835162004c22565b5110620284f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202870d57600262028604825162004c22565b515103620286b357602082015160268110156200294257600e0362006638576202862f83926202a012565b906000925b620286425750505050600090565b8151831015620161f557826202865a85948462004c79565b516202866b62006854845162004c22565b511115806202868c575b620050f757620286859062004c12565b9262028634565b5062028699818462004c79565b51620286aa62015a55845162004c22565b51101562028675565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202889057600262028787825162004c22565b5151036202883657602082015160268110156200294257600e036200663857620287b283926202a012565b906000925b620287c55750505050600090565b8151831015620161f55782620287dd85948462004c79565b51620287ee62006854845162004c22565b511115806202880f575b620050f757620288089062004c12565b92620287b7565b506202881c818462004c79565b516202882d62015a55845162004c22565b511015620287f8565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028a115760026202890a825162004c22565b515103620289b757602082015160268110156200294257600e0362006638576202893583926202a012565b60009182945b6202894857505050905090565b815185101562015cba576202895e858362004c79565b516202896f62006854835162004c22565b5111801562028991575b62015cb2576202898a849562004c12565b946202893b565b506202899e858362004c79565b51620289af62015a55835162004c22565b511062028979565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028b9257600262028a8b825162004c22565b51510362028b3857602082015160268110156200294257600e03620066385762028ab683926202a012565b60009182945b62028ac957505050905090565b815185101562015cba5762028adf858362004c79565b5162028af062006854835162004c22565b5111801562028b12575b62015cb25762028b0b849562004c12565b9462028abc565b5062028b1f858362004c79565b5162028b3062015a55835162004c22565b511062028afa565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602080820190815160268110156200294257600d14801562028cde575b62028c905750805160268110156200294257600f1490811562028c79575b5062028c335750600090565b6000805b6060604084015101518051821015620166ee5762028c588260e09262004c79565b5101511562021ab257604062028c7060609262004c12565b91505062028c37565b90505160268110156200294257600c143862028c27565b60009150815b8160408501510151805182101562028cd45762028cb68260019262004c79565b51151503620166e75762028ccc60409162004c12565b905062028c96565b5050505050600190565b50815160268110156200294257600e1462028c09565b602080820190815160268110156200294257600d14801562028de0575b62028d9c5750805160268110156200294257600f1490811562028d85575b5062028d3b5750600090565b6000805b6060604084015101518051821015620166ee5760e062028d628360019362004c79565b51015115151462021ab257604062028d7c60609262004c12565b91505062028d3f565b90505160268110156200294257600c143862028d2f565b60009150815b8160408501510151805182101562028cd45762028dc28260019262004c79565b51151514620166e75762028dd860409162004c12565b905062028da2565b50815160268110156200294257600e1462028d11565b602080820190815160268110156200294257600d14801562028ef5575b62028ea75750805160268110156200294257600f1490811562028e90575b5062028e3d5750600090565b60005b60606040830151015180518210156200663857819060e062028e66600193849362004c79565b51015115151462028e8a5750604062028e8160609262004c12565b91505062028e40565b91505090565b90505160268110156200294257600c143862028e31565b905060005b8160408401510151805182101562015deb57819062028ecf600192839262004c79565b5115151462028eee575062028ee660409162004c12565b905062028eac565b9250505090565b50815160268110156200294257600e1462028e13565b602080820190815160268110156200294257600d14801562028ffc575b62028fb55750805160268110156200294257600f1490811562028f9e575b5062028f525750600090565b60005b6060604083015101518051821015620066385762028f768260e09262004c79565b5101511562028f9757604062028f8e60609262004c12565b91505062028f55565b5050600190565b90505160268110156200294257600c143862028f46565b905060005b8160408401510151805182101562015deb57819062028fdd600192839262004c79565b5115150362028eee575062028ff460409162004c12565b905062028fba565b50815160268110156200294257600e1462028f28565b602080920191600192838151510362029133576202903284915162004c22565b515103620290da57808201805160268110156200294257600f14159081620290c2575b506200663857600091835b6202906e5750505050600090565b60408101926060845101519384518210156201d5da57620290a96200685460a0866202909c868b9a62004c79565b5101519351015162004c22565b5114620050f757620290bb9062004c12565b9262029060565b90505160268110156200294257600c14153862029055565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202929557818301805160268110156200294257600f141590816202927d575b5062015deb5783926000945b620291d6575050505050600090565b6040810160608082510151518710156202927557906000865b6202920b575b50505062029204849562004c12565b94620291c7565b62029217855162004c22565b51518110156202926f57856202923289858551015162004c79565b510151620292468262007494885162004c22565b51146202926457906202925b87939262004c12565b909192620291ef565b505050505050905090565b620291f5565b505062015fff565b90505160268110156200294257600c141538620291bb565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202945a57600262029310825162004c22565b5151036202940057818301805160268110156200294257600f14159081620293e8575b5062015deb57600092845b6202934d575050505050600090565b60408101936060948581510151958651831015620293df578286918262029376838c9b62004c79565b5101516202938962006854895162004c22565b5111159384620293af575b505050506201652657620293a89062004c12565b936202933e565b620293bf93945051015162004c79565b510151620293d262015a55855162004c22565b5110158482388062029394565b50505062015fff565b90505160268110156200294257600c14153862029333565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092016001928382515103620295dc5783620294d3835162004c22565b5151036202957d57808301805160268110156200294257600f1415908162029565575b5062015deb57600092845b62029510575050505050600090565b6060604082015101519384518110156202955e57826202953282889762004c79565b5101516202954562006854865162004c22565b51106201652657620295579062004c12565b9362029501565b5062015fff565b90505160268110156200294257600c141538620294f6565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b6020809201600192838251510362029756578362029654835162004c22565b515103620296f757808301805160268110156200294257600f14159081620296df575b5062015deb57600092845b62029691575050505050600090565b6060604082015101519384518110156202955e5782620296b382889762004c79565b510151620296c662006854865162004c22565b51116201652657620296d89062004c12565b9362029682565b90505160268110156200294257600c14153862029677565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b9060200190600191828151510362029a9f5782620297ce825162004c22565b51510362029a3f5760208201805160268110156200294257600f1415908162029a27575b5062006638576000939291825b6202980e575b50600093505050565b604081019460608087510151805183101562029a1e5762029834836202983b9262004c79565b51620055ad565b90600691828110156200294257158062029a05575b620299ab57620298696202983484838b51015162004c79565b828110156200294257861480620299eb575b620299ab57620298946202983484838b51015162004c79565b82811015620029425760028091149081620299d0575b50620299ab57620298c46202983484838b51015162004c79565b82811015620029425760038091149081620299b5575b50620299ab57620298f46202983484838b51015162004c79565b9782891015620029425760048099148062029991575b6202998657836202992392620298349251015162004c79565b908110156202997157849596506005809114908162029956575b50620050f7576202994e9062004c12565b9493620297ff565b90506202996862006854855162004c22565b5114386202993d565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b5088620299a362006854885162004c22565b51146202990a565b5093955050505050565b9050620299c762006854875162004c22565b511438620298da565b9050620299e262006854875162004c22565b511438620298aa565b5085620299fd62006854875162004c22565b51146202987b565b5062029a1662006854865162004c22565b511562029850565b50505062029805565b90505160268110156200294257600c141538620297f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362029bed5760208201805160268110156200294257600f1415908162029bd5575b50620066385782916000935b62029b415750505050600090565b6040810160608082510151518610156201d5da57906000855b62029b76575b50505062029b6f839462004c12565b9362029b33565b62029b82855162004c22565b515181101562029bcf578262029b9d88828551015162004c79565b51015162029bb18262007494885162004c22565b51146202284a579062029bc686939262004c12565b90919262029b5a565b62029b60565b90505160268110156200294257600c14153862029b27565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602081015160268110156200294257601303620075075760005b604080830151015180518210156200663857819060c062029c86600193849362004c79565b51015115151462028e8a575062029c9d9062004c12565b62029c61565b60209182018051516000949360019390916000190162029e0c57600262029ccb845162004c22565b51510362029db257818101516026811015620029425760130362029da8576000959493929190835b62029d02575b50505050909150565b604080820190808251015180518a101562029d9f5784918262029d278c809462004c79565b51015162029d3a62006854895162004c22565b511115938462029d6f575b5050505062029d655762029d5c8495969762004c12565b96959462029cf3565b5050509150915090565b62029d7f93945051015162004c79565b51015162029d9262015a55855162004c22565b5110158288388062029d45565b50505062029cf9565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001600191828251510362029fb7578262029e84835162004c22565b51510362029f5957602081015160268110156200294257601303620066385782916000935b62029eb75750505050600090565b6040808301908082510151518610156201d5da57906000855b62029eec575b50505062029ee5839462004c12565b9362029ea9565b62029efc87848451015162004c79565b51515181101562029f535762029f248162029f1c89868651015162004c79565b515162004c79565b5162029f3562006854865162004c22565b51146202284a579062029f4a86939262004c12565b90919262029ed0565b62029ed6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b602090818101805160268110156200294257600d149081156202a12d575b506202a0525750506040516202a0468162002a5e565b60008152600036813790565b6040019160a0916202a0746202a06c848651015162004c22565b515162004d95565b93600092835b6202a089868451015162004c22565b51518110156202a0e6576202a0a381858551015162004c79565b516202a0c1575b6202a0b96202a0899162004c12565b90506202a07a565b936202a0b96202a0dc828762001a9c6202a089958c62004c79565b959150506202a0aa565b50935050506202a0f68162004d95565b9060005b8181106202a109575090925050565b806202a11a6202a127928762004c79565b5162001a9c828662004c79565b6202a0fa565b90505160268110156200294257600e14386202a030565b9161025981146202a4c05761025a81146202a3d05761025b81146202a2e05761025c81146202a1ca5761025d81146202a1be5761025e81146202a1b25761025f81146202a1a657610260146202a19b575050600090565b620031f8916202a97e565b50620031f8916202a804565b50620031f8916202a6f3565b50620031f8916202a5b0565b50602001906001825151036202a2865760026202a1e8835162004c22565b5151036202a22c57602001908151516202a20762006854835162004c22565b51111591826202a21657505090565b62015a5c91925062015a55905151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a3765760016202a2fe835162004c22565b5151036202a31c5762006854602062015b6092015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a4665760016202a3ee835162004c22565b5151036202a40c576200685460206201593292015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a5565760016202a4de835162004c22565b5151036202a4fc576200685460206201583192015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919091602080930160019182825151036202a69957826202a5d2835162004c22565b5151036202a63f57938293946000935b6202a5f1575050505050600090565b818101519384518110156202955e576202a616620076f684620067ee848a9962004c79565b6202a62662006854865162004c22565b511462016526576202a6389062004c12565b936202a5e2565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202a7aa578293946000945b6202a71e575050505050600090565b8281018051518610156202955e576000855b6202a74b575b50506202a744849562004c12565b946202a70f565b6202a757845162004c22565b51518110156202a7a4576202a777620076f686620067ee8a865162004c79565b6202a7888262007494875162004c22565b51146202284a57906202a79c869262004c12565b90916202a730565b6202a736565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91909160208093019060019182815151036202a92457846202a827825162004c22565b5151920191825151036202a8a95782939460009283955b6202a84d575b50505050905090565b805180518710156202a8a257620076f683620067ee896202a86e9462004c79565b6202a87f8762007494865162004c22565b51036202a899576202a892859662004c12565b956202a83e565b50505091505090565b506202a844565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202aa4e578293946000935b6202a9a6575050505090565b8281018051518510156202aa4757856000918183905b6202a9de575b5050501562015fff576202a9d7859462004c12565b936202a99a565b6202a9ea865162004c22565b51518110156202aa41576202aa0a620076f688620067ee8b865162004c79565b6202aa1b8262007494895162004c22565b51146202aa34576202aa2d9062004c12565b826202a9bc565b505090508538806202a9c2565b6202a9c2565b50620050f7565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916101cd81146202aafa576101ce81146202aaee576101cf81146202aae2576101d0146202aad7575050600090565b620031f8916202b108565b50620031f8916202aee6565b50620031f8916202acf3565b50620031f8919060200160019182825151036202ac995760026202ab1f835162004c22565b5151036202ac3f576202ab32816202b2fb565b1562006638576202ab43906202b358565b9180939150518251036202abd457600092845b6202ab65575050505050600090565b80518410156201652e57836202ab7d86958362004c79565b516202ab8e62006854855162004c22565b5114806202abae575b62016526576202aba79062004c12565b936202ab56565b506202abbb818562004c79565b516202abcc62015a55855162004c22565b51106202ab97565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202ae8c5760026202ad12835162004c22565b5151036202ae32576202ad25816202b2fb565b1562006638576202ad36906202b358565b9180939150518251036202adc757600092845b6202ad58575050505050600090565b80518410156201652e57836202ad7086958362004c79565b516202ad8162006854855162004c22565b5114806202ada1575b62016526576202ad9a9062004c12565b936202ad49565b506202adae818562004c79565b516202adbf62015a55855162004c22565b51116202ad8a565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b0ae5760036202af05835162004c22565b5151036202b054576202af18816202b2fb565b1562006638576202af29906202b358565b9180939150518251036202afe957600092845b6202af4b575050505050600090565b80518410156201652e57836202af6386958362004c79565b516202af7462006854855162004c22565b5114806202afc2575b806202af9b575b62016526576202af949062004c12565b936202af3c565b506202afa8818562004c79565b516202afb96201c50b855162004c22565b5110156202af84565b506202afcf818562004c79565b516202afe062015a55855162004c22565b5111156202af7d565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b2a15760026202b127835162004c22565b5151036202b247576202b13a816202b2fb565b1562006638576202b14b906202b358565b9180939150518251036202b1dc57600092845b6202b16d575050505050600090565b80518410156201652e57836202b18586958362004c79565b516202b19662006854855162004c22565b5114806202b1b6575b62016526576202b1af9062004c12565b936202b15e565b506202b1c3818562004c79565b516202b1d462015a55855162004c22565b51146202b19f565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020018051602681101562002942576014149081156202b340575b81156202b329575b5062022c9957600090565b90505160268110156200294257601e14386202b31e565b8091505160268110156200294257601514906202b316565b6202b363816202b2fb565b156202b46957602081018051602681101562002942576014146202b454578051602681101562002942576015146202b41d575160268110156200294257601e146202b3eb57506040516202b3b78162002a5e565b60008152604051916202b3ca8362002a5e565b60008352604051916202b3dd8362002a5e565b600083526000368137929190565b604001906202b3ff60a08351015162004c22565b51906202b41660a06200749b818651015162004c46565b5191929190565b50604001906202b43260a08351015162004c22565b51906202b41660a06202b449818651015162004c57565b519451015162004c68565b50604001906202b3ff60a08351015162004c22565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202b5b5576101b081146202b5a9576101b181146202b59d576101b281146202b591576101b381146202b585576101b481146202b579576101b581146202b56d576101b6146202b562575050600090565b620031f8916202bffe565b50620031f8916202be59565b50620031f8916202bcf4565b50620031f8916202bb8f565b50620031f8916202ba2a565b50620031f8916202b885565b50620031f8916202b720565b50620031f891906020019060019182815151036202b6c657826202b5da825162004c22565b5151036202b66c576020820151602681101562002942576011036200663857600091835b6202b60c5750505050600090565b604081019260a0936202b623858251015162004c22565b51518210156201d5da57816200749487966202b6429351015162004c22565b516202b65362006854855162004c22565b5110620050f7576202b6659062004c12565b926202b5fe565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b82b57826202b73f825162004c22565b5151036202b7d1576020820151602681101562002942576011036200663857600091835b6202b7715750505050600090565b604081019260a0936202b788858251015162004c22565b51518210156201d5da57816200749487966202b7a79351015162004c22565b516202b7b862006854855162004c22565b5111620050f7576202b7ca9062004c12565b926202b763565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b9d05760026202b8a5825162004c22565b5151036202b976576020820151602681101562002942576011036200663857600091835b6202b8d75750505050600090565b604081019260a0936202b8ee858251015162004c22565b51518210156201d5da5781856202b90f82620074948a998651015162004c22565b516202b92062006854885162004c22565b51111592836202b945575b505050620050f7576202b93e9062004c12565b926202b8c9565b5101516202b9599250620074949062004c22565b516202b96a62015a55855162004c22565b5110158138806202b92b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bb3557826202ba49825162004c22565b5151036202badb576020820151602681101562002942576011036200663857600091835b6202ba7b5750505050600090565b604081019260a0936202ba92858251015162004c22565b51518210156201d5da57816200749487966202bab19351015162004c22565b516202bac262006854855162004c22565b5114620050f7576202bad49062004c12565b926202ba6d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bc9a57826202bbae825162004c22565b5151036202bc40576020820151602681101562002942576012036200663857600091835b6202bbe05750505050600090565b604081019260a0936202bbf7858251015162004c22565b51518210156201d5da57816200749487966202bc169351015162004c22565b516202bc2762006854855162004c22565b5110620050f7576202bc399062004c12565b926202bbd2565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bdff57826202bd13825162004c22565b5151036202bda5576020820151602681101562002942576012036200663857600091835b6202bd455750505050600090565b604081019260a0936202bd5c858251015162004c22565b51518210156201d5da57816200749487966202bd7b9351015162004c22565b516202bd8c62006854855162004c22565b5111620050f7576202bd9e9062004c12565b926202bd37565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bfa45760026202be79825162004c22565b5151036202bf4a576020820151602681101562002942576012036200663857600091835b6202beab5750505050600090565b604081019260a0936202bec2858251015162004c22565b51518210156201d5da5781856202bee382620074948a998651015162004c22565b516202bef462006854885162004c22565b51111592836202bf19575b505050620050f7576202bf129062004c12565b926202be9d565b5101516202bf2d9250620074949062004c22565b516202bf3e62015a55855162004c22565b5110158138806202beff565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202c10957826202c01d825162004c22565b5151036202c0af576020820151602681101562002942576012036200663857600091835b6202c04f5750505050600090565b604081019260a0936202c066858251015162004c22565b51518210156201d5da57816200749487966202c0859351015162004c22565b516202c09662006854855162004c22565b5114620050f7576202c0a89062004c12565b926202c041565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b156202c16b57565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202c1ba8162002edc565b6202c1c86200dbbb62031666565b6202c1d38162002edc565b600181036202c1f157506202c1eb6200dbe762031666565b61038f55565b6202c1fc8162002edc565b600281036202c20c575061039055565b6202c2178162002edc565b600381036202c227575061039155565b806202c23560049262002edc565b146202c23e5750565b61039255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b82518110156202c9df5760e06202c307828562004c79565b510151156202c6be576202c32062029834828562004c79565b600680821015620029425760049182036202c46b575060209060016003836202c34a868962004c79565b51015106036202c3675750506202c3619062004c12565b6202c2ef565b62004c0e82846202c45060636202c3986202c391856202c388868e62004c79565b51015162005028565b9362005028565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202c3d462004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c3fd82518093601396878501910162002d20565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002ab3565b5193849362461bcd60e51b8552840152602483019062002d45565b6202c47b62029834848762004c79565b818110156201d190576001036202c58b575060209060026003836202c4a1868962004c79565b51015106036202c4b85750506202c3619062004c12565b62004c0e82846202c450605d6202c4d96202c391856202c388868e62004c79565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202c51562004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c53e82518093601396878501910162002d20565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002ab3565b6202c59b62029834848762004c79565b90811015620144ba576002036202c6a2576020906003826202c5be858862004c79565b510151066202c5d45750506202c3619062004c12565b62004c0e82846202c4506202c5fa6202c5f3846202c388858d62004c79565b9262005028565b916202c69360409384519586936202c61862004ce38387016202c2b3565b0160008051602062031c4883398151915281528151906202c642826013948d868501910162002d20565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002ab3565b60405162461bcd60e51b815290819062004c0e9082016202c244565b6202c6ce62029834828562004c79565b6006908181101562002942576005036202c7e95750602060016003826202c6f6858862004c79565b51015106036202c70c57506202c3619062004c12565b62004c0e826202c7cc60526202c72d6202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202c76862004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c792826013958c878501910162002d20565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002ab3565b5192839262461bcd60e51b84526004840152602483019062002d45565b6202c7f962029834838662004c79565b9080821015620029425760039182036202c90857506002602091826202c820858862004c79565b51015106036202c83657506202c3619062004c12565b62004c0e826202c7cc605c6202c8576202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202c89262004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c8bc826013958c878501910162002d20565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002ab3565b6202c91862029834848762004c79565b9081101562002942576002036202c9c457602090816202c939848762004c79565b510151066202c94e57506202c3619062004c12565b62004c0e826202c7cc6202c96d6202c5f3856202c38881988b62004c79565b916202c9b560409384519788936202c98b62004ce38387016202c27c565b0160008051602062031c4883398151915281528151906202c642826013948b868501910162002d20565b03601f19810186528562002ab3565b60405162461bcd60e51b81528062004c0e600482016202c244565b509050565b156202c9ec57565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202ca7557565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202cacd57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202cb2e57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202cb8f57565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202cbe857565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202cc4a57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202ccad57565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202cd1357565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202cd7557565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202cdcd57565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202ce2c57565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202ce8557565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202cede60c08351015162004c22565b51916202cf0060a06202cef5818451015162004c22565b519251015162004c46565b51936202cf15845183511462000ee962031533565b6202cf28845186511462000ee962031533565b60005b84518110156202cf84576202cf41818462004c79565b5190606482101562004c30576202cf7e9160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202cf2b565b5092919360005b83518110156202d0ae576202cfa1818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202cfe060406000205462007da7868962004c79565b906202cfed868a62004c79565b51918783101562004c3057846202d01a93878f5116600052811b01845260406000205562000ee962031637565b6202d026848862004c79565b518581101562004c30578290846202d03f878c62004c79565b5116600052811b0181526202d05f6040600020546200685b868962004c79565b9190926202d06e868a62004c79565b519687101562004c30576202d0a89662000ef0956202d08e888d62004c79565b5116600052811b01905260406000205562000ee96203169c565b6202cf8b565b5050620111156202d0bf91620312cf565b90604051936202d0cf8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d0f68562004c22565b526000935b81518510156202d417576202d111858362004c79565b51946202d11f845162004d95565b916000936202d12f825162004d95565b610920528496855b87518110156202d1d7576202d15e610960516202d155838b62004c79565b51168b620310b9565b15806202d1a0575b6202d17d575b6202d1779062004c12565b6202d137565b956202d1976202d17791610960516200a1478a8c62004c79565b9690506202d16c565b5060648a101562004c3057610960516202d1bb828a62004c79565b511660005260038a811b0160205260406000205415156202d166565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d270578762004c3057610960516202d214828c62004c79565b51166000528b602052604060002054156202d23b575b6202d2359062004c12565b6202d1f4565b976202d2676202d235918b6202d2568c610960519262004c79565b511662001a9c826109205162004c79565b9890506202d22a565b50949591939650985096909596806109405262004c3057600401806109805254956202d2a1620080b6868962006271565b61090052600097886109a0525b6109405162004c30576109a051888110156202d34c576202d2dd6202d2f3916000610940526109805162004e91565b6109605191549060031b1c166109205162031166565b156202d312575b6202d3086109a05162004c12565b6109a0526202d2ae565b976202d345906202d32a6109a0516109805162004e91565b6109605191549060031b1c1662001a9c826109005162004c79565b976202d2fa565b5095939096509690969391936000915b8383106202d3e657505050506109405162004c305761090051516001600160401b038111620029ba576202d394816109805162004fcd565b60206109005101610980516000526020600020600061096051905b8481106202d3cf5750505050506202d3c79062004c12565b93926202d0fb565b60019060208386511695019481850155016202d3af565b6200824c6202d41091610960516202d3ff868662004c79565b511662001a9c826109005162004c79565b916202d35c565b5050509050565b60408101906202d43360c08351015162004c22565b51916202d44a60a06202cef5818451015162004c22565b51936202d45f845183511462000ee962031533565b6202d472845186511462000ee962031533565b60005b84518110156202d4ce576202d48b818462004c79565b5190606482101562004c30576202d4c89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d475565b5092919360005b83518110156202d5de576202d4eb818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202d52a60406000205462007da7868962004c79565b906202d537868a62004c79565b51918783101562004c3057846202d56493878f5116600052811b01845260406000205562000ee962031637565b6202d570848862004c79565b518581101562004c30578290846202d589878c62004c79565b5116600052811b0181526202d5a96040600020546200685b868962004c79565b9190926202d5b8868a62004c79565b519687101562004c30576202d5d89662000ef0956202d08e888d62004c79565b6202d4d5565b5050620111156202d5ef91620312cf565b90604051936202d5ff8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d6268562004c22565b526000935b81518510156202d417576202d641858362004c79565b51946202d64f845162004d95565b916000936202d65f825162004d95565b610940528496855b87518110156202d6fe576202d685610960516202d155838b62004c79565b15806202d6c7575b6202d6a4575b6202d69e9062004c12565b6202d667565b956202d6be6202d69e91610960516200a1478a8c62004c79565b9690506202d693565b5060648a101562004c3057610960516202d6e2828a62004c79565b511660005260038a811b0160205260406000205415156202d68d565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d797578762004c3057610960516202d73b828c62004c79565b51166000528b602052604060002054156202d762575b6202d75c9062004c12565b6202d71b565b976202d78e6202d75c918b6202d77d8c610960519262004c79565b511662001a9c826109405162004c79565b9890506202d751565b50949591939650985096909596806109005262004c3057600401806109205254956202d7c8620080b6868962006271565b6109a05260009788610980525b6109005162004c305761098051888110156202d873576202d8046202d81a916000610900526109205162004e91565b6109605191549060031b1c166109405162031166565b156202d839575b6202d82f6109805162004c12565b610980526202d7d5565b976202d86c906202d851610980516109205162004e91565b6109605191549060031b1c1662001a9c826109a05162004c79565b976202d821565b5095939096509690969391936000915b8383106202d90d57505050506109005162004c30576109a051516001600160401b038111620029ba576202d8bb816109205162004fcd565b60206109a05101610920516000526020600020600061096051905b8481106202d8f65750505050506202d8ee9062004c12565b93926202d62b565b60019060208386511695019481850155016202d8d6565b6200824c6202d93791610960516202d926868662004c79565b511662001a9c826109a05162004c79565b916202d883565b60408101906202d95360c08351015162004c22565b51916202d96a60a06202cef5818451015162004c22565b51936202d97f845183511462000ee962031533565b6202d992845186511462000ee962031533565b60005b84518110156202d9ee576202d9ab818462004c79565b5190606482101562004c30576202d9e89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d995565b5092919360005b83518110156202dafe576202da0b818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202da4a60406000205462007da7868962004c79565b906202da57868a62004c79565b51918783101562004c3057846202da8493878f5116600052811b01845260406000205562000ee962031637565b6202da90848862004c79565b518581101562004c30578290846202daa9878c62004c79565b5116600052811b0181526202dac96040600020546200685b868962004c79565b9190926202dad8868a62004c79565b519687101562004c30576202daf89662000ef0956202d08e888d62004c79565b6202d9f5565b5050620111156202db0f91620312cf565b90604051936202db1f8562002a97565b60018552602036818701376001600160a01b036109408190529051166202db468562004c22565b526000935b81518510156202d417576202db61858362004c79565b51946202db6f845162004d95565b916000936202db7f825162004d95565b6109a0528496855b87518110156202dc1e576202dba5610940516202d155838b62004c79565b15806202dbe7575b6202dbc4575b6202dbbe9062004c12565b6202db87565b956202dbde6202dbbe91610940516200a1478a8c62004c79565b9690506202dbb3565b5060648a101562004c3057610940516202dc02828a62004c79565b511660005260038a811b0160205260406000205415156202dbad565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202dca6578762004c3057610940516202dc5b828c62004c79565b51166000528b602052604060002054156202dc82575b6202dc7c9062004c12565b6202dc3b565b976202dc9d6202dc7c918b6202d9268c610940519262004c79565b9890506202dc71565b50949591939650985096909596806109005262004c3057600401806109205254956202dcd7620080b6868962006271565b6109805260009788610960525b6109005162004c305761096051888110156202dd82576202dd136202dd29916000610900526109205162004e91565b6109405191549060031b1c166109a05162031166565b156202dd48575b6202dd3e6109605162004c12565b610960526202dce4565b976202dd7b906202dd60610960516109205162004e91565b6109405191549060031b1c1662001a9c826109805162004c79565b976202dd30565b5095939096509690969391936000915b8383106202de1c57505050506109005162004c305761098051516001600160401b038111620029ba576202ddca816109205162004fcd565b60206109805101610920516000526020600020600061094051905b8481106202de055750505050506202ddfd9062004c12565b93926202db4b565b60019060208386511695019481850155016202dde5565b6200824c6202de4691610940516202de35868662004c79565b511662001a9c826109805162004c79565b916202dd92565b610324805482101562004c30576000526007602060002091020190600090565b815180519192916001600160401b038111620029ba576202de8f818562004fcd565b6020809201846000528260002060005b8381106202df06575050505060c08260069262002b5a95940151600185015560408101516002850155606081015160038501556202dee760808201511515600486016200572c565b6202defa60a08201516005860162005659565b0151151591016200572c565b825182820155918401916001016202de9f565b6103248054600160401b811015620029ba576202df3c916001820190556202de4d565b91909162005c965762002b5a916202de6d565b610394908154600160401b811015620029ba576001810180845581101562004c305762002b5a9260005260206000200162005659565b62006a176202df94916200754a565b610738805480600052610736908160205260ff60096040600020015460081c166203067d57610733600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202dff5604060002062003634565b9060008061032a54905b81811062030636575b5050156203061a575b60005b60208301519081518110156202e04c5762000ef06200771662010ea3620076f66020620067ee866202e0469862004c79565b6202e014565b505060005b602083015180518210156202e09957620076f66020620067ee846202e0769462004c79565b90606482101562004c30576202e09391429061032b015562004c12565b6202e051565b50506000905b602083015180518310156200a59257826202e0ba9162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036202e2c657604001906202e0fb60c08351015162004c22565b51936202e11260a0620077f0818651015162004c22565b51916202e12386518551146202cca5565b6202e13286518451146202cd0b565b60005b86518110156202e254576202e14b818662004c79565b51606481101562004c3057600160ff60076202e1709360031b0154161515146202cd6d565b6202e17c818562004c79565b516202e189828762004c79565b5190606482101562004c30576202e1aa906006809360031b0154906200606a565b6202e1b6848962004c79565b5192606484101562004c30576202e1d29360031b01556202cdc5565b6202e1de818562004c79565b516202e1eb828762004c79565b5190606482101562004c30576202e213916003906001600160a01b0362011091868d62004c79565b91906202e221828862004c79565b5190606482101562004c30576202e24e9362000ef0926003906001600160a01b03620110e4878f62004c79565b6202e135565b5094915091620111156202e26891620312cf565b93604051926202e2788462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202e2a3938762004c79565b6202e284565b50945092602092506202e2bd915062004c12565b9190506202e09f565b602081949293940151602681101562002942576002036202e558576040018051928351906202e2fe62007a1660a08097015162004c22565b519382518651036202e5035782518451036202e4ad5782518551036202e4545760005b86518110156202e43e576202e337818862004c79565b51606481101562004c305760ff60076202e3589260031b015416156202ce7d565b6202e364818862004c79565b51606481101562004c305760031b600701805460ff191660011790556202e38c818562004c79565b516202e399828962004c79565b5190606482101562004c305760056202e3b69260031b0162005659565b6202e3c2818662004c79565b516202e3cf828962004c79565b51606481101562004c305760031b600101556202e3ed818762004c79565b516202e3fa828962004c79565b51606481101562004c305760031b600201556202e418818862004c79565b5190606482101562004c3057600060066202e4389360031b015562004c12565b6202e321565b509591509350602092506202e2bd915062004c12565b60405162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b92916020840151602681101562002942576003036202eb64576202e58460c06040860151015162004c22565b5160a0916202e5ad6202e59e846040890151015162004c22565b51936040880151015162004c46565b51936202e5c2835185511462000ee962031533565b6202e5d5835186511462000ee962031533565b60005b83518110156202e630576202e5ee818662004c79565b5190606482101562004c305760036202e62a9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6202e5d8565b509095919560005b87518110156202e757576202e64e818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b016020526202e68560406000205462007da7838962004c79565b906202e692838862004c79565b5191606483101562004c305760036202e6c89360018060a01b03895116600052811b0160205260406000205562000ee962031637565b6202e6d4818662004c79565b51606481101562004c30576003906001600160a01b036202e6f6848c62004c79565b5116600052811b016020526202e7176040600020546200685b838962004c79565b91906202e725828862004c79565b5190606482101562004c30576202e75193600362000ef0938d62007e608760018060a01b039262004c79565b6202e638565b50926202e76f919294506200bb4e90969596620312cf565b92604051906202e77f8262002a97565b6001825260203681840137516001600160a01b03166202e79f8262004c22565b526000945b80518610156202eb50576202e7ba868262004c79565b516108e0526202e7cb855162004d95565b966000946202e7db845162004d95565b6108c05260009460005b88518110156202e8aa578a896202e8156001600160a01b036202e809858462004c79565b51166108e051620310b9565b15806202e865575b6202e836575b50506202e8309062004c12565b6202e7e5565b986202e85a9162001a9c82859c62007f886202e8309760018060a01b039262004c79565b9790508a896202e823565b50505060646108e051101562004c30576001600160a01b036202e889828b62004c79565b511660005260036108e051811b016020528a8960406000205415156202e81d565b50909895979498969291939660005b88518110156202e94c5760646108e051101562004c30576001600160a01b036202e8e4828b62004c79565b511660005260036108e051811b01602052604060002054156202e913575b6202e90d9062004c12565b6202e8b9565b996202e90d906202e943906001600160a01b036202e9328e8d62004c79565b511662001a9c826108c05162004c79565b9a90506202e902565b509850969592919093966108e0516064811015806108805262004c305760031b60040154986202e981620080b6898c62006271565b6108a0526000610860526000610840525b6108805162004c3057610840518a8110156202ea5b576202e9c76202e9e49160006108805260046108e05160031b0162004e91565b90546108c05160039290921b1c6001600160a01b03169062031166565b156202ea03575b6202e9f96108405162004c12565b610840526202e992565b6000610880526202ea216108405160046108e05160031b0162004e91565b60018060a01b0391549060031b1c166202ea42610860516108a05162004c79565b526202ea516108605162004c12565b610860526202e9eb565b50979294959093985095909560005b8281106202eb04575050506108805162004c30576108a051516001600160401b038111620029ba576202eaa78160046108e05160031b0162004fcd565b60206108a0510160046108e05160031b01600052602060002060005b8381106202eae657505050506202eada9062004c12565b9492959091956202e7a4565b82516001600160a01b0316818301556020909201916001016202eac3565b6202eb4a906001600160a01b036202eb1d828562004c79565b51166202eb31610860516108a05162004c79565b526202eb406108605162004c12565b6108605262004c12565b6202ea6a565b5050936202e2bd9193506020925062004c12565b90926020810151602681101562002942576004036202ed975760400160c0936202eb966200bf71868451015162004c22565b51906202ebad60a0620077f0818651015162004c22565b51936202ebc2875184511462000ee962031533565b6202ebd5875185511462000ee962031533565b6202ebe8875186511462000ee962031533565b60005b87518110156202ec2f576202ec01818662004c79565b5190606482101562004c30576202ec29916003906001600160a01b036201141a848d62004c79565b6202ebeb565b509095919593929360005b83518110156202ed54576202ec50818762004c79565b51606481101562004c30576003906001600160a01b036202ec72848862004c79565b5116600052811b016020526202ec9360406000205462007da7838862004c79565b906202eca0838962004c79565b5191606483101562004c30576202ecc8926003906001600160a01b03620114da878b62004c79565b6202ecd4818762004c79565b51606481101562004c30576003906001600160a01b036202ecf6848c62004c79565b5116600052811b016020526202ed176040600020546200685b838862004c79565b9190506202ed26818862004c79565b5191606483101562004c30576202ed4e926003906001600160a01b036201157b858e62004c79565b6202ec3a565b50936202ed6e9192969350620084c562007e9891620312cf565b9260005b83518110156202e2a9578062000ef0620079b66202ed91938762004c79565b6202ed72565b926020840151602681101562002942576005036202ef525760408401906202edc960a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156202ee30576202edee818562004c79565b5190606482101562004c305760036202ee2a9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6202edd8565b509060005b83518110156202eed1576202ee4b818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b016020526202ee8260406000205462007da7838862004c79565b91906202ee90828762004c79565b5190606482101562004c30576202eecb93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b6202ee35565b50949250906202eee190620312cf565b90604051926202eef18462002a97565b6001845260203681860137516001600160a01b03166202ef118462004c22565b52604051946202ef218662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202ef4c938762004c79565b6202ef2d565b926020810151602681101562002942576006036202f0e6576040016202ef7d60c08251015162004c22565b51936202ef9460a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156202eff1576202efc3818562004c79565b5190606482101562004c30576202efeb916003906001600160a01b036201183d848c62004c79565b6202efad565b509060005b86518110156202f090576202f00c818562004c79565b51606481101562004c30576003906001600160a01b036202f02e848b62004c79565b5116600052811b016020526202f04f60406000205462007da7838862004c79565b91906202f05d828762004c79565b5190606482101562004c30576202f08a9362000ef0926003906001600160a01b03620114da878f62004c79565b6202eff6565b5094916202f0a59193506201111590620312cf565b91604051946202f0b58662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202f0e0938762004c79565b6202f0c1565b6020810151602681101562002942576007036202f16c57604001926202f11160c08551015162004c22565b51916202f12360a08651015162004c22565b51945151916202f13b845187511462000ee962031533565b60005b84518110156202e2a9576202f1669062000ef06001600160a01b0380620119d9848a62004c79565b6202f13e565b6020819493940151602681101562002942576008036202f1da5760c060406202f199920151015162004c22565b519160005b83518110156202f1c8576202f1c2906001600160a01b038062011ac1838862004c79565b6202f19e565b509260209192506202e2bd9062004c12565b6020810151602681101562002942576009036202f2335760c060406202f204920151015162004c22565b519160005b83518110156202f1c8576202f22d906001600160a01b038062011b55838862004c79565b6202f209565b602081015160268110156200294257600a036202f2b957604001906202f26460a06200d48660c08551015162004c22565b51926202f279835185511462000ee962031533565b60005b83518110156202f2a6576202f2a0906001600160a01b038062011bf1838862004c79565b6202f27c565b50936202e2bd9193506020925062004c12565b60208194939294015160268110156200294257600b036202f34457604001926202f2e860c08551015162004c22565b51935151916202f300855184511462000ee962031533565b60005b85518110156202f331576202f32b9062000ef06001600160a01b038062011ca4848b62004c79565b6202f303565b50935091602091506202e2bd9062004c12565b909192602082015160268110156200294257600c036202f47757606060408301510151926202f373846202c2eb565b60005b84518110156202f2a65760e06202f3968260606040880151015162004c79565b510151156202f40e576202f3b762008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f3da60059162005c20565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005c20565b6202f376565b6202f42662008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f44960059162005be0565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005be0565b929190602081015160268110156200294257600d036202f4e0576040019260206202f4a760a08651015162004c22565b5194510151916202f4bc85518451146202c9e4565b60005b85518110156202f331578062011e856202f4da928662004c79565b6202f4bf565b602081949294015160268110156200294257600e036202f549576040019060206202f51060a08451015162004c22565b5192510151936202f52583518651146202c9e4565b60005b83518110156202f331578062011f996202f543928862004c79565b6202f528565b90602082949394015160268110156200294257600f036202f67d57606060408301510151926202f579846202c2eb565b60005b84518110156202f2a65760e06202f59c8260606040880151015162004c79565b510151156202f614576202f5bd62008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f5e060059162005c20565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005c20565b6202f57c565b6202f62c62008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f64f60059162005be0565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005be0565b906020819493940151602681101562002942576010036202f6ee5760400151906202f6b160a0608084015193015162004c22565b51936202f6c6835186511462000ee962031533565b60005b83518110156202f331578062000ef06200935a6202f6e8938762004c79565b6202f6c9565b6020819492940151602681101562002942576011036202f90757604001906202f72260a06200d48660c08551015162004c22565b51936202f73383518651146202c163565b60005b83518110156202f764576202f75e9062000ef06001600160a01b03806201221c848962004c79565b6202f736565b509350906202f77390620311b3565b9061032654936202f78a620080b684518762006271565b9060009260005b8781106202f8ec575060005b85518110156202f844576000805b8981106202f7f5575b50156202f7cd575b6202f7c79062004c12565b6202f79d565b936202f7c7906202f7ec906001600160a01b036200ddb1888a62004c79565b9490506202f7bc565b6202f8008162004de9565b90546001600160a01b0360039290921b1c8116906202f820858b62004c79565b5116146202f839576202f8339062004c12565b6202f7ab565b50506001386202f7b4565b5095509392506202f8558262004d95565b8051906001600160401b038211620029ba576020906202f8758362004f2a565b01610326600052602060002060005b8381106202f8ce575050505060005b8281106202f8ab575050506202e2bd60209162004c12565b6202f8c89062000ef06001600160a01b03620019d0838662004c79565b6202f893565b82516001600160a01b0316818301556020909201916001016202f884565b936200defd6202f901916200dedf8762004de9565b6202f791565b6020819492940151602681101562002942576012036202fb2a57604001906202f93b60a06200d48660c08551015162004c22565b51936202f94c83518651146202c163565b60005b83518110156202f97d576202f9779062000ef06001600160a01b03806201247e848962004c79565b6202f94f565b50935091906202f98d90620311b3565b610326546202f99c8162004d95565b906000926000915b8083106202fa51575050506202f9ba8262004d95565b8051906001600160401b038211620029ba576020906202f9da8362004f2a565b01610326600052602060002060005b8381106202fa33575050505060005b8281106202fa10575050506202e2bd60209162004c12565b6202fa2d9062000ef06001600160a01b03620019d0838662004c79565b6202f9f8565b82516001600160a01b0316818301556020909201916001016202f9e9565b91956000959193959760005b85518110156202fb1b576202fa728962004de9565b90546001600160a01b0360039290921b1c8116906202fa92838962004c79565b5116146202faab576202faa59062004c12565b6202fa5d565b509750956001959391955b806202faea575b156202fad5576202face9062004c12565b916202f9a4565b936200defd6202face916200dedf8762004de9565b506202faf68162004de9565b60018060a01b0391549060031b1c16600052610325602052604060002054156202fabd565b5097969096959391956202fab6565b6020810151602681101562002942576013036202fb835760408091015101519260005b84518110156202fb72578062000ef0620098ce6202fb6c938862004c79565b6202fb4d565b509250906202e2bd60209162004c12565b6020810151602681101562002942576014036202fd2c57604001906202fbae60c08351015162004c22565b51936202fbc560a0620077f0818651015162004c22565b51916202fbd686518551146202cca5565b6202fbe586518451146202cd0b565b60005b86518110156202fcd7576202fbfe818562004c79565b516202fc0b828762004c79565b5190606482101562004c305760066202fc2a9260031b0154906200606a565b906202fc37838862004c79565b5191606483101562004c305760066202fc559360031b01556202cdc5565b6202fc61818562004c79565b516202fc6e828762004c79565b5190606482101562004c30576202fc96916003906001600160a01b0362011091868d62004c79565b91906202fca4828862004c79565b5190606482101562004c30576202fcd19362000ef0926003906001600160a01b03620110e4878f62004c79565b6202fbe8565b5094915091620111156202fceb91620312cf565b93604051926202fcfb8462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202fd26938762004c79565b6202fd07565b6020810151602681101562002942576015036202fd56576020919262000ef06202e2bd926202d93e565b6020810151602681101562002942576016036202fdb25760c060406202fd80920151015162004c22565b519260005b84518110156202fb72576202fdac9062000ef06001600160a01b0362009b14838962004c79565b6202fd85565b6020810151602681101562002942576017036202fe0f5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036202fe795760c060406202fe39920151015162004c22565b51610396805460ff191660011790559260005b84518110156202fb72576202fe739062000ef06001600160a01b0362009be0838962004c79565b6202fe4c565b6020819392930151602681101562002942576019036202ff605760008091604082910160a0808251015180516202ff27575b5050519060e0820151916202fecf6200685460c060018060a01b0393015162004c22565b511690602083519301915af13d156202ff1e573d906202feef8262002e73565b916202feff604051938462002ab3565b82523d6000602084013e5b1562012a4857506202e2bd60209162004c12565b6060906202ff0a565b6202ff329062004c22565b51516202ff41575b806202feab565b81925062006854906202ff579251015162004c22565b5190386202ff3a565b602081015160268110156200294257601a036202ffe25760a060406202ff8a920151015162004c22565b516202ff9a60038251146202c163565b6202ffa58162004c22565b51916202ffb662012b6e8362004c46565b51916200f053576020926202e2bd9260010362009e215762009e019062009df46103919182546200606a565b602081015160268110156200294257601b03620303cb575091906203001261038f54620061b062009e97620313c0565b50506203001e62031484565b506000805b606481106203037f575b5050620300396200618c565b90620300486107345462004d95565b906000946000905b606482101562030373578160031b9260ff600785015416156203015b5760009660028501541562030142576000975b62004c3057600485015488101562030142576203013b62030134899a620300ae620300e59b60048a0162004e91565b60018060a01b0391549060031b1c168060005260038901602052620300d98b60406000205462005ebb565b9c9062000ee962031484565b620301286203010c6203010060009e60028d01549062005ebb565b919062000ee962031484565b8260005261032760205262009df460406000209182546200606a565b62001a9c828b62004c79565b9962004c12565b976203007f565b929093506203015391965062004c12565b909462030050565b95969392509350505b6203016f8262004d95565b9160009160005b828110620302dd57505050610328549162030196620080b6848462006271565b926000906000905b808210620302c057505060005b8381106203022a5750508251929150506001600160401b038211620029ba57602090620301d88362004eef565b01610328600052602060002060005b8381106203020c57505050506202e2bd60209160006103915560006103925562004c12565b82516001600160a01b031681830155602090920191600101620301e7565b6000805b83811062030278575b501562030250575b6203024a9062004c12565b620301ab565b906203024a906203026f906001600160a01b036200823e858762004c79565b9190506203023f565b6001600160a01b03806203028d858862004c79565b5116906203029c838a62004c79565b511614620302b557620302af9062004c12565b6203022e565b505060013862030237565b90916200824c620302d691620098248562004dcd565b906203019e565b6000805b8581106203032b575b501562030303575b620302fd9062004c12565b62030176565b92620302fd9062030322906001600160a01b036200823e878662004c79565b939050620302f2565b6001600160a01b038062030340858762004c79565b5116906203034f838a62004c79565b5116146203036857620303629062004c12565b620302e1565b5050600138620302ea565b93505092939062030164565b8060039594951b9060ff60078301541615620303c1576200a2d4620074b662000ef0946200a2c8620303b89560026200a2be8762005d82565b93929362030023565b509392936203002d565b602081015160268110156200294257601c03620304285760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036203044e575b506202e2bd60209162004c12565b602081015160268110156200294257601e146203044057602081015160268110156200294257601f036203049f57602091620304976200a3b960406202e2bd9401515162004c22565b915062030440565b602081015160268110156200294257602003620304c5575b506202e2bd60209162030497565b6020810151602681101562002942576021809103620304e6575b50620304b7565b602082015160268110156200a53a57602203620305225750506202e2bd60209161039660ff1981541690556203051b62004fba565b91620304df565b602082015160268110156200a53a5760230362030549575b50506202e2bd6020916203051b565b6020820151906026821015620137aa5760248092036203056b575b506203053a565b60208301516026811015620306075760251462030564576020830151906026821015620305f35750601503620305b65750602091620305ae6202e2bd926202d93e565b913862030564565b60649060166040519162461bcd60e51b83526020600484015282015275496e76616c6964206f7065726174696f6e207479706560501b6044820152fd5b9050634e487b7160e01b6000526004526000fd5b50634e487b7160e01b6000526004526000fd5b815162030630906001600160a01b031662006647565b6202e011565b620306418162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462030670576203066a9062004c12565b6202dfff565b505050600138806202e008565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062030704575050565b62002b5a91600052601f6020600020910160051c81019062004ed6565b90600160401b8111620029ba5781548183558082106203074057505050565b62002b5a92600052601f6020600020918180850160051c84019416806203076f575b500160051c019062004ed6565b600019908186019182549160200360031b1c1690553862030762565b9060ff809160031b9316831b921b19161790565b919091620307ba620307b36000946202de4d565b5062003495565b91835b83518051821015620308ac5781620307d59162004c79565b516064908181101562004c3057600390811b9660018060a01b038616600052602091880182526203081360409860018a600020549101549062005ebb565b91901562030879579062030827916200606a565b97901562030843575050506203083d9062004c12565b620307bd565b519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b505086519062461bcd60e51b82526004820152600e60248201526d706f776572206f766572666c6f7760901b6044820152fd5b509092505050565b60005b61073854908160005261073691602092808452600393604092858460002001805486101562030a1557620308f086620308fc9262004e91565b905490881b1c6202de4d565b509560ff6006809801541662030924575b50505050506203091e915062004c12565b620308b7565b816000528383526203094c620309408783886000200162004e91565b905490831b1c6202de4d565b50966203096c876001809a01549285600052878752886000200162004e91565b905490831b1c91836000528585526203098c886005896000200162004e91565b9054911b1c9060009260649283810293818504149015171562030a015790620309b59162004eaa565b10620309f9575b620309c857806203090d565b6009945060005252600020019060ff1991818382541617905561073391825416179055600061073155600061073255565b5085620309bc565b634e487b7160e01b84526011600452602484fd5b50505050505050600061073854905b81600052610736602052600380604060002001805483101562030a9a57600662030a6162030a558560ff9462004e91565b905490851b1c6202de4d565b500154161562030a955762030a768262030caa565b908110156200294257620105035762030a8f9062004c12565b62030a24565b505050565b50505060ff19906107336003838254161790556000526107366020526009604060002001908154169055565b6107385490600090828252610736916020928084526003906040908282852001549562030af38762002b80565b9662030b028451988962002ab3565b80885262030b13601f199162002b80565b013682890137845b88865282825284848720015481101562030b64579062030b598262000ef062030b478897969562030caa565b62030b53838d62004c79565b6200520e565b909192935062030b1b565b5050505090919350815b835181101562030bdb5762030b84818562004c79565b518281101562030bc757600180911462030baa575062030ba49062004c12565b62030b6e565b610733805460ff1916909117905550506107318190556107325550565b634e487b7160e01b84526021600452602484fd5b509091506107328054421060001462030c0257506107339060ff1982541617905561073155565b9050610733600160ff19825416179055816107315555565b1562030c2257565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b1562030c6f57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b61073854906000918083526107368060205282604085206003019062030cd09162004e91565b90549060031b1c62030ce2816202de4d565b5060010154938386528260205280604087206004019062030d039162004e91565b90549060031b1c928487528060205281604088206005019062030d269162004e91565b90549060031b1c948752602052604086206006019062030d469162004e91565b90549060031b1c9062030d59906202de4d565b506006015460ff1662030da5575062030d959262005da862021a9f938362030d8562030d8d9562005e85565b969062030c67565b929062030c67565b111562030d9f5790565b50600190565b6200f136925062030d959362030dbf62030d8d9362005e85565b949062030c67565b9092919262030dd7825162004d95565b60009162030de6815162004d95565b8390845b865181101562030e80576001600160a01b0362030e0d816202d155848b62004c79565b158062030e4c575b62030e2d575b5062030e279062004c12565b62030dea565b819662030e44916200823e62030e27948b62004c79565b959062030e1b565b5060648a101562004c30578062030e64838a62004c79565b511660005260038a811b01602052604060002054151562030e15565b509295919694509260005b875181101562030f0057606486101562004c30576001600160a01b038062030eb4838b62004c79565b5116600052600387811b016020526040600020541562030ee1575b5062030edb9062004c12565b62030e8b565b819562030ef8916200ddb162030edb948c62004c79565b949062030ecf565b5092509450926064831015938462004c305760049586600395861b019687549462030f30620080b6828862006271565b9460009689889a5b620310a457818b101562030fd957506000998b62030f7362030f5b838362004e91565b90546001600160a01b0392918e1b1c82168a62031166565b1562030f96575b50509062030f8b8b94939262004c12565b9a9091929362030f38565b91998c95949392909162030fac908c9062004e91565b9054908d1b1c1662030fbf828b62004c79565b5262030fcb9062004c12565b9890919293508b3862030f7a565b9697949a98505091975092506000915b8383106203107f57505050506203106a578051926001600160401b03841162031055575062031019838362004fcd565b602080910191600052806000209060005b84811062031039575050505050565b83516001600160a01b031683820155928101926001016203102a565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203109d906200824c906001600160a01b036200a147868662004c79565b9162030fe9565b603285634e487b7160e01b6000525260246000fd5b9060005b606483101562004c30576003600484821b01805483101562015fff5782620310e59162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311099062004c12565b620310bd565b9060005b606483101562004c3057600361039c84821b01805483101562015fff57826203113c9162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311609062004c12565b62031113565b9060005b825181101562006638576001600160a01b038062031189838662004c79565b51169083161462006625576203119f9062004c12565b6203116a565b801562001de8576000190190565b9081519060005b60001983810184811162001de85782101562031281576001820180831162001de8575b848110620311f8575050620311f29062004c12565b620311ba565b6001600160a01b03806203120d858962004c79565b5116816203121c848a62004c79565b51161462031237575b50620312319062004c12565b620311dd565b828692960182811162001de85762031231926203127a926203125e62031273938b62004c79565b51166203126c898b62004c79565b52620311a5565b95620311a5565b9062031225565b5050906203128f8162004d95565b9060005b818110620312a2575090925050565b620312c9906001600160a01b03620312bb828862004c79565b511662001a9c828662004c79565b62031293565b80519160005b60001984810185811162001de85782101562031387576001820180831162001de8575b858110620313135750506203130d9062004c12565b620312d5565b6203131f838662004c79565b516203132c828762004c79565b511462031345575b6203133f9062004c12565b620312f8565b948181019080821162001de857620313786203137f916203136b6203133f948962004c79565b516203126c8a8a62004c79565b96620311a5565b905062031334565b50509091620313968162004d95565b9060005b818110620313a9575090925050565b806202a11a620313ba928762004c79565b6203139a565b604051620313ce816200299e565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203143c8162002a26565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620314928162002a97565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b604051620314cc8162002a97565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620314f78162002a26565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620315418162002a97565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620315718162002a97565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620315a48162002a97565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620315d98162002a97565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620316128162002a97565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b604051620316458162002a97565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b604051620316748162002a97565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b604051620316aa8162002a97565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b60268110156200294257801562007507576001811462030d9f5760028114620319025760038114620318fc5760048114620318f65760058114620318f05760068114620318ea5760078114620318e45760088114620318de5760098114620318d857600a8114620318d257600b8114620318cc57600c8114620318c657600d8114620318c057600e8114620318ba57600f8114620318b45760108114620318ae5760118114620318a85760128114620318a257601381146203189c57601481146203189657601581146203189057601681146203188a57601781146203188457601881146203187e57601981146203187857601a81146203187257601b81146203186c57601c81146203186657601d81146203186057601e81146203185a57601f81146203185457602081146203184e57602181146203184857602281146203184257602381146203183c576024811462031836576025146203183157600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200664057600090815b8351811015620166ee576001600160f81b03198062031938838762006577565b51169062031947838562006577565b511603620166e7576203195a9062004c12565b62031918565b604051906203196f8262002a26565b60288252604036602084013760005b601481106203198c57505090565b60139080820391821162001de857600382901b916001600160fd1b0381160362001de85760ff80831162001de857600192620319d59084901b6001600160a01b03861662005007565b60f081168282160391821162001de857620319f99060f41b600f60f81b1662031a62565b82841b916001600160ff1b038416840362001de85762031a369160001a62031a22848962006577565b5360f81b6001600160f81b03191662031a62565b92810180911162001de85762031a5562031a5c9360001a918662006577565b5362004c12565b6203197e565b60f81c600a81101562031a8b5760300160ff811162001de85760f81b6001600160f81b03191690565b60570160ff811162001de85760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65a4039f5a7be218ee4582681830797ad3adb3fc42221d510b404c1c20513cd5f9305d206c656e677468206973206e6f7420320000000000000000000000000000546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b617665203120656c656d656e74000000000000000000000000000000000000007420686176652074776f20656c656d656e747300000000000000000000000000f8c51ad45ec8504cc31b470490eebc0390b72c6fe329b047b8c5d2eaf5faf707546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f7420310000000000000000000000000000006506a45eb4eaa8543dde316bec7c09b25ef1e87a59a8ef880021210a26a5aa39742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f7420afaf75ed05c3fa878ca2fef6bc901427ab4ca9c5028b0bbe72a546312bd924aa2e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973745d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d706c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212201b9fa0280c35b6e081eb1f2914678c611bc8026b085956491408d50c5865193d64736f6c63430008130033", + "deployedBytecode": "0x6109c08060405260043610156200001557600080fd5b600090813560e01c908163036ee85014620028bc575080630fda3e1e146200282457806310ade3ea14620027f55780631797631d146200276e5780631c75255a146200270957806323b65c7814620026825780632514a6b4146200245c5780632eeb063b146200228c5780633fb18aec146200222257806356424cf414620022035780635c00d98714620021e05780635d0b184914620002055780635f1231ea14620020f65780635f5d5f00146200206f578063681ece9d146200202b5780636c0d4fa41462001e985780637daa10ce1462001e7b5780638129fc1c1462001aac57806383e4cccf1462001843578063864f9f7a146200180557806386ad77e214620014a45780638c7a63ae1462001414578063942d59fa14620012315780639f36145f14620011ab578063a064c4f11462001180578063acf80bc41462001142578063aec266871462001058578063aefca42a1462001037578063c41f94821462000fef578063c591aa981462000fa1578063d5a172f21462000f75578063d6a93c511462000f24578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e36200521b565b50610c80620001f162002ad7565b6200020060405180926200290c565bf35b80fd5b50346200020257806003193601126200020257602061073854604051908152f35b5060031960203682011262000df7576001600160401b036004351162000df757606090600435360301126200020257604051620002638162002a26565b62000273600435600401620028f7565b8152600435602401356101608190526001600160401b03811162000dff57600435013660238201121562000dff576004620002b5910135806101805262002b80565b90620002c5604051928362002ab3565b6101805182526020820161012052610180516101605160043501906024369160051b8301011162000c125760240160a052825b6101805160051b6101605160043501602460a0519282010182101562000e0357813560808190526001600160401b031062000dff57606091350136036023190112620002025762000350604051806101005262002a26565b62000369602460805161016051600435010101620028f7565b610100515260446080516101605160043501010135602681101562000df7576020610100510152608051610160516004350101606481013560c05260018060401b0360648201351162000df7576101006064820135909101360360231901126200020257620003df604051806101a052620029ec565b60c051608051610160516004350101016001600160401b0360248201351162000df75762000417906024369181810135010162004858565b6101a0515260c0516080516101605160043501010160448101359060018060401b03821162000dff5736604383830101121562000dff570160240135916200045f8362002b80565b906200046f604051928362002ab3565b838252602082019060c051608051610160516004350101013660448760051b81840135840101011162000c1657806044809201350101915b604460c051608051610160516004350101018760051b9082810135010101831015620004e85760208091620004dc85620048e3565b815201920191620004a7565b506101a051602001929092525060c051608051610160519395600435909401010192506001600160401b0360648401351162000c12573660436064850135850101121562000c1257602460648401358401013590620005478262002b80565b9062000557604051928362002ab3565b82825260208201606486013560c05160805161016051600435010101013660448660051b8301011162000dfb57604401905b606487013560c051608051610160516004350101010160448660051b820101831015620006a9576001600160401b03833511620006a55760e08335820136036043190112620006a55760405191620005e18362002a42565b6001600160401b03843583016044013511620006a1576200060e36604486358501818101350101620048f1565b835283358201606481013560208501526084810135604085015260a48101356060850152620006409060c401620048e3565b60808401526001600160401b038435830160e4013511620006a157602092839262000690906101049062000681368935830160e48101350160440162002e8f565b60a085015287350101620048e3565b60c082015281520191019062000589565b8980fd5b8880fd5b505050929350905060406101a051015260c051608051610160516004350101019260018060401b03608485013511620002025736604360848601358601011215620002025760246084850135850101359362000716620007098662002b80565b6040518060e05262002ab3565b8460e05152602060e0510192608482013560c05160805161016051600435010101013660448860051b8301011162000c12576044016101405293925b608482013560c0516080516101605160043501010101610140519060448860051b82010182101562000c1a576001600160401b0382351162000c165761010082359091013603604319011262000c125760405190620007b182620029ec565b60448135608486013560c0516080516101605160043501010101010135600681101562000c0e57825260648135608486013560c051608051610160516004350101010101013560208301528035608485013560c0516080516101605160043501010101019560018060401b0360848801351162000c0e573660636084890135890101121562000c0e576200084f604460848901358901013562002b80565b976200085f604051998a62002ab3565b60446084890135890101358952602089019060848901358435608489013560c05160805161016051600435010101010101366064604460848d01358d01013560051b83010111620006a557606401915b60848a0135853560848a013560c051608051610160516004350101010101016064604460848d01358d01013560051b82010184101562000afd576001600160401b03843511620006a15760c08435820136036063190112620006a157604051906200091a82620029d0565b84358101606481013583526005608490910135101562000af9578435810160848101356020840152600460a490910135101562000af9578435810160a4810135604084015260c481013560608401526001600160401b0360e4909101351162000af95762000995368635830160e481013501606401620048f1565b60808301526001600160401b038535820161010401351162000af957608085358201610104810135013603606319011262000af95760405190620009d9826200299e565b6001600160401b038635820161010481013501606401351162000af55762000a1536606461010489358501908101350181810135010162004858565b82526001600160401b038635820161010481013501608401351162000af55762000a5336873583016101048101350160848101350160640162004957565b60208301526001600160401b03863582016101048101350160a401351162000af55762000a9436873583016101048101350160a481013501606401620049e2565b60408301526001600160401b03863582016101048101350160c401351162000af55760209384939092909162000adf9036908935016101048101350160c48101350160640162002e8f565b606082015260a0820152815201920191620008af565b8b80fd5b8a80fd5b505097505096604083015260a48135608486013560c051608051610160516004350101010101013560608301528035608485013560c05160805161016051600435010101010160018060401b0360c48201351162000c0e57610124602094939262000b7762000bf2936044369160c4810135010162002e8f565b608085015262000ba260e4823560848a013560c05160805161016051600435010101010101620048e3565b60a085015262000bce610104823560848a013560c05160805161016051600435010101010101620048e3565b60c085015235608487013560c05160805161016051600435010101010101620048e3565b60e0820152815201926020610140510161014052939262000752565b8580fd5b8380fd5b8480fd5b505050509091925060e05160606101a051015260c051608051610160516004350101019160018060401b0360a48401351162000df75736604360a4850135850101121562000df757602460a4840135840101359262000c798462002b80565b9162000c89604051938462002ab3565b848352602083019060a483013560c05160805161016051600435010101013660448860051b8301011162000c0e57604401915b60448760051b60a486013560c0516080516101605160043501010101010183101562000cfe5760058335101562000c0e57823581526020928301920162000cbc565b509450505092909260806101a051015260c0516080516101605160043501010160c48101359060018060401b03821162000c1657602462000d43923692010162004957565b60a06101a051015260c0516080516101605160043501010160e48101359060018060401b03821162000c1657602462000d809236920101620049e2565b60c06101a051015260c051608051610160516004350101016101048101359060018060401b03821162000c1657602462000dbe923692010162002e8f565b60e06101a05101526101a05160406101005101526101005161012051526020610120510161012052602060a0510160a0529091620002f8565b5080fd5b8780fd5b8280fd5b60208401858152849084600435604401356001600160401b03811162000df75762000e3690600436918135010162002e8f565b604084015282516001600160a01b03919062000e8f90831662000e8662000e6762000e613362031960565b62004adb565b62000e7f62000e79878a511662031960565b62004b41565b9062004b98565b90331462004bdf565b8251805182101562000efc579062000ef062000ef6928462000eb384339362004c79565b5151161462000ee962000eca62000e613362031960565b62000e7f62000e798862000ee0888c5162004c79565b51511662031960565b9062004bdf565b62004c12565b62000e8f565b62000f2062000f0b86620067c5565b60405191829160208352602083019062002d45565b0390f35b503462000202578060031936011262000202575b6064811062000f4d575b602090604051908152f35b60ff60078260031b0154161562000f6f5762000f699062004c12565b62000f38565b62000f42565b50346200020257806003193601126200020257610730546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b0362000fd0620028db565b1681526107378452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c0620010126004356200628d565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b50346200020257806003193601126200020257602061073254604051908152f35b50346200020257806003193601126200020257610735908154916200107d8362002b80565b916200108d604051938462002ab3565b8383526020938484018093835285832083915b8383106200110a5750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620010db5785850386f35b909192938280620010f9600193603f198a8203018652885162002d45565b9601920196019592919092620010cd565b600188819260409a99979a516200112f8162001127818962002bd5565b038262002ab3565b81520192019201919096939596620010a0565b50346200020257602036600319011262000202576020906040906001600160a01b036200116e620028db565b16815261032783522054604051908152f35b50346200020257602036600319011262000202576020620011a3600435620060e5565b604051908152f35b503462000202576020366003190112620002025760406200120691600435815261073660205220620011dd8162003634565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003199565b9360208601526040850152620012226060850183831662003434565b60081c16151560808301520390f35b5034620002025760208060031936011262000df757604051620012548162002a09565b60405192620012638462002a26565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e0830152806101008093015260043581526107368352604090209160405192620012c48462002a09565b620012cf8162003634565b8452620012df6003820162003442565b84830190815292620012f46004830162003442565b60408601908152956200130a6005840162003442565b868201908152926200131f6006820162003442565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff88166200135b90876200520e565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d016200138c9162003199565b9451601f198d8703810160408f015295620013a79162002ee7565b905191858d830301908d0152620013be9162002ee7565b905190838b82030160808c0152620013d69162002ee7565b9051918982030160a08a0152620013ed9162002ee7565b955160c08801525160e087015251908501620014099162003434565b511515908301520390f35b503462000202576020366003190112620002025760043590606482101562001490575060031b60018101546002820154916200148660056200146760068401549362001127604051809481930162002bd5565b6040519485948552602085015260806040850152608084019062002d45565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b503462000202578060031936011262000202576103228054620014c78162002b80565b91620014d7604051938462002ab3565b81835283526020808420849184015b838310620016b1578585610323805490620015018262002b80565b9362001511604051958662002ab3565b82855260208501918152602081209080925b84841062001559576200154a8662000f208960405193849360408552604085019062002fcf565b90838203602085015262002fcf565b6040516200156781620029ec565b6200157760ff855416826200350b565b600184015460208201526002840154620015918162002b80565b90620015a1604051928362002ab3565b80825260208201600287018652602086209086905b8382106200162e5750505050600192826020926040600695015260038701546060820152604051620015f181620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520193019301929162001523565b600860206001926040516200164381620029d0565b8654815260ff858801548181166200165b8162002edc565b85840152851c166200166d8162002937565b6040820152600287015460608201526200168a6003880162003442565b60808201526200169d60048801620035d2565b60a0820152815201930191019091620015b6565b604051620016bf81620029ec565b620016cf60ff845416826200350b565b60018301546020820152600283018054620016ea8162002b80565b91620016fa604051938462002ab3565b81835289526020808a20908a9084015b8382106200178257505050506001928260209260406006950152600386015460608201526040516200174581620011278160048b0162002bd5565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201920192019190620014e6565b600860206001926040516200179781620029d0565b8654815260ff85880154818116620017af8162002edc565b85840152851c16620017c18162002937565b604082015260028701546060820152620017de6003880162003442565b6080820152620017f160048801620035d2565b60a08201528152019301910190916200170a565b50346200020257602036600319011262000202576020906040906001600160a01b0362001831620028db565b16815261032583522054604051908152f35b5034620002025760208060031936011262000df7578160043591620018864784111562000ee9620018748662005028565b6200187f4762005028565b9062004cc1565b338252620018f1610325808352620018ca604085205486111562000ee9620018ae8862005028565b338852848752620018c3604089205462005028565b9062004d2d565b338452808352620018e085604086205462004fed565b929062000ee9620018ae8862005028565b33845282528060408420551562001933575b508080809381811562001929575b3390f1156200191d5780f35b604051903d90823e3d90fd5b506108fc62001911565b9050610326805491620019468362004d95565b918593865b81811062001a39575050620019608462004d95565b805192906001600160401b03841162001a25579080849392620019868a98979662004f2a565b0191865280862090865b84811062001a06575050505050825b828110620019af57505062001903565b91925090620019fc9062000ef06001600160a01b03620019d0838662004c79565b5116620019dd8362004de9565b90919082549060031b9160018060a01b03809116831b921b1916179055565b908492916200199f565b83516001600160a01b0316818401558997509281019260010162001990565b634e487b7160e01b88526041600452602488fd5b62001a448162004de9565b90546001600160a01b03916003913391831b1c83160362001a73575b505062001a6d9062004c12565b6200194b565b9662001aa391839862001a8a62001a6d9562004de9565b9054911b1c1662001a9c828962004c79565b5262004c12565b95903862001a60565b5034620002025780600319360112620002025761073080546001600160a01b03191633179055610733805460ff19166001908117909155604051909190819062001af68162002a5e565b52906103228054600082558062001e12575b508252818060405162001b1b8162002a5e565b5262001dfe576103238054600082558062001d7f575b5082526127106107345562001d7162001b4962005b54565b836040519162001b598362002a5e565b81835262001c616040519162001b6f8362002a5e565b8383526040519462001b818662002a5e565b8486526040519362001b938562002a5e565b8585526040519462001ba58662002a5e565b8686526040519162001bb7836200299e565b8252602097888301526040820152606094858201526040519162001bdb83620029d0565b8683526003888401528660408401528686840152608083015260a082015262001c048262004c22565b5262001c108162004c22565b506040519062001c2082620029ec565b6004825287868301526040820152838382015260405162001c418162002a5e565b84815260808201528660a08201528660c08201528660e082015262005c60565b62001c6b62005b54565b60405162001c798162002a5e565b83815260405162001c8a8162002a5e565b84815260405162001c9b8162002a5e565b85815260405162001cac8162002a5e565b8681526040519162001cbe8362002a5e565b8783526040519362001cd0856200299e565b8452888401526040830152848201526040519162001cee83620029d0565b8583526003878401528560408401528585840152608083015260a082015262001d178262004c22565b5262001d238162004c22565b50856040519462001d3486620029ec565b60058652850152604084015282015260405162001d518162002a5e565b84815260808201528260a08201528260c08201528360e082015262005cac565b61138861038f556103905580f35b92506006838102938185040362001de85760009382855260208520908101905b81811062001daf57505062001b31565b8086849255868682015562001dc7600282016200543e565b86600382015562001ddb60048201620052d3565b8660058201550162001d9f565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001de85760009382855260208520908101905b81811062001e4257505062001b08565b8086849255868682015562001e5a600282016200543e565b86600382015562001e6e60048201620052d3565b8660058201550162001e32565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001eb562002ad7565b6040519162001ec483620029ec565b61038f5483526103905490602091828501526103915460408501526103925460608501526040518061039390848254918281520191845284842090845b8181106200200d575050508162001f1a91038262002ab3565b6080850152610394805462001f2f8162002b80565b9162001f3f604051938462002ab3565b818352835283832083908584015b83831062001fdf575050505060a08501526040518092839161039591808354928381520192855280852094905b82821062001fbb5750505062001f939250038262002ab3565b60c083015260ff6103965416151560e083015262000f20610397546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062001f7a565b600187819260409998995162001ffb8162001127818962002bd5565b81520192019201919095949562001f4d565b82546001600160a01b03168452928601926001928301920162001f01565b5034620002025760203660031901126200020257600435906064821015620014905762000f206200206260048460031b0162002b22565b6040519182918262002958565b5034620002025780600319360112620002025760405161032180548083529083526020808301937f375af38c615bc3b651d74d7d59974b82de2cfc350734166de4356711f3dca12992915b828210620020d55762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620020ba565b5034620002025760209081600319360112620002025760409062002119620028db565b816060845162002129816200299e565b82815286810183905285810182905201526001600160a01b03168152610320835220604051906200215a826200299e565b620021d581549160ff83161515845260ff8585019360081c1615158352600260405191620021998362002191816001850162002bd5565b038462002ab3565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002d45565b905160808301520390f35b50346200020257602036600319011262000202576020620011a360043562005d82565b503462000202578060031936011262000202576020620011a36200618c565b50346200020257604036600319011262000202576001600160401b0360043581811162000dff576200225990369060040162002e8f565b916024359182116200020257602062002282846200227b366004870162002e8f565b9062006589565b6040519015158152f35b50346200020257806003193601126200020257604051620022ad8162002a5e565b6040516106c383825b606482106200244557505050620022cd8162002a7a565b815260405191620022de83620029ec565b61072754835261072854906020918285015261072954604085015261072a5460608501526040518061072b90848254918281520191845284842090845b8181106200242757505050816200233491038262002ab3565b608085015261072c8054620023498162002b80565b9162002359604051938462002ab3565b818352835283832083908584015b838310620023f9575050505060a08501526040518092839161072d91808354928381520192855280852094905b828210620023d557505050620023ad9250038262002ab3565b60c083015260ff61072e5416151560e083015262000f2061072f546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062002394565b6001878192604099989951620024158162001127818962002bd5565b81520192019201919095949562002367565b82546001600160a01b0316845292860192600192830192016200231b565b6001602081928554815201930191019091620022b6565b5034620002025760208060031936011262000df7576004356200248b4782111562000ee9620018748462005028565b3383528280808061032794858752620024d0604083205482111562000ee9620024b48462005028565b338652898b52620024c9604087205462005028565b90620051a2565b33825285875262002510620024ea82604085205462004fed565b919062000ee9620024fb8562005028565b3387528a8c52620024c9604088205462005028565b338352868852604083205581811562002678575b3390f1156200266d57338352815260408220541562002541575080f35b610328805491620025528362004d95565b918493855b818110620026135750506200256c8462004d95565b805192906001600160401b038411620025ff5781906200258c8562004eef565b0191865280862090865b848110620025e3575050505050825b828110620025b35750505080f35b620025dd9062000ef06001600160a01b03620025d0838662004c79565b5116620019dd8362004dcd565b620025a5565b83516001600160a01b0316838201559281019260010162002596565b634e487b7160e01b87526041600452602487fd5b6200261e8162004dcd565b90546001600160a01b03916003913391831b1c8316036200264d575b5050620026479062004c12565b62002557565b966200266491839862001a8a620026479562004dcd565b9590386200263a565b6040513d84823e3d90fd5b506108fc62002524565b5034620002025780600319360112620002025760405161032680548083529083526020808301937f953a1f58387b28901d66ca469c0f2f10840990fe6eba2d456bb60fb027f000d992915b828210620026e85762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620026cd565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000dff5760648210156200275a579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b5034620002025780600319360112620002025760405161032880548083529083526020808301937fe1b7123756d5187477d16898f0ed5b46851d48ab984ff1401c7617fb3825ab6e92915b828210620027d45762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620027b9565b50346200020257806003193601126200020257602060ff610733541660405190620028208162002937565b8152f35b5034620002025760209081600319360112620002025762002844620028db565b6200284e6200521b565b506001600160a01b031681526103298252604080822090519190620028738362002a5e565b60405193849192915b60648310620028a657610c808587620028958162002a7a565b81526200020060405180926200290c565b600182819286548152019401920191926200287c565b90503462000df7578160031936011262000df757602090610731548152f35b600435906001600160a01b0382168203620028f257565b600080fd5b35906001600160a01b0382168203620028f257565b516000915b606483106200291f57505050565b60019082518152602080910192019201919062002911565b600411156200294257565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062002980575050505090565b83516001600160a01b03168552938101939281019260010162002971565b608081019081106001600160401b03821117620029ba57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b03821117620029ba57604052565b61010081019081106001600160401b03821117620029ba57604052565b61012081019081106001600160401b03821117620029ba57604052565b606081019081106001600160401b03821117620029ba57604052565b60e081019081106001600160401b03821117620029ba57604052565b602081019081106001600160401b03821117620029ba57604052565b610c8081019081106001600160401b03821117620029ba57604052565b604081019081106001600160401b03821117620029ba57604052565b601f909101601f19168101906001600160401b03821190821017620029ba57604052565b6040519062002ae68262002a5e565b6040518261032b6000835b6064821062002b0b5750505062002b088262002a7a565b52565b600160208192855481520193019101909162002af1565b9060405191828154918282526020928383019160005283600020936000905b82821062002b5c5750505062002b5a9250038362002ab3565b565b85546001600160a01b03168452600195860195889550938101939091019062002b41565b6001600160401b038111620029ba5760051b60200190565b90600182811c9216801562002bca575b602083101462002bb457565b634e487b7160e01b600052602260045260246000fd5b91607f169162002ba8565b906000929180549162002be88362002b98565b91828252600193848116908160001462002c4f575060011462002c0c575b50505050565b90919394506000526020928360002092846000945b83861062002c3a57505050500101903880808062002c06565b80548587018301529401938590820162002c21565b9294505050602093945060ff191683830152151560051b0101903880808062002c06565b90815462002c818162002b80565b9260409362002c938551918262002ab3565b828152809460208092019260005281600020906000935b85851062002cba57505050505050565b6001848192845162002cd28162001127818a62002bd5565b81520193019401939162002caa565b90815180825260208080930193019160005b82811062002d02575050505090565b83516001600160a01b03168552938101939281019260010162002cf3565b60005b83811062002d345750506000910152565b818101518382015260200162002d23565b9060209162002d608151809281855285808601910162002d20565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002d985750505050505090565b909192939495848062002db483856001950387528a5162002d45565b980193019301919493929062002d87565b93929162002dd785610ca0936200290c565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002e6362002e2c6080840151610100610d408a0152610dc089019062002ce1565b62002e4c60a085015191610cbf1992838b830301610d608c015262002d6c565b9060c08501519089830301610d808a015262002ce1565b9101511515610da0860152930152565b6001600160401b038111620029ba57601f01601f191660200190565b81601f82011215620028f25780359062002ea98262002e73565b9262002eb9604051948562002ab3565b82845260208383010111620028f257816000926020809301838601378301015290565b600511156200294257565b90815180825260208080930193019160005b82811062002f08575050505090565b83518552938101939281019260010162002ef9565b90815180825260208092019182818360051b82019501936000915b84831062002f495750505050505090565b909192939495848062002f6583856001950387528a5162002ee7565b980193019301919493929062002f38565b90815180825260208092019182818360051b82019501936000915b84831062002fa25750505050505090565b909192939495848062002fbe83856001950387528a5162002ce1565b980193019301919493929062002f91565b90815180825260208092019081926005928183851b82019601946000915b84831062002fff575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029425783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b828110620030bf5750505050509282916200308960019560608085015190840152608080850151908483039085015262002d45565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062002fed565b919395968062003185600193959761011f198b82030189528951908151815283820151620030ed8162002edc565b8482015287820151620031008162002937565b888201526060908183015182820152816200317562003164620031536080620031368189015160c080848a015288019062002ee7565b9560a0809901519881880391015287519080875286019062002d6c565b888701518582038a87015262002f1d565b8b8601518482038d86015262002f76565b9301519181840391015262002d45565b970195019101918b96959493919262003054565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620031fb5750505050906040620031f89392015190604081840391015262002d45565b90565b858703607f19018352835180516001600160a01b03168852602081015194979394929391929060268210156200294257604091602084015201519060606040820152620032578251610100606084015261016083019062002d6c565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003419575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b8281106200339457505050506060840151838203605f190160c0850152620032d8925062002fcf565b608083015190605f198382030160e0840152602080835192838152019201906000905b8082106200337057505050620033638360209360e06200334c62003334879660a060019a0151605f198683030161010087015262002f1d565b60c0850151848203605f190161012086015262002f76565b92015190610140605f198285030191015262002d45565b98019401929101620031d2565b9091926020806001928651620033868162002edc565b8152019401920190620032fb565b90919293602080600192601f19868203018852885190620033fd620033c2835160e080855284019062002ee7565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002d45565b60c09283015115159190920152970196950193929101620032af565b90919260208060019286511515815201940192019062003279565b906003821015620029425752565b9060405191828154918282526020928383019160005283600020936000905b8282106200347a5750505062002b5a9250038362002ab3565b85548452600195860195889550938101939091019062003461565b90604051620034a48162002a42565b60c060ff60068395620034b78162003442565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152604051620034fc8162001127816005860162002bd5565b60a08601520154161515910152565b6006821015620029425752565b908154620035268162002b80565b9262003536604051948562002ab3565b818452600090815260208082208186015b84841062003556575050505050565b6001838192620035668562003442565b81520192019301929062003547565b908154620035838162002b80565b9262003593604051948562002ab3565b818452600090815260208082208186015b848410620035b3575050505050565b6001838192620035c38562002b22565b815201920193019290620035a4565b9060036060604051620035e5816200299e565b620036308195620035f68162002c73565b8352620036066001820162003518565b6020840152620036196002820162003575565b604084015262002191604051809681930162002bd5565b0152565b90604051620036438162002a26565b82546001600160a01b03168152600183018054919384929091620036678262002b80565b9162003677604051938462002ab3565b80835260208301916000526020600020916000905b828210620036b9575050505091620036306040926002946020840152620021918451809681930162002bd5565b604051620036c78162002a26565b84546001600160a01b038116825260a01c60ff16602681101562002942576020820152604051620036f881620029ec565b620037066001870162002c73565b815260028601604051808260208294549384815201906000526020600020926000905b80601f8301106200468657620038629454918181106200466f575b81811062004655575b8181106200463b575b81811062004621575b81811062004608575b818110620045ee575b818110620045d4575b818110620045ba575b818110620045a0575b81811062004586575b8181106200456c575b81811062004552575b81811062004538575b8181106200451e575b81811062004504575b818110620044ea575b818110620044d0575b818110620044b6575b8181106200449c575b81811062004482575b81811062004468575b8181106200444e575b81811062004434575b8181106200441a575b81811062004400575b818110620043e6575b818110620043cc575b818110620043b2575b81811062004398575b8181106200437e575b81811062004364575b1062004353575b50038262002ab3565b6020820152600386018054620038788162002b80565b9162003888604051938462002ab3565b81835260208301906000526020600020906000905b8382106200433257505050506040820152600486018054620038bf8162002b80565b91620038cf604051938462002ab3565b81835260208301906000526020600020906000905b838210620041d557505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003ecc5784600997946020979460019a979462003a5b94549181811062003eae575b81811062003e8d575b81811062003e6c575b81811062003e4b575b81811062003e2b575b81811062003e0a575b81811062003de9575b81811062003dc8575b81811062003da7575b81811062003d86575b81811062003d65575b81811062003d44575b81811062003d23575b81811062003d02575b81811062003ce1575b81811062003cc0575b81811062003c9f575b81811062003c7e575b81811062003c5d575b81811062003c3c575b81811062003c1b575b81811062003bfa575b81811062003bd9575b81811062003bb8575b81811062003b97575b81811062003b76575b81811062003b55575b81811062003b34575b81811062003b13575b81811062003af2575b81811062003ad1575b1062003ab65750038262002ab3565b608082015262003a6e60068a0162003518565b60a082015262003a8160078a0162003575565b60c082015260405162003a9d81620011278160088e0162002bd5565b60e082015260408201528152019401910190926200368c565b90889160f81c62003ac78162002edc565b8152013862003859565b928a8d9160ff8560f01c1662003ae78162002edc565b815201930162003a4c565b928a8d9160ff8560e81c1662003b088162002edc565b815201930162003a43565b928a8d9160ff8560e01c1662003b298162002edc565b815201930162003a3a565b928a8d9160ff8560d81c1662003b4a8162002edc565b815201930162003a31565b928a8d9160ff8560d01c1662003b6b8162002edc565b815201930162003a28565b928a8d9160ff8560c81c1662003b8c8162002edc565b815201930162003a1f565b928a8d9160ff8560c01c1662003bad8162002edc565b815201930162003a16565b928a8d9160ff8560b81c1662003bce8162002edc565b815201930162003a0d565b928a8d9160ff8560b01c1662003bef8162002edc565b815201930162003a04565b928a8d9160ff8560a81c1662003c108162002edc565b8152019301620039fb565b928a8d9160ff8560a01c1662003c318162002edc565b8152019301620039f2565b928a8d9160ff8560981c1662003c528162002edc565b8152019301620039e9565b928a8d9160ff8560901c1662003c738162002edc565b8152019301620039e0565b928a8d9160ff8560881c1662003c948162002edc565b8152019301620039d7565b928a8d9160ff8560801c1662003cb58162002edc565b8152019301620039ce565b928a8d9160ff8560781c1662003cd68162002edc565b8152019301620039c5565b928a8d9160ff8560701c1662003cf78162002edc565b8152019301620039bc565b928a8d9160ff8560681c1662003d188162002edc565b8152019301620039b3565b928a8d9160ff8560601c1662003d398162002edc565b8152019301620039aa565b928a8d9160ff8560581c1662003d5a8162002edc565b8152019301620039a1565b928a8d9160ff8560501c1662003d7b8162002edc565b815201930162003998565b928a8d9160ff8560481c1662003d9c8162002edc565b81520193016200398f565b928a8d9160ff8560401c1662003dbd8162002edc565b815201930162003986565b928a8d9160ff8560381c1662003dde8162002edc565b81520193016200397d565b928a8d9160ff8560301c1662003dff8162002edc565b815201930162003974565b928a8d9160ff8560281c1662003e208162002edc565b81520193016200396b565b928a8d9160ff85831c1662003e408162002edc565b815201930162003962565b928a8d9160ff8560181c1662003e618162002edc565b815201930162003959565b928a8d9160ff8560101c1662003e828162002edc565b815201930162003950565b928a8d9160ff8560081c1662003ea38162002edc565b815201930162003947565b928a8d9160ff851662003ec18162002edc565b81520193016200393e565b926001610400602092865460ff811662003ee68162002edc565b825260ff8160081c1662003efa8162002edc565b8583015260ff8160101c1662003f108162002edc565b604083015260ff8160181c1662003f278162002edc565b606083015260ff81861c1662003f3d8162002edc565b608083015260ff8160281c1662003f548162002edc565b60a083015260ff8160301c1662003f6b8162002edc565b60c083015262003f8160ff8260381c1662002edc565b60ff8160381c1660e083015260ff8160401c1662003f9f8162002edc565b61010083015260ff8160481c1662003fb78162002edc565b61012083015260ff8160501c1662003fcf8162002edc565b61014083015260ff8160581c1662003fe78162002edc565b61016083015260ff8160601c1662003fff8162002edc565b61018083015260ff8160681c16620040178162002edc565b6101a083015260ff8160701c166200402f8162002edc565b6101c083015260ff8160781c16620040478162002edc565b6101e083015260ff8160801c166200405f8162002edc565b61020083015260ff8160881c16620040778162002edc565b61022083015260ff8160901c166200408f8162002edc565b61024083015260ff8160981c16620040a78162002edc565b61026083015260ff8160a01c16620040bf8162002edc565b61028083015260ff8160a81c16620040d78162002edc565b6102a083015260ff8160b01c16620040ef8162002edc565b6102c083015260ff8160b81c16620041078162002edc565b6102e083015260ff8160c01c166200411f8162002edc565b61030083015260ff8160c81c16620041378162002edc565b61032083015260ff8160d01c166200414f8162002edc565b61034083015260ff8160d81c16620041678162002edc565b61036083015260ff8160e01c166200417f8162002edc565b61038083015260ff8160e81c16620041978162002edc565b6103a083015260ff8160f01c16620041af8162002edc565b6103c083015260f81c620041c38162002edc565b6103e082015201940192019162003915565b604051620041e381620029ec565b620041f360ff855416826200350b565b600184015460208201526002840180546200420e8162002b80565b916200421e604051938462002ab3565b81835260208301906000526020600020906000905b838210620042ab57505050506001928260209260406006950152600387015460608201526040516200426e81620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201930191019091620038e4565b600190602060405191620042bf83620029d0565b85548352838601549260ff8416620042d78162002edc565b8382015260ff600894851c16620042ee8162002937565b6040820152600287015460608201526200430b6003880162003442565b60808201526200431e60048801620035d2565b60a082015281520193019101909162004233565b60076020600192620043448662003495565b8152019301910190916200389d565b60f81c151581526020013862003859565b92602060019160ff8560f01c161515815201930162003852565b92602060019160ff8560e81c161515815201930162003849565b92602060019160ff8560e01c161515815201930162003840565b92602060019160ff8560d81c161515815201930162003837565b92602060019160ff8560d01c16151581520193016200382e565b92602060019160ff8560c81c161515815201930162003825565b92602060019160ff8560c01c16151581520193016200381c565b92602060019160ff8560b81c161515815201930162003813565b92602060019160ff8560b01c16151581520193016200380a565b92602060019160ff8560a81c161515815201930162003801565b92602060019160ff8560a01c1615158152019301620037f8565b92602060019160ff8560981c1615158152019301620037ef565b92602060019160ff8560901c1615158152019301620037e6565b92602060019160ff8560881c1615158152019301620037dd565b92602060019160ff8560801c1615158152019301620037d4565b92602060019160ff8560781c1615158152019301620037cb565b92602060019160ff8560701c1615158152019301620037c2565b92602060019160ff8560681c1615158152019301620037b9565b92602060019160ff8560601c1615158152019301620037b0565b92602060019160ff8560581c1615158152019301620037a7565b92602060019160ff8560501c16151581520193016200379e565b92602060019160ff8560481c161515815201930162003795565b92602060019160ff8560401c16151581520193016200378c565b92602060019160ff8560381c161515815201930162003783565b92602060019160ff8560301c16151581520193016200377a565b92602060019160ff8560281c161515815201930162003771565b92602060019160ff85831c161515815201930162003768565b92602060019160ff8560181c16151581520193016200375f565b92602060019160ff8560101c161515815201930162003756565b92602060019160ff8560081c16151581520193016200374d565b92602060019160ff85161515815201930162003744565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003729565b9080601f83011215620028f257813590620048738262002b80565b9262004883604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620048b35750505050505090565b82356001600160401b038111620028f2578691620048d78484809489010162002e8f565b815201920191620048a2565b35908115158203620028f257565b81601f82011215620028f2578035916200490b8362002b80565b926200491b604051948562002ab3565b808452602092838086019260051b820101928311620028f2578301905b82821062004947575050505090565b8135815290830190830162004938565b9080601f83011215620028f257813590620049728262002b80565b9262004982604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620049b25750505050505090565b82356001600160401b038111620028f2578691620049d684848094890101620048f1565b815201920191620049a1565b9080601f83011215620028f257813591620049fd8362002b80565b9260409262004a0f8451958662002ab3565b8185526020938486019185600594851b86010194818611620028f257868101935b86851062004a4357505050505050505090565b84356001600160401b038111620028f257820183603f82011215620028f257888101359062004a728262002b80565b9162004a818751938462002ab3565b808352868b8401918a1b83010191868311620028f25791878c94929593015b81811062004ab957505082935081520194019362004a30565b91938091939562004aca84620028f7565b8152019101918b9391949262004aa0565b9062002b5a604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b30815180926020868601910162002d20565b810103602581018552018362002ab3565b9062002b5a6040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004b87815180926020868601910162002d20565b810103602081018552018362002ab3565b602062002b5a91939293604051948162004bbc879351809286808701910162002d20565b820162004bd28251809386808501910162002d20565b0103808552018362002ab3565b1562004be85750565b60405162461bcd60e51b81526020600482015290819062004c0e90602483019062002d45565b0390fd5b600019811462001de85760010190565b80511562004c305760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c305760400190565b80516002101562004c305760600190565b80516003101562004c305760800190565b805182101562004c305760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002b5a916020949360405195869262004cf162004ce383860162004c8e565b918281519485920162002d20565b016e0161030b732103130b630b731b29d1608d1b815262004d1c825180936020878501910162002d20565b010360101981018552018362002ab3565b601962002b5a916020949360405195869262004d4f62004ce383860162004c8e565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004d84825180936020878501910162002d20565b010360061981018552018362002ab3565b9062004da18262002b80565b62004db0604051918262002ab3565b828152809262004dc3601f199162002b80565b0190602036910137565b610328805482101562004c305760005260206000200190600090565b610326805482101562004c305760005260206000200190600090565b610321805482101562004c305760005260206000200190600090565b6106c2805482101562004c305760005260206000200190600090565b61032a805482101562004c305760005260206000200190600090565b6106be805482101562004c305760005260206000200190600090565b6106c0805482101562004c305760005260206000200190600090565b805482101562004c305760005260206000200190600090565b8181029291811591840414171562001de857565b919082549060031b91821b91600019901b1916179055565b81811062004ee2575050565b6000815560010162004ed6565b600160401b8111620029ba576103289081549080835581811062004f1257505050565b62002b5a926000526020600020918201910162004ed6565b600160401b8111620029ba576103269081549080835581811062004f1257505050565b8054600082558062004f5d575050565b62002b5a9160005260206000209081019062004ed6565b600160401b8111620029ba576106be9081549080835581811062004f1257505050565b600160401b8111620029ba576106c09081549080835581811062004f1257505050565b6103958054600082558062004f5d575050565b90600160401b8111620029ba5781549080835581811062004f1257505050565b919082811162004ffe576001920390565b50600091508190565b811562005012570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101562005193575b506904ee2d6d415b85acef8160201b8083101562005183575b50662386f26fc100008083101562005173575b506305f5e1008083101562005163575b506127108083101562005153575b50606482101562005142575b600a8092101562005137575b60019081602181860195620050c48762002e73565b96620050d4604051988962002ab3565b808852620050e5601f199162002e73565b01366020890137860101905b620050fe575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200513157919082620050f1565b620050f7565b9160010191620050af565b9190606460029104910191620050a3565b6004919392049101913862005097565b6008919392049101913862005089565b6010919392049101913862005079565b6020919392049101913862005066565b6040935081049150386200504d565b601e62002b5a9160209493604051958692620051c462004ce383860162004c8e565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620051fd825180936020878501910162002d20565b010360011981018552018362002ab3565b6003821015620029425752565b604051906200522a8262002a5e565b60405182620052398262002a7a565b610c8036833752565b906200524e8262002b80565b6040906200525f8251918262002ab3565b838152809362005272601f199162002b80565b019160005b838110620052855750505050565b60209082516200529581620029ec565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e083015282860101520162005277565b620052df815462002b98565b9081620052ea575050565b81601f60009311600114620052fd575055565b9080839182526200531e601f60208420940160051c84016001850162004ed6565b5555565b805490600081558162005333575050565b6000526020600020908101905b8181106200534c575050565b806200535a600192620052d3565b0162005340565b90600160401b8111620029ba578154918181558282106200538157505050565b600052602060002091820191015b8181106200539b575050565b80620053a9600192620052d3565b016200538f565b8054906000815581620053c1575050565b6000526020600020908101905b818110620053da575050565b80620053e860019262004f4d565b01620053ce565b90600160401b8111620029ba578154918181558282106200540f57505050565b600052602060002091820191015b81811062005429575050565b806200543760019262004f4d565b016200541d565b8054600091828155816200545157505050565b6001600160fd1b0382168203620054de5782526020822091600391821b8301925b838110620054805750505050565b8082600892558260018201558260028201556200549f84820162004f4d565b620054ad6004820162005322565b620054bb60058201620053b0565b620054c960068201620053b0565b620054d760078201620052d3565b0162005472565b634e487b7160e01b83526011600452602483fd5b600160401b8211620029ba578054908281558183106200551157505050565b6001600160fd1b03828116830362001de8578316830362001de857600090815260208120600392831b810193831b015b8381106200554f5750505050565b8082600892558260018201558260028201556200556e84820162004f4d565b6200557c6004820162005322565b6200558a60058201620053b0565b6200559860068201620053b0565b620055a660078201620052d3565b0162005541565b516006811015620029425790565b906006811015620029425760ff80198354169116179055565b90620055e08162002edc565b60ff80198354169116179055565b90620055fa8162002937565b61ff0082549160081b169061ff001916179055565b9190601f81116200561f57505050565b62002b5a926000526020600020906020601f840160051c830193106200564e575b601f0160051c019062004ed6565b909150819062005640565b81519192916001600160401b038111620029ba5762005685816200567e845462002b98565b846200560f565b602080601f8311600114620056c4575081929394600092620056b8575b50508160011b916000199060031b1c1916179055565b015190503880620056a2565b90601f198316958460005282600020926000905b8882106200571357505083600195969710620056f9575b505050811b019055565b015160001960f88460031b161c19169055388080620056ef565b80600185968294968601518155019501930190620056d8565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b815160068110156200294257620057879082620055bb565b602082015160018201556002810160408301516020815191620057ab8385620054f2565b01916000526020600020916000905b8282106200581e57505050509060e0600562002b5a9360608401516003820155620057ed60808501516004830162005659565b01916200580160a08201511515846200572c565b6200581360c08201511515846200573d565b015115159062005755565b8051805185556200585e60018601620058476020840151620058408162002edc565b82620055d4565b604083015190620058588262002937565b620055ee565b60608101516002860155608081015180519060038701906001600160401b038311620029ba5760209062005893848462004fcd565b0190600052602060002060005b83811062005b3f575050505060a0015180518051906004870190602090620058c9848462005361565b01906000526020600020906000905b83821062005b1f57505050506005850160208201516020815191620058fe8385620053ef565b019160005260206000206000925b82841062005abb57505050506006850160408201516020815191620059328385620053ef565b019160005260206000206000925b82841062005a4e5750505050606001518051906001600160401b038211620029ba57620059808262005976600789015462002b98565b600789016200560f565b602090601f8311600114620059d3579282600893602093600196600092620059c7575b5050600019600383901b1c191690851b1760078801555b01940191019092620057ba565b015190503880620059a3565b906007870160005260206000209160005b601f198516811062005a35575083602093600196938793600897601f1981161062005a1b575b505050811b016007880155620059ba565b015160001960f88460031b161c1916905538808062005a0a565b91926020600181928685015181550194019201620059e4565b80518051906001600160401b038211620029ba5760209062005a71838662004fcd565b0183600052602060002060005b83811062005a9d57505050506001602081920192019301929062005940565b82516001600160a01b03168183015560209092019160010162005a7e565b80518051906001600160401b038211620029ba5760209062005ade838662004fcd565b0183600052602060002060005b83811062005b0a5750505050600160208192019201930192906200590c565b60019060208451940193818401550162005aeb565b600160208262005b328394518762005659565b01930191019091620058d8565b600190602084519401938184015501620058a0565b60409081519162005b658362002a97565b60018352829160005b60208082101562005bd85783516020929162005b8a82620029d0565b60008252600081830152600086830152606060008184015280608084015286519062005bb6826200299e565b808252808383015280888301528082015260a083015282880101520162005b6e565b505091925050565b610323805482101562004c30576000526006602060002091020190600090565b6106bb805482101562004c30576000526006602060002091020190600090565b610322805482101562004c30576000526006602060002091020190600090565b6106ba805482101562004c30576000526006602060002091020190600090565b6103228054600160401b811015620029ba5762005c839160018201905562005c20565b91909162005c965762002b5a916200576f565b634e487b7160e01b600052600060045260246000fd5b6103238054600160401b811015620029ba5762005c839160018201905562005be0565b6106bb8054600160401b811015620029ba5762005c839160018201905562005c00565b6106ba8054600160401b811015620029ba5762005c839160018201905562005c40565b1562005d1d57565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b606481101562004c305762005daf8162005da86002620031f89460031b01549162005f41565b9062005ebb565b919062005d15565b606481101562004c3057600390811b61039a81015490600061039c820190815490809561039b829501915b83861062005e0057505050505050620031f89162005daf9162005ebb565b9690919293949662004c305762005e538762005e4b62005e2562000ef09a8962004e91565b905490861b1c6001600160a01b031660009081526020879052604081205490946200606a565b999062005edd565b949392919062005de2565b606481101562004c305762005daf8162005da861039a620031f89460031b01549162005fe7565b90811562005eb257606462005e9e818402938462005007565b0362005eaa5760019190565b600091508190565b60019150600090565b9190821562005ed35762005e9e818402938462005007565b5060019150600090565b1562005ee557565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6064811015908162004c3057600390811b906004928383019182549260009582879601935b85871062005f78575050505050505090565b97969091929394959762005fd25762005fc68862005e4b62005fa062000ef09a9b8762004e91565b905490881b1c6001600160a01b031660009081526020899052604081205490946200606a565b95949392919062005f66565b603282634e487b7160e01b6000525260246000fd5b6064811015908162004c305790600391821b9061039c82019081549060009461039b869501915b8386106200601f5750505050505090565b9590919293949562004c30576200604c866200604462005e2562000ef0998962004e91565b989062005edd565b94939291906200600e565b906001820191821062005eaa5760019190565b9190820191821062005eaa5760019190565b156200608457565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b606481101562004c30576200610b8162005da86001620031f89460031b01549162005f41565b91906200607c565b606481101562004c3057600390811b61039981015490600061039c820190815490809561039b829501915b8386106200615c57505050505050620031f8916200610b9162005ebb565b9690919293949662004c3057620061818762005e4b62005e2562000ef09a8962004e91565b94939291906200613e565b61038f54620061d26200619e620313c0565b91620061b06127109384831062004bdf565b620061c86103925461039054111562000ee96203142e565b6103915462005ebb565b919050620061df62031484565b5060009081925b6064841062006202575b620061fd9350046200624f565b905090565b9160ff60078560031b015416156200624857836200623562006241926200622e62000ef0969762005d82565b906200606a565b949062000ee962031484565b92620061e6565b91620061f0565b9080156200626757620062629162005007565b600191565b5050600090600090565b9190820180921162001de857565b9190820391821162001de857565b906107b2906301e1853e80840483810180821162001de8576001820181811162001de857604583019082821162001de8576064620062d092049060021c6200627f565b9561017183019682881162001de857620062f1906101908099049062006271565b9084840294848604148415171562001de85762015180948583029280840487149015171562001de85762006331926200632a9162006271565b906200627f565b9160049586910815958662006550575b506040516101a081016001600160401b038111828210176200653b57604052600c9687825261018080366020850137601f91826200637f8562004c22565b5215620065315760ff601d5b16620063978462004c46565b5281620063a48462004c57565b52601e620063b28462004c68565b5282518810156200651c578160a08401528251600510156200651c57601e60c08401528251600610156200651c578160e08401528251600710156200651c57816101008401528251600810156200651c57601e6101208401528251600910156200651c57816101408401528251600a10156200651c57601e6101608401528251600b10156200651c57820152600096905b81881062006497575b50508282049460018601809611620064825760018701809711620064825750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b909692620064a6848362004c79565b5185810290808204871490151715620064ff5781106200651457620064cc848362004c79565b519085820291808304871490151715620064ff57620064f791620064f0916200627f565b9362004c12565b969062006443565b601188634e487b7160e01b6000525260246000fd5b92966200644c565b603288634e487b7160e01b6000525260246000fd5b60ff601c6200638b565b604187634e487b7160e01b6000525260246000fd5b9095506064860615908115916200656b575b50943862006341565b90508506153862006562565b90815181101562004c30570160200190565b90815181511162006640576000905b620065a783518251906200627f565b8211620066385760019260005b82518110156200662d576001600160f81b031980620065df620065d8848862006271565b8562006577565b511690620065ee838662006577565b5116036200660757620066019062004c12565b620065b4565b5092509060005b62006625576200661e9062004c12565b9062006598565b505050600190565b50929190916200660e565b505050600090565b5050600090565b61032a80549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e3d565b610395805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b610393805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b61032180549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e05565b60405190620067408262002a97565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067768262002a26565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200695c5781620067ee88620067f69362004c79565b5101620073dc565b602692838210156200294257601a918203620068b4578762006819915162004c79565b5192828401519081101562002942570362006872575093620068636200686b926200685b6200685460a0604062000ef09a0151015162004c22565b5162004c22565b51906200606a565b9590620073ea565b92620067cb565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068cd81620067ee89869a979a5162004c79565b82811015620029425760140362006906575050906200686362000ef0956200622e620068ff846200686b965162004c79565b5162007437565b6200691890620067ee85855162004c79565b90811015620029425760151462006936575b506200686b9062004c12565b906200686362006955956200622e620068ff846200686b965162004c79565b906200692a565b505050909250803410600014620069d25760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007253575b506107339182549260ff841693620069f38562002937565b60019480860362006a2d5750505062006a2391925062006a1d62006a1782620074ce565b620075a5565b6200762f565b620031f862006731565b62006a388162002937565b60028114808062007246575b1562006e6f5750505062006a5882620074e3565b1562006e305762006a6982620074e3565b1562006df45762006aa290602080930190600260ff8560018060a01b0362006a92865162004c22565b5151169460409687915162004c22565b510151015192541662006ab58162002937565b0362006db45781600052610737808552836000209261073880549485600052875260ff86600020541662006d76578351948060005261073693848952600396878960002001540362006d105783600052885286600020906000528752856000208960ff19825416179055886000905b62006b6e575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b57620308b4565b519162006b648362002a97565b6015835282015290565b845181101562006d0a5786825480600052858a5262006b938389846000200162004e91565b905490891b1c908a84888b62006baa838d62004c79565b511562006c6857505050505062006c0d62006bed85549283600052888d526200622e62006bdf87600480986000200162004e91565b9054908d1b1c91896203079f565b9092600052878c5262006c0685858d6000200162004e91565b9062004ebe565b1562006c26575062006c1f9062004c12565b8962006b24565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006ca562006cb7966200622e87999462006c06979860005284895262006c9887600580986000200162004e91565b9054911b1c918d6203079f565b959097600052528c6000200162004e91565b1562006cc85762006c1f9062004c12565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b2a565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e7f82979495969762002937565b6003821491828062007239575b1562006f0e5750505050505062006ea3816200754a565b1562006ebe5762006eb4906202df85565b620031f862006767565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f198162002937565b81806200722b575b806200721e575b156200714857505050509060ff9062006f4062030ac6565b54169062006f4e8262002937565b81036200700c575062006f6181620074ce565b1562006f7b578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200701a60039262002937565b146200705357505b604051620070308162002a97565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200705e816200754a565b156200706f5762006eb4906202df85565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b620071538162002937565b821562007209575b505080620071fb575b62007173575050505062007022565b60ff19161790556200718581620074ce565b156200719f578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b506107325442101562007164565b6200721691925062002937565b38806200715b565b5061073254421062006f28565b506107315442101562006f21565b5061073254421062006e8c565b5061073154421062006a44565b60018060a01b03908184511660005261032590816020526040600020541562007349575b62007283903462004fed565b90156200730557620072a69083865116600052826020526040600020546200606a565b929015620072c45784511660005260205260406000205538620069db565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b60009081610326928354915b828110620073a1575b50156200736f575b50905062007277565b86518516600160401b821015620029ba57620019dd82620072839560016200739a9501905562004de9565b3862007366565b86620073ad8262004de9565b919054818c51169260031b1c1614620073d157620073cb9062004c12565b62007355565b50506001386200735e565b516026811015620029425790565b15620073f257565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007451818351015162004c46565b5151841015620074c6579262006863620074b6604094620074ae85620074a686620074948b6200749b8362000ef09f9e6200749490620074bc9e51015162004c46565b5162004c79565b519451015162004c57565b519062005ebb565b9290620073ea565b6200606a565b919290506200743c565b509093505050565b602001515115620074de57600190565b600090565b602001516001815103620075075762007500620031f89162004c22565b516200750d565b50600090565b60208101516026811015620029425760200362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b602001516001815103620075075762007567620031f89162004c22565b5160208101516026811015620029425760210362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b15620075ad57565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763a81620141ae565b5162013cb157600681101562002942576003811462013c585780620076975760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200a5fb575060008061032a54905b8181106200a5b4575b5050156200a598575b60005b6020908183015191825182101562007724576200771681610329620076fc620076f662000ef095620067ee886200771e9a62004c79565b620316cf565b9160018060a01b0388511660005252604060002062022f40565b429162004ebe565b620076bf565b50505060005b602080830151805183101562007772576200774f91620067ee84620076f69362004c79565b90606482101562004c30576200776c91429061032b015562004c12565b6200772a565b505050906000905b602083015180518310156200a5925782620077959162004c79565b51602081018051602690818110156200294257156200a54f578151818110156200294257600103620079e2575050604080910190620077d960c08351015162004c22565b5192620077fb60a0620077f0818651015162004c22565b519451015162004c46565b51956200780c85518551146202cca5565b6200781b85518851146202cd0b565b60005b8551811015620079605762007834818662004c79565b516064908181101562004c3057600160ff60076200785b9360031b0154161515146202cd6d565b62007867828a62004c79565b5162007874838862004c79565b51908282101562004c30576006620078929260031b0154906200606a565b906200789f848962004c79565b51918383101562004c30576006620078bc9360031b01556202cdc5565b620078c8828a62004c79565b5190620078d6838862004c79565b518181101562004c30576001600160a01b039392620079169160039086620078ff878e62004c79565b5116600052811b016020528760002054906200606a565b62007922848a62004c79565b519283101562004c3057600362000ef0936200795a9662007944878e62004c79565b5116600052811b0160205287600020556202ce24565b6200781e565b5093926200797d919296506200797690620312cf565b92620311b3565b9451926200798b8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b6620079bf938762004c79565b51878a62030dc7565b62007997565b5094509260209250620079d9915062004c12565b9190506200777a565b815181811015620029425760020362007c78575050604080910180519283519562007a2762007a1660a08097015162004c22565b51956200749b818651015162004c46565b5193875186510362007c2557875184510362007bd157875185510362007b7a575060005b855181101562007b645762007a61818762004c79565b51906064918281101562004c305762007a8660ff6007809360031b015416156202ce7d565b62007a92828962004c79565b518381101562004c305760031b01805460ff1916600117905562007ab7818a62004c79565b5162007ac4828962004c79565b51908382101562004c3057600562007ae09260031b0162005659565b62007aec818662004c79565b5162007af9828962004c79565b518381101562004c305760031b6001015562007b16818762004c79565b5162007b23828962004c79565b518381101562004c305760031b6002015562007b40818862004c79565b519182101562004c30576000600662007b5e9360031b015562004c12565b62007a4b565b50955093905060209250620079d9915062004c12565b5162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b819593949295518181101562002942576003036200826f575050604084019062007ca760c08351015162004c22565b519362007cbe60a0620077f0818651015162004c22565b519362007cd3865185511462000ee962031533565b62007ce6865186511462000ee962031533565b60005b865181101562007d4e5762007cff818662004c79565b5190606482101562004c3057600362007d489260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b51111562000ee962031637565b62007ce9565b50909493919460005b855181101562007e815762007d6d818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b0160205262007daf60406000205462007da7848962004c79565b519062004fed565b9062007dbc848a62004c79565b51918383101562004c3057600362007deb93878f5116600052811b0160205260406000205562000ee962031637565b62007df7828862004c79565b518181101562004c30576003908462007e11858c62004c79565b5116600052811b0160205262007e326040600020546200685b848962004c79565b62007e3e848a62004c79565b519283101562004c3057600362000ef09362007e7b9662007e60878e62004c79565b5116600052811b0160205260406000205562000ee96203169c565b62007d57565b5091509162007e9862007e9f9196959496620312cf565b95620311b3565b926040519462007eaf8662002a97565b6001865260203681880137516001600160a01b031662007ecf8662004c22565b526000905b86518210156200825a5762007eea828862004c79565b516108c05262007efb855162004d95565b9660009462007f0b885162004d95565b6108a0528594865b885181101562007fe1578a8962007f436001600160a01b0362007f37858462004c79565b51166108c051620310b9565b158062007f9c575b62007f64575b505062007f5e9062004c12565b62007f13565b9862007f919162001a9c82859c62007f8862007f5e9760018060a01b039262004c79565b51169262004c79565b9790508a8962007f51565b50505060646108c051101562004c30576001600160a01b0362007fc0828b62004c79565b511660005260036108c051811b016020528a89604060002054151562007f4b565b509098949897969291939760005b8851811015620080825760646108c051101562004c30576001600160a01b036200801a828b62004c79565b511660005260036108c051811b016020526040600020541562008049575b620080439062004c12565b62007fef565b99620080439062008079906001600160a01b03620080688e8d62004c79565b511662001a9c826108a05162004c79565b9a905062008038565b5098509694939291956108c0516064811015806107205262004c305760031b6004015496620080bc620080b6878a62006271565b62004d95565b996000998a6104c0525b6107205162004c30576104c0518a8110156200817b57620080fb620081189160006107205260046108c05160031b0162004e91565b90546108a05160039290921b1c6001600160a01b03169062031166565b1562008137575b6200812d6104c05162004c12565b6104c052620080c6565b99808c62001a9c62008174936200815b6104c05160046108c05160031b0162004e91565b905460039190911b1c6001600160a01b03169262004c79565b996200811f565b509a939794969299919850946000915b8383106200822057505050506107205162004c30578051906001600160401b038211620029ba57602090620081ca8360046108c05160031b0162004fcd565b0160046108c05160031b01600052602060002060005b838110620082025750505050620081f79062004c12565b909295919562007ed4565b82516001600160a01b031681830155602090920191600101620081e0565b62008253906200824c906001600160a01b036200823e868662004c79565b511662001a9c828962004c79565b9262004c12565b916200818b565b91945050620079d99194506020925062004c12565b81959394929551818110156200294257600403620084f5575050604080920160c094620082b0620082a4878451015162004c22565b51968351015162004c46565b5194620082c760a0620077f0818651015162004c22565b5193620082dc885188511462000ee962031533565b620082ef885185511462000ee962031533565b62008302885186511462000ee962031533565b60005b885181101562008369576200831b818662004c79565b5190606482101562004c305762008363916003906001600160a01b0362008343848e62004c79565b5116600052811b0160205262000ef0886000205462007d3b838a62004c79565b62008305565b50909691959294939660005b8351811015620084a9576200838b818862004c79565b51906064918281101562004c30576001600160a01b039060039082620083b2858a62004c79565b5116600052811b01602052620083d38b62007da7848b600020549262004c79565b90620083e0848c62004c79565b51918583101562004c30576003620084199385620083ff888d62004c79565b5116600052811b016020528a6000205562000ee962031637565b62008425828a62004c79565b518381101562004c3057600390826200843f858b62004c79565b5116600052811b01602052620084608b6200685b848b600020549262004c79565b9190506200846f838b62004c79565b519384101562004c3057620084a3936003916200848d858b62004c79565b5116600052811b01602052876000205562004c12565b62008375565b5094620084cc92975062007e9891939450620084c590620312cf565b93620311b3565b9260005b8351811015620079c5578062000ef0620079b6620084ef938762004c79565b620084d0565b8195949395519080821015620029425760059182036200870957505050604091828501906200853960a06200852e818551015162004c22565b519351015162004c46565b51928251845103620086b85760005b83518110156200859f576200855e818562004c79565b5190606482101562004c30576003620085999260018060a01b038b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008548565b509092919260005b84518110156200863957620085bd818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b01602052620085f6886000205462007da7848962004c79565b62008602848a62004c79565b519283101562004c3057600362000ef09362008633968e5116600052811b01602052896000205562000ee962031637565b620085a7565b509593926200864a919250620312cf565b91805193620086598562002a97565b6001855260203681870137516001600160a01b0316620086798562004c22565b525194620086878662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620086b2938762004c79565b62008693565b845162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029425760060362008971575050509060408092016200873960c08251015162004c22565b51946200875060a06200852e818551015162004c22565b5192865183510362008920578651845103620088d45760005b8751811015620087cd576200877f818562004c79565b5190606482101562004c3057620087c7916003906001600160a01b03620087a7848d62004c79565b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008769565b509092919260005b87518110156200888057620087eb818662004c79565b5160648082101562004c30576001600160a01b0392916003908462008811858e62004c79565b5116600052811b0160205262008831886000205462007da7848962004c79565b6200883d848a62004c79565b519283101562004c3057600362000ef0936200887a96620088608f889062004c79565b5116600052811b01602052896000205562000ee962031637565b620087d5565b509592620088959192506200797690620312cf565b925194620088a38662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620088ce938762004c79565b620088af565b845162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029425760070362008ac0575050506040809101936200899d60c08651015162004c22565b5192620089af60a08751015162004c22565b5195515191620089c7855188511462000ee962031533565b60005b855181101562007b645762008aba9062000ef06001600160a01b038260028862008aa28e62008a978e62008a8d8f8962008a058a8562004c79565b511660005262008a418962008a39816103209a8b60205262008a3360ff8760002054161562000ee962031604565b62004c79565b519662004c79565b51968a62008a7783519b8c9662008a58886200299e565b600188526060602089019860008a528781019b8c52019b8c5262004c79565b511660005260205260002097511515886200572c565b511515866200573d565b516001850162005659565b5191015562008ab2838a62004c79565b511662006707565b620089ca565b8251959695939492818510156200294257600894850362008bb75750505062008af260c0604080950151015162004c22565b519360005b855181101562008ba25762008b9c906001600160a01b038062008b1b838a62004c79565b5116600052610320908160205262008b7160ff62008b486001828c600020541615151462000ee962031563565b8262008b55868d62004c79565b5116600052836020528960002054891c161562000ee9620315cb565b62008b7d838a62004c79565b51166000526020528560002061010061ff001982541617905562004c12565b62008af7565b509490935060209250620079d9915062004c12565b805182811015620029425760090362008c8b5750505062008be160c0604080950151015162004c22565b519360005b855181101562008ba25762008c8590866001600160a01b038062008c0b848462004c79565b511660005262008c5e6001898362008c4087610320978860205262008a338660ff8097600020541615151462000ee962031563565b5116600052846020528a600020548a1c1615151462000ee962031596565b62008c6a838a62004c79565b51166000526020528560002061ff0019815416905562004c12565b62008be6565b809796949293959751828110156200294257600a0362008d69575050505060408094019162008cd060a062008cc560c08651015162004c22565b519451015162004c22565b519162008ce5845184511462000ee962031533565b60005b8451811015620079c55762008d63906001600160a01b038062008d0c838962004c79565b51166000526103208060205262008d33600160ff8c600020541615151462000ee962031563565b62008d3f838862004c79565b519162008d4d848a62004c79565b5116600052602052600289600020015562004c12565b62008ce8565b8097959751828110156200294257600b0362008e38575050505060408092019362008d9960c08651015162004c22565b519451519162008db1865184511462000ee962031533565b60005b8651811015620079c55762008e329062000ef06001600160a01b038062008ddc848c62004c79565b51166000526103208060205262008e03600160ff8b600020541615151462000ee962031563565b62008e0f848962004c79565b519162008e1d858d62004c79565b51166000526020526001886000200162005659565b62008db4565b8097949593969751828110156200294257600c0362008f8f5750505060400160609182825101519362008e6b856202c2eb565b60005b855181101562008f795760e062008e8a82878751015162004c79565b5101511562008f115762008eae62008ea782878751015162004c79565b5162005c60565b610322805460001992919083810190811162001de85762008ed08a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005c20565b5001805460ff1916905562004c12565b62008e6e565b62008f2c62008f2582878751015162004c79565b5162005cac565b610322805460001992919083810190811162001de85762008f4e8a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005be0565b50959150935060209250620079d9915062004c12565b809796959392949751828110156200294257600d03620090e457505060400194602062008fc160a08851015162004c22565b51965101519162008fd687518451146202c9e4565b60005b875181101562007b64578080878a62008ff762009086958962004c79565b51156200908c57620090576200903e8483620090296200901d6200906298889762004c79565b5161032254116202ca6d565b62008a338d620090456200903e858562004c79565b5162005c20565b509060ff9889920154901c166202cac5565b50015416156202cb26565b86620090736200903e838c62004c79565b5001805460ff1916600117905562004c12565b62008fd9565b62009057620090cc8483620090b7620090ab620090d398889762004c79565b5161032354116202ca6d565b62008a338d62009045620090cc858562004c79565b5162005be0565b8662009073620090cc838c62004c79565b809794939751828110156200294257600e03620091ca5750506040019160206200911360a08551015162004c22565b5193510151956200912884518851146202c9e4565b60005b845181101562007b6457806200914662009152928a62004c79565b51620091585762004c12565b6200912b565b6200917462009168828862004c79565b5161032254116202cb87565b620091b9876200919e6200918d6200903e858b62004c79565b5060ff9283910154891c166202cbe0565b88620091af6200903e858b62004c79565b500154166202cc42565b8662008efb6200903e838962004c79565b80919293509694959651828110156200294257600f03620092ee575050604001606091828251015193620091fe856202c2eb565b60005b855181101562008f795760e06200921d82878751015162004c79565b510151156200928d576200923a62008ea782878751015162004c79565b610322805460001992919083810190811162001de8576200925c8a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005c20565b62009201565b620092a162008f2582878751015162004c79565b610322805460001992919083810190811162001de857620092c38a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005be0565b8091929394969550518281101562002942576010036200939357505060400151906200932360a0608084015193015162004c22565b519362009338835186511462000ee962031533565b60005b835181101562009380578062000ef06200935a6200937a938762004c79565b51620093668162002edc565b62009372838a62004c79565b51906202c1af565b6200933b565b5093509160209150620079d99062004c12565b80959295518281101562002942576011036200961c57505090604080940191620093c860a062008cc560c08651015162004c22565b5191620093d984518451146202c163565b60005b845181101562009451576200944b9062000ef06001600160a01b038062009404848a62004c79565b511660005261032580602052620094258b600020546200685b868b62004c79565b91909262009434868c62004c79565b51166000526020528a6000205562000ee9620314e9565b620093dc565b5093945091620094629150620311b3565b90610326928354946200947b620080b685518862006271565b91600093845b888110620095dc575060005b865181101562009534576000805b8a8110620094e5575b5015620094bd575b620094b79062004c12565b6200948d565b94620094b790620094dc906001600160a01b036200823e898b62004c79565b959050620094ac565b620094f08162004de9565b90546001600160a01b0360039290921b1c81169062009510858c62004c79565b5116146200952957620095239062004c12565b6200949b565b5050600138620094a4565b50965094909350620095468362004d95565b805191906001600160401b038311620029ba57602090620095678462004f2a565b0190600052602060002060005b838110620095be575050505060005b8281106200959b57505050620079d960209162004c12565b620095b89062000ef06001600160a01b03620019d0838662004c79565b62009583565b82516001600160a01b03168183015560209092019160010162009574565b946200960f6200961691620095f18862004de9565b905460039190911b1c6001600160a01b031662001a9c828962004c79565b9562004c12565b62009481565b80518281101562002942576012036200988b5750506040809401916200964d60a062008cc560c08651015162004c22565b51916200965e84518451146202c163565b60005b8451811015620096b057620096aa9062000ef06001600160a01b038062009689848a62004c79565b511660005261032580602052620094258b6000205462007da7868b62004c79565b62009661565b509491509291620096c190620311b3565b906103268054620096d28162004d95565b9260009485925b808410620097865750505050620096f08362004d95565b805191906001600160401b038311620029ba57602090620097118462004f2a565b0190600052602060002060005b83811062009768575050505060005b8281106200974557505050620079d960209162004c12565b620097629062000ef06001600160a01b03620019d0838662004c79565b6200972d565b82516001600160a01b0316818301556020909201916001016200971e565b9297600097929597949194998a5b86518110156200987957620097a98b62004de9565b90546001600160a01b0360039290921b1c811690620097c9838a62004c79565b511614620097e257620097dc9062004c12565b62009794565b509950976001979592979491945b8062009849575b156200980f57620098089062004c12565b92620096d9565b95620098426200980891620098248962004de9565b905460039190911b1c6001600160a01b031662001a9c828a62004c79565b9662004c12565b50620098558162004de9565b60018060a01b0391549060031b1c16600052610325602052826000205415620097f7565b509998909897959297949194620097f0565b8095929551828110156200294257601303620098ec57505060408091015101519260005b8451811015620098db578062000ef0620098ce620098d5938862004c79565b516202df19565b620098af565b50925090620079d960209162004c12565b805191808310156200294257601492830362009a8e575050506040809101906200991b60c08351015162004c22565b51926200993260a0620077f0818651015162004c22565b51956200994385518551146202cca5565b6200995285518851146202cd0b565b60005b855181101562009a39576200996b818962004c79565b5162009978828762004c79565b516064918282101562004c30576006620099989260031b0154906200606a565b90620099a5848962004c79565b51918383101562004c30576006620099c29360031b01556202cdc5565b620099ce828a62004c79565b5190620099dc838862004c79565b518181101562004c30576001600160a01b03939262009a059160039086620078ff878e62004c79565b62009a11848a62004c79565b519283101562004c3057600362000ef09362009a339662007944878e62004c79565b62009955565b50939262009a4f919296506200797690620312cf565b94519262009a5d8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b662009a88938762004c79565b62009a69565b8151818110156200294257601590810362009aba57505050506020919262000ef0620079d9926202d41e565b825191808310156200294257601692830362009b2257505050505060c0604062009ae8920151015162004c22565b519260005b8451811015620098db5762009b1c9062000ef06001600160a01b0362009b14838962004c79565b5116620066bc565b62009aed565b835181811015620029425760170362009b7b5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029425760180362009bee57505050505060c0604062009ba6920151015162004c22565b51610396805460ff191660011790559260005b8451811015620098db5762009be89062000ef06001600160a01b0362009be0838962004c79565b511662006671565b62009bb9565b839796975181811015620029425760190362009d6257505050505060008080604080940160a08082510151805162009d29575b5050519060e08201519162009c456200685460c060018060a01b0393015162004c22565b511690602083519301915af1903d1562009d20573d9162009c668362002e73565b9262009c758351948562002ab3565b83523d6000602085013e5b1562009c95575050620079d960209162004c12565b62004c0e925062009d0181519260008051602062031c88833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b8385015283815162009cf0816059946020868601910162002d20565b810103603981018552018362002ab3565b5162461bcd60e51b815260206004820152918291602483019062002d45565b60609162009c80565b62009d349062004c22565b515162009d43575b8062009c21565b819250620068549062009d599251015162004c22565b51903862009d3c565b8351818110156200294257601a0362009e62575050505062009d8d60a0604080940151015162004c22565b519062009d9e60038351146202c163565b62009da98262004c22565b519262009dc262009dba8462004c46565b519362004c57565b519262009e2857505091620079d99160016020941460001462009e215762009e019062009df46103919182546200606a565b90915562000ee962031484565b62000ef061039262009e14815462006057565b90915562000ee9620314be565b5062004c12565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b90919280945051818110156200294257601b036200a2f5575050505050919062009ea261038f54620061b062009e97620313c0565b612710831062004bdf565b505062009eae62031484565b506000805b606481106200a284575b505062009ec96200618c565b62009ed76107345462004d95565b9060009485935b60648510156200a2775760ff60078660031b015416156200a0365760009560028660031b0154156200a02757869796975b62004c305760048660031b01548810156200a00e5762009f37886004600389901b0162004e91565b600160a01b6001900391549060031b1c1696876000528660031b6003016020526040978589600020549062009f6c9162005ebb565b999062009f7862031484565b62009f839162004bdf565b6000998960031b6002015462009f999162005ebb565b919062009fa562031484565b62009fb09162004bdf565b828b526103276020528a209081549062009fca916200606a565b90915562009fd762031484565b62009fe29162004bdf565b62009fee828862004c79565b5262009ffa9062004c12565b976200a0069062004c12565b979662009f0f565b91946200a01e9196975062004c12565b93909462009ede565b91946200a01e91965062004c12565b949592915092505b6200a0498262004d95565b91600091825b8281106200a1e157505050610328908154926200a071620080b6858462006271565b9360009081905b8082106200a1a657505060005b8381106200a1025750508351939150506001600160401b038311620029ba576020906200a0b28462004eef565b0190600052602060002060005b8381106200a0e45750505050620079d960209160006103915560006103925562004c12565b82516001600160a01b0316818301556020909201916001016200a0bf565b6000805b8381106200a15e575b50156200a128575b6200a1229062004c12565b6200a085565b906200a122906200a155906001600160a01b036200a147858762004c79565b511662001a9c828a62004c79565b9190506200a117565b6001600160a01b03806200a173858862004c79565b5116906200a182838b62004c79565b5116146200a19b576200a1959062004c12565b6200a106565b50506001386200a10f565b90916200824c6200a1da916200a1bc8562004dcd565b905460039190911b1c6001600160a01b031662001a9c828b62004c79565b906200a078565b6000805b8581106200a22f575b50156200a207575b6200a2019062004c12565b6200a04f565b926200a201906200a226906001600160a01b036200823e878662004c79565b9390506200a1f6565b6001600160a01b03806200a244858762004c79565b5116906200a253838a62004c79565b5116146200a26c576200a2669062004c12565b6200a1e5565b50506001386200a1ee565b949592915092506200a03e565b806003959394951b9060ff600783015416156200a2ea576200a2d4620074b662000ef0946200a2c86200a2e09560026200a2be8762005d82565b9101549062005ebb565b929062000ee962031484565b939062000ee962031484565b9392919362009eb3565b509392919362009ebd565b8351818110156200294257601c036200a34e5760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b8351818110156200294257601d036200a374575b5050505050620079d960209162004c12565b8351818110156200294257601e146200a362578351818110156200294257601f036200a3ca57505050506020916200a3c06200a3b96040620079d99401515162004c22565b516202df4f565b913880806200a362565b83518181101562002942576020036200a3f0575b5050505050620079d96020916200a3c0565b835181811015620029425760218091036200a40d575b506200a3de565b8451828110156200a53a576022036200a44d57505050505050620079d960209161039660ff1981541690556200a44262004fba565b91388080806200a406565b8451828110156200a53a576023036200a474575b505050505050620079d96020916200a442565b845194828610156200a53a5760248096036200a492575b506200a461565b8051838110156200a526576025146200a48b5751918210156200a5125750036200a4d65750506020916200a4ca620079d9926202d41e565b9138808080806200a48b565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200a5ae906001600160a01b031662006647565b620076bc565b6200a5bf8162004e3d565b9054855160039290921b1c6001600160a01b039081169116146200a5ee576200a5e89062004c12565b620076aa565b50505060013880620076b3565b600281036200a61f5760405162461bcd60e51b81528062004c0e60048201620075e4565b6001146200a62a5750565b6200a6386103235462005242565b805190600160401b8211620029ba576106bb54826106bb5580831062013bdd575b506020016106bb60005260206000206000915b83831062013bbc575050505060005b610323548110156200a6b4578062000ef06200a69b6200a6ae9362005be0565b506200a6a78362005c00565b90620140e3565b6200a67b565b506200a6c36103225462005242565b805190600160401b8211620029ba576106ba54826106ba5580831062013b20575b506020016106ba60005260206000206000915b83831062013aff575050505060005b610322548110156200a738578062000ef06200a7266200a7329362005c20565b506200a6a78362005c40565b6200a706565b5060005b6064811015806200a8f557600160ff61039f8460031b0154161515146200a770575b506200a76a9062004c12565b6200a73c565b916000835b62004c305761039c8360031b01548110156200a7df576200a7d6929350600092816200a7aa859361039c8860031b0162004e91565b9054600391821b1c6001600160a01b031660009081529087901b61039b01602052604081205562004c12565b9093926200a775565b5091604051906200a7f08262002a5e565b6000825262004c30578051906001600160401b038211620029ba576020906200a8218361039c8660031b0162004fcd565b0161039c8360031b01600052602060002060005b8381106200a8d75750505050600381901b61039f8101805460ff1916905560006103988201819055610399820181905561039a82015561039d01546200a76a91906200a8819062002b98565b601f908181116200a8ac575b5050600061039d8260031b0155600061039e8260031b0155906200a75e565b6200a8cf9161039d8460031b016000526020600020910160051c81019062004ed6565b38806200a88d565b82516001600160a01b0316818301556020909201916001016200a835565b505060005b6064811062013a71575060005b610321548110156200a96257806200a9236200a95c9262004e05565b60018060a01b0391549060031b1c166000526106b860205260006002604082208281556200a95460018201620052d3565b015562004c12565b6200a907565b506200a9716103215462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106b954836106b95580841062013a4f575b50016106b9600052602060002060005b83811062013a31575050505060005b610321548110156200aa35576200a9da8162004e05565b90546106b95460039290921b1c6001600160a01b0316919081101562004c30576106b960005260008051602062031ca8833981519152810180546001600160a01b0319169092179091556200aa2f9062004c12565b6200a9c3565b509060005b610321548110156200aaf457806200aa566200aaa99262004e05565b9060018060a01b03918291549060031b1c16600052610320602052604080600020916200aa838462004e05565b90549060031b1c166000526106b8602052600020908082036200aaaf575b505062004c12565b6200aa3a565b600280916200aad560ff6200aac881845416876200572c565b825460081c16856200573d565b6200aae7600182016001860162013d7f565b015491015538806200aaa1565b5060005b6106c2548110156200ab4657806200ab146200ab409262004e21565b60018060a01b0391549060031b1c166000526106c160205262000ef06040600020606481019062004ed6565b6200aaf8565b506200ab5561032a5462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106c254836106c25580841062013a0f575b50016106c2600052602060002060005b838110620139f1575050505060005b61032a548110156200abea578062000ef06200abc76200abe49362004e3d565b905460039190911b1c6001600160a01b0316620019dd8362004e21565b6200aba7565b5060005b61032a548110156200ac7557806200ac0a6200ac5c9262004e3d565b9060018060a01b03918291549060031b1c16600052610329602052604080600020916200ac378462004e3d565b90549060031b1c166000526106c1602052600020908082036200ac6257505062004c12565b6200abee565b6200ac6d9162014177565b38806200aaa1565b5061032b80546000905b60648210620139d857505061038f546107275550610390546107285561039154610729556103925461072a55610393546001600160401b038111620029ba57600160401b8111620029ba5761072b548161072b55808210620139aa575b5061072b60009081527f5633a4c6d9b97531e399e3f8ca4246ad061775375fff6b4bcce16d5826063f97805460008051602062031b6883398151915291905b8484106201398857505050505061039454600160401b8111620029ba5761072c548161072c5580821062013946575b5061072c600090815260008051602062031c088339815191527faa8d8c5069de1a96df104a74e1e1a7598fabc0d586553b00a0e002f860df95975b83831062013928575050610395549150506001600160401b038111620029ba57600160401b8111620029ba5761072d548161072d55808210620138fa575b5061072d60009081527f9b9d7759e89c320201cfa750871914a6fc9f76735934f3be5ccb8595391f512c805460008051602062031ac883398151915291905b848410620138d857505050505060ff6103965416151560ff801961072e541691161761072e5560005b6106be548110156200ae7557806200ae476200ae6f9262004e59565b905460039190911b1c6001600160a01b031660009081526106bd602052604081205562004c12565b6200ae2b565b506200ae846103265462004d95565b8051906001600160401b038211620029ba576020906200aea48362004f74565b016106be600052602060002060005b838110620138ba575050505060005b610326548110156200af05578062000ef06200aee26200aeff9362004de9565b905460039190911b1c6001600160a01b0316620019dd8362004e59565b6200aec2565b5060005b610326548110156200af7457806200af256200af6e9262004de9565b9060018060a01b03918291549060031b1c1660005261032560205260408060002054916200af538462004de9565b90549060031b1c166000526106bd6020526000205562004c12565b6200af09565b5060005b6106c0548110156200afc257806200af946200afbc9262004e75565b905460039190911b1c6001600160a01b031660009081526106bf602052604081205562004c12565b6200af78565b506200afd16103285462004d95565b8051906001600160401b038211620029ba576020906200aff18362004f97565b016106c0600052602060002060005b8381106201389c575050505060005b610328548110156200b052578062000ef06200b02f6200b04c9362004dcd565b905460039190911b1c6001600160a01b0316620019dd8362004e75565b6200b00f565b5060005b610328548110156200b0c157806200b0726200b0bb9262004dcd565b9060018060a01b03918291549060031b1c1660005261032760205260408060002054916200b0a08462004dcd565b90549060031b1c166000526106bf6020526000205562004c12565b6200b056565b506106c2546000805b82811062013857575b501562013821575b5060005b60208301519081518110156200b1375762000ef0620077166200b111620076f66020620067ee866200b1319862004c79565b86516001600160a01b031660009081526106c16020526040902062022f40565b6200b0df565b505060005b602083015180518210156200b18457620076f66020620067ee846200b1619462004c79565b90606482101562004c30576200b17e9142906106c3015562004c12565b6200b13c565b5050906000905b602081015180518310156200fe7557826200b1a69162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036200b77057604001906200b1e760c08351015162004c22565b51936200b1fe60a0620077f0818651015162004c22565b51916200b20f86518551146202cca5565b6200b21e86518451146202cd0b565b60005b86518110156200b377576200b237818662004c79565b51606481101562004c3057600160ff61039f6200b25d9360031b0154161515146202cd6d565b6200b269818562004c79565b516200b276828762004c79565b5190606482101562004c305761039e6200b2969260031b0154906200606a565b906200b2a3838862004c79565b5191606483101562004c305761039e6200b2c29360031b01556202cdc5565b6200b2ce818562004c79565b516200b2db828762004c79565b5190606482101562004c30576200b31d9161039b906001600160a01b036200b304868d62004c79565b511660005260031b01602052604060002054906200606a565b91906200b32b828862004c79565b5190606482101562004c30576200b3719362000ef09261039b906001600160a01b036200b359878f62004c79565b511660005260031b016020526040600020556202ce24565b6200b221565b50926200b38e919250620084c590959495620312cf565b916040516200b39d8162002a5e565b6000815260003681376000945b80518610156200b756576200b3c0868262004c79565b516107a0526200b3d1855162004d95565b966000946200b3e1845162004d95565b6103805260009460005b88518110156200b4b2578a896200b41b6001600160a01b036200b40f858462004c79565b51166107a0516203110f565b15806200b46b575b6200b43c575b50506200b4369062004c12565b6200b3eb565b986200b4609162001a9c82859c62007f886200b4369760018060a01b039262004c79565b9790508a896200b429565b50505060646107a051101562004c30576001600160a01b036200b48f828b62004c79565b511660005261039b6107a05160031b016020528a8960406000205415156200b423565b50909895979498969291939660005b88518110156200b54f5760646107a051101562004c30576001600160a01b03806200b4ed838c62004c79565b511660005261039b6107a05160031b01602052604060002054156200b51f575b506200b5199062004c12565b6200b4c1565b819b6200b547916200b5366200b519948d62004c79565b511662001a9c826103805162004c79565b9a906200b50d565b509850969592919093966107a0516064811015806104805262004c305760031b61039c0154986200b585620080b6898c62006271565b6108005260006102005260006107c0525b6104805162004c30576107c0518a8110156200b65f576200b5cc6200b5ec9160006104805261039c6107a05160031b0162004e91565b9054610380516001600160a01b03939260031b9190911c83169062031166565b156200b60c575b506200b6026107c05162004c12565b6107c0526200b596565b6000610480526200b62b6107c05161039c6107a05160031b0162004e91565b90549060031b1c166200b645610200516108005162004c79565b526200b6546102005162004c12565b61020052386200b5f3565b50979294959093985095909560005b8281106200b70a575050506104805162004c305761080051516001600160401b038111620029ba576200b6ac8161039c6107a05160031b0162004fcd565b6020610800510161039c6107a05160031b01600052602060002060005b8381106200b6ec57505050506200b6e09062004c12565b9492959091956200b3aa565b82516001600160a01b0316818301556020909201916001016200b6c9565b6200b750906001600160a01b036200b723828562004c79565b51166200b737610200516108005162004c79565b526200b7466102005162004c12565b6102005262004c12565b6200b66e565b5050939092506200b768915062004c12565b90916200b18b565b906020829493940151602681101562002942576002036200b921576040809201908151938451916200b7c76200b7ab60a08098015162004c22565b51966200b7bc818751015162004c46565b519551015162004c57565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b86518110156200b90e576200b801818862004c79565b51606481101562004c305760ff61039f6200b8239260031b015416156202ce7d565b6200b82f818862004c79565b51606481101562004c305760031b61039f01805460ff191660011790556200b858818562004c79565b516200b865828962004c79565b5190606482101562004c305761039d6200b8839260031b0162005659565b6200b88f818662004c79565b516200b89c828962004c79565b51606481101562004c305760031b61039901556200b8bb818762004c79565b516200b8c8828962004c79565b51606481101562004c305760031b61039a01556200b8e7818862004c79565b5190606482101562004c3057600061039e6200b9089360031b015562004c12565b6200b7eb565b509592509350506200b768915062004c12565b9092916020840151602681101562002942576003036200bf3f5760408401906200b95060c08351015162004c22565b51906200b96760a0620077f0818651015162004c22565b51936200b97c835185511462000ee962031533565b6200b98f835186511462000ee962031533565b60005b83518110156200b9ec576200b9a8818662004c79565b5190606482101562004c305761039b6200b9e69260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200b992565b509095919560005b87518110156200bb36576200ba0a818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200ba4360406000205462007da7838962004c79565b906200ba50838862004c79565b5191606483101562004c305761039b6200ba889360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200ba94818662004c79565b51606481101562004c305761039b906001600160a01b036200bab7848c62004c79565b511660005260031b016020526200bad96040600020546200685b838962004c79565b91906200bae7828862004c79565b5190606482101562004c30576200bb309361039b62000ef0938d6200bb148760018060a01b039262004c79565b511660005260031b0160205260406000205562000ee96203169c565b6200b9f4565b50926200bb55919294506200bb4e90969596620312cf565b94620311b3565b92604051906200bb658262002a97565b6001825260203681840137516001600160a01b03166200bb858262004c22565b526000945b80518610156200b756576200bba0868262004c79565b51610580526200bbb1855162004d95565b966000946200bbc1845162004d95565b6106a05260009460005b88518110156200bc92578a896200bbfb6001600160a01b036200bbef858462004c79565b5116610580516203110f565b15806200bc4b575b6200bc1c575b50506200bc169062004c12565b6200bbcb565b986200bc409162001a9c82859c62007f886200bc169760018060a01b039262004c79565b9790508a896200bc09565b505050606461058051101562004c30576001600160a01b036200bc6f828b62004c79565b511660005261039b6105805160031b016020528a8960406000205415156200bc03565b50909895979498969291939660005b88518110156200bd3657606461058051101562004c30576001600160a01b036200bccc828b62004c79565b511660005261039b6105805160031b01602052604060002054156200bcfd575b6200bcf79062004c12565b6200bca1565b996200bcf7906200bd2d906001600160a01b036200bd1c8e8d62004c79565b511662001a9c826106a05162004c79565b9a90506200bcec565b50985096959291909396610580516064811015806105005262004c305760031b61039c0154986200bd6c620080b6898c62006271565b6105205260006105c05260006106e0525b6105005162004c30576106e0518a8110156200be48576200bdb36200bdd09160006105005261039c6105805160031b0162004e91565b90546106a05160039290921b1c6001600160a01b03169062031166565b156200bdef575b6200bde56106e05162004c12565b6106e0526200bd7d565b6000610500526200be0e6106e05161039c6105805160031b0162004e91565b60018060a01b0391549060031b1c166200be2f6105c0516105205162004c79565b526200be3e6105c05162004c12565b6105c0526200bdd7565b50979294959093985095909560005b8281106200bef3575050506105005162004c305761052051516001600160401b038111620029ba576200be958161039c6105805160031b0162004fcd565b6020610520510161039c6105805160031b01600052602060002060005b8381106200bed557505050506200bec99062004c12565b9492959091956200bb8a565b82516001600160a01b0316818301556020909201916001016200beb2565b6200bf39906001600160a01b036200bf0c828562004c79565b51166200bf206105c0516105205162004c79565b526200bf2f6105c05162004c12565b6105c05262004c12565b6200be57565b90926020810151602681101562002942576004036200c5645760400160c0936200bf7d6200bf71868451015162004c22565b51958351015162004c46565b51906200bf9460a0620077f0818651015162004c22565b51936200bfa9875184511462000ee962031533565b6200bfbc875185511462000ee962031533565b6200bfcf875186511462000ee962031533565b60005b87518110156200c039576200bfe8818662004c79565b5190606482101562004c30576200c0339161039b906001600160a01b036200c011848d62004c79565b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200bfd2565b509095919593929360005b83518110156200c198576200c05a818762004c79565b51606481101562004c305761039b906001600160a01b036200c07d848862004c79565b511660005260031b016020526200c09f60406000205462007da7838862004c79565b906200c0ac838962004c79565b5191606483101562004c30576200c0f19261039b906001600160a01b036200c0d5878b62004c79565b511660005260031b0160205260406000205562000ee962031637565b6200c0fd818762004c79565b51606481101562004c305761039b906001600160a01b036200c120848c62004c79565b511660005260031b016020526200c1426040600020546200685b838862004c79565b9190506200c151818862004c79565b5191606483101562004c30576200c1929261039b906001600160a01b036200c17a858e62004c79565b511660005260031b0160205260406000205562004c12565b6200c044565b5091936200c1b491935062007e98620084c591979697620312cf565b6000945b80518610156200b756576200c1ce868262004c79565b51610860526200c1df855162004d95565b966000946200c1ef845162004d95565b6107605260009460005b88518110156200c2c0578a896200c2296001600160a01b036200c21d858462004c79565b5116610860516203110f565b15806200c279575b6200c24a575b50506200c2449062004c12565b6200c1f9565b986200c26e9162001a9c82859c62007f886200c2449760018060a01b039262004c79565b9790508a896200c237565b505050606461086051101562004c30576001600160a01b036200c29d828b62004c79565b511660005261039b6108605160031b016020528a8960406000205415156200c231565b50909895979498969291939660005b88518110156200c35d57606461086051101562004c30576001600160a01b03806200c2fb838c62004c79565b511660005261039b6108605160031b01602052604060002054156200c32d575b506200c3279062004c12565b6200c2cf565b819b6200c355916200c3446200c327948d62004c79565b511662001a9c826107605162004c79565b9a906200c31b565b50985096959291909396610860516064811015806108e05262004c305760031b61039c0154986200c393620080b6898c62006271565b6103005260006103e0526000610840525b6108e05162004c3057610840518a8110156200c46d576200c3da6200c3fa9160006108e05261039c6108605160031b0162004e91565b9054610760516001600160a01b03939260031b9190911c83169062031166565b156200c41a575b506200c4106108405162004c12565b610840526200c3a4565b60006108e0526200c4396108405161039c6108605160031b0162004e91565b90549060031b1c166200c4536103e0516103005162004c79565b526200c4626103e05162004c12565b6103e052386200c401565b50979294959093985095909560005b8281106200c518575050506108e05162004c305761030051516001600160401b038111620029ba576200c4ba8161039c6108605160031b0162004fcd565b6020610300510161039c6108605160031b01600052602060002060005b8381106200c4fa57505050506200c4ee9062004c12565b9492959091956200c1b8565b82516001600160a01b0316818301556020909201916001016200c4d7565b6200c55e906001600160a01b036200c531828562004c79565b51166200c5456103e0516103005162004c79565b526200c5546103e05162004c12565b6103e05262004c12565b6200c47c565b92906020840151602681101562002942576005036200cb0a5760408401906200c59760a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156200c600576200c5bc818562004c79565b5190606482101562004c305761039b6200c5fa9260018060a01b038a511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200c5a6565b509060005b83518110156200c6a5576200c61b818562004c79565b51606481101562004c305761039b9060018060a01b0389511660005260031b016020526200c65460406000205462007da7838862004c79565b91906200c662828762004c79565b5190606482101562004c30576200c69f9361039b62000ef09360018060a01b038d511660005260031b0160205260406000205562000ee962031637565b6200c605565b50916200c6b69194959350620312cf565b92604051926200c6c68462002a97565b6001845260203681860137516001600160a01b03166200c6e68462004c22565b52604051926200c6f68462002a5e565b6000845260003681376000945b80518610156200b756576200c719868262004c79565b51610640526200c72a855162004d95565b966000946200c73a845162004d95565b6104a05260009460005b88518110156200c80b578a896200c7746001600160a01b036200c768858462004c79565b5116610640516203110f565b15806200c7c4575b6200c795575b50506200c78f9062004c12565b6200c744565b986200c7b99162001a9c82859c62007f886200c78f9760018060a01b039262004c79565b9790508a896200c782565b505050606461064051101562004c30576001600160a01b036200c7e8828b62004c79565b511660005261039b6106405160031b016020528a8960406000205415156200c77c565b50909895979498969291939660005b88518110156200c8af57606461064051101562004c30576001600160a01b036200c845828b62004c79565b511660005261039b6106405160031b01602052604060002054156200c876575b6200c8709062004c12565b6200c81a565b996200c870906200c8a6906001600160a01b036200c8958e8d62004c79565b511662001a9c826104a05162004c79565b9a90506200c865565b50985096959291909396610640516064811015806104405262004c305760031b61039c0154986200c8e5620080b6898c62006271565b610540526000610360526000610460525b6104405162004c3057610460518a8110156200c9c1576200c92c6200c9499160006104405261039c6106405160031b0162004e91565b90546104a05160039290921b1c6001600160a01b03169062031166565b156200c968575b6200c95e6104605162004c12565b610460526200c8f6565b6000610440526200c9876104605161039c6106405160031b0162004e91565b60018060a01b0391549060031b1c166200c9a8610360516105405162004c79565b526200c9b76103605162004c12565b610360526200c950565b50979294959093985095909560005b8281106200ca6c575050506104405162004c305761054051516001600160401b038111620029ba576200ca0e8161039c6106405160031b0162004fcd565b6020610540510161039c6106405160031b01600052602060002060005b8381106200ca4e57505050506200ca429062004c12565b9492959091956200c703565b82516001600160a01b0316818301556020909201916001016200ca2b565b6200cab2906001600160a01b036200ca85828562004c79565b51166200ca99610360516105405162004c79565b526200caa86103605162004c12565b6103605262004c12565b6200c9d0565b60405162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b926020810151602681101562002942576006036200d0ed576040016200cb3560c08251015162004c22565b51936200cb4c60a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156200cbcc576200cb7b818562004c79565b5190606482101562004c30576200cbc69161039b906001600160a01b036200cba4848c62004c79565b511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200cb65565b509060005b86518110156200cc6e576200cbe7818562004c79565b51606481101562004c305761039b906001600160a01b036200cc0a848b62004c79565b511660005260031b016020526200cc2c60406000205462007da7838862004c79565b91906200cc3a828762004c79565b5190606482101562004c30576200cc689362000ef09261039b906001600160a01b036200c0d5878f62004c79565b6200cbd1565b50916200cc85919350620084c590959495620312cf565b91604051926200cc958462002a5e565b6000845260003681376000945b80518610156200b756576200ccb8868262004c79565b51610420526200ccc9855162004d95565b966000946200ccd9845162004d95565b6102e05260009460005b88518110156200cdaa578a896200cd136001600160a01b036200cd07858462004c79565b5116610420516203110f565b15806200cd63575b6200cd34575b50506200cd2e9062004c12565b6200cce3565b986200cd589162001a9c82859c62007f886200cd2e9760018060a01b039262004c79565b9790508a896200cd21565b505050606461042051101562004c30576001600160a01b036200cd87828b62004c79565b511660005261039b6104205160031b016020528a8960406000205415156200cd1b565b50909895979498969291939660005b88518110156200ce4757606461042051101562004c30576001600160a01b03806200cde5838c62004c79565b511660005261039b6104205160031b01602052604060002054156200ce17575b506200ce119062004c12565b6200cdb9565b819b6200ce3f916200ce2e6200ce11948d62004c79565b511662001a9c826102e05162004c79565b9a906200ce05565b50985096959291909396610420516064811015806107405262004c305760031b61039c0154986200ce7d620080b6898c62006271565b6102c05260006101c0526000610600525b6107405162004c3057610600518a8110156200cf57576200cec46200cee49160006107405261039c6104205160031b0162004e91565b90546102e0516001600160a01b03939260031b9190911c83169062031166565b156200cf04575b506200cefa6106005162004c12565b610600526200ce8e565b6000610740526200cf236106005161039c6104205160031b0162004e91565b90549060031b1c166200cf3d6101c0516102c05162004c79565b526200cf4c6101c05162004c12565b6101c052386200ceeb565b50979294959093985095909560005b8281106200d002575050506107405162004c30576102c051516001600160401b038111620029ba576200cfa48161039c6104205160031b0162004fcd565b60206102c0510161039c6104205160031b01600052602060002060005b8381106200cfe457505050506200cfd89062004c12565b9492959091956200cca2565b82516001600160a01b0316818301556020909201916001016200cfc1565b6200d048906001600160a01b036200d01b828562004c79565b51166200d02f6101c0516102c05162004c79565b526200d03e6101c05162004c12565b6101c05262004c12565b6200cf66565b60405162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b602081949293940151602681101562002942576007036200d28857604001916200d11c60c08451015162004c22565b51916200d12e60a08551015162004c22565b51935151916200d146845186511462000ee962031533565b60005b84518110156200d276576001600160a01b03806200d168838862004c79565b51166000526106b8806020526200d18c60ff604060002054161562000ee962031604565b60026200d19a848862004c79565b516200d2046200d1ab868c62004c79565b519162008a978b604051966200d1c1886200299e565b60018852886200d1e88b60208b01946000865260408c0197885260608c01998a5262004c79565b511660005260205262008a8d604060002097511515886200572c565b519101556200d214828762004c79565b516106b954929116600160401b831015620029ba5760018301806106b95583101562004c30576106b960005260008051602062031ca883398151915290920180546001600160a01b0319169092179091556200d2709062004c12565b6200d149565b5094915092506200b768915062004c12565b6020810151602681101562002942576008036200d3765760c060406200d2b2920151015162004c22565b519160005b83518110156200d367576200d361906001600160a01b03806200d2db838862004c79565b51166000526106b890816020526200d304600160ff6040600020541615151462000ee962031563565b806200d311848962004c79565b5116600052816020526200d33560ff60406000205460081c161562000ee9620315cb565b6200d341838862004c79565b5116600052602052604060002061010061ff001982541617905562004c12565b6200d2b7565b50926200b76891925062004c12565b6020810151602681101562002942576009036200d4555760c060406200d3a0920151015162004c22565b519160005b83518110156200d367576200d44f906001600160a01b03806200d3c9838862004c79565b51166000526106b890816020526200d3f2600160ff6040600020541615151462000ee962031563565b806200d3ff848962004c79565b5116600052816020526200d427600160ff60406000205460081c1615151462000ee962031596565b6200d433838862004c79565b5116600052602052604060002061ff0019815416905562004c12565b6200d3a5565b602081015160268110156200294257600a036200d53d57604001906200d49160a06200d48660c08551015162004c22565b519351015162004c22565b51926200d4a6835185511462000ee962031533565b60005b83518110156200d52c576200d526906001600160a01b03806200d4cd838862004c79565b51166000526106b8806020526200d4f5600160ff6040600020541615151462000ee962031563565b6200d501838962004c79565b51916200d50f848962004c79565b511660005260205260026040600020015562004c12565b6200d4a9565b50939092506200b768915062004c12565b60208194939294015160268110156200294257600b036200d61d57604001926200d56c60c08551015162004c22565b51935151916200d584855184511462000ee962031533565b60005b85518110156200d60d576200d6079062000ef06001600160a01b03806200d5af848b62004c79565b51166000526106b8806020526200d5d7600160ff6040600020541615151462000ee962031563565b6200d5e3848962004c79565b51916200d5f1858c62004c79565b5116600052602052600160406000200162005659565b6200d587565b509350916200b768915062004c12565b909192602082015160268110156200294257600c036200d76857606060408301510151926200d64c846202c2eb565b60005b84518110156200d52c5760e06200d66f8260606040880151015162004c79565b510151156200d6f3576200d6976200d6908260606040880151015162004c79565b5162005cf2565b6106ba548060001981011162001de8576200d6b86005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de857600562008efb6200d6ed936000190162005c40565b6200d64f565b6200d7126200d70b8260606040880151015162004c79565b5162005ccf565b6106bb548060001981011162001de8576200d7336005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de857600562008efb6200d6ed936000190162005c00565b929190602081015160268110156200294257600d036200d8af576040019260206200d79860a08651015162004c22565b5194510151916200d7ad85518451146202c9e4565b60005b85518110156200d60d57806200d7cb6200d844928662004c79565b51156200d84a576200d7ee6200d7e2828962004c79565b516106ba54116202ca6d565b6200d81a60ff60056200d80d6200d806858c62004c79565b5162005c40565b50015460081c166202cac5565b6200d83260ff6005620090576200d806858c62004c79565b6005620090736200d806838a62004c79565b6200d7b0565b6200d8666200d85a828962004c79565b516106bb54116202ca6d565b6200d88560ff60056200d80d6200d87e858c62004c79565b5162005c00565b6200d89d60ff6005620090576200d87e858c62004c79565b6005620090736200d87e838a62004c79565b602081015160268110156200294257600e036200d9e5576040019260206200d8dc60a08651015162004c22565b5194510151916200d8f185518451146202c9e4565b60005b85518110156200d60d57806200d90f6200d981928662004c79565b51156200d987576200d9326200d926828962004c79565b516106ba54116202cb87565b6200d95760ff60056200d94a6200d806858c62004c79565b50015460081c166202cbe0565b6200d96f60ff6005620091af6200d806858c62004c79565b600562008efb6200d806838a62004c79565b6200d8f4565b6200d9a36200d997828962004c79565b516106bb54116202cb87565b6200d9bb60ff60056200d94a6200d87e858c62004c79565b6200d9d360ff6005620091af6200d87e858c62004c79565b600562008efb6200d87e838a62004c79565b909192602082015160268110156200294257600f036200db2257606060408301510151926200da14846202c2eb565b60005b84518110156200d52c5760e06200da378260606040880151015162004c79565b510151156200dab4576200da586200d6908260606040880151015162004c79565b6106ba548060001981011162001de8576200da796005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de8576005620090736200daae936000190162005c40565b6200da17565b6200dacc6200d70b8260606040880151015162004c79565b6106bb548060001981011162001de8576200daed6005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de8576005620090736200daae936000190162005c00565b9291906020810151602681101562002942576010036200dc675760400151926200db5560a0608086015195015162004c22565b51916200db6a855184511462000ee962031533565b60005b85518110156200d60d57806200db886200dbfd928862004c79565b516200db948162002edc565b6200dba0828762004c79565b51906200dbad8162002edc565b6200dbc46200dbbb62031666565b82151562004bdf565b6200dbcf8162002edc565b600181036200dc0357506200dbf36200dbe762031666565b61271083111562004bdf565b6107275562004c12565b6200db6d565b6200dc0e8162002edc565b600281036200dc2257506107285562004c12565b6200dc2d8162002edc565b600381036200dc4157506107295562004c12565b806200dc4f60049262002edc565b146200dc5c575062004c12565b61072a553862009e21565b6020810151602681101562002942576011036200df0a57604001906200dc9860a06200d48660c08551015162004c22565b51936200dca983518651146202c163565b60005b83518110156200dd29576200dd23906200dd036001600160a01b03806200dcd4848962004c79565b51166000526106bd90816020526200dcf76040600020546200685b868d62004c79565b939062000ee9620314e9565b6200dd0f848962004c79565b511660005260205260406000205562004c12565b6200dcac565b509350906200dd3890620311b3565b906106be54936200dd4f620080b684518762006271565b9060009260005b8781106200deca575060005b85518110156200de17576000805b8981106200ddc8575b50156200dd92575b6200dd8c9062004c12565b6200dd62565b936200dd8c906200ddbf906001600160a01b036200ddb1888a62004c79565b511662001a9c828862004c79565b9490506200dd81565b6200ddd38162004e59565b90546001600160a01b0360039290921b1c8116906200ddf3858b62004c79565b5116146200de0c576200de069062004c12565b6200dd70565b50506001386200dd79565b5095509392506200de288262004d95565b8051906001600160401b038211620029ba576020906200de488362004f74565b016106be600052602060002060005b8381106200deac575050505060005b8281106200de7c575050506200b7689062004c12565b6200dea69062000ef06001600160a01b036200de99838662004c79565b5116620019dd8362004e59565b6200de66565b82516001600160a01b0316818301556020909201916001016200de57565b936200defd6200df04916200dedf8762004e59565b905460039190911b1c6001600160a01b031662001a9c828862004c79565b9462004c12565b6200dd56565b6020819492940151602681101562002942576012036200e14e57604001906200df3e60a06200d48660c08551015162004c22565b51936200df4f83518651146202c163565b60005b83518110156200dfa3576200df9d906200dd036001600160a01b03806200df7a848962004c79565b51166000526106bd90816020526200dcf760406000205462007da7868d62004c79565b6200df52565b50935091906200dfb390620311b3565b6106be546200dfc28162004d95565b906000926000915b8083106200e075575050506200dfe08262004d95565b8051906001600160401b038211620029ba576020906200e0008362004f74565b016106be600052602060002060005b8381106200e057575050505060005b8281106200e034575050506200b7689062004c12565b6200e0519062000ef06001600160a01b036200de99838662004c79565b6200e01e565b82516001600160a01b0316818301556020909201916001016200e00f565b91956000959193959760005b85518110156200e13f576200e0968962004e59565b90546001600160a01b0360039290921b1c8116906200e0b6838962004c79565b5116146200e0cf576200e0c99062004c12565b6200e081565b509750956001959391955b806200e10e575b156200e0f9576200e0f29062004c12565b916200dfca565b936200defd6200e0f2916200dedf8762004e59565b506200e11a8162004e59565b60018060a01b0391549060031b1c166000526106bd602052604060002054156200e0e1565b5097969096959391956200e0da565b6020819493940151602681101562002942576013036200e1ef5760408091015101519160005b83518110156200d367576200e18a818562004c79565b51906106bc54600160401b811015620029ba5760018101806106bc5581101562004c30576106bc6000526200e1e99262000ef0916007027f0487500372b3cc67c23af8f14e14f40d94d05acb10821fef30e703b5df87397d016202de6d565b6200e174565b602081949392940151602681101562002942576014036200e72a57604001906200e21e60c08351015162004c22565b51936200e23560a0620077f0818651015162004c22565b51916200e24686518551146202cca5565b6200e25586518451146202cd0b565b60005b86518110156200e34b576200e26e818562004c79565b516200e27b828762004c79565b5190606482101562004c305761039e6200e29b9260031b0154906200606a565b906200e2a8838862004c79565b5191606483101562004c305761039e6200e2c79360031b01556202cdc5565b6200e2d3818562004c79565b516200e2e0828762004c79565b5190606482101562004c30576200e3099161039b906001600160a01b036200b304868d62004c79565b91906200e317828862004c79565b5190606482101562004c30576200e3459362000ef09261039b906001600160a01b036200b359878f62004c79565b6200e258565b50926200e362919250620084c590959495620312cf565b916040516200e3718162002a5e565b6000815260003681376000945b80518610156200b756576200e394868262004c79565b516107e0526200e3a5855162004d95565b966000946200e3b5845162004d95565b6105e05260009460005b88518110156200e486578a896200e3ef6001600160a01b036200e3e3858462004c79565b51166107e0516203110f565b15806200e43f575b6200e410575b50506200e40a9062004c12565b6200e3bf565b986200e4349162001a9c82859c62007f886200e40a9760018060a01b039262004c79565b9790508a896200e3fd565b50505060646107e051101562004c30576001600160a01b036200e463828b62004c79565b511660005261039b6107e05160031b016020528a8960406000205415156200e3f7565b50909895979498969291939660005b88518110156200e5235760646107e051101562004c30576001600160a01b03806200e4c1838c62004c79565b511660005261039b6107e05160031b01602052604060002054156200e4f3575b506200e4ed9062004c12565b6200e495565b819b6200e51b916200e50a6200e4ed948d62004c79565b511662001a9c826105e05162004c79565b9a906200e4e1565b509850969592919093966107e0516064811015806104e05262004c305760031b61039c0154986200e559620080b6898c62006271565b6107005260006103c0526000610820525b6104e05162004c3057610820518a8110156200e633576200e5a06200e5c09160006104e05261039c6107e05160031b0162004e91565b90546105e0516001600160a01b03939260031b9190911c83169062031166565b156200e5e0575b506200e5d66108205162004c12565b610820526200e56a565b60006104e0526200e5ff6108205161039c6107e05160031b0162004e91565b90549060031b1c166200e6196103c0516107005162004c79565b526200e6286103c05162004c12565b6103c052386200e5c7565b50979294959093985095909560005b8281106200e6de575050506104e05162004c305761070051516001600160401b038111620029ba576200e6808161039c6107e05160031b0162004fcd565b6020610700510161039c6107e05160031b01600052602060002060005b8381106200e6c057505050506200e6b49062004c12565b9492959091956200e37e565b82516001600160a01b0316818301556020909201916001016200e69d565b6200e724906001600160a01b036200e6f7828562004c79565b51166200e70b6103c0516107005162004c79565b526200e71a6103c05162004c12565b6103c05262004c12565b6200e642565b926020840151602681101562002942576015036200ed235760408401906200e75760c08351015162004c22565b51906200e76e60a0620077f0818651015162004c22565b51936200e783835185511462000ee962031533565b6200e796835186511462000ee962031533565b60005b83518110156200e7f3576200e7af818662004c79565b5190606482101562004c305761039b6200e7ed9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200e799565b509095919560005b87518110156200e921576200e811818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200e84a60406000205462007da7838962004c79565b906200e857838862004c79565b5191606483101562004c305761039b6200e88f9360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200e89b818662004c79565b51606481101562004c305761039b906001600160a01b036200e8be848c62004c79565b511660005260031b016020526200e8e06040600020546200685b838962004c79565b91906200e8ee828862004c79565b5190606482101562004c30576200e91b9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200e7fb565b50926200e939919294506200bb4e90969596620312cf565b92604051906200e9498262002a97565b6001825260203681840137516001600160a01b03166200e9698262004c22565b526000945b80518610156200b756576200e984868262004c79565b51610680526200e995855162004d95565b966000946200e9a5845162004d95565b6103405260009460005b88518110156200ea76578a896200e9df6001600160a01b036200e9d3858462004c79565b5116610680516203110f565b15806200ea2f575b6200ea00575b50506200e9fa9062004c12565b6200e9af565b986200ea249162001a9c82859c62007f886200e9fa9760018060a01b039262004c79565b9790508a896200e9ed565b505050606461068051101562004c30576001600160a01b036200ea53828b62004c79565b511660005261039b6106805160031b016020528a8960406000205415156200e9e7565b50909895979498969291939660005b88518110156200eb1a57606461068051101562004c30576001600160a01b036200eab0828b62004c79565b511660005261039b6106805160031b01602052604060002054156200eae1575b6200eadb9062004c12565b6200ea85565b996200eadb906200eb11906001600160a01b036200eb008e8d62004c79565b511662001a9c826103405162004c79565b9a90506200ead0565b50985096959291909396610680516064811015806103a05262004c305760031b61039c0154986200eb50620080b6898c62006271565b6102405260006107805260006106c0525b6103a05162004c30576106c0518a8110156200ec2c576200eb976200ebb49160006103a05261039c6106805160031b0162004e91565b90546103405160039290921b1c6001600160a01b03169062031166565b156200ebd3575b6200ebc96106c05162004c12565b6106c0526200eb61565b60006103a0526200ebf26106c05161039c6106805160031b0162004e91565b60018060a01b0391549060031b1c166200ec13610780516102405162004c79565b526200ec226107805162004c12565b610780526200ebbb565b50979294959093985095909560005b8281106200ecd7575050506103a05162004c305761024051516001600160401b038111620029ba576200ec798161039c6106805160031b0162004fcd565b6020610240510161039c6106805160031b01600052602060002060005b8381106200ecb957505050506200ecad9062004c12565b9492959091956200e96e565b82516001600160a01b0316818301556020909201916001016200ec96565b6200ed1d906001600160a01b036200ecf0828562004c79565b51166200ed04610780516102405162004c79565b526200ed136107805162004c12565b6107805262004c12565b6200ec3b565b9091926020810151602681101562002942576016036200edd55760c060406200ed50920151015162004c22565b519160005b83518110156200d367576001600160a01b036200ed73828662004c79565b5161072b54929116600160401b831015620029ba57600183018061072b5583101562004c305761072b60005260008051602062031b6883398151915290920180546001600160a01b0319169092179091556200edcf9062004c12565b6200ed55565b6020810151602681101562002942576017036200ee325760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036200eef05760c060406200ee5c920151015162004c22565b5191600160ff1961072e54161761072e5560005b83518110156200d367576001600160a01b036200ee8e828662004c79565b5161072d54929116600160401b831015620029ba57600183018061072d5583101562004c305761072d60005260008051602062031ac883398151915290920180546001600160a01b0319169092179091556200eeea9062004c12565b6200ee70565b602081949293940151602681101562002942576019036200ef18575b506200b7689062004c12565b602081015160268110156200294257601a036200f08f5760a060406200ef42920151015162004c22565b51906200ef5360038351146202c163565b6200ef5e8262004c22565b516200ef6e62009dba8462004c46565b51926200f053576200b768926001036200f04c576200ef956200eff391610729546200606a565b61072955604051906200efa88262002a26565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004bdf565b6200f0456200f00561072a5462006057565b61072a55604051906200f0188262002a97565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004bdf565b906200ef0c565b506200f045565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b602081015160268110156200294257601b036200f61c57509190610727546200f0bb62009e97620313c0565b61072a546107285411156200f0da6200f0d36203142e565b8262004bdf565b61072954906200f0eb838362005ebb565b50506200f0f762031484565b506000805b606482106200f5cd575b5050906200f1366200f13c93926200f12c6200f121620313c0565b612710861062004bdf565b62000ee96203142e565b62005ebb565b90506200f14862031484565b5060009060005b606481106200f4fa575b50906127106200f16a92046200624f565b90506200f17a6107345462004d95565b906000946000905b60648210156200f4ed578160031b9460ff61039f87015416156200f2d75760009661039a870154156200f2c657600098975b62004c305761039c8701548910156200f2ac576200f1d78961039c890162004e91565b600160a01b6001900391549060031b1c16978860005261039b8801602052604098868a60002054906200f20a9162005ebb565b9a906200f21662031484565b6200f2219162004bdf565b60009a61039a8b01546200f2359162005ebb565b91906200f24162031484565b6200f24c9162004bdf565b826000526106bf602052600020908154906200f268916200606a565b9091556200f27562031484565b6200f2809162004bdf565b6200f28c828962004c79565b526200f2989062004c12565b986200f2a49062004c12565b98976200f1b4565b929095506200f2be9196975062004c12565b90946200f182565b929095506200f2be91965062004c12565b95969392509350505b6200f2eb8262004d95565b9160009160005b8281106200f457575050506106c054916200f312620080b6848462006271565b926000906000905b8082106200f43a57505060005b8381106200f3a45750508251929150506001600160401b038211620029ba576020906200f3548362004f97565b016106c0600052602060002060005b8381106200f38657505050506200b76890600061072955600061072a556200f045565b82516001600160a01b0316818301556020909201916001016200f363565b6000805b8381106200f3f2575b50156200f3ca575b6200f3c49062004c12565b6200f327565b906200f3c4906200f3e9906001600160a01b036200823e858762004c79565b9190506200f3b9565b6001600160a01b03806200f407858862004c79565b5116906200f416838a62004c79565b5116146200f42f576200f4299062004c12565b6200f3a8565b50506001386200f3b1565b90916200824c6200f45091620098248562004e75565b906200f31a565b6000805b8581106200f4a5575b50156200f47d575b6200f4779062004c12565b6200f2f2565b926200f477906200f49c906001600160a01b036200823e878662004c79565b9390506200f46c565b6001600160a01b03806200f4ba858762004c79565b5116906200f4c9838a62004c79565b5116146200f4e2576200f4dc9062004c12565b6200f45b565b50506001386200f464565b939495929150506200f2e0565b90918160039695961b60ff61039f82015416156200f5c15761039a81015461039c8201546000928391825b8184106200f5615750505050620074b66200f558936200f55062000ef0979694620062359462005ebb565b929062005d15565b9493946200f14f565b94929462004c30576200f5ba856200f5b26200f58662000ef09861039c870162004e91565b905460039190911b1c6001600160a01b0316600090815261039b8601602052604081205490966200606a565b979062005edd565b926200f525565b5091909493946200f159565b8160039897981b60ff61039f82015416156200f61257916200a2d4620074b66200f608936200a2c862000ef09661039a6200a2be8762005e5e565b909695966200f0fc565b509695966200f106565b602081015160268110156200294257601c036200f6795760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036200f69d575b506200b768906200f045565b602081015160268110156200294257601e146200f69157602081015160268110156200294257601f036200f72d5760406200f6db9101515162004c22565b519061072c54600160401b811015620029ba57600181018061072c5581101562004c305761072c6000526200b768926200f7269160008051602062031c088339815191520162005659565b906200f691565b6020810151602681101562002942576020036200f751575b506200b768906200f726565b6020810151602681101562002942576021146200f745576020810151602681101562002942576022036200f7d757506200b7689060ff1961072e541661072e5561072d54600061072d55806200f7ab575b505b906200f745565b61072d6000526200f7d09060008051602062031ac88339815191529081019062004ed6565b386200f7a2565b6020810151602681101562002942576023036200f7fb575b506200b768906200f7a4565b6020810151602681101562002942576024146200f7ef576020810151602681101562002942576025146200f7ef579290916020840151602681101562002942576015036200fe375760408401906200f85860c08351015162004c22565b51906200f86f60a0620077f0818651015162004c22565b51936200f884835185511462000ee962031533565b6200f897835186511462000ee962031533565b60005b83518110156200f8f4576200f8b0818662004c79565b5190606482101562004c305761039b6200f8ee9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200f89a565b509095919560005b87518110156200fa22576200f912818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200f94b60406000205462007da7838962004c79565b906200f958838862004c79565b5191606483101562004c305761039b6200f9909360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200f99c818662004c79565b51606481101562004c305761039b906001600160a01b036200f9bf848c62004c79565b511660005260031b016020526200f9e16040600020546200685b838962004c79565b91906200f9ef828862004c79565b5190606482101562004c30576200fa1c9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200f8fc565b50926200fa3a919294506200bb4e90969596620312cf565b92604051906200fa4a8262002a97565b6001825260203681840137516001600160a01b03166200fa6a8262004c22565b526000945b80518610156200fe24576200fa85868262004c79565b51610660526200fa96855162004d95565b966000946200faa6845162004d95565b6108805260009460005b88518110156200fb77578a896200fae06001600160a01b036200fad4858462004c79565b5116610660516203110f565b15806200fb30575b6200fb01575b50506200fafb9062004c12565b6200fab0565b986200fb259162001a9c82859c62007f886200fafb9760018060a01b039262004c79565b9790508a896200faee565b505050606461066051101562004c30576001600160a01b036200fb54828b62004c79565b511660005261039b6106605160031b016020528a8960406000205415156200fae8565b50909895979498969291939660005b88518110156200fc1b57606461066051101562004c30576001600160a01b036200fbb1828b62004c79565b511660005261039b6106605160031b01602052604060002054156200fbe2575b6200fbdc9062004c12565b6200fb86565b996200fbdc906200fc12906001600160a01b036200fc018e8d62004c79565b511662001a9c826108805162004c79565b9a90506200fbd1565b50985096959291909396610660516064811015806106205262004c305760031b61039c0154986200fc51620080b6898c62006271565b6105a0526000610400526000610280525b6106205162004c3057610280518a8110156200fd2d576200fc986200fcb59160006106205261039c6106605160031b0162004e91565b90546108805160039290921b1c6001600160a01b03169062031166565b156200fcd4575b6200fcca6102805162004c12565b610280526200fc62565b6000610620526200fcf36102805161039c6106605160031b0162004e91565b60018060a01b0391549060031b1c166200fd14610400516105a05162004c79565b526200fd236104005162004c12565b610400526200fcbc565b50979294959093985095909560005b8281106200fdd8575050506106205162004c30576105a051516001600160401b038111620029ba576200fd7a8161039c6106605160031b0162004fcd565b60206105a0510161039c6106605160031b01600052602060002060005b8381106200fdba57505050506200fdae9062004c12565b9492959091956200fa6f565b82516001600160a01b0316818301556020909201916001016200fd97565b6200fe1e906001600160a01b036200fdf1828562004c79565b51166200fe05610400516105a05162004c79565b526200fe146104005162004c12565b6104005262004c12565b6200fd3c565b5050939092506200b7689150906200f7ef565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b509190506200fe8482620145d6565b929060068110156200294257600281036200feb45760405162461bcd60e51b81528062004c0e60048201620075e4565b6003810362010e4357506107338054600260ff82166200fed48162002937565b1462010dfe5760ff19166002179055610738549060018201821162001de8576001820161073855610324549092600019929060005b86518110156200ff85576200ff2c846200ff24838a62004c79565b511062030c1a565b8460026200ff466200ff3f848b62004c79565b516202de4d565b500154106200ff61575b6200ff5b9062004c12565b6200ff09565b93506200ff5b60026200ff796200ff3f878a62004c79565b5001549490506200ff50565b5090936000199360005b87518110156200fffc576200ffaa856200ff24838b62004c79565b8560036200ffbd6200ff3f848c62004c79565b500154106200ffd8575b6200ffd29062004c12565b6200ff8f565b94506200ffd260036200fff06200ff3f888b62004c79565b5001549590506200ffc7565b509194600191935062010010875162004d95565b6201001c885162004d95565b62010028895162004d95565b90620100358a5162004d95565b9260405197620100458962002a09565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e08501526000610100850152016000526107366020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b8211620029ba57600184015482600186015580831062010c3f575b5060200190600184016000526020600020916000905b828210620105de57505050506040620100fe9101516002830162005659565b60208301518051906001600160401b038211620029ba576020600384019162010128848462004fcd565b0190600052602060002060005b838110620105c9575050505060408301518051906001600160401b038211620029ba57602060048401916201016b848462004fcd565b0190600052602060002060005b838110620105b4575050505060608301518051906001600160401b038211620029ba5760206005840191620101ae848462004fcd565b0190600052602060002060005b8381106201059f575050505060808301518051906001600160401b038211620029ba5760206006840191620101f1848462004fcd565b0190600052602060002060005b8381106201058a575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029425761010062010256926201025d9560ff8019855416911617835501511515906200573d565b426200606a565b90156201054a576107385460005261073660205280600760406000200155610731556201029b6107385491826000526007604060002001546200606a565b91901562010507576000526107366020528060086040600020015561073255610738546000526009604060002001600260ff1982541617905560005b82518110156201031d578062000ef0620102f662010317938662004c79565b516107385460005261073660205262006c0683600360406000200162004e91565b620102d7565b50906000905b80518210156201050357610738549182600052610736602052620103606201035382600360406000200162004e91565b90549060031b1c6202de4d565b5054936201036e8562004d95565b9460005b818110620104b857505060009260005b8651811015620104865762010398818862004c79565b51946064958681101562004c305760031b60010154620103b9838a62004c79565b51908782101562004c30576006620103d79260031b01549062005ebb565b919015620104435790620103eb916200606a565b959015620104055750620103ff9062004c12565b62010382565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152fd5b8660405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b50945092620104b09262000ef09160005261073660205262006c0683600660406000200162004e91565b909162010323565b620104fd9086600052610736602052620104ea81620104e36201035388600360406000200162004e91565b5062004e91565b90549060031b1c62001a9c828a62004c79565b62010372565b5050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620101fe565b600190602084519401938184015501620101bb565b60019060208451940193818401550162010178565b60019060208451940193818401550162010135565b805180518554602083015190916001600160a01b031690602681101562002942576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010638848462005361565b01906000526020600020906000905b83821062010c1f5750505050602081015180516001600160401b038111620029ba57602060028801926201067c838562030721565b019160005260206000209060005b8160051c811062010be35750601f198116810362010b9e575b5050506040810151805190600160401b8211620029ba57600387015482600389015580831062010b16575b50602001600387016000526020600020906000905b83821062010af557505050506060810151805190600160401b8211620029ba57600487015482600489015580831062010a74575b50602001600487016000526020600020906000905b83821062010a535750505050608081015180516001600160401b038111620029ba576020600588019262010761838562030721565b019160005260206000209060005b8160051c811062010a145750601f1981168103620109c6575b5050506006850160a08201516020815191620107a58385620053ef565b019160005260206000206000925b8284106201096257505050506007850160c08201516020815191620107d98385620053ef565b019160005260206000206000925b828410620108f5575050505060e001518051906001600160401b038211620029ba5762010827826201081d600889015462002b98565b600889016200560f565b602090601f83116001146201087a5792826009936020936001966000926201086e575b5050600019600383901b1c191690851b1760088801555b01940191019092620100df565b0151905038806201084a565b906008870160005260206000209160005b601f1985168110620108dc575083602093600196938793600997601f19811610620108c2575b505050811b01600888015562010861565b015160001960f88460031b161c19169055388080620108b1565b919260206001819286850151815501940192016201088b565b80518051906001600160401b038211620029ba5760209062010918838662004fcd565b0183600052602060002060005b83811062010944575050505060016020819201920193019290620107e7565b82516001600160a01b03168183015560209092019160010162010925565b80518051906001600160401b038211620029ba5760209062010985838662004fcd565b0183600052602060002060005b838110620109b1575050505060016020819201920193019290620107b3565b60019060208451940193818401550162010992565b60009260005b601f19831683038110620109ea57505060051c015538808062010788565b9093602062010a0a6001928488519162010a048362002edc565b6203078b565b95019101620109cc565b6000805b6020811062010a2f5750838201556001016201076f565b9490602062010a496001928885519162010a048362002edc565b9201950162010a18565b600660208262010a6760019451876200576f565b019301910190916201072c565b600681810204810362001de857600683810204830362001de8576004880160005260206000208360060281015b826006028201811062010ab657505062010717565b806000600692556000600182015562010ad2600282016200543e565b6000600382015562010ae760048201620052d3565b600060058201550162010aa1565b600760208262010b0960019451876202de6d565b01930191019091620106e3565b600781810204810362001de857600783810204830362001de8576003880160005260206000208360070281015b826007028201811062010b58575050620106ce565b8062010b6660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010b9060058201620052d3565b600060068201550162010b43565b60009260005b601f1983168303811062010bc257505060051c0155388080620106a3565b9093602062010bd96001928488511515916203078b565b9501910162010ba4565b6000805b6020811062010bfe5750838201556001016201068a565b9490602062010c156001928885511515916203078b565b9201950162010be7565b600160208262010c328394518762005659565b0193019101909162010647565b600981810204810362001de857600983810204830362001de8576001850160005260206000208360090281015b826009028201811062010c81575050620100c9565b6000815562010c936001820162005322565b62010ca86002820180549060008155620306f9565b6003810154600060038301558062010d88575b506004810154600060048301558062010d19575b508062010ce860056009930180549060008155620306f9565b62010cf660068201620053b0565b62010d0460078201620053b0565b62010d1260088201620052d3565b0162010c6c565b600681810204810362001de857600482016000526020600020906006028101905b81811062010d49575062010ccf565b806000600692556000600182015562010d65600282016200543e565b6000600382015562010d7a60048201620052d3565b600060058201550162010d3a565b600781810204810362001de857600382016000526020600020906007028101905b81811062010db8575062010cbb565b8062010dc660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010df060058201620052d3565b600060068201550162010da9565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b6005919293501462010e525750565b9060008061032a54905b818110620137da575b505015620137be575b60005b602083015190815181101562010ec95762000ef06200771662010ea3620076f66020620067ee8662010ec39862004c79565b86516001600160a01b031660009081526103296020526040902062022f40565b62010e71565b505060005b6020830151805182101562010f1657620076f66020620067ee8462010ef39462004c79565b90606482101562004c305762010f1091429061032b015562004c12565b62010ece565b50506000905b602083015180518310156200a592578262010f379162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036201117a576040019062010f7860c08351015162004c22565b519362010f8f60a0620077f0818651015162004c22565b519162010fa086518551146202cca5565b62010faf86518451146202cd0b565b60005b8651811015620111015762010fc8818662004c79565b51606481101562004c3057600160ff600762010fed9360031b0154161515146202cd6d565b62010ff9818562004c79565b5162011006828762004c79565b5190606482101562004c30576006620110259260031b0154906200606a565b9062011032838862004c79565b5191606483101562004c30576006620110509360031b01556202cdc5565b6201105c818562004c79565b5162011069828762004c79565b5190606482101562004c3057620110a9916003906001600160a01b0362011091868d62004c79565b5116600052811b01602052604060002054906200606a565b9190620110b7828862004c79565b5190606482101562004c3057620110fb9362000ef0926003906001600160a01b03620110e4878f62004c79565b5116600052811b016020526040600020556202ce24565b62010fb2565b5094915091620111156201111c91620312cf565b91620311b3565b93604051926201112c8462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b662011157938762004c79565b62011138565b509450926020925062011171915062004c12565b91905062010f1c565b9091926020820151602681101562002942576002036201130b57604080920190815193845191620111b46200b7ab60a08098015162004c22565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b8651811015620112f557620111ee818862004c79565b51606481101562004c305760ff60076201120f9260031b015416156202ce7d565b6201121b818862004c79565b51606481101562004c305760031b600701805460ff1916600117905562011243818562004c79565b5162011250828962004c79565b5190606482101562004c305760056201126d9260031b0162005659565b62011279818662004c79565b5162011286828962004c79565b51606481101562004c305760031b60010155620112a4818762004c79565b51620112b1828962004c79565b51606481101562004c305760031b60020155620112cf818862004c79565b5190606482101562004c305760006006620112ef9360031b015562004c12565b620111d8565b5095915093506020925062011171915062004c12565b92919060208101516026811015620029425760030362011338576020919262000ef062011171926202cec9565b602081015160268110156200294257600403620115db576201136260c06040830151015162004c22565b51936201137760c06040840151015162004c46565b51906201139e60a06040620113928282880151015162004c22565b51950151015162004c46565b5193620113b3875184511462000ee962031533565b620113c6875185511462000ee962031533565b620113d9875186511462000ee962031533565b60005b87518110156201144157620113f2818662004c79565b5190606482101562004c30576201143b916003906001600160a01b036201141a848d62004c79565b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b620113dc565b509095919593929360005b8351811015620115985762011462818762004c79565b51606481101562004c30576003906001600160a01b0362011484848862004c79565b5116600052811b01602052620114a560406000205462007da7838862004c79565b90620114b2838962004c79565b5191606483101562004c3057620114f5926003906001600160a01b03620114da878b62004c79565b5116600052811b0160205260406000205562000ee962031637565b62011501818762004c79565b51606481101562004c30576003906001600160a01b0362011523848c62004c79565b5116600052811b01602052620115446040600020546200685b838862004c79565b91905062011553818862004c79565b5191606483101562004c305762011592926003906001600160a01b036201157b858e62004c79565b5116600052811b0160205260406000205562004c12565b6201144c565b5093620115b29192969350620084c562007e9891620312cf565b9260005b83518110156201115d578062000ef0620079b6620115d5938762004c79565b620115b6565b92602084015160268110156200294257600503620117a4576201160660a06040860151015162004c22565b51906201161b60a06040870151015162004c46565b519282518451036200cab85760005b8351811015620116825762011640818562004c79565b5190606482101562004c305760036201167c9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6201162a565b509060005b835181101562011723576201169d818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b01602052620116d460406000205462007da7838862004c79565b9190620116e2828762004c79565b5190606482101562004c30576201171d93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b62011687565b50949250906201173390620312cf565b9060405192620117438462002a97565b6001845260203681860137516001600160a01b0316620117638462004c22565b5260405194620117738662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b66201179e938762004c79565b6201177f565b926020810151602681101562002942576006036201195957604001620117cf60c08251015162004c22565b5193620117e660a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b8651811015620118645762011815818562004c79565b5190606482101562004c30576201185e916003906001600160a01b036201183d848c62004c79565b5116600052811b0160205262000ef060406000205462007d3b838962004c79565b620117ff565b509060005b865181101562011903576201187f818562004c79565b51606481101562004c30576003906001600160a01b03620118a1848b62004c79565b5116600052811b01602052620118c260406000205462007da7838862004c79565b9190620118d0828762004c79565b5190606482101562004c3057620118fd9362000ef0926003906001600160a01b03620114da878f62004c79565b62011869565b509491620119189193506201111590620312cf565b9160405194620119288662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b662011953938762004c79565b62011934565b60208101516026811015620029425760070362011a6b57604001926201198460c08551015162004c22565b51916201199660a08651015162004c22565b5194515191620119ae845187511462000ee962031533565b60005b84518110156201115d5762011a659062000ef06001600160a01b0380620119d9848a62004c79565b51166000528660028b62011a5562011a188762011a1081610320978860205262008a3360ff604060002054161562000ee962031604565b519362004c79565b519162008a978d6040519662011a2e886200299e565b60018852886200d1e88c60208b01946000865260408c0197885260608c01998a5262004c79565b5191015562008ab2838962004c79565b620119b1565b60208194939401516026811015620029425760080362011b025760c0604062011a98920151015162004c22565b519160005b835181101562011af05762011aea906001600160a01b038062011ac1838862004c79565b511660005261032090816020526200d304600160ff6040600020541615151462000ee962031563565b62011a9d565b50926020919250620111719062004c12565b60208101516026811015620029425760090362011b845760c0604062011b2c920151015162004c22565b519160005b835181101562011af05762011b7e906001600160a01b038062011b55838862004c79565b511660005261032090816020526200d3f2600160ff6040600020541615151462000ee962031563565b62011b31565b602081015160268110156200294257600a0362011c32576040019062011bb560a06200d48660c08551015162004c22565b519262011bca835185511462000ee962031533565b60005b835181101562011c1f5762011c19906001600160a01b038062011bf1838862004c79565b5116600052610320806020526200d4f5600160ff6040600020541615151462000ee962031563565b62011bcd565b5093620111719193506020925062004c12565b60208194939294015160268110156200294257600b0362011ce5576040019262011c6160c08551015162004c22565b519351519162011c79855184511462000ee962031533565b60005b855181101562011cd25762011ccc9062000ef06001600160a01b038062011ca4848b62004c79565b5116600052610320806020526200d5d7600160ff6040600020541615151462000ee962031563565b62011c7c565b5093509160209150620111719062004c12565b909192602082015160268110156200294257600c0362011e22576060604083015101519262011d14846202c2eb565b60005b845181101562011c1f5760e062011d378260606040880151015162004c79565b5101511562011db45762011d5862008ea78260606040880151015162004c79565b610322548060001981011162001de85762011d796005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005c20565b62011d17565b62011dcc62008f258260606040880151015162004c79565b610322548060001981011162001de85762011ded6005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005be0565b929190602081015160268110156200294257600d0362011f365760400192602062011e5260a08651015162004c22565b51945101519162011e6785518451146202c9e4565b60005b855181101562011cd2578062011e8562011ede928662004c79565b511562011ee45762011e9c6200901d828962004c79565b62011eb460ff60056200d80d6200903e858c62004c79565b62011ecc60ff6005620090576200903e858c62004c79565b6005620090736200903e838a62004c79565b62011e6a565b62011ef4620090ab828962004c79565b62011f0c60ff60056200d80d620090cc858c62004c79565b62011f2460ff600562009057620090cc858c62004c79565b600562009073620090cc838a62004c79565b602081949294015160268110156200294257600e0362011ffd5760400190602062011f6660a08451015162004c22565b51925101519362011f7b83518651146202c9e4565b60005b835181101562011cd2578062011f9962011fa5928862004c79565b5162011fab5762004c12565b62011f7e565b62011fbb62009168828762004c79565b62011fd360ff60056200d94a6200903e858a62004c79565b62011feb60ff6005620091af6200903e858a62004c79565b600562008efb6200903e838862004c79565b90602082949394015160268110156200294257600f036201213b57606060408301510151926201202d846202c2eb565b60005b845181101562011c1f5760e0620120508260606040880151015162004c79565b51015115620120cd576201207162008ea78260606040880151015162004c79565b610322548060001981011162001de857620120926005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005c20565b62012030565b620120e562008f258260606040880151015162004c79565b610322548060001981011162001de857620121066005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005be0565b90602081949394015160268110156200294257601003620121ac5760400151906201216f60a0608084015193015162004c22565b519362012184835186511462000ee962031533565b60005b835181101562011cd2578062000ef06200935a620121a6938762004c79565b62012187565b6020819492940151602681101562002942576011036201240e5760400190620121e060a06200d48660c08551015162004c22565b5193620121f183518651146202c163565b60005b83518110156201226b57620122659062000ef06001600160a01b03806201221c848962004c79565b5116600052610325806020526201223e6040600020546200685b868d62004c79565b9190926201224d868b62004c79565b511660005260205260406000205562000ee9620314e9565b620121f4565b509350906201227a90620311b3565b90610326549362012291620080b684518762006271565b9060009260005b878110620123f3575060005b85518110156201234b576000805b898110620122fc575b5015620122d4575b620122ce9062004c12565b620122a4565b93620122ce90620122f3906001600160a01b036200ddb1888a62004c79565b949050620122c3565b620123078162004de9565b90546001600160a01b0360039290921b1c81169062012327858b62004c79565b51161462012340576201233a9062004c12565b620122b2565b5050600138620122bb565b5095509392506201235c8262004d95565b8051906001600160401b038211620029ba576020906201237c8362004f2a565b01610326600052602060002060005b838110620123d5575050505060005b828110620123b2575050506201117160209162004c12565b620123cf9062000ef06001600160a01b03620019d0838662004c79565b6201239a565b82516001600160a01b0316818301556020909201916001016201238b565b936200defd62012408916200dedf8762004de9565b62012298565b6020819492940151602681101562002942576012036201265357604001906201244260a06200d48660c08551015162004c22565b51936201245383518651146202c163565b60005b8351811015620124a657620124a09062000ef06001600160a01b03806201247e848962004c79565b5116600052610325806020526201223e60406000205462007da7868d62004c79565b62012456565b5093509190620124b690620311b3565b61032654620124c58162004d95565b906000926000915b8083106201257a57505050620124e38262004d95565b8051906001600160401b038211620029ba57602090620125038362004f2a565b01610326600052602060002060005b8381106201255c575050505060005b82811062012539575050506201117160209162004c12565b620125569062000ef06001600160a01b03620019d0838662004c79565b62012521565b82516001600160a01b03168183015560209092019160010162012512565b91956000959193959760005b855181101562012644576201259b8962004de9565b90546001600160a01b0360039290921b1c811690620125bb838962004c79565b511614620125d457620125ce9062004c12565b62012586565b509750956001959391955b8062012613575b15620125fe57620125f79062004c12565b91620124cd565b936200defd620125f7916200dedf8762004de9565b506201261f8162004de9565b60018060a01b0391549060031b1c1660005261032560205260406000205415620125e6565b509796909695939195620125df565b602081015160268110156200294257601303620126ac5760408091015101519260005b84518110156201269b578062000ef0620098ce62012695938862004c79565b62012676565b509250906201117160209162004c12565b602081015160268110156200294257601403620128555760400190620126d760c08351015162004c22565b5193620126ee60a0620077f0818651015162004c22565b5191620126ff86518551146202cca5565b6201270e86518451146202cd0b565b60005b8651811015620128005762012727818562004c79565b5162012734828762004c79565b5190606482101562004c30576006620127539260031b0154906200606a565b9062012760838862004c79565b5191606483101562004c305760066201277e9360031b01556202cdc5565b6201278a818562004c79565b5162012797828762004c79565b5190606482101562004c3057620127bf916003906001600160a01b0362011091868d62004c79565b9190620127cd828862004c79565b5190606482101562004c3057620127fa9362000ef0926003906001600160a01b03620110e4878f62004c79565b62012711565b5094915091620111156201281491620312cf565b9360405192620128248462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b66201284f938762004c79565b62012830565b6020810151602681101562002942576015036201287f576020919262000ef062011171926202cec9565b602081015160268110156200294257601603620128db5760c06040620128a9920151015162004c22565b519260005b84518110156201269b57620128d59062000ef06001600160a01b0362009b14838962004c79565b620128ae565b602081015160268110156200294257601703620129385760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601803620129a35760c0604062012962920151015162004c22565b5192600160ff196103965416176103965560005b84518110156201269b576201299d9062000ef06001600160a01b0362009be0838962004c79565b62012976565b60208193929301516026811015620029425760190362012b185760008091604082910160a08082510151805162012adf575b5050519060e082015191620129f96200685460c060018060a01b0393015162004c22565b511690602083519301915af13d1562012ad6573d9062012a198262002e73565b9162012a29604051938462002ab3565b82523d6000602084013e5b1562012a4857506201117160209162004c12565b62004c0e9062012ab56040519160008051602062031c88833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162012aa4816059946020868601910162002d20565b810103603981018452018262002ab3565b60405162461bcd60e51b815260206004820152918291602483019062002d45565b60609062012a34565b62012aea9062004c22565b515162012af9575b80620129d5565b819250620068549062012b0f9251015162004c22565b51903862012af2565b602081015160268110156200294257601a0362012bce5760a0604062012b42920151015162004c22565b5162012b5260038251146202c163565b62012b5d8162004c22565b519162012b7662012b6e8362004c46565b519262004c57565b51916200f05357602092620111719260010362009e215762012ba062012bae91610391546200606a565b6103915562000ee962031484565b62000ef062012bc06103925462006057565b6103925562000ee9620314be565b602081015160268110156200294257601b0362012ffc5750919062012bfe61038f54620061b062009e97620313c0565b505062012c0a62031484565b506000805b6064811062012fb0575b505062012c256200618c565b62012c336107345462004d95565b906000946000905b606482101562012fa3578160031b9460ff6007870154161562012d8b5760009660028701541562012d7a57600098975b62004c3057600487015489101562012d605762012c8c896004890162004e91565b9054600391821b1c6001600160a01b031660008181529189016020526040918290205491999162012cbf90889062005ebb565b9a9062012ccb62031484565b62012cd69162004bdf565b60009a60028b015462012ce99162005ebb565b919062012cf562031484565b62012d009162004bdf565b826000526103276020526000209081549062012d1c916200606a565b90915562012d2962031484565b62012d349162004bdf565b62012d40828962004c79565b5262012d4c9062004c12565b9862012d589062004c12565b989762012c6b565b9290955062012d729196975062004c12565b909462012c3b565b9290955062012d7291965062004c12565b95969392509350505b62012d9f8262004d95565b9160009160005b82811062012f0d57505050610328549162012dc6620080b6848462006271565b926000906000905b80821062012ef057505060005b83811062012e5a5750508251929150506001600160401b038211620029ba5760209062012e088362004eef565b01610328600052602060002060005b83811062012e3c57505050506201117160209160006103915560006103925562004c12565b82516001600160a01b03168183015560209092019160010162012e17565b6000805b83811062012ea8575b501562012e80575b62012e7a9062004c12565b62012ddb565b9062012e7a9062012e9f906001600160a01b036200823e858762004c79565b91905062012e6f565b6001600160a01b038062012ebd858862004c79565b51169062012ecc838a62004c79565b51161462012ee55762012edf9062004c12565b62012e5e565b505060013862012e67565b90916200824c62012f0691620098248562004dcd565b9062012dce565b6000805b85811062012f5b575b501562012f33575b62012f2d9062004c12565b62012da6565b9262012f2d9062012f52906001600160a01b036200823e878662004c79565b93905062012f22565b6001600160a01b038062012f70858762004c79565b51169062012f7f838a62004c79565b51161462012f985762012f929062004c12565b62012f11565b505060013862012f1a565b9394959291505062012d94565b8060039594951b9060ff6007830154161562012ff2576200a2d4620074b662000ef0946200a2c862012fe99560026200a2be8762005d82565b93929362012c0f565b5093929362012c19565b602081015160268110156200294257601c03620130595760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036201307f575b506201117160209162004c12565b602081015160268110156200294257601e146201307157602081015160268110156200294257601f03620130d057602091620130c86200a3b96040620111719401515162004c22565b915062013071565b602081015160268110156200294257602003620130f6575b5062011171602091620130c8565b602081015160268110156200294257602180910362013117575b50620130e8565b602082015160268110156200a53a57602203620131545750506201117160209160ff196103965416610396556201314d62004fba565b9162013110565b602082015160268110156200a53a576023036201317b575b5050620111716020916201314d565b602082015160268110156200a53a576024146201316c57602082015160268110156200a53a576025146201316c57602082959394920151906026821015620137aa57506015036200fe37576040840190620131db60c08351015162004c22565b5190620131f260a0620077f0818651015162004c22565b519362013207835185511462000ee962031533565b6201321a835186511462000ee962031533565b60005b8351811015620132755762013233818662004c79565b5190606482101562004c305760036201326f9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6201321d565b509095919560005b87518110156201339c5762013293818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b01602052620132ca60406000205462007da7838962004c79565b90620132d7838862004c79565b5191606483101562004c305760036201330d9360018060a01b03895116600052811b0160205260406000205562000ee962031637565b62013319818662004c79565b51606481101562004c30576003906001600160a01b036201333b848c62004c79565b5116600052811b016020526201335c6040600020546200685b838962004c79565b91906201336a828862004c79565b5190606482101562004c30576201339693600362000ef0938d62007e608760018060a01b039262004c79565b6201327d565b5092620133b4919294506200bb4e90969596620312cf565b9260405190620133c48262002a97565b6001825260203681840137516001600160a01b0316620133e48262004c22565b526000945b80518610156201379557620133ff868262004c79565b516102605262013410855162004d95565b9660009462013420845162004d95565b6103205260009460005b8851811015620134ef578a896201345a6001600160a01b036201344e858462004c79565b511661026051620310b9565b1580620134aa575b6201347b575b5050620134759062004c12565b6201342a565b986201349f9162001a9c82859c62007f88620134759760018060a01b039262004c79565b9790508a8962013468565b505050606461026051101562004c30576001600160a01b03620134ce828b62004c79565b5116600052600361026051811b016020528a89604060002054151562013462565b50909895979498969291939660005b88518110156201359157606461026051101562004c30576001600160a01b0362013529828b62004c79565b5116600052600361026051811b016020526040600020541562013558575b620135529062004c12565b620134fe565b99620135529062013588906001600160a01b03620135778e8d62004c79565b511662001a9c826103205162004c79565b9a905062013547565b50985096959291909396610260516064811015806101e05262004c305760031b6004015498620135c6620080b6898c62006271565b6102205260006102a0526000610560525b6101e05162004c3057610560518a811015620136a0576201360c620136299160006101e05260046102605160031b0162004e91565b90546103205160039290921b1c6001600160a01b03169062031166565b1562013648575b6201363e6105605162004c12565b61056052620135d7565b60006101e052620136666105605160046102605160031b0162004e91565b60018060a01b0391549060031b1c16620136876102a0516102205162004c79565b52620136966102a05162004c12565b6102a05262013630565b50979294959093985095909560005b82811062013749575050506101e05162004c305761022051516001600160401b038111620029ba57620136ec8160046102605160031b0162004fcd565b6020610220510160046102605160031b01600052602060002060005b8381106201372b57505050506201371f9062004c12565b949295909195620133e9565b82516001600160a01b03168183015560209092019160010162013708565b6201378f906001600160a01b0362013762828562004c79565b5116620137766102a0516102205162004c79565b52620137856102a05162004c12565b6102a05262004c12565b620136af565b5050936201117191935060209250916201316c565b634e487b7160e01b60005260045260246000fd5b8151620137d4906001600160a01b031662006647565b62010e6e565b620137e58162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462013814576201380e9062004c12565b62010e5c565b5050506001388062010e65565b82516001600160a01b0316600160401b821015620029ba57620019dd8260016201385094016106c25562004e21565b386200b0db565b620138628162004e21565b9054865160039290921b1c6001600160a01b0390811691161462013891576201388b9062004c12565b6200b0ca565b50506001386200b0d3565b82516001600160a01b0316818301556020909201916001016200b000565b82516001600160a01b0316818301556020909201916001016200aeb3565b600191820180546001600160a01b03909216848601559390910192906200ae02565b61072d600052620139219060008051602062031ac883398151915290810190830162004ed6565b386200adc3565b600180826201393982948662013d7f565b019201920191906200ad85565b61072c60005260008051602062031c08833981519152908282015b8183018110620139735750506200ad4a565b8062013981600192620052d3565b0162013961565b600191820180546001600160a01b03909216848601559390910192906200ad1b565b61072b600052620139d19060008051602062031b6883398151915290810190830162004ed6565b386200acdc565b60018091930191825493816106c301550190916200ac7f565b82516001600160a01b0316818301556020909201916001016200ab98565b62013a2a906106c26000528484600020918201910162004ed6565b386200ab88565b82516001600160a01b0316818301556020909201916001016200a9b4565b62013a6a906106b96000528484600020918201910162004ed6565b386200a9a4565b8062013a939160031b600160ff60078301541615151462013a99575062004c12565b6200a8fa565b62013aac6004820161039c830162013f18565b61039f8101600160ff1982541617905580548161039801556001810154610399820155600281015461039a82015562013aed6005820161039d830162013d7f565b61039e60068201549101553862009e21565b600660208262013b1360019451866200576f565b019201920191906200a6f7565b600681810204810362001de857600683810204830362001de8576106ba6000527f4bc0fef855e05548476b22fb01fb9c435488f87351c9bc2f734e5ca5bc2141996006840281015b826006028201811062013b7d5750506200a6e4565b806000600692556000600182015562013b99600282016200543e565b6000600382015562013bae60048201620052d3565b600060058201550162013b68565b600660208262013bd060019451866200576f565b019201920191906200a66c565b8060060290600682040362001de8578260060260068104840362001de8576000906106bb82526020822092830192015b82811062013c1d5750506200a659565b80826006925582600182015562013c37600282016200543e565b82600382015562013c4b60048201620052d3565b8260058201550162013c0d565b608460405162461bcd60e51b8152602060048201526040602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b8152602060048201526047602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b81811462010503578154916001600160401b038311620029ba5762013d41838362004fcd565b60005260206000209060005260206000208154916000925b84841062013d68575050505050565b600180919201938454928185015501929062013d59565b90808214620105035762013d94815462002b98565b906001600160401b038211620029ba57819062013dbe8262013db7865462002b98565b866200560f565b600090601f831160011462013df75760009262013deb5750508160011b916000199060031b1c1916179055565b015490503880620056a2565b81526020808220858352818320935090601f1985169083905b82821062013e4c57505090846001959493921062013e3257505050811b019055565b015460001960f88460031b161c19169055388080620056ef565b849581929585015481556001809101960194019062013e10565b818114620105035781549162013e7d838362005361565b6000526020600020906000526020600020906000905b83821062013ea15750505050565b8062013eb06001928562013d7f565b92810192918101910162013e93565b818114620105035781549162013ed68383620053ef565b6000526020600020906000526020600020906000905b83821062013efa5750505050565b8062013f096001928562013d1b565b92810192918101910162013eec565b81811462010503578154916001600160401b038311620029ba5762013f3e838362004fcd565b60005260206000209060005260206000208154916000925b84841062013f65575050505050565b600191820180546001600160a01b039092168486015593909101929062013f56565b818114620105035781549162013f9e8383620053ef565b6000526020600020906000526020600020906000905b83821062013fc25750505050565b8062013fd16001928562013f18565b92810192918101910162013fb4565b818114620105035781549162013ff78383620054f2565b6000526020600020906000526020600020906000905b8382106201401b5750505050565b80600191840362014038575b60088091019301910190916201400d565b80548455620140658280860190830160ff90620140598282541684620055d4565b5460081c1690620055ee565b6002808201549085015562014081600380830190860162013d1b565b60048085019082018082036201409a575b505062014027565b620140a59162013e66565b620140b7600580830190860162013ebf565b620140c9600680830190860162013f87565b620140db600780830190860162013d7f565b388062014092565b919062005c9657808203620140f6575050565b60ff60058062002b5a946201410f8486541682620055bb565b600185015460018201556201412b600286016002830162013fe0565b6003850154600382015562014147600486016004830162013d7f565b0192016201415982825416846200572c565b6201416b82825460081c16846200573d565b5460101c169062005755565b908082146201050357908154906000915b60648310620141975750505050565b600180919401928354948184015501919262014188565b906103225491600092602082019182515190620141cb8262002b80565b91620141db604051938462002ab3565b808352620141ec601f199162002b80565b01366020840137620142018451518462005ebb565b90156201457e57620142139062004d95565b9186938551511562014574576201422a8162004d95565b975b865151811015620143bc5760008080805b87858c888410620142d25750839450620142669392506201426091508862004c79565b6200350b565b600681101562002942576003146201428b575b50620142859062004c12565b6201422c565b6000905b8a818310620142a057505062014279565b8298620142b7620142cb9394620142c49362004c79565b5162001a9c828b62004c79565b9762004c12565b906201428f565b620142e5620142ec939285925162004c79565b51620149a3565b93909480831180620143a8575b156201435f57505091838562014355575b6006811015620029425760038f911462014335575b50506201432c9062004c12565b9190916201423d565b946201434c9162001a9c826201432c959862004c79565b93908d6201431f565b600095506201430a565b809492959195148062014394575b156201431f576006811015620029425760038f9114620143355750506201432c9062004c12565b50600681101562002942578015156201436d565b5060068610156200294257851515620142f9565b505093505090929350600093845b83518610156201450f57620143ea620143e4878662004c79565b620055ad565b9060068083101562002942576002928303620144155750506201440e909562004c12565b94620143ca565b62014425620143e4898862004c79565b92818410156200294257600180941480620144fb575b1562014450575050506201440e909562004c12565b62014465620143e48a899b9694959b62004c79565b9280841015620029425760048094149283620144cf575b5082620144a4575b505062014498575b506201440e9062004c12565b95506201440e6201448c565b909150881015620144ba57871415388062014484565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620144e65789141591386201447c565b602184634e487b7160e01b6000525260246000fd5b50818310156200294257808314156201443b565b92509290935060068210156200294257600382036201456b575b620145348162004d95565b9360005b82811062014547575050509190565b806201455862014565928462004c79565b5162001a9c828962004c79565b62014538565b50600062014529565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b906103235491600092602082019182515190620145f38262002b80565b9162014603604051938462002ab3565b80835262014614601f199162002b80565b01366020840137620146298451518462005ebb565b90156201457e576201463b9062004d95565b918693855151156201457457620146528162004d95565b975b865151811015620147ca5760008080805b87858c888410620146e05750839450620146889392506201426091508862004c79565b60068110156200294257600314620146ad575b50620146a79062004c12565b62014654565b6000905b8a818310620146c25750506201469b565b8298620142b7620146d99394620142c49362004c79565b90620146b1565b620146f3620146fa939285925162004c79565b5162014a42565b93909480831180620147b6575b156201476d57505091838562014763575b6006811015620029425760038f911462014743575b50506201473a9062004c12565b91909162014665565b946201475a9162001a9c826201473a959862004c79565b93908d6201472d565b6000955062014718565b8094929591951480620147a2575b156201472d576006811015620029425760038f9114620147435750506201473a9062004c12565b50600681101562002942578015156201477b565b506006861015620029425785151562014707565b505093505090929350600093845b8351861015620148ed57620147f2620143e4878662004c79565b90600680831015620029425760029283036201481d57505062014816909562004c12565b94620147d8565b6201482d620143e4898862004c79565b92818410156200294257600380941480620148d9575b15620148585750505062014816909562004c12565b6201486d620143e48a899b9694959b62004c79565b9280841015620029425760058094149283620148c2575b5082620148ac575b5050620148a0575b50620148169062004c12565b95506201481662014894565b909150881015620029425787141538806201488c565b908093508a10156200294257891415913862014884565b508183101562002942578083141562014843565b92509290935060068210156200294257600382036201493c575b620149128162004d95565b9360005b82811062014925575050509190565b806201455862014936928462004c79565b62014916565b50600062014907565b156201494d57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b91929060009081948294620149bd61032254841062014945565b60ff6005620149cc8562005c20565b50015460081c161562014a355782620149e9928592600162014c1c565b620149f5575b50929190565b809450600192935062014a09915062005c20565b50015490600362014a2a60ff62014a208662005c20565b5054169462005c20565b5001549138620149ef565b5050509150915080918190565b9192906000908194829462014a5c61032354841062014945565b60ff600562014a6b8562005be0565b50015460081c161562014a35578262014a879285928362014c1c565b62014a925750929190565b809450600192935062014aa6915062005be0565b50015490600362014a2a60ff62014abd8662005be0565b5054169462005be0565b9062002b5a606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262014b3e815180926020868601910162002d20565b810103604181018552018362002ab3565b606d62002b5a919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262014bc1815180926020605f8701910162002d20565b82016d016103737b2329034b73232bc1d160951b605f82015262014bef825180936020878501910162002d20565b0103604d81018552018362002ab3565b805482101562004c305760005260206000209060031b0190600090565b93929190841562014fad5762014c4661032254841062000ee962014c408662005028565b62014ac7565b62014c7d600262014c578562005c20565b500154851062000ee962014c6b8662005028565b62014c768862005028565b9062014b4f565b841562014f8e5762014cad600162014ca486600262014c9c8862005c20565b500162014bff565b50015460ff1690565b945b62014cba8662002edc565b8562014ccb57505050505050600090565b62014cd68662002edc565b60039580870362014ced5750505050505050600190565b62014cf88162002edc565b6004810362014d0d5750505050505050600090565b62014d188162002edc565b6001810362014d2e5750620031f8955062014fdd565b91959392949062014d3f8362002edc565b600280931462014d56575b50505050505050600090565b801562014f705762014d80600162014d74848662014c9c8962005c20565b50015460081c60ff1690565b935b811562014f54578562014d9b848662014c9c8562005c20565b500154965b62014dab8862004d95565b9860005b89811062014ec95750505050505062014dc88262002937565b6001820362014e2b57505050906001916000915b81831062014dea5750505090565b9091928062014e08575b62014e00909362004c12565b919062014ddc565b5062014e0062014e2362014e1d858462004c79565b51151590565b905062014df4565b62014e368262002937565b810362014e905750509060009182915b81831062014e545750505090565b909192801562014e73575b62014e6b909362004c12565b919062014e46565b5062014e6b62014e8862014e1d858462004c79565b905062014e5f565b90915062014e9e8162002937565b1462014eb257503880808080808062014d4a565b62014ec562014e1d620031f89262004c22565b1590565b808b62014f12828c8a8c8a8c1562014f335762014f08949262014efe949262014c9c62014ef69362005c20565b500162004e91565b90549060031b1c90565b8787878b62014c1c565b62014f2662014f2d9462000ef09362004c79565b9015159052565b62014daf565b62014f4e949262014efe949262014c9c62014ef69362005be0565b62014f08565b8562014f66848662014c9c8562005be0565b5001549662014da0565b62014f87600162014d74848662014c9c8962005be0565b9362014d82565b62014fa6600162014ca486600262014c9c8862005be0565b9462014caf565b62014fc661032354841062000ee962014c408662005028565b62014fd7600262014c578562005be0565b62014c7d565b93926004620150279186600014620151f557600262015002878262014c9c8562005c20565b500154955b8715620151e457600262014c9c6201501f9362005c20565b5001620035d2565b916032841115620151d857603384101580620151cc575b620151bf57609784101580620151b3575b620151a65760d38410158062015199575b6201518d5761012d8410158062015181575b62015174576101918410158062015167575b6201515a576101af841015806201514d575b62015140576101cd8410158062015133575b62015126576101f58410158062015119575b6201510c5761025984101580620150ff575b620150f157506102bd831015620150e65750505050600090565b620031f89362022e31565b9050620031f893506202a144565b506102bc841115620150cc565b50620031f893506201d479565b50610258841115620150ba565b50620031f893506202aaa8565b506101f4841115620150a8565b50620031f893506202b50b565b506101cc84111562015096565b50620031f89350620225a0565b506101ae84111562015084565b50620031f89350620273b8565b50610190841062015072565b50620031f89362015212565b5061012c84111562015060565b50620031f8935062022c1c565b5060b48411156201504f565b5050620031f8926201e0d9565b5060958411156201503e565b50620031f893620243bf565b600262014c9c6201501f9362005be0565b600262015208878262014c9c8562005be0565b5001549562015007565b9260d38114620157e15760d48114620157d45760d58114620157c75760d68114620157ba5760d78114620157ad5760d88114620157a05760d98114620157945760da8114620157875760db81146201577a5760dc81146201576e5760dd81146201575f5760de8114620157505760df8114620157435760e08114620157365760e181146201572a5760e281146201571d5760e38114620157105760e48114620157045760e58114620156f55760e68114620156e65760e78114620156d95760e88114620156cc5760e98114620156bf5760ea8114620156b25760eb8114620156a55760ec8114620156985760ed81146201568b5760ee81146201567e5760ef8114620156715760f08114620156645760f18114620156575760f281146201564a5760f381146201563d5760f48114620156305760f58114620156235760f68114620156165760f78114620156095760f88114620155fc5760f98114620155f05760fa8114620155e45760fb8114620155d85760fc8114620155cc5760fd8114620155c05760fe8114620155b45760ff8114620155a85761010081146201559c5761010181146201559057610102811462015584576101038114620155785761010481146201556c5761010581146201556057610106811462015554576101078114620155485761010881146201553c576101098114620155305761010a8114620155245761010b8114620155185761010c81146201550c5761010d8114620155005761010e8114620154f45761010f8114620154e8576101108114620154dc576101118114620154d0576101128114620154c4576101138114620154b8576101148114620154ac576101158114620154a057610116146201549557505050600090565b620031f8926201cb32565b50620031f8926201c90b565b50620031f8926201c6e4565b50620031f8926201c3e3565b50620031f8926201c1c4565b50620031f8926201bfa5565b50620031f8926201bd73565b50620031f8926201bbaa565b50620031f8926201b9e1565b50620031f8926201b7a9565b50620031f8926201b5e2565b50620031f8926201b2b7565b50620031f8926201b085565b50620031f8926201aebc565b50620031f8926201acf3565b50620031f8926201aae5565b50620031f8926201a8ad565b50620031f8926201a6e6565b50620031f8926201a3b4565b50620031f8926201a154565b50620031f89262019f83565b50620031f89262019da2565b50620031f89262019bdb565b50620031f89262019985565b50620031f892620197bc565b50620031f892620195f3565b50620031f89262019312565b50620031f89262019012565b50620031f89262018d25565b50620031f89262018a25565b50620031f89250620188a0565b50620031f892506201875b565b50620031f89250620185e9565b50620031f89250620184a4565b50620031f892506201835f565b50620031f892506201821b565b50620031f89250620180a6565b50620031f8925062017f62565b50620031f8925062017e1e565b50620031f8925062017cdd565b50620031f8925062017b9a565b50620031f8925062017a59565b50620031f8925062017910565b50620031f89250620177cc565b50620031f8925062017688565b50620031f8925062017513565b50620031f8925062017375565b50620031f8925062017232565b509050620031f89150620171d7565b509050620031f891506201717a565b50620031f89262016f3c565b50620031f8925062016dad565b50620031f8925062016c5e565b50620031f89262016a47565b50620031f892506201689f565b50620031f8925062016752565b509050620031f89150620166f7565b509050620031f891506201668a565b50620031f8926201643e565b50620031f89250620162af565b50620031f892506201615a565b50620031f89262015f2c565b50620031f8925062015d74565b50620031f8925062015c18565b50620031f8925062015b17565b50620031f89250620159ea565b50620031f89250620158e9565b50620031f8925090602001906001825151036201589057600162015806835162004c22565b515103620158365762015819906201ce37565b91901562006640576200685462015831915162004c22565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001825151036201599157600162015907835162004c22565b51510362015937576201591a906201ce37565b91901562006640576200685462015932915162004c22565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015abe57600262015a08835162004c22565b51510362015a625762015a1b906201ce37565b9015620066405762015a3262006854835162004c22565b51811015918262015a4257505090565b62015a5c91925062015a55905162004c22565b5162004c46565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015bbf57600162015b35835162004c22565b51510362015b655762015b48906201ce37565b91901562006640576200685462015b60915162004c22565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90604001600191828251510362015d1a578262015c36835162004c22565b51510362015cc05762015c49906201d1aa565b156200663857829160009182945b62015c65575b505050905090565b805185101562015cba576001600160a01b038062015c84878462004c79565b51169062015c9762006854855162004c22565b51160362015cb25762015cab849562004c12565b9462015c57565b505091505090565b62015c5d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362015ed2578262015d92835162004c22565b51511062015e785762015da5906201d1aa565b156200663857600091835b62015dbc575b50505090565b815183101562015e7257600080855b62015df4575b501562015deb5762015de4849362004c12565b9262015db0565b50505050600090565b62015e058396949295965162004c22565b515181101562015e67576001600160a01b038062015e24888562004c79565b51169062015e388362007494875162004c22565b51161462015e5a579062015e4e84939262004c12565b90939594919262015dcb565b5091809493503862015dd1565b949390929462015dd1565b62015db6565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016100578462015f4e845162004c22565b515103620160a65762015f61906201d1aa565b1562015fff5784931562016016576000935b62015f7f575050505090565b805184101562005131576001600160a01b038062015f9e868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262015fc9888662004c79565b51166000528452600020015462015fe562006854855162004c22565b510362015fff5762015ff8859462004c12565b9362015f73565b5050505050600090565b5050505050505050600090565b6000935b62016026575050505090565b805184101562005131576001600160a01b038062016045868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016070888662004c79565b5116600052845260002001546201608c62006854855162004c22565b510362015fff576201609f859462004c12565b936201601a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016255578262016178835162004c22565b515103620161fb576201618b906201d1aa565b919091156200663857600091835b620161a75750505050600090565b8051831015620161f55783926001600160a01b0380620161c8838562004c79565b511690620161db62006854865162004c22565b511614620050f757620161ee9062004c12565b9262016199565b62015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620163e45782620162cd835162004c22565b5151106201638a57620162e0906201d1aa565b15620066385782916000935b620162fa5750505050600090565b8151841015620161f5576000835b62016322575b506201631b839462004c12565b93620162ec565b93929162016331825162004c22565b515185101562016381576001600160a01b038062016350868462004c79565b511690620163648762007494865162004c22565b51161462015cb2576201637983949562004c12565b909262016308565b9192936201630e565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016630578462016460845162004c22565b515103620165d65762016473906201d1aa565b9190911562015fff5784931562016534576000935b62016497575050505050600090565b81518410156201652e5784936001600160a01b039081620164b9828662004c79565b511660005261032080845260409060ff826000205416620164ea575b5050620164e3915062004c12565b9362016488565b8293620164fa6002948862004c79565b5116600052845260002001546201651662006854865162004c22565b51146201652657803880620164d5565b505050505090565b62015fff565b6000935b62016547575050505050600090565b81518410156201652e5784936001600160a01b03908162016569828662004c79565b51166000526106b880845260409060ff8260002054166201659a575b505062016593915062004c12565b9362016538565b8293620165aa6002948862004c79565b511660005284526000200154620165c662006854865162004c22565b5114620165265780388062016585565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62016695816201d1aa565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620166ca838762004c79565b51169083511603620166e757620166e19062004c12565b620166ab565b5050905090565b50505050600190565b62016702816201d1aa565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062016735838662004c79565b5116908351161462006625576201674c9062004c12565b62016716565b90604001600191828251510362016845578262016770835162004c22565b515103620167eb5762016783906201d233565b156200663857829160009182945b6201679e57505050905090565b805185101562015cba576001600160a01b0380620167bd878462004c79565b511690620167d062006854855162004c22565b51160362015cb257620167e4849562004c12565b9462016791565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620169ed5782620168bd835162004c22565b5151106201699357620168d0906201d233565b156200663857600091835b620168e65750505090565b815183101562015e7257600080855b62016915575b501562015deb576201690e849362004c12565b92620168db565b620169268396949295965162004c22565b515181101562016988576001600160a01b038062016945888562004c79565b511690620169598362007494875162004c22565b5116146201697b57906201696f84939262004c12565b909395949192620168f5565b50918094935038620168fb565b9493909294620168fb565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016c04578462016a69845162004c22565b51510362016baa5762016a7c906201d233565b1562015fff5784931562016b1a576000935b62016a9a575050505090565b805184101562005131576001600160a01b038062016ab9868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262016ae4888662004c79565b51166000528452600020015462016b0062006854855162004c22565b510362015fff5762016b13859462004c12565b9362016a8e565b6000935b62016b2a575050505090565b805184101562005131576001600160a01b038062016b49868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016b74888662004c79565b51166000528452600020015462016b9062006854855162004c22565b510362015fff5762016ba3859462004c12565b9362016b1e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016d53578262016c7c835162004c22565b51510362016cf95762016c8f906201d233565b919091156200663857600091835b62016cab5750505050600090565b8051831015620161f55783926001600160a01b038062016ccc838562004c79565b51169062016cdf62006854865162004c22565b511614620050f75762016cf29062004c12565b9262016c9d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016ee2578262016dcb835162004c22565b51511062016e885762016dde906201d233565b15620066385782916000935b62016df85750505050600090565b8151841015620161f5576000835b62016e20575b5062016e19839462004c12565b9362016dea565b93929162016e2f825162004c22565b515185101562016e7f576001600160a01b038062016e4e868462004c79565b51169062016e628762007494865162004c22565b51161462015cb25762016e7783949562004c12565b909262016e06565b91929362016e0c565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362017120578462016f5e845162004c22565b515103620170c65762016f71906201d233565b9190911562015fff5784931562017024576000935b62016f95575050505050600090565b81518410156201652e5784936001600160a01b03908162016fb7828662004c79565b511660005261032080845260409060ff82600020541662016fe8575b505062016fe1915062004c12565b9362016f86565b829362016ff86002948862004c79565b5116600052845260002001546201701462006854865162004c22565b5114620165265780388062016fd3565b6000935b62017037575050505050600090565b81518410156201652e5784936001600160a01b03908162017059828662004c79565b51166000526106b880845260409060ff8260002054166201708a575b505062017083915062004c12565b9362017028565b82936201709a6002948862004c79565b511660005284526000200154620170b662006854865162004c22565b5114620165265780388062017075565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62017185816201d233565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620171ba838762004c79565b51169083511603620166e757620171d19062004c12565b6201719b565b620171e2816201d233565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062017215838662004c79565b5116908351161462006625576201722c9062004c12565b620171f6565b9060200160019182825151036201731b578262017250835162004c22565b515103620172c15762017263906201d26c565b9050156200663857829160009182945b6201728057505050905090565b805185101562015cba5762017296858262004c79565b51620172a762006854845162004c22565b510362015cb257620172ba849562004c12565b9462017273565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620174b9578262017393835162004c22565b5151106201745f57620173a6906201d26c565b9050156200663857600091835b620173be5750505090565b815183101562015e7257600080855b620173ed575b501562015deb57620173e6849362004c12565b92620173b3565b620173fe8396949295965162004c22565b5151811015620174545762017414868362004c79565b51620174268262007494865162004c22565b51146201744757906201743b84939262004c12565b909395949192620173cd565b50918094935038620173d3565b9493909294620173d3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201762e57600262017532835162004c22565b515103620175d45762017545906201d26c565b9050919091156200663857829160009182945b6201756557505050905090565b815185101562015cba576201757b858362004c79565b516201758c62006854835162004c22565b51118015620175ae575b62015cb257620175a7849562004c12565b9462017558565b50620175bb858362004c79565b51620175cc62015a55835162004c22565b511062017596565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620177725782620176a6835162004c22565b5151036201771857620176b9906201d26c565b9050156200663857829160009182945b620176d657505050905090565b805185101562015cba57620176ec858262004c79565b51620176fd62006854845162004c22565b51101562015cb25762017711849562004c12565b94620176c9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620178b65782620177ea835162004c22565b5151036201785c57620177fd906201d26c565b9050156200663857829160009182945b6201781a57505050905090565b805185101562015cba5762017830858262004c79565b516201784162006854845162004c22565b51111562015cb25762017855849562004c12565b946201780d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620179ff57826201792e835162004c22565b515103620179a55762017941906201d26c565b909391501562006638578060009384925b6201796b575b5050506200685462015831915162004c22565b90919381518510156201799e576200defd62017995916201798d878562004c79565b519062006271565b91908162017952565b9362017958565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017b40578262017a77835162004c22565b51510362017ae65762017a8a906201d26c565b909391501562006638578060009384925b62017ab4575b5050506200685462015932915162004c22565b909193815185101562017adf576200defd62017ad6916201798d878562004c79565b91908162017a9b565b9362017aa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200190600190818351510362017c8357600262017bba845162004c22565b51510362017c295762017bcd906201d26c565b909150156200663857906000918183925b62017bf7575b50505062015a3262006854835162004c22565b909192825184101562017c2257620064f062017c19916201798d868662004c79565b91908062017bde565b9262017be4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017dc4578262017cfb835162004c22565b51510362017d6a5762017d0e906201d26c565b909391501562006638578060009384925b62017d38575b5050506200685462015b60915162004c22565b909193815185101562017d63576200defd62017d5a916201798d878562004c79565b91908162017d1f565b9362017d25565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017f08578262017e3c835162004c22565b51510362017eae5762017e4f906201d26c565b90929150156200663857600091835b62017e6c5750505050600090565b8051831015620161f5578262017e8485948362004c79565b5162017e9562006854855162004c22565b5110620050f75762017ea79062004c12565b9262017e5e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201804c578262017f80835162004c22565b51510362017ff25762017f93906201d26c565b9291921562015deb57600092845b62017fb0575050505050600090565b80518410156201652e578362017fc886958462004c79565b5162017fd962006854865162004c22565b5111620165265762017feb9062004c12565b9362017fa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620181c1576002620180c5835162004c22565b5151036201816757620180d8906201d26c565b929091921562015deb57600092845b620180f6575050505050600090565b80518410156201652e57836201810e86958562004c79565b516201811f62006854855162004c22565b5111158062018140575b6201652657620181399062004c12565b93620180e7565b506201814d818562004c79565b516201815e62015a55855162004c22565b51101562018129565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018305578262018239835162004c22565b515103620182ab576201824c906201d26c565b9291921562015deb57600092845b62018269575050505050600090565b80518410156201652e57836201828186958462004c79565b516201829262006854865162004c22565b51146201652657620182a49062004c12565b936201825a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201844a57826201837d835162004c22565b515103620183f05762018390906201d26c565b9050919091156200663857600091835b620183ae5750505050600090565b8051831015620161f55782620183c685948362004c79565b51620183d762006854855162004c22565b5110620050f757620183e99062004c12565b92620183a0565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201858f5782620184c2835162004c22565b5151036201853557620184d5906201d26c565b9050919091156200663857600091835b620184f35750505050600090565b8051831015620161f557826201850b85948362004c79565b516201851c62006854855162004c22565b5111620050f7576201852e9062004c12565b92620184e5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201870157600262018608835162004c22565b515103620186a7576201861b906201d26c565b9050156200663857600091835b620186365750505050600090565b8151831015620161f557826201864e85948462004c79565b516201865f62006854845162004c22565b5111158062018680575b620050f757620186799062004c12565b9262018628565b506201868d818462004c79565b516201869e62015a55845162004c22565b51101562018669565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018846578262018779835162004c22565b515103620187ec576201878c906201d26c565b9050919091156200663857600091835b620187aa5750505050600090565b8051831015620161f55782620187c285948362004c79565b51620187d362006854855162004c22565b5114620050f757620187e59062004c12565b926201879c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620189cb5782620188be835162004c22565b5151106201897157620188d1906201d26c565b905015620066385782916000935b620188ed5750505050600090565b8151841015620161f5576000835b62018915575b506201890e839462004c12565b93620188df565b93929162018924825162004c22565b515185101562018968576201893a848262004c79565b516201894c8662007494855162004c22565b511462015cb2576201896083949562004c12565b9092620188fb565b91929362018901565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362018ccb578462018a47845162004c22565b51511062018c715762018a5a906201d233565b9290921562015fff5784931562018b6e576000935b62018a7b575050505090565b825184101562005131576001600160a01b038062018a9a868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b62018ae0575b505050501562015fff5762018ad9859462004c12565b9362018a6f565b9092989591939662018af3865162004c22565b51518a101562018b62578162018b0a8a8362004c79565b5116600052838352600285600020015462018b2b8b62007494895162004c22565b511462018b4f5762018b408798999a62004c12565b93919097999894929662018abd565b9650509396505050843880808062018ac3565b96938296995062018ac3565b6000935b62018b7e575050505090565b825184101562005131576001600160a01b038062018b9d868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b62018be3575b505050501562015fff5762018bdc859462004c12565b9362018b72565b9092989591939662018bf6865162004c22565b51518a101562018c65578162018c0d8a8362004c79565b5116600052838352600285600020015462018c2e8b62007494895162004c22565b511462018c525762018c438798999a62004c12565b93919097999894929662018bc0565b9650509396505050843880808062018bc6565b96938296995062018bc6565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362018fb8578362018d44835162004c22565b51511062018f5e5762018d57906201d233565b9490941562015fff5783921562018e695793926000905b62018d7d575050505050600090565b83518110156201652e576001600160a01b038062018d9c838762004c79565b511660005261032080875260409160ff83600020541662018dd2575b5050509362018dc983949562004c12565b90949362018d6e565b6000929190865b62018de6575b5062018db8565b90929791939662018df8865162004c22565b515189101562018e5e578162018e0f898362004c79565b5116600052838352600285600020015462018e308a62007494895162004c22565b511462018e525762018e4487989962004c12565b939190979894929862018dd9565b50505050505091505090565b969382985062018ddf565b93926000905b62018e7e575050505050600090565b83518110156201652e576001600160a01b038062018e9d838762004c79565b51166000526106b880875260409160ff83600020541662018ed3575b5050509362018eca83949562004c12565b90949362018e6f565b6000929190865b62018ee7575b5062018eb9565b90929791939662018ef9865162004c22565b515189101562018f53578162018f10898362004c79565b5116600052838352600285600020015462018f318a62007494895162004c22565b511462018e525762018f4587989962004c12565b939190979894929862018eda565b969382985062018ee0565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101906001938483515103620192b8578462019034845162004c22565b5151106201925e5762019047906201d1aa565b9290921562015fff578493156201915b576000935b62019068575050505090565b825184101562005131576001600160a01b038062019087868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b620190cd575b505050501562015fff57620190c6859462004c12565b936201905c565b90929895919396620190e0865162004c22565b51518a10156201914f5781620190f78a8362004c79565b51166000528383526002856000200154620191188b62007494895162004c22565b51146201913c576201912d8798999a62004c12565b939190979998949296620190aa565b96505093965050508438808080620190b0565b969382969950620190b0565b6000935b6201916b575050505090565b825184101562005131576001600160a01b03806201918a868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b620191d0575b505050501562015fff57620191c9859462004c12565b936201915f565b90929895919396620191e3865162004c22565b51518a1015620192525781620191fa8a8362004c79565b511660005283835260028560002001546201921b8b62007494895162004c22565b51146201923f57620192308798999a62004c12565b939190979998949296620191ad565b96505093965050508438808080620191b3565b969382969950620191b3565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362019599578362019331835162004c22565b5151106201953f5762019344906201d1aa565b9490941562015fff578392156201944a5793926000905b6201936a575050505050600090565b83518110156201652e576001600160a01b038062019389838762004c79565b511660005261032080875260409160ff836000205416620193bf575b50505093620193b683949562004c12565b9094936201935b565b6000929190865b620193d3575b50620193a5565b909297919396620193e5865162004c22565b51518910156201943f5781620193fc898362004c79565b511660005283835260028560002001546201941d8a62007494895162004c22565b511462018e52576201943187989962004c12565b9391909798949298620193c6565b9693829850620193cc565b93926000905b6201945f575050505050600090565b83518110156201652e576001600160a01b03806201947e838762004c79565b51166000526106b880875260409160ff836000205416620194b4575b50505093620194ab83949562004c12565b90949362019450565b6000929190865b620194c8575b506201949a565b909297919396620194da865162004c22565b5151891015620195345781620194f1898362004c79565b51166000528383526002856000200154620195128a62007494895162004c22565b511462018e52576201952687989962004c12565b9391909798949298620194bb565b9693829850620194c1565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019762578462019615845162004c22565b515103620197085762019628906201d1aa565b1562015fff578493156201969f576000935b62019646575050505090565b805184101562005131576001600160a01b0362019664858362004c79565b511660005261032582526040600020546201968462006854855162004c22565b51101562015fff5762019698859462004c12565b936201963a565b6000935b620196af575050505090565b805184101562005131576001600160a01b03620196cd858362004c79565b51166000526106bd8252604060002054620196ed62006854855162004c22565b51101562015fff5762019701859462004c12565b93620196a3565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201992b5784620197de845162004c22565b515103620198d157620197f1906201d1aa565b1562015fff5784931562019868576000935b6201980f575050505090565b805184101562005131576001600160a01b036201982d858362004c79565b511660005261032582526040600020546201984d62006854855162004c22565b51111562015fff5762019861859462004c12565b9362019803565b6000935b62019878575050505090565b805184101562005131576001600160a01b0362019896858362004c79565b51166000526106bd8252604060002054620198b662006854855162004c22565b51111562015fff57620198ca859462004c12565b936201986c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101600193848251510362019b81576002620199a7835162004c22565b51510362019b2757620199ba906201d1aa565b9290921562015fff5784931562019a79576000935b620199db575050505090565b825184101562005131576001600160a01b0380620199fa868662004c79565b5116600052610325808352604090816000205462019a1d62006854875162004c22565b511192831562019a43575b50505062015fff5762019a3c859462004c12565b93620199cf565b9091925062019a53878762004c79565b511660005282526000205462019a6e62015a55845162004c22565b511038808062019a28565b6000935b62019a89575050505090565b825184101562005131576001600160a01b038062019aa8868662004c79565b51166000526106bd808352604090816000205462019acb62006854875162004c22565b511192831562019af1575b50505062015fff5762019aea859462004c12565b9362019a7d565b9091925062019b01878762004c79565b511660005282526000205462019b1c62015a55845162004c22565b511038808062019ad6565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019d48578462019bfd845162004c22565b51510362019cee5762019c10906201d1aa565b1562015fff5784931562019c86576000935b62019c2e575050505090565b805184101562005131576001600160a01b0362019c4c858362004c79565b5116600052610325825260406000205462019c6c62006854855162004c22565b510362015fff5762019c7f859462004c12565b9362019c22565b6000935b62019c96575050505090565b805184101562005131576001600160a01b0362019cb4858362004c79565b51166000526106bd825260406000205462019cd462006854855162004c22565b510362015fff5762019ce7859462004c12565b9362019c8a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019f29578462019dc4845162004c22565b51510362019ecf5762019dd7906201d1aa565b1562015fff5784931562019e625760009182945b62019dfc575b505050505050600090565b815185101562019e5c5785946001600160a01b0362019e1c828562004c79565b511684526103258252604084205462019e3a62006854875162004c22565b511062019e535762019e4c9062004c12565b9462019deb565b50505050505090565b62019df1565b60009182945b62019e7857505050505050600090565b815185101562019e5c5785946001600160a01b0362019e98828562004c79565b511684526106bd8252604084205462019eb662006854875162004c22565b511062019e535762019ec89062004c12565b9462019e68565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201a0fa578462019fa5845162004c22565b5151036201a0a05762019fb8906201d1aa565b1562015fff578493156201a0335760009182945b62019fdc57505050505050600090565b815185101562019e5c5785946001600160a01b0362019ffc828562004c79565b51168452610325825260408420546201a01a62006854875162004c22565b511162019e53576201a02c9062004c12565b9462019fcc565b60009182945b6201a04957505050505050600090565b815185101562019e5c5785946001600160a01b036201a069828562004c79565b511684526106bd825260408420546201a08762006854875162004c22565b511162019e53576201a0999062004c12565b946201a039565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910160019384825151036201a35a5760026201a176835162004c22565b5151036201a300576201a189906201d1aa565b9190911562015fff578493156201a24d576000935b6201a1ad575050505050600090565b81518410156201652e5784936001600160a01b03806201a1ce838662004c79565b511660005261032580865260409081600020546201a1f162006854875162004c22565b51111592836201a216575b50505062016526576201a20f9062004c12565b936201a19e565b909192506201a226848762004c79565b51166000528552600020546201a24162015a55845162004c22565b5110153880806201a1fc565b6000935b6201a260575050505050600090565b81518410156201652e5784936001600160a01b03806201a281838662004c79565b51166000526106bd80865260409081600020546201a2a462006854875162004c22565b51111592836201a2c9575b50505062016526576201a2c29062004c12565b936201a251565b909192506201a2d9848762004c79565b51166000528552600020546201a2f462015a55845162004c22565b5110153880806201a2af565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201a53157836201a3d3845162004c22565b5151036201a4d757156201a45c576201a3ec906201d1aa565b156200663857829160009182945b6201a40757505050905090565b805185101562015cba576201a4316001600160a01b036201a429878462004c79565b51166201a5e7565b6201a44162006854845162004c22565b51101562015cb2576201a455849562004c12565b946201a3fa565b6201a467906201d1aa565b156200663857829160009182945b6201a48257505050905090565b805185101562015cba576201a4ac6001600160a01b036201a4a4878462004c79565b51166201a58b565b6201a4bc62006854845162004c22565b51101562015cb2576201a4d0849562004c12565b946201a475565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201a59f57505090565b90916200824c6201a5e0916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b9062006271565b906201a591565b60009081905b606482106201a5fb57505090565b90916200824c6201a633916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a5ed565b600091906201a694576000905b606482106201a65557505090565b90916200824c6201a68d916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a647565b81905b606482106201a6a557505090565b90916200824c6201a6df916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b906201a697565b916020019060019283835151036201a85357836201a705845162004c22565b5151036201a7f957156201a786576201a71e906201d1aa565b156200663857829160009182945b6201a73957505050905090565b805185101562015cba576201a75b6001600160a01b036201a429878462004c79565b6201a76b62006854845162004c22565b51111562015cb2576201a77f849562004c12565b946201a72c565b6201a791906201d1aa565b156200663857829160009182945b6201a7ac57505050905090565b805185101562015cba576201a7ce6001600160a01b036201a4a4878462004c79565b6201a7de62006854845162004c22565b51111562015cb2576201a7f2849562004c12565b946201a79f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201aa8b5760026201a8cd845162004c22565b5151036201aa3157156201a986576201a8e6906201d1aa565b919091156200663857829160009182945b6201a90457505050905090565b815185101562015cba576001600160a01b036201a927816201a429888662004c79565b6201a93762006854845162004c22565b51119081156201a95b575b5062015cb2576201a954849562004c12565b946201a8f7565b6201a96d91506201a429878562004c79565b6201a97d62015a55835162004c22565b5110386201a942565b6201a991906201d1aa565b919091156200663857829160009182945b6201a9af57505050905090565b815185101562015cba576001600160a01b036201a9d2816201a4a4888662004c79565b6201a9e262006854845162004c22565b51119081156201aa06575b5062015cb2576201a9ff849562004c12565b946201a9a2565b6201aa1891506201a4a4878562004c79565b6201aa2862015a55835162004c22565b5110386201a9ed565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160208091019160019384845151036201ac9957846201ab06855162004c22565b5151036201ac3f57156201ab87576201ab2091506201d1aa565b156200663857829160009182945b6201ab3b57505050905090565b805185101562015cba576201ab5d6001600160a01b036201a429878462004c79565b6201ab6d62006854845162004c22565b510362015cb2576201ab80849562004c12565b946201ab2e565b6201ab92906201d1aa565b9290921562015deb57600092845b6201abac575050505090565b805184101562005131576001600160a01b036201abca858362004c79565b511660009081905b606482106201ac075750506201abed62006854845162004c22565b510362015fff576201ac00859462004c12565b936201aba0565b90916200824c6201ac38916201a5d98560031b8560005261039b81018a526103996040600020549101549062004eaa565b906201abd2565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201ae6257836201ad12845162004c22565b5151036201ae0857156201ad94576201ad2b906201d1aa565b919091156200663857600091835b6201ad475750505050600090565b8051831015620161f55783926201ad6b6001600160a01b036201a429838562004c79565b6201ad7b62006854855162004c22565b5110620050f7576201ad8d9062004c12565b926201ad39565b6201ad9f906201d1aa565b919091156200663857600091835b6201adbb5750505050600090565b8051831015620161f55783926201addf6001600160a01b036201a4a4838562004c79565b6201adef62006854855162004c22565b5110620050f7576201ae019062004c12565b926201adad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b02b57836201aedb845162004c22565b5151036201afd157156201af5d576201aef4906201d1aa565b919091156200663857600091835b6201af105750505050600090565b8051831015620161f55783926201af346001600160a01b036201a429838562004c79565b6201af4462006854855162004c22565b5111620050f7576201af569062004c12565b926201af02565b6201af68906201d1aa565b919091156200663857600091835b6201af845750505050600090565b8051831015620161f55783926201afa86001600160a01b036201a4a4838562004c79565b6201afb862006854855162004c22565b5111620050f7576201afca9062004c12565b926201af76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b25d5760026201b0a5845162004c22565b5151036201b20357156201b15b576201b0be906201d1aa565b156200663857600091835b6201b0d75750505050600090565b8151831015620161f55783926001600160a01b036201b0fc816201a429848762004c79565b6201b10c62006854855162004c22565b51111590816201b12f575b50620050f7576201b1289062004c12565b926201b0c9565b6201b14191506201a429838662004c79565b6201b15162015a55845162004c22565b511015386201b117565b6201b166906201d1aa565b156200663857600091835b6201b17f5750505050600090565b8151831015620161f55783926001600160a01b036201b1a4816201a4a4848762004c79565b6201b1b462006854855162004c22565b51111590816201b1d7575b50620050f7576201b1d09062004c12565b926201b171565b6201b1e991506201a4a4838662004c79565b6201b1f962015a55845162004c22565b511015386201b1bf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b43457836201b2d6845162004c22565b5151036201b3da57156201b35f576201b2ef906201d1aa565b156200663857829160009182945b6201b30a57505050905090565b805185101562015cba576201b3346001600160a01b036201b32c878462004c79565b51166201b4e3565b6201b34462006854845162004c22565b51101562015cb2576201b358849562004c12565b946201b2fd565b6201b36a906201d1aa565b156200663857829160009182945b6201b38557505050905090565b805185101562015cba576201b3af6001600160a01b036201b3a7878462004c79565b51166201b48e565b6201b3bf62006854845162004c22565b51101562015cb2576201b3d3849562004c12565b946201b378565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201b4a257505090565b90916200824c6201b4dc916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b494565b60009081905b606482106201b4f757505090565b90916200824c6201b52f916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b4e9565b600091906201b590576000905b606482106201b55157505090565b90916200824c6201b589916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b543565b81905b606482106201b5a157505090565b90916200824c6201b5db916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b593565b916020019060019283835151036201b74f57836201b601845162004c22565b5151036201b6f557156201b682576201b61a906201d1aa565b156200663857829160009182945b6201b63557505050905090565b805185101562015cba576201b6576001600160a01b036201b32c878462004c79565b6201b66762006854845162004c22565b51111562015cb2576201b67b849562004c12565b946201b628565b6201b68d906201d1aa565b156200663857829160009182945b6201b6a857505050905090565b805185101562015cba576201b6ca6001600160a01b036201b3a7878462004c79565b6201b6da62006854845162004c22565b51111562015cb2576201b6ee849562004c12565b946201b69b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b9875760026201b7c9845162004c22565b5151036201b92d57156201b882576201b7e2906201d1aa565b919091156200663857829160009182945b6201b80057505050905090565b815185101562015cba576001600160a01b036201b823816201b32c888662004c79565b6201b83362006854845162004c22565b51119081156201b857575b5062015cb2576201b850849562004c12565b946201b7f3565b6201b86991506201b32c878562004c79565b6201b87962015a55835162004c22565b5110386201b83e565b6201b88d906201d1aa565b919091156200663857829160009182945b6201b8ab57505050905090565b815185101562015cba576001600160a01b036201b8ce816201b3a7888662004c79565b6201b8de62006854845162004c22565b51119081156201b902575b5062015cb2576201b8fb849562004c12565b946201b89e565b6201b91491506201b3a7878562004c79565b6201b92462015a55835162004c22565b5110386201b8e9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201bb5057836201ba00845162004c22565b5151036201baf657156201ba82576201ba19906201d1aa565b919091156200663857600091835b6201ba355750505050600090565b8051831015620161f55783926201ba596001600160a01b036201b32c838562004c79565b6201ba6962006854855162004c22565b5110620050f7576201ba7b9062004c12565b926201ba27565b6201ba8d906201d1aa565b919091156200663857600091835b6201baa95750505050600090565b8051831015620161f55783926201bacd6001600160a01b036201b3a7838562004c79565b6201badd62006854855162004c22565b5110620050f7576201baef9062004c12565b926201ba9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160200190600192836201bbbf845162004c22565b5151036201bd195783835151036201bcbf57156201bc4b576201bbe2906201d1aa565b919091156200663857600091835b6201bbfe5750505050600090565b8051831015620161f55783926201bc226001600160a01b036201b32c838562004c79565b6201bc3262006854855162004c22565b5111620050f7576201bc449062004c12565b926201bbf0565b6201bc56906201d1aa565b919091156200663857600091835b6201bc725750505050600090565b8051831015620161f55783926201bc966001600160a01b036201b3a7838562004c79565b6201bca662006854855162004c22565b5111620050f7576201bcb89062004c12565b926201bc64565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b916020019060026201bd86835162004c22565b5151036201bf4b5760019283835151036201bef157156201be49576201bdac906201d1aa565b156200663857600091835b6201bdc55750505050600090565b8151831015620161f55783926001600160a01b036201bdea816201b32c848762004c79565b6201bdfa62006854855162004c22565b51111590816201be1d575b50620050f7576201be169062004c12565b926201bdb7565b6201be2f91506201b32c838662004c79565b6201be3f62015a55845162004c22565b511015386201be05565b6201be54906201d1aa565b156200663857600091835b6201be6d5750505050600090565b8151831015620161f55783926001600160a01b036201be92816201b3a7848762004c79565b6201bea262006854855162004c22565b51111590816201bec5575b50620050f7576201bebe9062004c12565b926201be5f565b6201bed791506201b3a7838662004c79565b6201bee762015a55845162004c22565b511015386201bead565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060019384835151036201c16a5760026201bfc8845162004c22565b5151036201c11057156201c072576201bfe1906201d1aa565b9290921562015deb57600092845b6201bffb575050505090565b805184101562005131576201c01562006854845162004c22565b51606481101562004c30576001600160a01b036201c034868462004c79565b5116600052600390811b0182526040600020546201c05762015a55855162004c22565b51101562015fff576201c06b859462004c12565b936201bfef565b6201c07d906201d1aa565b9290921562015deb57600092845b6201c097575050505090565b805184101562005131576201c0b162006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c0d4878562004c79565b511660005260031b0182526040600020546201c0f562015a55855162004c22565b51101562015fff576201c109859462004c12565b936201c08b565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208092019060019384835151036201c3895760026201c1e7845162004c22565b5151036201c32f57156201c291576201c200906201d1aa565b9290921562015deb57600092845b6201c21a575050505090565b805184101562005131576201c23462006854845162004c22565b51606481101562004c30576001600160a01b036201c253868462004c79565b5116600052600390811b0182526040600020546201c27662015a55855162004c22565b51111562015fff576201c28a859462004c12565b936201c20e565b6201c29c906201d1aa565b9290921562015deb57600092845b6201c2b6575050505090565b805184101562005131576201c2d062006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c2f3878562004c79565b511660005260031b0182526040600020546201c31462015a55855162004c22565b51111562015fff576201c328859462004c12565b936201c2aa565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101600392836201c3f9835162004c22565b5151036201c6855760019485835151036201c62b57156201c523576201c41f906201d1aa565b9390931562015fff57600093855b6201c43a57505050505090565b80518510156201c51d576201c45462006854845162004c22565b516064908181101562004c30576001600160a01b03908490826201c4798a8762004c79565b5116600052811b01865260409081600020546201c49b62015a55885162004c22565b51119283156201c4c1575b50505062019df1576201c4ba869562004c12565b946201c42d565b909192506201c4d562006854875162004c22565b519081101562004c305784916201c4ed898662004c79565b5116600052811b018552600020546201c5126201c50b855162004c22565b5162004c57565b51103880806201c4a6565b62016526565b6201c531909392936201d1aa565b9390931562015fff57600093855b6201c54c57505050505090565b80518510156201c51d576201c56662006854845162004c22565b5160648082101562004c30576001600160a01b0391826201c588898662004c79565b511660005261039b8091881b01855260409182600020546201c5af62015a55895162004c22565b51119384156201c5d6575b5050505062019df1576201c5cf869562004c12565b946201c53f565b90919293506201c5eb62006854885162004c22565b519182101562004c30576201c601898662004c79565b5116600052861b018352600020546201c61f6201c50b855162004c22565b5110388080806201c5ba565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201c6fa835162004c22565b5151036201c8b15760019384835151036201c85757156201c7b5576201c720906201d1aa565b9290921562015deb57600092845b6201c73d575050505050600090565b80518410156201652e576201c75762006854845162004c22565b5193606485101562004c305785946001600160a01b036201c779838562004c79565b5116600052600390811b0183526040600020546201c79c62015a55865162004c22565b511062016526576201c7ae9062004c12565b936201c72e565b6201c7c0906201d1aa565b9290921562015deb57600092845b6201c7dd575050505050600090565b80518410156201652e576201c7f762006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201c81d848662004c79565b511660005260031b0183526040600020546201c83e62015a55865162004c22565b511062016526576201c8509062004c12565b936201c7ce565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060026201c921835162004c22565b5151036201cad85760019384835151036201ca7e57156201c9dc576201c947906201d1aa565b9290921562015deb57600092845b6201c964575050505050600090565b80518410156201652e576201c97e62006854845162004c22565b5193606485101562004c305785946001600160a01b036201c9a0838562004c79565b5116600052600390811b0183526040600020546201c9c362015a55865162004c22565b511162016526576201c9d59062004c12565b936201c955565b6201c9e7906201d1aa565b9290921562015deb57600092845b6201ca04575050505050600090565b80518410156201652e576201ca1e62006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201ca44848662004c79565b511660005260031b0183526040600020546201ca6562015a55865162004c22565b511162016526576201ca779062004c12565b936201c9f5565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b916020809101600392836201cb48835162004c22565b5151036201cdd85760019485835151036201cd7e57156201cc6d576201cb6e906201d1aa565b9390931562015fff57600093855b6201cb8c57505050505050600090565b805185101562019e5c576201cba662006854845162004c22565b51946064958681101562004c305787966001600160a01b03918590836201cbce868862004c79565b5116600052811b018752604080600020546201cbef62015a55895162004c22565b51111592836201cc14575b50505062019e53576201cc0d9062004c12565b946201cb7c565b91985091506201cc2962006854875162004c22565b519788101562004c3057889785916201cc43858762004c79565b5116600052811b018652600020546201cc616201c50b865162004c22565b5110153880806201cbfa565b6201cc7b909392936201d1aa565b9390931562015fff57600093855b6201cc9957505050505050600090565b805185101562019e5c576201ccb362006854845162004c22565b519460648087101562004c305787966001600160a01b0390816201ccd8858762004c79565b511660005261039b8091891b01865260409081600020546201ccff62015a558a5162004c22565b51111593846201cd25575b5050505062019e53576201cd1e9062004c12565b946201cc89565b9193509198506201cd3b62006854885162004c22565b519081101562004c305789986201cd53858762004c79565b5116600052871b018452600020546201cd716201c50b865162004c22565b511015388080806201cd0a565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201ce42816201cfc7565b156201cfbe576040810190606082510151511515806201cf83575b156201ce6f5750516060015151600191565b604082510151511515806201cf6a575b156201ce915750516040015151600191565b60808251015151151590816201cf50575b50156201ceb457516080015151600191565b805160c081015151156201cefb57506201ced360c08251015162004c22565b51516201cee457505b600090600090565b60c06201cef49151015162004c22565b5151600191565b602081015151156201cf135750516020015151600191565b60a0015180516201cf27575b50506201cedc565b6201cf329062004c22565b51516201cf4057806201cf1f565b60a06201cef49151015162004c22565b60209150015160268110156200294257601014386201cea2565b506020810151602681101562002942576013146201ce7f565b5060208101805160268110156200294257600c149081156201cfa7575b506201ce5d565b90505160268110156200294257600f14386201cfa0565b50600090600090565b60200180519060269081831015620029425760018093146201d1a55780518281101562002942576002146201d1a55780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760051462015db6578051838110156201d1905760061462015db6578051838110156201d1905760071462015db6578051838110156201d1905760081462015db6578051838110156201d1905760091462015db6578051838110156201d19057600a1462015db6578051838110156201d19057600b1462015db6578051838110156201d19057600c1462015db6578051838110156201d19057600d1462015db6578051838110156201d19057600e1462015db6578051838110156201d19057600f1462015db6578051838110156201d1905760101462015db6578051838110156201d1905760111462015db6578051838110156201d1905760121462015db6578051838110156201d1905760131462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db65751918210156201d17b5750601e14620031f85750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201d1b5816201cfc7565b156201d224576020810151602681101562002942576004146201d211576040015160c0015180516201d1ff57506040516201d1f08162002a5e565b60008152600036813790600090565b6201d20a9062004c22565b5190600190565b60c060406201d20a920151015162004c46565b506040516201d1f08162002a5e565b6020810151602681101562002942576004146201d25957506040516201d1f08162002a5e565b60c060406201d20a920151015162004c22565b6201d277816201d3bc565b156201d3ac57602081019081519160269081841015620029425760018094146201d3915780518281101562002942576003146201d3915780519082821015620029425760048092146201d375578051838110156201d190576005146201d375578051838110156201d190576006146201d375578051838110156201d190576014146201d375578051838110156201d190576015146201d3755751918210156201d17b5750601e146201d357575050604051906201d3348262002a5e565b60008252604051916201d3478362002a5e565b6000835260003681379190600090565b604001916201d37060a0620077f0818651015162004c22565b519190565b505050604001916201d37060a0620077f0818651015162004c22565b5050604001916201d37060a0620077f0818651015162004c22565b50604051906201d3348262002a5e565b60200180519060269081831015620029425760018093146201d1a5578051828110156200294257600214620066385780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db6578051838110156201d19057601e1462015db6578051838110156201d1905760051462015db65751918210156201d17b5750600614620031f85750600090565b916101f581146201d523576101f681146201d517576101f781146201d50b576101f881146201d4ff576101f981146201d4f3576101fa81146201d4e7576101fb81146201d4db576101fc146201d4d0575050600090565b620031f8916201df74565b50620031f8916201ddcf565b50620031f8916201dc6a565b50620031f8916201db05565b50620031f8916201d9a0565b50620031f8916201d7fb565b50620031f8916201d696565b50620031f891906020019060019182815151036201d63c57826201d548825162004c22565b5151036201d5e2576020820151602681101562002942576002036200663857600091835b6201d57a5750505050600090565b604081019260a0936201d591858251015162004c57565b51518210156201d5da57816200749487966201d5b09351015162004c57565b516201d5c162006854855162004c22565b5110620050f7576201d5d39062004c12565b926201d56c565b505062015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d7a157826201d6b5825162004c22565b5151036201d747576020820151602681101562002942576002036200663857600091835b6201d6e75750505050600090565b604081019260a0936201d6fe858251015162004c57565b51518210156201d5da57816200749487966201d71d9351015162004c57565b516201d72e62006854855162004c22565b5111620050f7576201d7409062004c12565b926201d6d9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d9465760026201d81b825162004c22565b5151036201d8ec576020820151602681101562002942576002036200663857600091835b6201d84d5750505050600090565b604081019260a0936201d864858251015162004c57565b51518210156201d5da5781856201d88582620074948a998651015162004c57565b516201d89662006854885162004c22565b51111592836201d8bb575b505050620050f7576201d8b49062004c12565b926201d83f565b5101516201d8cf9250620074949062004c57565b516201d8e062015a55855162004c22565b5110158138806201d8a1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201daab57826201d9bf825162004c22565b5151036201da51576020820151602681101562002942576002036200663857600091835b6201d9f15750505050600090565b604081019260a0936201da08858251015162004c57565b51518210156201d5da57816200749487966201da279351015162004c57565b516201da3862006854855162004c22565b5114620050f7576201da4a9062004c12565b926201d9e3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dc1057826201db24825162004c22565b5151036201dbb6576020820151602681101562002942576002036200663857600091835b6201db565750505050600090565b604081019260a0936201db6d858251015162004c68565b51518210156201d5da57816200749487966201db8c9351015162004c46565b516201db9d62006854855162004c22565b5110620050f7576201dbaf9062004c12565b926201db48565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dd7557826201dc89825162004c22565b5151036201dd1b576020820151602681101562002942576002036200663857600091835b6201dcbb5750505050600090565b604081019260a0936201dcd2858251015162004c68565b51518210156201d5da57816200749487966201dcf19351015162004c46565b516201dd0262006854855162004c22565b5111620050f7576201dd149062004c12565b926201dcad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201df1a5760026201ddef825162004c22565b5151036201dec0576020820151602681101562002942576002036200663857600091835b6201de215750505050600090565b604081019260a0936201de38858251015162004c68565b51518210156201d5da5781856201de5982620074948a998651015162004c46565b516201de6a62006854885162004c22565b51111592836201de8f575b505050620050f7576201de889062004c12565b926201de13565b5101516201dea39250620074949062004c46565b516201deb462015a55855162004c22565b5110158138806201de75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201e07f57826201df93825162004c22565b5151036201e025576020820151602681101562002942576002036200663857600091835b6201dfc55750505050600090565b604081019260a0936201dfdc858251015162004c68565b51518210156201d5da57816200749487966201dffb9351015162004c46565b516201e00c62006854855162004c22565b5114620050f7576201e01e9062004c12565b926201dfb7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91603381036201e1c3575060209150016001815151036201e1735760016201e102825162004c22565b5151036201e12057620068546201e11a915162004c22565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201e2ac575060209150016001815151036201e25c5760016201e1eb825162004c22565b5151036201e20957620068546201e203915162004c22565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201e3be575060209150016001815151036201e36e5760026201e2d4825162004c22565b5151036201e314576201e2ec62006854825162004c22565b5142101590816201e2fb575090565b6201e30d915062015a55905162004c22565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201e4c2575060209150016001815151036201e4685760016201e3e6825162004c22565b5151036201e40e5762015831620068546201e401426200628d565b5050505050925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603781036201e5b9575060209150016001815151036201e55f5760016201e4ea825162004c22565b5151036201e5055762015932620068546201e401426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603881036201e6bd575060209150016001815151036201e6635760026201e5e1825162004c22565b5151036201e609576201e5f4426200628d565b505050505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603981036201e7c2575060209150016001815151036201e7685760016201e6e5825162004c22565b5151036201e70e5762015831620068546201e700426200628d565b505050509390505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603a81036201e8b9575060209150016001815151036201e85f5760016201e7ea825162004c22565b5151036201e8055762015932620068546201e700426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603b81036201e9be575060209150016001815151036201e9645760026201e8e1825162004c22565b5151036201e90a576201e8f4426200628d565b50505050905062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603c81036201eac3575060209150016001815151036201ea695760016201e9e6825162004c22565b5151036201ea0f5762015831620068546201ea01426200628d565b505050949150505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603d81036201ebba575060209150016001815151036201eb605760016201eaeb825162004c22565b5151036201eb065762015932620068546201ea01426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603e81036201ecbf575060209150016001815151036201ec655760026201ebe2825162004c22565b5151036201ec0b576201ebf5426200628d565b50505091505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603f81036201edc4575060209150016001815151036201ed6a5760016201ece7825162004c22565b5151036201ed105762015831620068546201ed02426200628d565b505095925050505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040928184036201eeba575050602001906001825151036201ee625760016201edee835162004c22565b5151036201ee0a575062015932620068546201ed02426200628d565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604182036201efbc575050602001906001825151036201ef645760026201eee2835162004c22565b5151036201ef0c57506201eef6426200628d565b50509250505062015a3262006854835162004c22565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9092604284036201efd45750620031f8925062020232565b604384036201efea5750620031f892506202043c565b60448481036201f002575050620031f892506202063e565b604585036201f019575050620031f89250620208bb565b604685036201f030575050620031f8925062020abd565b604785036201f047575050620031f8925062020cbf565b604885036201f05e575050620031f8925062020fa2565b604985036201f075575050620031f89250620212ad565b604a85036201f08c575050620031f8925062021589565b604b85036201f0a3575050620031f892506202194c565b604c85036201f0ba575050620031f8925062021af5565b604d85036201f0d1575050620031f8925062021bf9565b604e85036201f0e8575050620031f8925062021d51565b604f85036201f0ff575050620031f8925062021ed0565b605085036201f116575050620031f8925062021fd4565b91909293605581146000146201f2d6575060208401926002845151036201f27e57600192836201f147865162004c46565b5151036201f227575090829160009586945b6201f174575b50505050506200685462015831915162004c46565b90919293956201f1878383015162004c22565b51518710156201f220576201f1dd9084156201f1e85762009842906201f1c160646201f1b98b620074948c5162004c22565b51106202212c565b6201a5d96201f1d68a620074948b5162004c22565b51620060e5565b93929190836201f159565b62009842906201f20460646201f1b98b620074948c5162004c22565b6201a5d96201f2198a620074948b5162004c22565b5162006113565b956201f15f565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605681036201f457575060208401926002845151036201f3ff57600192836201f300865162004c46565b5151036201f3a8575090829160009586945b6201f32d575b50505050506200685462015932915162004c46565b90919293956201f3408383015162004c22565b51518710156201f3a1576201f37a9084156201f3855762009842906201f1c160646201f3728b620074948c5162004c22565b51106202219e565b93929190836201f312565b62009842906201f20460646201f3728b620074948c5162004c22565b956201f318565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605781036201f61b575060208401946002865151036201f5c25760026201f483875162004c46565b5151036201f56a5750600092835b6201f49f8287015162004c22565b51518510156201f53057906201f4f6856201f49f9389876000146201f5005760646201f4d96200960f94620074946201f4e1945162004c22565b511062022210565b6201a5d96201f1d689620074948d5162004c22565b949091506201f491565b60646201f4d96200960f94620074946201f51b945162004c22565b6201a5d96201f21989620074948d5162004c22565b935050939250506201f54762006854835162004c46565b5181101591826201f55757505090565b62015a5c91925062015a55905162004c46565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605881036201f7d0575060208401926002845151036201f77857600192836201f649865162004c46565b5151036201f721575090829160009586945b6201f6755750505050506200685462015831915162004c46565b90919293956201f6888383015162004c22565b51518710156201f220576201f6de9084156201f6e95762009842906201f6c260646201f6ba8b620074948c5162004c22565b511062022282565b6201a5d96201f6d78a620074948b5162004c22565b5162005d82565b93929190836201f65b565b62009842906201f70560646201f6ba8b620074948c5162004c22565b6201a5d96201f71a8a620074948b5162004c22565b5162005db7565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605981036201f949575060208401926002845151036201f8f157600192836201f7fa865162004c46565b5151036201f89a575090829160009586945b6201f8265750505050506200685462015932915162004c46565b90919293956201f8398383015162004c22565b51518710156201f3a1576201f8739084156201f87e5762009842906201f6c260646201f86b8b620074948c5162004c22565b5110620222f4565b93929190836201f80c565b62009842906201f70560646201f86b8b620074948c5162004c22565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a81036201fad3575060208401946002865151036201fa7a5760026201f975875162004c46565b5151036201fa225750600092835b6201f9918287015162004c22565b51518510156201f53057906201f9e8856201f9919389876000146201f9f25760646201f9cb6200960f94620074946201f9d3945162004c22565b511062022366565b6201a5d96201f6d789620074948d5162004c22565b949091506201f983565b60646201f9cb6200960f94620074946201fa0d945162004c22565b6201a5d96201f71a89620074948d5162004c22565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b81036201fcaa575060208401926002845151036201fc5257600192836201fb01865162004c46565b5151036201fbfb575090829160009586945b6201fb2d5750505050506200685462015831915162004c46565b90919293956201fb408383015162004c22565b51518710156201f2205783156201fbaf5760646201fb71816201fb698a620074948b5162004c22565b5110620223d8565b6201fb828862007494895162004c22565b519081101562004c30576201fba4916006620098429260031b01549062006271565b93929190836201fb13565b60646201fbc7816201fb698a620074948b5162004c22565b6201fbd88862007494895162004c22565b519081101562004c30576201fba49161039e620098429260031b01549062006271565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036201fe7d575060208401926002845151036201fe2557600192836201fcd4865162004c46565b5151036201fdce575090829160009586945b6201fd005750505050506200685462015932915162004c46565b90919293956201fd138383015162004c22565b51518710156201f3a15783156201fd825760646201fd44816201fd3c8a620074948b5162004c22565b51106202244a565b6201fd558862007494895162004c22565b519081101562004c30576201fd77916006620098429260031b01549062006271565b93929190836201fce6565b60646201fd9a816201fd3c8a620074948b5162004c22565b6201fdab8862007494895162004c22565b519081101562004c30576201fd779161039e620098429260031b01549062006271565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d8196929394961460001462020054575060208401926002845151036201fffb5760026201fead855162004c46565b5151036201ffa35750600080955b6201fec98187015162004c22565b51518710156201ff8c5783156201ff3b576064916201fefb836201fef38a620074948a5162004c22565b5110620224bc565b6201ff0c8862007494885162004c22565b519283101562004c3057620142c46201ff329160066201fec99560031b01549062006271565b9691506201febb565b6064916201ff54836201fef38a620074948a5162004c22565b6201ff658862007494885162004c22565b519283101562004c3057620142c46201ff329161039e6201fec99560031b01549062006271565b509293509350506201f54762006854835162004c46565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e0362015deb576020840192600284515103620201da576001928362020081865162004c46565b51510362020183575090829160009586945b620200ae575b50505050506200685462015b60915162004c46565b9091929395620200c18383015162004c22565b51518710156202017c57831562020130576064620200f281620200ea8a620074948b5162004c22565b51106202252e565b620201038862007494895162004c22565b519081101562004c305762020125916006620098429260031b01549062006271565b939291908362020093565b60646202014881620200ea8a620074948b5162004c22565b620201598862007494895162004c22565b519081101562004c3057620201259161039e620098429260031b01549062006271565b9562020099565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b906040810190600182515103620203e257600162020251835162004c22565b5151036202038857602001916001835151036202032e57600162020276845162004c22565b515103620202d45715620202b05762006854620202a862015831926201a4296200685460018060a01b03925162004c22565b925162004c22565b62006854620202a862015831926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906040810190600182515103620205e45760016202045b835162004c22565b5151036202058a57602001916001835151036202053057600162020480845162004c22565b515103620204d65715620204b25762006854620202a862015932926201a4296200685460018060a01b03925162004c22565b62006854620202a862015932926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040820191600183515103620208615760016202065c845162004c22565b515103620208075760200190600182515103620207ad57600262020681835162004c22565b515103620207535715620206f75760018060a01b03620206ab816201a42962006854865162004c22565b620206bb62006854845162004c22565b5111159283620206cb5750505090565b620206eb92935062015a55916201a42962006854620202a8935162004c22565b51101538808062015db6565b60018060a01b0362020713816201a4a462006854865162004c22565b6202072362006854845162004c22565b5111159283620207335750505090565b620206eb92935062015a55916201a4a462006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020a63576001620208da835162004c22565b51510362020a095760200191600183515103620209af576001620208ff845162004c22565b515103620209555715620209315762006854620202a862015831926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015831926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020c6557600162020adc835162004c22565b51510362020c0b576020019160018351510362020bb157600162020b01845162004c22565b51510362020b57571562020b335762006854620202a862015932926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015932926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604082019160018351510362020ed657600162020cdd845162004c22565b51510362020e7c576020019060018251510362020e2257600262020d02835162004c22565b51510362020dc8571562020d6c5760018060a01b0362020d2c816201b32c62006854865162004c22565b62020d3c62006854845162004c22565b511115928362020d4c5750505090565b620206eb92935062015a55916201b32c62006854620202a8935162004c22565b60018060a01b0362020d88816201b3a762006854865162004c22565b62020d9862006854845162004c22565b511115928362020da85750505090565b620206eb92935062015a55916201b3a762006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b1562020f3857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620211e257600162020fc2845162004c22565b5151036202118957602001926001845151036202113057600262020fe7855162004c22565b515103620210d7571562021069576202101360646202100b62006854865162004c22565b511062020f30565b6202102362006854845162004c22565b5190606482101562004c3057600362015a55926201583194620210526200685460018060a01b03925162004c22565b5116600052811b0160205260002054925162004c22565b6202107f60646202100b62006854865162004c22565b6202108f62006854845162004c22565b5190606482101562004c305761039b62015a55926201583194620210bf6200685460018060a01b03925162004c22565b511660005260031b0160205260002054925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202124357565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620214be576001620212cd845162004c22565b5151036202146557602001926001845151036202140c576002620212f2855162004c22565b515103620213b357156202135d576202131e60646202131662006854865162004c22565b51106202123b565b6202132e62006854845162004c22565b5190606482101562004c3057600362015a55926201593294620210526200685460018060a01b03925162004c22565b6202137360646202131662006854865162004c22565b6202138362006854845162004c22565b5190606482101562004c305761039b62015a55926201593294620210bf6200685460018060a01b03925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202151f57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820192600184515103620218f3576001620215a9855162004c22565b5151036202189a57602080930192600184515103620218425760039182620215d2865162004c22565b515103620217e45715620216e357620215fe6064620215f662006854875162004c22565b511062021517565b6202160e62006854855162004c22565b5191606483101562004c305760018060a01b039581876202163462006854845162004c22565b5116946000958652811b018352848420546202165562015a55885162004c22565b51111596876202166a575b5050505050505090565b90919293949596506202168262006854885162004c22565b51916064831015620216cf57916201c50b959391620216ac62006854620216bf9997955162004c22565b51168452811b0190522054925162004c22565b5110153880808080808062021660565b634e487b7160e01b86526032600452602486fd5b620216f96064620215f662006854875162004c22565b6202170962006854855162004c22565b51606481101562004c305760018060a01b0395866202172d62006854835162004c22565b511693600094855261039b8093821b018452858520546202175362015a55895162004c22565b511115978862021769575b505050505050505090565b9091929394959697506202178262006854895162004c22565b51926064841015620217d05791620217bf97959391620217ad620068546201c50b9997955162004c22565b511685521b0190522054925162004c22565b51101538808080808080806202175e565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620219f65760016202196a835162004c22565b5151036202199c57156202198a576201583162006854620202a862021ab8565b6201583162006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021a61575090565b908160031b60ff61039f820154161562021ab25762021a9f62021aac9262021a9761039962021aa594015462005da88762005fe7565b92906200607c565b62006271565b9162004c12565b62021a54565b50905090565b6000805b6064811062021ac9575090565b9060ff60078360031b01541615620061fd5762021aa562021aef916201a5d984620060e5565b62021abc565b906020019060018251510362021b9f57600162021b13835162004c22565b51510362021b45571562021b33576201593262006854620202a862021ab8565b6201593262006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021cf757600262021c17835162004c22565b51510362021c9d571562021c615762021c2f62021ab8565b62021c3f62006854835162004c22565b511115908162021c4d575090565b905062015a5c62015a55620202a862021ab8565b62021c6b62021a50565b62021c7b62006854835162004c22565b511115908162021c89575090565b905062015a5c62015a55620202a862021a50565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021dfb57600162021d6f835162004c22565b51510362021da1571562021d8f576201583162006854620202a862021e93565b6201583162006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021e66575090565b9060ff61039f8360031b01541615620061fd5762021aa562021e8d916201a5d98462005e5e565b62021e59565b6000805b6064811062021ea4575090565b9060ff60078360031b01541615620061fd5762021aa562021eca916201a5d98462005d82565b62021e97565b906020019060018251510362021f7a57600162021eee835162004c22565b51510362021f20571562021f0e576201593262006854620202a862021e93565b6201593262006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620220d257600262021ff2835162004c22565b5151036202207857156202203c576202200a62021e93565b6202201a62006854835162004c22565b511115908162022028575090565b905062015a5c62015a55620202a862021e93565b6202204662021e55565b6202205662006854835162004c22565b511115908162022064575090565b905062015a5c62015a55620202a862021e55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202213457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620221a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202221857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202228a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620222fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202236e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620223e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202245257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620224c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202253657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462022608576101928114620225fc576101938114620225f0576101968114620225e45761019714620225d9575050600090565b620031f89162022b3e565b50620031f89162022a59565b50620031f891620228b4565b50620031f89162022773565b50620031f891906020019060019182815151036202271957826202262d825162004c22565b515103620226bf57602082015160268110156200294257600a036200663857600091835b6202265f5750505050600090565b604081019260a09362022676858251015162004c22565b51518210156201d5da5781620074948796620226959351015162004c22565b51620226a662006854855162004c22565b5114620050f757620226b89062004c12565b9262022651565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202285a57602082015160268110156200294257600a03620066385782916000935b620227b05750505050600090565b6040810160a0620227c5818351015162004c22565b51518610156201d5da57906000855b620227f0575b505050620227e9839462004c12565b93620227a2565b620227fc855162004c22565b515181101562022854576202281a8762007494858551015162004c22565b516202282c8262007494885162004c22565b51146202284a57906202284186939262004c12565b909192620227d4565b5050505050905090565b620227da565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001906001918281515103620229ff576002620228d4825162004c22565b515103620229a557602082015160268110156200294257600a036200663857600091835b620229065750505050600090565b604081019260a0936202291d858251015162004c22565b51518210156201d5da5781856202293e82620074948a998651015162004c22565b516202294f62006854885162004c22565b511115928362022974575b505050620050f7576202296d9062004c12565b92620228f8565b510151620229889250620074949062004c22565b516202299962015a55855162004c22565b5110158138806202295a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600191828151510362022ae557602082015160268110156200294257600b036200663857600091835b62022a905750505050600090565b60408101515192835181101562022ade5762022ac762022ab282879662004c79565b5162022abf855162004c22565b519062031908565b620050f75762022ad79062004c12565b9262022a82565b5062015deb565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362022bc357602082015160268110156200294257600b036200663857600091835b62022b755750505050600090565b60408101515192835181101562022ade5762022bac62022b9782879662004c79565b5162022ba4855162004c22565b519062006589565b620050f75762022bbc9062004c12565b9262022b67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b916097811462022c405760981462022c35575050600090565b620031f89162022d51565b50602001805151620031f892906000190162022cf857600162022c64835162004c22565b51510362022c9e57602001516026811015620029425762006854620202a862022c8d92620316cf565b511462022c9957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9190916020809301600191828251510362022dd857938293946000935b62022d7d575050505050600090565b62022d89835162004c22565b51518410156201652e5781810151936026851015620029425762022dae8695620316cf565b62022dbf8262007494875162004c22565b5114620165265762022dd19062004c12565b9362022d6e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462022f34576102be811462022f28576102bf811462022f1c576102c0811462022f10576102c1811462022f04576102c2811462022ef8576102c3811462022eec576102c4811462022ee0576102c5811462022ed4576102c6811462022ec8576102c7811462022ebc576102c81462022eb157505050600090565b620031f89262024159565b50620031f89262023f5e565b50620031f89262023d59565b50620031f89262023ae9565b50620031f892620238e4565b50620031f892620236d5565b50620031f892620235b6565b50620031f8926202348f565b50620031f89262023368565b50620031f8926202320e565b50620031f892620230ba565b50620031f89262022f51565b606482101562004c30570190600090565b916020809101926001845151036202306057600162022f71855162004c22565b51510362023006571562022fcd57620202a862022fbf620158319362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b9062022f40565b90549060031b1c426200627f565b620202a862022fbf620158319362022fb8620076f6620068549560018060a01b038451166000526106c1815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602080910192600184515103620231b4576001620230da855162004c22565b5151036202315a57156202312157620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101926001845151036202330e5760026202322e855162004c22565b515103620232b45715620232805781516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b62015a3262006854835162004c22565b81516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202343557600162023386845162004c22565b515103620233db5715620233c957620076f66020620233a69201620073dc565b606481101562004c305762006854620202a8620158319261032b0154426200627f565b620076f66020620233a69201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202355c576001620234ad845162004c22565b515103620235025715620234f057620076f66020620234cd9201620073dc565b606481101562004c305762006854620202a8620159329261032b0154426200627f565b620076f66020620234cd9201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202367b576002620235d4845162004c22565b5151036202362157156202360f57620076f66020620235f49201620073dc565b606481101562004c3057620232709061032b0154426200627f565b620076f66020620235f49201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90929160409384820160019384825151036202388b5784620236f8835162004c22565b515103620238325795849596600014620237a4576000945b6202372057505050505050600090565b6202372c825162004c22565b515185101562019e5c57859460018060a01b03620237508262007494865162004c22565b5116600052602061032981526202378b620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b9288015162004c22565b511062019e53576202379d9062004c12565b9462023710565b6000945b620237b857505050505050600090565b620237c4825162004c22565b515185101562019e5c57859460018060a01b03620237e88262007494865162004c22565b51166000526020610329815262023819620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511062019e53576202382b9062004c12565b94620237a8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909291604093848201600193848251510362023a90578462023907835162004c22565b51510362023a375795849596600014620239a9576000945b6202392f57505050505050600090565b6202393b825162004c22565b515185101562019e5c57859460018060a01b036202395f8262007494865162004c22565b51166000526020610329815262023990620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e5357620239a29062004c12565b946202391f565b6000945b620239bd57505050505050600090565b620239c9825162004c22565b515185101562019e5c57859460018060a01b03620239ed8262007494865162004c22565b51166000526020610329815262023a1e620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e535762023a309062004c12565b94620239ad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023d0057600262023b0c825162004c22565b51510362023ca75784959660001462023be3576000945b62023b3357505050505050600090565b62023b3f815162004c22565b515185101562019e5c57859460018060a01b0362023b638262007494855162004c22565b51166000526020610329815262023b8c62022fbf8660002062022fb8620076f6858901620073dc565b9086019062023ba062006854835162004c22565b51811015918262023bc5575b505062019e535762023bbe9062004c12565b9462023b23565b62023bd891925062015a55905162004c22565b511015388062023bac565b6000945b62023bf757505050505050600090565b62023c03815162004c22565b515185101562019e5c57859460018060a01b0362023c278262007494855162004c22565b51166000526020610329815262023c5062022fbf8660002062022fb8620076f6858901620073dc565b9086019062023c6462006854835162004c22565b51811015918262023c89575b505062019e535762023c829062004c12565b9462023be7565b62023c9c91925062015a55905162004c22565b511015388062023c70565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023f05578462023d7b825162004c22565b51510362023eac5784959660001462023e22576000945b62023d9f57505050505090565b62023dab815162004c22565b51518510156201c51d5760018060a01b0362023dcd8662007494845162004c22565b51166000526020610329815262023e086200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b9287015162004c22565b511162019df15762023e1b869562004c12565b9462023d92565b6000945b62023e3357505050505090565b62023e3f815162004c22565b51518510156201c51d5760018060a01b0362023e618662007494845162004c22565b51166000526020610329815262023e926200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511162019df15762023ea5869562004c12565b9462023e26565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362024100578462023f80825162004c22565b515103620240a7578495966000146202401d576000945b62023fa457505050505090565b62023fb0815162004c22565b51518510156201c51d5760018060a01b0362023fd28662007494845162004c22565b511660005260206103298152620240036200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df15762024016869562004c12565b9462023f97565b6000945b6202402e57505050505090565b6202403a815162004c22565b51518510156201c51d5760018060a01b036202405c8662007494845162004c22565b5116600052602061032981526202408d6200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df157620240a0869562004c12565b9462024021565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b92916040808201926001938481515103620243665760026202417c825162004c22565b5151036202430d578495966000146202424e576000945b620241a057505050505090565b620241ac815162004c22565b51518510156201c51d5760018060a01b03620241ce8662007494845162004c22565b511660005260206103298152620241f762022fbf8560002062022fb8620076f6858801620073dc565b908501906202420b62006854835162004c22565b51811091821562024231575b505062019df1576202422a869562004c12565b9462024193565b6202424491925062015a55905162004c22565b5110388062024217565b6000945b6202425f57505050505090565b6202426b815162004c22565b51518510156201c51d5760018060a01b036202428d8662007494845162004c22565b511660005260206106c18152620242b662022fbf8560002062022fb8620076f6858801620073dc565b90850190620242ca62006854835162004c22565b518110918215620242f0575b505062019df157620242e9869562004c12565b9462024252565b6202430391925062015a55905162004c22565b51103880620242d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600193808503620243d75750620031f8935062024aa7565b60028103620243ed5750620031f8935062024b91565b60038103620244f7575050906040019180835151036202449b5762024413835162004c22565b5151036202443c57620244366200685460018060a01b0380935116935162004c22565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362024510575050620031f8935062024cd6565b6005810362024527575050620031f8935062024e1b565b600681036202453e575050620031f8935062024f60565b6007810362024555575050620031f893506202519c565b600881036202456c575050620031f89350620253fa565b6009810362024583575050620031f8935062025636565b600a81036202459a575050620031f8935062025866565b600b8103620245b1575050620031f8935062025b5d565b600c8103620245c8575050620031f8935062025d85565b600d8103620245df575050620031f8935062025fd1565b600e8103620245f6575050620031f89350620261c8565b600f81036202460d575050620031f893506202650d565b6010810362024624575050620031f8935062026704565b601181036202463b575050620031f8935062026824565b6012810362024652575050620031f8935062026944565b6013810362024669575050620031f8935062026ada565b6014810362024680575050620031f8935062026bfa565b6015810362024697575050620031f8935062026d1a565b60198103620246ae575050620031f8935062026ea3565b601a8103620246c5575050620031f8935062026fdb565b601b8103620246dc575050620031f8935062027113565b601c819592939495146000146202481f5750602001938085515103620247c65762024708855162004c22565b5151036202476d575060009015620247475750516001600160a01b03166000908152610327602052604090205490620158319062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201583190620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601d81036202495a5750602001938085515103620249015762024843855162004c22565b515103620248a8575060009015620248825750516001600160a01b03166000908152610327602052604090205490620159329062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201593290620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601e810362024a8c5750602001938451510362024a335760026202497f855162004c22565b515103620249da575060009015620249bc5750516001600160a01b03166000908152610327602052604090205462015a3262006854835162004c22565b90516001600160a01b031681526106bf602052604090205462023270565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b9294509291601f141590506200663857620031f89262027282565b91909160018251510362024b38571562024b0457620031f89160018060a01b039051166000526103206020526200112762024afe62024aef6001604060002001935162004c22565b51926040519283809262002bd5565b62031908565b620031f89160018060a01b039051166000526106b86020526200112762024afe62024aef6001604060002001935162004c22565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b916020019160018351510362024c7a57600162024baf845162004c22565b51510362024c1b571562024bec57516001600160a01b031660009081526103206020526040902060020154905162015b6090620068549062004c22565b516001600160a01b031660009081526106b86020526040902060020154905162015b6090620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024dbf57600162024cf4845162004c22565b51510362024d60571562024d3157516001600160a01b03166000908152610320602052604090206002015490516201583190620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024f0457600162024e39845162004c22565b51510362024ea5571562024e7657516001600160a01b03166000908152610320602052604090206002015490516201593290620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202514057600262024f81845162004c22565b515103620250e05762024f9962006854845162004c22565b5162024faa62015a55855162004c22565b51106202505a57156202502b5760018060a01b0390818451166000526103209182825260026040600020015462024fe662006854865162004c22565b511115948562024ff857505050505090565b9091929394505116600052526202501d62015a55600260406000200154925162004c22565b511015388080808062016526565b60018060a01b0390818451166000526106b89182825260026040600020015462024fe662006854865162004c22565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202531b57620251bf835162004c22565b515115620252b3579483949560001462025243576000935b620251e6575050505050600090565b620251f2835162004c22565b51518410156201652e57849360018060a01b0383511660005261032082526002604060002001546202522a8262007494875162004c22565b511462016526576202523c9062004c12565b93620251d7565b6000935b62025256575050505050600090565b62025262835162004c22565b51518410156201652e57849360018060a01b038351166000526106b882526002604060002001546202529a8262007494875162004c22565b51146201652657620252ac9062004c12565b9362025247565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202537f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202555757600262025418845162004c22565b515103620254f7578015620254db576202544560646202543d62006854865162004c22565b511062025377565b1562025492576202545b62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201583162015a55604060002054925162004c22565b620254a262006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201583162015a55604060002054925162004c22565b620254f160646202543d62006854865162004c22565b62025445565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620255bb57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202579357600262025654845162004c22565b5151036202573357801562025717576202568160646202567962006854865162004c22565b5110620255b3565b15620256ce576202569762006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201593262015a55604060002054925162004c22565b620256de62006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201593262015a55604060002054925162004c22565b6202572d60646202567962006854865162004c22565b62025681565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620257f757565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b91909160208092019160018351510362025a8d57600391826202588a855162004c22565b51510362025a2a57801562025a0e57620258b76064620258af62006854875162004c22565b5110620257ef565b156202596b57620258cd62006854845162004c22565b5191606483101562004c305760018060a01b03948186825116946000958652811b01835260408420546202590662015a55875162004c22565b5111159586620259195750505050505090565b909192939495506202593062006854875162004c22565b51916064831015620216cf5751168452811b019052604090205490516202595c906201c50b9062004c22565b51101538808080808062019e53565b6202597b62006854845162004c22565b51606481101562004c305760018060a01b03948581511693600094855261039b8093821b0184526040852054620259b762015a55885162004c22565b5111159687620259cb575050505050505090565b9091929394959650620259e362006854885162004c22565b51926064841015620217d057511685521b01905260409020549051620216bf906201c50b9062004c22565b62025a246064620258af62006854875162004c22565b620258b7565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b1562025aee57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025cb457600262025b7b845162004c22565b51510362025c5a57801562025c3e5762025ba8606462025ba062006854865162004c22565b511062025ae6565b1562025bf55762025bbe62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b0160205262015b6062015a55604060002054925162004c22565b62025c0562006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b0160205262015b6062015a55604060002054925162004c22565b62025c54606462025ba062006854865162004c22565b62025ba8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b1562025d1657565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025f7757600262025da3845162004c22565b51510362025f1d57801562025f015762025dd0606462025dc862006854865162004c22565b511062025d0e565b1562025e745762025de662006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e605762025e3762006854845162004c22565b51906064821015620014905750620202a86201583192600662015a559360031b01549062005007565b634e487b7160e01b81526011600452602490fd5b62025e8462006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e605762025ed762006854845162004c22565b51906064821015620014905750620202a8620158319261039e62015a559360031b01549062005007565b62025f17606462025dc862006854865162004c22565b62025dd0565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b91602001916001835151036202616e57600262025fef845162004c22565b51510362026114571562026087576202600d62006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202605e62006854845162004c22565b51906064821015620014905750620202a86201593292600662015a559360031b01549062005007565b6202609762006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e6057620260ea62006854845162004c22565b51906064821015620014905750620202a8620159329261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90602080930191600183515103620264b3576002620261e8845162004c22565b51510362026459571562026322576202620662006854835162004c22565b516064908181101562004c305760018060a01b03948584511693600094855260038093811b0182526040852054848102908082048614901517156202630e576202625562006854885162004c22565b5185811015620217d057841b60060154620262709162005007565b6202628062015a55885162004c22565b511115968762026294575050505050505090565b9091929394959650620262ac62006854885162004c22565b519185831015620217d05751168552821b820190526040832054828102939080159085048414171562025e6057620262e962006854865162004c22565b51928310156200149057501b60060154620216bf916201c50b91620202a89162005007565b634e487b7160e01b86526011600452602486fd5b6202633262006854835162004c22565b519060648083101562004c305760018060a01b03948583511693600094855261039b809160031b018252604085205493838502948086048514901517156202630e576202638462006854885162004c22565b519484861015620217d057620263a59061039e809760031b01549062005007565b620263b562015a55895162004c22565b5111159788620263ca57505050505050505090565b909192939495969750620263e362006854895162004c22565b51918583101562026445575116865260031b0190526040832054928184029380850483149015171562025e60576202642062006854865162004c22565b519182101562001490575060031b0154620217bf916201c50b91620202a89162005007565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620266aa5760026202652b845162004c22565b515103620266505715620265c3576202654962006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202659a62006854845162004c22565b51906064821015620014905750620202a862015b6092600662015a559360031b01549062005007565b620265d362006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e60576202662662006854845162004c22565b51906064821015620014905750620202a862015b609261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620267ca57600162026722845162004c22565b515103620267705780156202675057620202a86200685491620158319360018060a01b03905116906201a63a565b505162015831906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620268ea57600162026842845162004c22565b515103620268905780156202687057620202a86200685491620159329360018060a01b03905116906201a63a565b505162015932906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026a8057600262026963835162004c22565b51510362026a26578015620269d45782516001600160a01b03906202698b908216836201a63a565b6202699b62006854855162004c22565b5111159384620269ac575050505090565b620269c793945091620202a89162015a55935116906201a63a565b51101538808080620050f7565b5081516001600160a01b0390620269ed9082166201a5e7565b620269fd62006854845162004c22565b511115928362026a0d5750505090565b620206eb92935062015a5591620202a89151166201a5e7565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026ba057600162026af8845162004c22565b51510362026b4657801562026b2657620202a86200685491620158319360018060a01b03905116906201b536565b505162015831906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026cc057600162026c18845162004c22565b51510362026c6657801562026c4657620202a86200685491620159329360018060a01b03905116906201b536565b505162015932906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026e4957600262026d39835162004c22565b51510362026def57801562026d9d5782516001600160a01b039062026d61908216836201b536565b62026d7162006854855162004c22565b511115938462026d82575050505090565b620269c793945091620202a89162015a55935116906201b536565b5081516001600160a01b039062026db69082166201b4e3565b62026dc662006854845162004c22565b511115928362026dd65750505090565b620206eb92935062015a5591620202a89151166201b4e3565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026f8157600162026ec1845162004c22565b51510362026f27571562026efb57516001600160a01b03166000908152610325602052604090205490516201583190620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620270b957600162026ff9845162004c22565b5151036202705f57156202703357516001600160a01b03166000908152610325602052604090205490516201593290620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020809101916001835151036202722857600262027134845162004c22565b515103620271ce5715620271a25760018060a01b039081845116600052610325918282526040600020546202716e62006854865162004c22565b51111594856202718057505050505090565b9091929394505116600052526202501d62015a55604060002054925162004c22565b60018060a01b0390818451166000526106bd918282526040600020546202716e62006854865162004c22565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b909160400160019283825151036202735e57839215620272fd576000925b620272ae5750505050600090565b620272ba825162004c22565b5151831015620161f557839260018060a01b038083511690620272e38362007494875162004c22565b511614620050f757620272f69062004c12565b92620272a0565b6000925b6202730f5750505050600090565b6202731b825162004c22565b5151831015620161f557839260018060a01b038083511690620273448362007494875162004c22565b511614620050f757620273579062004c12565b9262027301565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9161012d81146202764b5761012e81146202763f5761012f811462027633576101308114620276275761013181146202761b5761013281146202760f57610133811462027603576101348114620275f7576101358114620275eb576101368114620275df576101378114620275d3576101388114620275c7576101398114620275bb5761013a8114620275af5761013b8114620275a35761013c8114620275975761013d81146202758a5761013e81146202757d5761013f81146202757057610140811462027563576101418114620275575761014281146202754b5761014381146202753f57610144811462027533576101458114620275275761014681146202751b5761014781146202750f57610173811462027502576101748114620274f65761017514620274eb575050600090565b620031f89162029e66565b50620031f89162029ca3565b5050620031f89062029c47565b50620031f89162029af9565b50620031f891620297af565b50620031f89162029635565b50620031f891620294b4565b50620031f891620292ef565b50620031f8916202918d565b50620031f89162029012565b5050620031f89062028f0b565b5050620031f89062028df6565b5050620031f89062028cf4565b5050620031f89062028bec565b50620031f89162028a6b565b50620031f891620288ea565b50620031f89162028767565b50620031f891620285e4565b50620031f89162028463565b50620031f891620282e2565b50620031f8916202815f565b50620031f89162027fdc565b50620031f89162027e9d565b50620031f89162027d5e565b50620031f89162027c39565b50620031f89162027b15565b50620031f891620279d7565b50620031f89162027899565b50620031f89162027775565b50620031f891906020019060019182815151036202771c57602082015160268110156200294257600d0362006638576202768683926202a012565b6000935b620276985750505050600090565b620276a4825162004c22565b5151841015620161f5576000835b620276cc575b50620276c5839462004c12565b936202768a565b93929181518510156202771357620276ea8462007494835162004c22565b51620276f7868462004c79565b511462015cb2576202770b83949562004c12565b9092620276b2565b919293620276b8565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202784057602082015160268110156200294257600d036200663857620277aa83926202a012565b6000935b620277bc5750505050600090565b620277c8825162004c22565b5151841015620161f5576000835b620277f0575b50620277e9839462004c12565b93620277ae565b939291815185101562027837576202780e8462007494835162004c22565b516202781b868462004c79565b511462015cb2576202782f83949562004c12565b9092620277d6565b919293620277dc565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202797e57602082015160268110156200294257600d036200663857620278ce83926202a012565b6000925b620278dd5750505090565b620278e9825162004c22565b515183101562015e7257600080855b62027918575b501562015deb5762027911849362004c12565b92620278d2565b829593919495518110156202797357620279388662007494845162004c22565b5162027945828562004c79565b51146202796657906202795a84939262004c12565b909395949192620278f8565b50918094935038620278fe565b9493909294620278fe565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027abc57602082015160268110156200294257600d03620066385762027a0c83926202a012565b6000925b62027a1b5750505090565b62027a27825162004c22565b515183101562015e7257600080855b62027a56575b501562015deb5762027a4f849362004c12565b9262027a10565b8295939194955181101562027ab15762027a768662007494845162004c22565b5162027a83828562004c79565b511462027aa4579062027a9884939262004c12565b90939594919262027a36565b5091809493503862027a3c565b949390929462027a3c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027be057602082015160268110156200294257600e03620066385762027b4a83926202a012565b6000935b62027b5c5750505050600090565b62027b68825162004c22565b5151841015620161f5576000835b62027b90575b5062027b89839462004c12565b9362027b4e565b939291815185101562027bd75762027bae8462007494835162004c22565b5162027bbb868462004c79565b511462015cb25762027bcf83949562004c12565b909262027b76565b91929362027b7c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027d0457602082015160268110156200294257600e03620066385762027c6e83926202a012565b6000935b62027c805750505050600090565b62027c8c825162004c22565b5151841015620161f5576000835b62027cb4575b5062027cad839462004c12565b9362027c72565b939291815185101562027cfb5762027cd28462007494835162004c22565b5162027cdf868462004c79565b511462015cb25762027cf383949562004c12565b909262027c9a565b91929362027ca0565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027e4357602082015160268110156200294257600e03620066385762027d9383926202a012565b6000925b62027da25750505090565b62027dae825162004c22565b515183101562015e7257600080855b62027ddd575b501562015deb5762027dd6849362004c12565b9262027d97565b8295939194955181101562027e385762027dfd8662007494845162004c22565b5162027e0a828562004c79565b511462027e2b579062027e1f84939262004c12565b90939594919262027dbd565b5091809493503862027dc3565b949390929462027dc3565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027f8257602082015160268110156200294257600e03620066385762027ed283926202a012565b6000925b62027ee15750505090565b62027eed825162004c22565b515183101562015e7257600080855b62027f1c575b501562015deb5762027f15849362004c12565b9262027ed6565b8295939194955181101562027f775762027f3c8662007494845162004c22565b5162027f49828562004c79565b511462027f6a579062027f5e84939262004c12565b90939594919262027efc565b5091809493503862027f02565b949390929462027f02565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202810557600262027ffc825162004c22565b515103620280ab57602082015160268110156200294257600d0362006638576202802783926202a012565b906000925b6202803a5750505050600090565b8151831015620161f557826202805285948462004c79565b516202806362006854845162004c22565b5111158062028084575b620050f7576202807d9062004c12565b926202802c565b5062028091818462004c79565b51620280a262015a55845162004c22565b5110156202806d565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001906001918281515103620282885760026202817f825162004c22565b5151036202822e57602082015160268110156200294257600d036200663857620281aa83926202a012565b906000925b620281bd5750505050600090565b8151831015620161f55782620281d585948462004c79565b51620281e662006854845162004c22565b5111158062028207575b620050f757620282009062004c12565b92620281af565b5062028214818462004c79565b516202822562015a55845162004c22565b511015620281f0565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202840957600262028302825162004c22565b515103620283af57602082015160268110156200294257600d0362006638576202832d83926202a012565b60009182945b6202834057505050905090565b815185101562015cba5762028356858362004c79565b516202836762006854835162004c22565b5111801562028389575b62015cb25762028382849562004c12565b9462028333565b5062028396858362004c79565b51620283a762015a55835162004c22565b511062028371565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202858a57600262028483825162004c22565b5151036202853057602082015160268110156200294257600d036200663857620284ae83926202a012565b60009182945b620284c157505050905090565b815185101562015cba57620284d7858362004c79565b51620284e862006854835162004c22565b511180156202850a575b62015cb25762028503849562004c12565b94620284b4565b5062028517858362004c79565b516202852862015a55835162004c22565b5110620284f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202870d57600262028604825162004c22565b515103620286b357602082015160268110156200294257600e0362006638576202862f83926202a012565b906000925b620286425750505050600090565b8151831015620161f557826202865a85948462004c79565b516202866b62006854845162004c22565b511115806202868c575b620050f757620286859062004c12565b9262028634565b5062028699818462004c79565b51620286aa62015a55845162004c22565b51101562028675565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202889057600262028787825162004c22565b5151036202883657602082015160268110156200294257600e036200663857620287b283926202a012565b906000925b620287c55750505050600090565b8151831015620161f55782620287dd85948462004c79565b51620287ee62006854845162004c22565b511115806202880f575b620050f757620288089062004c12565b92620287b7565b506202881c818462004c79565b516202882d62015a55845162004c22565b511015620287f8565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028a115760026202890a825162004c22565b515103620289b757602082015160268110156200294257600e0362006638576202893583926202a012565b60009182945b6202894857505050905090565b815185101562015cba576202895e858362004c79565b516202896f62006854835162004c22565b5111801562028991575b62015cb2576202898a849562004c12565b946202893b565b506202899e858362004c79565b51620289af62015a55835162004c22565b511062028979565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028b9257600262028a8b825162004c22565b51510362028b3857602082015160268110156200294257600e03620066385762028ab683926202a012565b60009182945b62028ac957505050905090565b815185101562015cba5762028adf858362004c79565b5162028af062006854835162004c22565b5111801562028b12575b62015cb25762028b0b849562004c12565b9462028abc565b5062028b1f858362004c79565b5162028b3062015a55835162004c22565b511062028afa565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602080820190815160268110156200294257600d14801562028cde575b62028c905750805160268110156200294257600f1490811562028c79575b5062028c335750600090565b6000805b6060604084015101518051821015620166ee5762028c588260e09262004c79565b5101511562021ab257604062028c7060609262004c12565b91505062028c37565b90505160268110156200294257600c143862028c27565b60009150815b8160408501510151805182101562028cd45762028cb68260019262004c79565b51151503620166e75762028ccc60409162004c12565b905062028c96565b5050505050600190565b50815160268110156200294257600e1462028c09565b602080820190815160268110156200294257600d14801562028de0575b62028d9c5750805160268110156200294257600f1490811562028d85575b5062028d3b5750600090565b6000805b6060604084015101518051821015620166ee5760e062028d628360019362004c79565b51015115151462021ab257604062028d7c60609262004c12565b91505062028d3f565b90505160268110156200294257600c143862028d2f565b60009150815b8160408501510151805182101562028cd45762028dc28260019262004c79565b51151514620166e75762028dd860409162004c12565b905062028da2565b50815160268110156200294257600e1462028d11565b602080820190815160268110156200294257600d14801562028ef5575b62028ea75750805160268110156200294257600f1490811562028e90575b5062028e3d5750600090565b60005b60606040830151015180518210156200663857819060e062028e66600193849362004c79565b51015115151462028e8a5750604062028e8160609262004c12565b91505062028e40565b91505090565b90505160268110156200294257600c143862028e31565b905060005b8160408401510151805182101562015deb57819062028ecf600192839262004c79565b5115151462028eee575062028ee660409162004c12565b905062028eac565b9250505090565b50815160268110156200294257600e1462028e13565b602080820190815160268110156200294257600d14801562028ffc575b62028fb55750805160268110156200294257600f1490811562028f9e575b5062028f525750600090565b60005b6060604083015101518051821015620066385762028f768260e09262004c79565b5101511562028f9757604062028f8e60609262004c12565b91505062028f55565b5050600190565b90505160268110156200294257600c143862028f46565b905060005b8160408401510151805182101562015deb57819062028fdd600192839262004c79565b5115150362028eee575062028ff460409162004c12565b905062028fba565b50815160268110156200294257600e1462028f28565b602080920191600192838151510362029133576202903284915162004c22565b515103620290da57808201805160268110156200294257600f14159081620290c2575b506200663857600091835b6202906e5750505050600090565b60408101926060845101519384518210156201d5da57620290a96200685460a0866202909c868b9a62004c79565b5101519351015162004c22565b5114620050f757620290bb9062004c12565b9262029060565b90505160268110156200294257600c14153862029055565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202929557818301805160268110156200294257600f141590816202927d575b5062015deb5783926000945b620291d6575050505050600090565b6040810160608082510151518710156202927557906000865b6202920b575b50505062029204849562004c12565b94620291c7565b62029217855162004c22565b51518110156202926f57856202923289858551015162004c79565b510151620292468262007494885162004c22565b51146202926457906202925b87939262004c12565b909192620291ef565b505050505050905090565b620291f5565b505062015fff565b90505160268110156200294257600c141538620291bb565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202945a57600262029310825162004c22565b5151036202940057818301805160268110156200294257600f14159081620293e8575b5062015deb57600092845b6202934d575050505050600090565b60408101936060948581510151958651831015620293df578286918262029376838c9b62004c79565b5101516202938962006854895162004c22565b5111159384620293af575b505050506201652657620293a89062004c12565b936202933e565b620293bf93945051015162004c79565b510151620293d262015a55855162004c22565b5110158482388062029394565b50505062015fff565b90505160268110156200294257600c14153862029333565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092016001928382515103620295dc5783620294d3835162004c22565b5151036202957d57808301805160268110156200294257600f1415908162029565575b5062015deb57600092845b62029510575050505050600090565b6060604082015101519384518110156202955e57826202953282889762004c79565b5101516202954562006854865162004c22565b51106201652657620295579062004c12565b9362029501565b5062015fff565b90505160268110156200294257600c141538620294f6565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b6020809201600192838251510362029756578362029654835162004c22565b515103620296f757808301805160268110156200294257600f14159081620296df575b5062015deb57600092845b62029691575050505050600090565b6060604082015101519384518110156202955e5782620296b382889762004c79565b510151620296c662006854865162004c22565b51116201652657620296d89062004c12565b9362029682565b90505160268110156200294257600c14153862029677565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b9060200190600191828151510362029a9f5782620297ce825162004c22565b51510362029a3f5760208201805160268110156200294257600f1415908162029a27575b5062006638576000939291825b6202980e575b50600093505050565b604081019460608087510151805183101562029a1e5762029834836202983b9262004c79565b51620055ad565b90600691828110156200294257158062029a05575b620299ab57620298696202983484838b51015162004c79565b828110156200294257861480620299eb575b620299ab57620298946202983484838b51015162004c79565b82811015620029425760028091149081620299d0575b50620299ab57620298c46202983484838b51015162004c79565b82811015620029425760038091149081620299b5575b50620299ab57620298f46202983484838b51015162004c79565b9782891015620029425760048099148062029991575b6202998657836202992392620298349251015162004c79565b908110156202997157849596506005809114908162029956575b50620050f7576202994e9062004c12565b9493620297ff565b90506202996862006854855162004c22565b5114386202993d565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b5088620299a362006854885162004c22565b51146202990a565b5093955050505050565b9050620299c762006854875162004c22565b511438620298da565b9050620299e262006854875162004c22565b511438620298aa565b5085620299fd62006854875162004c22565b51146202987b565b5062029a1662006854865162004c22565b511562029850565b50505062029805565b90505160268110156200294257600c141538620297f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362029bed5760208201805160268110156200294257600f1415908162029bd5575b50620066385782916000935b62029b415750505050600090565b6040810160608082510151518610156201d5da57906000855b62029b76575b50505062029b6f839462004c12565b9362029b33565b62029b82855162004c22565b515181101562029bcf578262029b9d88828551015162004c79565b51015162029bb18262007494885162004c22565b51146202284a579062029bc686939262004c12565b90919262029b5a565b62029b60565b90505160268110156200294257600c14153862029b27565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602081015160268110156200294257601303620075075760005b604080830151015180518210156200663857819060c062029c86600193849362004c79565b51015115151462028e8a575062029c9d9062004c12565b62029c61565b60209182018051516000949360019390916000190162029e0c57600262029ccb845162004c22565b51510362029db257818101516026811015620029425760130362029da8576000959493929190835b62029d02575b50505050909150565b604080820190808251015180518a101562029d9f5784918262029d278c809462004c79565b51015162029d3a62006854895162004c22565b511115938462029d6f575b5050505062029d655762029d5c8495969762004c12565b96959462029cf3565b5050509150915090565b62029d7f93945051015162004c79565b51015162029d9262015a55855162004c22565b5110158288388062029d45565b50505062029cf9565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001600191828251510362029fb7578262029e84835162004c22565b51510362029f5957602081015160268110156200294257601303620066385782916000935b62029eb75750505050600090565b6040808301908082510151518610156201d5da57906000855b62029eec575b50505062029ee5839462004c12565b9362029ea9565b62029efc87848451015162004c79565b51515181101562029f535762029f248162029f1c89868651015162004c79565b515162004c79565b5162029f3562006854865162004c22565b51146202284a579062029f4a86939262004c12565b90919262029ed0565b62029ed6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b602090818101805160268110156200294257600d149081156202a12d575b506202a0525750506040516202a0468162002a5e565b60008152600036813790565b6040019160a0916202a0746202a06c848651015162004c22565b515162004d95565b93600092835b6202a089868451015162004c22565b51518110156202a0e6576202a0a381858551015162004c79565b516202a0c1575b6202a0b96202a0899162004c12565b90506202a07a565b936202a0b96202a0dc828762001a9c6202a089958c62004c79565b959150506202a0aa565b50935050506202a0f68162004d95565b9060005b8181106202a109575090925050565b806202a11a6202a127928762004c79565b5162001a9c828662004c79565b6202a0fa565b90505160268110156200294257600e14386202a030565b9161025981146202a4c05761025a81146202a3d05761025b81146202a2e05761025c81146202a1ca5761025d81146202a1be5761025e81146202a1b25761025f81146202a1a657610260146202a19b575050600090565b620031f8916202a97e565b50620031f8916202a804565b50620031f8916202a6f3565b50620031f8916202a5b0565b50602001906001825151036202a2865760026202a1e8835162004c22565b5151036202a22c57602001908151516202a20762006854835162004c22565b51111591826202a21657505090565b62015a5c91925062015a55905151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a3765760016202a2fe835162004c22565b5151036202a31c5762006854602062015b6092015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a4665760016202a3ee835162004c22565b5151036202a40c576200685460206201593292015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a5565760016202a4de835162004c22565b5151036202a4fc576200685460206201583192015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919091602080930160019182825151036202a69957826202a5d2835162004c22565b5151036202a63f57938293946000935b6202a5f1575050505050600090565b818101519384518110156202955e576202a616620076f684620067ee848a9962004c79565b6202a62662006854865162004c22565b511462016526576202a6389062004c12565b936202a5e2565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202a7aa578293946000945b6202a71e575050505050600090565b8281018051518610156202955e576000855b6202a74b575b50506202a744849562004c12565b946202a70f565b6202a757845162004c22565b51518110156202a7a4576202a777620076f686620067ee8a865162004c79565b6202a7888262007494875162004c22565b51146202284a57906202a79c869262004c12565b90916202a730565b6202a736565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91909160208093019060019182815151036202a92457846202a827825162004c22565b5151920191825151036202a8a95782939460009283955b6202a84d575b50505050905090565b805180518710156202a8a257620076f683620067ee896202a86e9462004c79565b6202a87f8762007494865162004c22565b51036202a899576202a892859662004c12565b956202a83e565b50505091505090565b506202a844565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202aa4e578293946000935b6202a9a6575050505090565b8281018051518510156202aa4757856000918183905b6202a9de575b5050501562015fff576202a9d7859462004c12565b936202a99a565b6202a9ea865162004c22565b51518110156202aa41576202aa0a620076f688620067ee8b865162004c79565b6202aa1b8262007494895162004c22565b51146202aa34576202aa2d9062004c12565b826202a9bc565b505090508538806202a9c2565b6202a9c2565b50620050f7565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916101cd81146202aafa576101ce81146202aaee576101cf81146202aae2576101d0146202aad7575050600090565b620031f8916202b108565b50620031f8916202aee6565b50620031f8916202acf3565b50620031f8919060200160019182825151036202ac995760026202ab1f835162004c22565b5151036202ac3f576202ab32816202b2fb565b1562006638576202ab43906202b358565b9180939150518251036202abd457600092845b6202ab65575050505050600090565b80518410156201652e57836202ab7d86958362004c79565b516202ab8e62006854855162004c22565b5114806202abae575b62016526576202aba79062004c12565b936202ab56565b506202abbb818562004c79565b516202abcc62015a55855162004c22565b51106202ab97565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202ae8c5760026202ad12835162004c22565b5151036202ae32576202ad25816202b2fb565b1562006638576202ad36906202b358565b9180939150518251036202adc757600092845b6202ad58575050505050600090565b80518410156201652e57836202ad7086958362004c79565b516202ad8162006854855162004c22565b5114806202ada1575b62016526576202ad9a9062004c12565b936202ad49565b506202adae818562004c79565b516202adbf62015a55855162004c22565b51116202ad8a565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b0ae5760036202af05835162004c22565b5151036202b054576202af18816202b2fb565b1562006638576202af29906202b358565b9180939150518251036202afe957600092845b6202af4b575050505050600090565b80518410156201652e57836202af6386958362004c79565b516202af7462006854855162004c22565b5114806202afc2575b806202af9b575b62016526576202af949062004c12565b936202af3c565b506202afa8818562004c79565b516202afb96201c50b855162004c22565b5110156202af84565b506202afcf818562004c79565b516202afe062015a55855162004c22565b5111156202af7d565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b2a15760026202b127835162004c22565b5151036202b247576202b13a816202b2fb565b1562006638576202b14b906202b358565b9180939150518251036202b1dc57600092845b6202b16d575050505050600090565b80518410156201652e57836202b18586958362004c79565b516202b19662006854855162004c22565b5114806202b1b6575b62016526576202b1af9062004c12565b936202b15e565b506202b1c3818562004c79565b516202b1d462015a55855162004c22565b51146202b19f565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020018051602681101562002942576014149081156202b340575b81156202b329575b5062022c9957600090565b90505160268110156200294257601e14386202b31e565b8091505160268110156200294257601514906202b316565b6202b363816202b2fb565b156202b46957602081018051602681101562002942576014146202b454578051602681101562002942576015146202b41d575160268110156200294257601e146202b3eb57506040516202b3b78162002a5e565b60008152604051916202b3ca8362002a5e565b60008352604051916202b3dd8362002a5e565b600083526000368137929190565b604001906202b3ff60a08351015162004c22565b51906202b41660a06200749b818651015162004c46565b5191929190565b50604001906202b43260a08351015162004c22565b51906202b41660a06202b449818651015162004c57565b519451015162004c68565b50604001906202b3ff60a08351015162004c22565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202b5b5576101b081146202b5a9576101b181146202b59d576101b281146202b591576101b381146202b585576101b481146202b579576101b581146202b56d576101b6146202b562575050600090565b620031f8916202bffe565b50620031f8916202be59565b50620031f8916202bcf4565b50620031f8916202bb8f565b50620031f8916202ba2a565b50620031f8916202b885565b50620031f8916202b720565b50620031f891906020019060019182815151036202b6c657826202b5da825162004c22565b5151036202b66c576020820151602681101562002942576011036200663857600091835b6202b60c5750505050600090565b604081019260a0936202b623858251015162004c22565b51518210156201d5da57816200749487966202b6429351015162004c22565b516202b65362006854855162004c22565b5110620050f7576202b6659062004c12565b926202b5fe565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b82b57826202b73f825162004c22565b5151036202b7d1576020820151602681101562002942576011036200663857600091835b6202b7715750505050600090565b604081019260a0936202b788858251015162004c22565b51518210156201d5da57816200749487966202b7a79351015162004c22565b516202b7b862006854855162004c22565b5111620050f7576202b7ca9062004c12565b926202b763565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b9d05760026202b8a5825162004c22565b5151036202b976576020820151602681101562002942576011036200663857600091835b6202b8d75750505050600090565b604081019260a0936202b8ee858251015162004c22565b51518210156201d5da5781856202b90f82620074948a998651015162004c22565b516202b92062006854885162004c22565b51111592836202b945575b505050620050f7576202b93e9062004c12565b926202b8c9565b5101516202b9599250620074949062004c22565b516202b96a62015a55855162004c22565b5110158138806202b92b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bb3557826202ba49825162004c22565b5151036202badb576020820151602681101562002942576011036200663857600091835b6202ba7b5750505050600090565b604081019260a0936202ba92858251015162004c22565b51518210156201d5da57816200749487966202bab19351015162004c22565b516202bac262006854855162004c22565b5114620050f7576202bad49062004c12565b926202ba6d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bc9a57826202bbae825162004c22565b5151036202bc40576020820151602681101562002942576012036200663857600091835b6202bbe05750505050600090565b604081019260a0936202bbf7858251015162004c22565b51518210156201d5da57816200749487966202bc169351015162004c22565b516202bc2762006854855162004c22565b5110620050f7576202bc399062004c12565b926202bbd2565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bdff57826202bd13825162004c22565b5151036202bda5576020820151602681101562002942576012036200663857600091835b6202bd455750505050600090565b604081019260a0936202bd5c858251015162004c22565b51518210156201d5da57816200749487966202bd7b9351015162004c22565b516202bd8c62006854855162004c22565b5111620050f7576202bd9e9062004c12565b926202bd37565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bfa45760026202be79825162004c22565b5151036202bf4a576020820151602681101562002942576012036200663857600091835b6202beab5750505050600090565b604081019260a0936202bec2858251015162004c22565b51518210156201d5da5781856202bee382620074948a998651015162004c22565b516202bef462006854885162004c22565b51111592836202bf19575b505050620050f7576202bf129062004c12565b926202be9d565b5101516202bf2d9250620074949062004c22565b516202bf3e62015a55855162004c22565b5110158138806202beff565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202c10957826202c01d825162004c22565b5151036202c0af576020820151602681101562002942576012036200663857600091835b6202c04f5750505050600090565b604081019260a0936202c066858251015162004c22565b51518210156201d5da57816200749487966202c0859351015162004c22565b516202c09662006854855162004c22565b5114620050f7576202c0a89062004c12565b926202c041565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b156202c16b57565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202c1ba8162002edc565b6202c1c86200dbbb62031666565b6202c1d38162002edc565b600181036202c1f157506202c1eb6200dbe762031666565b61038f55565b6202c1fc8162002edc565b600281036202c20c575061039055565b6202c2178162002edc565b600381036202c227575061039155565b806202c23560049262002edc565b146202c23e5750565b61039255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b82518110156202c9df5760e06202c307828562004c79565b510151156202c6be576202c32062029834828562004c79565b600680821015620029425760049182036202c46b575060209060016003836202c34a868962004c79565b51015106036202c3675750506202c3619062004c12565b6202c2ef565b62004c0e82846202c45060636202c3986202c391856202c388868e62004c79565b51015162005028565b9362005028565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202c3d462004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c3fd82518093601396878501910162002d20565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002ab3565b5193849362461bcd60e51b8552840152602483019062002d45565b6202c47b62029834848762004c79565b818110156201d190576001036202c58b575060209060026003836202c4a1868962004c79565b51015106036202c4b85750506202c3619062004c12565b62004c0e82846202c450605d6202c4d96202c391856202c388868e62004c79565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202c51562004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c53e82518093601396878501910162002d20565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002ab3565b6202c59b62029834848762004c79565b90811015620144ba576002036202c6a2576020906003826202c5be858862004c79565b510151066202c5d45750506202c3619062004c12565b62004c0e82846202c4506202c5fa6202c5f3846202c388858d62004c79565b9262005028565b916202c69360409384519586936202c61862004ce38387016202c2b3565b0160008051602062031c4883398151915281528151906202c642826013948d868501910162002d20565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002ab3565b60405162461bcd60e51b815290819062004c0e9082016202c244565b6202c6ce62029834828562004c79565b6006908181101562002942576005036202c7e95750602060016003826202c6f6858862004c79565b51015106036202c70c57506202c3619062004c12565b62004c0e826202c7cc60526202c72d6202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202c76862004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c792826013958c878501910162002d20565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002ab3565b5192839262461bcd60e51b84526004840152602483019062002d45565b6202c7f962029834838662004c79565b9080821015620029425760039182036202c90857506002602091826202c820858862004c79565b51015106036202c83657506202c3619062004c12565b62004c0e826202c7cc605c6202c8576202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202c89262004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c8bc826013958c878501910162002d20565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002ab3565b6202c91862029834848762004c79565b9081101562002942576002036202c9c457602090816202c939848762004c79565b510151066202c94e57506202c3619062004c12565b62004c0e826202c7cc6202c96d6202c5f3856202c38881988b62004c79565b916202c9b560409384519788936202c98b62004ce38387016202c27c565b0160008051602062031c4883398151915281528151906202c642826013948b868501910162002d20565b03601f19810186528562002ab3565b60405162461bcd60e51b81528062004c0e600482016202c244565b509050565b156202c9ec57565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202ca7557565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202cacd57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202cb2e57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202cb8f57565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202cbe857565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202cc4a57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202ccad57565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202cd1357565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202cd7557565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202cdcd57565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202ce2c57565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202ce8557565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202cede60c08351015162004c22565b51916202cf0060a06202cef5818451015162004c22565b519251015162004c46565b51936202cf15845183511462000ee962031533565b6202cf28845186511462000ee962031533565b60005b84518110156202cf84576202cf41818462004c79565b5190606482101562004c30576202cf7e9160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202cf2b565b5092919360005b83518110156202d0ae576202cfa1818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202cfe060406000205462007da7868962004c79565b906202cfed868a62004c79565b51918783101562004c3057846202d01a93878f5116600052811b01845260406000205562000ee962031637565b6202d026848862004c79565b518581101562004c30578290846202d03f878c62004c79565b5116600052811b0181526202d05f6040600020546200685b868962004c79565b9190926202d06e868a62004c79565b519687101562004c30576202d0a89662000ef0956202d08e888d62004c79565b5116600052811b01905260406000205562000ee96203169c565b6202cf8b565b5050620111156202d0bf91620312cf565b90604051936202d0cf8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d0f68562004c22565b526000935b81518510156202d417576202d111858362004c79565b51946202d11f845162004d95565b916000936202d12f825162004d95565b610920528496855b87518110156202d1d7576202d15e610960516202d155838b62004c79565b51168b620310b9565b15806202d1a0575b6202d17d575b6202d1779062004c12565b6202d137565b956202d1976202d17791610960516200a1478a8c62004c79565b9690506202d16c565b5060648a101562004c3057610960516202d1bb828a62004c79565b511660005260038a811b0160205260406000205415156202d166565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d270578762004c3057610960516202d214828c62004c79565b51166000528b602052604060002054156202d23b575b6202d2359062004c12565b6202d1f4565b976202d2676202d235918b6202d2568c610960519262004c79565b511662001a9c826109205162004c79565b9890506202d22a565b50949591939650985096909596806109405262004c3057600401806109805254956202d2a1620080b6868962006271565b61090052600097886109a0525b6109405162004c30576109a051888110156202d34c576202d2dd6202d2f3916000610940526109805162004e91565b6109605191549060031b1c166109205162031166565b156202d312575b6202d3086109a05162004c12565b6109a0526202d2ae565b976202d345906202d32a6109a0516109805162004e91565b6109605191549060031b1c1662001a9c826109005162004c79565b976202d2fa565b5095939096509690969391936000915b8383106202d3e657505050506109405162004c305761090051516001600160401b038111620029ba576202d394816109805162004fcd565b60206109005101610980516000526020600020600061096051905b8481106202d3cf5750505050506202d3c79062004c12565b93926202d0fb565b60019060208386511695019481850155016202d3af565b6200824c6202d41091610960516202d3ff868662004c79565b511662001a9c826109005162004c79565b916202d35c565b5050509050565b60408101906202d43360c08351015162004c22565b51916202d44a60a06202cef5818451015162004c22565b51936202d45f845183511462000ee962031533565b6202d472845186511462000ee962031533565b60005b84518110156202d4ce576202d48b818462004c79565b5190606482101562004c30576202d4c89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d475565b5092919360005b83518110156202d5de576202d4eb818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202d52a60406000205462007da7868962004c79565b906202d537868a62004c79565b51918783101562004c3057846202d56493878f5116600052811b01845260406000205562000ee962031637565b6202d570848862004c79565b518581101562004c30578290846202d589878c62004c79565b5116600052811b0181526202d5a96040600020546200685b868962004c79565b9190926202d5b8868a62004c79565b519687101562004c30576202d5d89662000ef0956202d08e888d62004c79565b6202d4d5565b5050620111156202d5ef91620312cf565b90604051936202d5ff8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d6268562004c22565b526000935b81518510156202d417576202d641858362004c79565b51946202d64f845162004d95565b916000936202d65f825162004d95565b610940528496855b87518110156202d6fe576202d685610960516202d155838b62004c79565b15806202d6c7575b6202d6a4575b6202d69e9062004c12565b6202d667565b956202d6be6202d69e91610960516200a1478a8c62004c79565b9690506202d693565b5060648a101562004c3057610960516202d6e2828a62004c79565b511660005260038a811b0160205260406000205415156202d68d565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d797578762004c3057610960516202d73b828c62004c79565b51166000528b602052604060002054156202d762575b6202d75c9062004c12565b6202d71b565b976202d78e6202d75c918b6202d77d8c610960519262004c79565b511662001a9c826109405162004c79565b9890506202d751565b50949591939650985096909596806109005262004c3057600401806109205254956202d7c8620080b6868962006271565b6109a05260009788610980525b6109005162004c305761098051888110156202d873576202d8046202d81a916000610900526109205162004e91565b6109605191549060031b1c166109405162031166565b156202d839575b6202d82f6109805162004c12565b610980526202d7d5565b976202d86c906202d851610980516109205162004e91565b6109605191549060031b1c1662001a9c826109a05162004c79565b976202d821565b5095939096509690969391936000915b8383106202d90d57505050506109005162004c30576109a051516001600160401b038111620029ba576202d8bb816109205162004fcd565b60206109a05101610920516000526020600020600061096051905b8481106202d8f65750505050506202d8ee9062004c12565b93926202d62b565b60019060208386511695019481850155016202d8d6565b6200824c6202d93791610960516202d926868662004c79565b511662001a9c826109a05162004c79565b916202d883565b60408101906202d95360c08351015162004c22565b51916202d96a60a06202cef5818451015162004c22565b51936202d97f845183511462000ee962031533565b6202d992845186511462000ee962031533565b60005b84518110156202d9ee576202d9ab818462004c79565b5190606482101562004c30576202d9e89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d995565b5092919360005b83518110156202dafe576202da0b818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202da4a60406000205462007da7868962004c79565b906202da57868a62004c79565b51918783101562004c3057846202da8493878f5116600052811b01845260406000205562000ee962031637565b6202da90848862004c79565b518581101562004c30578290846202daa9878c62004c79565b5116600052811b0181526202dac96040600020546200685b868962004c79565b9190926202dad8868a62004c79565b519687101562004c30576202daf89662000ef0956202d08e888d62004c79565b6202d9f5565b5050620111156202db0f91620312cf565b90604051936202db1f8562002a97565b60018552602036818701376001600160a01b036109408190529051166202db468562004c22565b526000935b81518510156202d417576202db61858362004c79565b51946202db6f845162004d95565b916000936202db7f825162004d95565b6109a0528496855b87518110156202dc1e576202dba5610940516202d155838b62004c79565b15806202dbe7575b6202dbc4575b6202dbbe9062004c12565b6202db87565b956202dbde6202dbbe91610940516200a1478a8c62004c79565b9690506202dbb3565b5060648a101562004c3057610940516202dc02828a62004c79565b511660005260038a811b0160205260406000205415156202dbad565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202dca6578762004c3057610940516202dc5b828c62004c79565b51166000528b602052604060002054156202dc82575b6202dc7c9062004c12565b6202dc3b565b976202dc9d6202dc7c918b6202d9268c610940519262004c79565b9890506202dc71565b50949591939650985096909596806109005262004c3057600401806109205254956202dcd7620080b6868962006271565b6109805260009788610960525b6109005162004c305761096051888110156202dd82576202dd136202dd29916000610900526109205162004e91565b6109405191549060031b1c166109a05162031166565b156202dd48575b6202dd3e6109605162004c12565b610960526202dce4565b976202dd7b906202dd60610960516109205162004e91565b6109405191549060031b1c1662001a9c826109805162004c79565b976202dd30565b5095939096509690969391936000915b8383106202de1c57505050506109005162004c305761098051516001600160401b038111620029ba576202ddca816109205162004fcd565b60206109805101610920516000526020600020600061094051905b8481106202de055750505050506202ddfd9062004c12565b93926202db4b565b60019060208386511695019481850155016202dde5565b6200824c6202de4691610940516202de35868662004c79565b511662001a9c826109805162004c79565b916202dd92565b610324805482101562004c30576000526007602060002091020190600090565b815180519192916001600160401b038111620029ba576202de8f818562004fcd565b6020809201846000528260002060005b8381106202df06575050505060c08260069262002b5a95940151600185015560408101516002850155606081015160038501556202dee760808201511515600486016200572c565b6202defa60a08201516005860162005659565b0151151591016200572c565b825182820155918401916001016202de9f565b6103248054600160401b811015620029ba576202df3c916001820190556202de4d565b91909162005c965762002b5a916202de6d565b610394908154600160401b811015620029ba576001810180845581101562004c305762002b5a9260005260206000200162005659565b62006a176202df94916200754a565b610738805480600052610736908160205260ff60096040600020015460081c166203067d57610733600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202dff5604060002062003634565b9060008061032a54905b81811062030636575b5050156203061a575b60005b60208301519081518110156202e04c5762000ef06200771662010ea3620076f66020620067ee866202e0469862004c79565b6202e014565b505060005b602083015180518210156202e09957620076f66020620067ee846202e0769462004c79565b90606482101562004c30576202e09391429061032b015562004c12565b6202e051565b50506000905b602083015180518310156200a59257826202e0ba9162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036202e2c657604001906202e0fb60c08351015162004c22565b51936202e11260a0620077f0818651015162004c22565b51916202e12386518551146202cca5565b6202e13286518451146202cd0b565b60005b86518110156202e254576202e14b818662004c79565b51606481101562004c3057600160ff60076202e1709360031b0154161515146202cd6d565b6202e17c818562004c79565b516202e189828762004c79565b5190606482101562004c30576202e1aa906006809360031b0154906200606a565b6202e1b6848962004c79565b5192606484101562004c30576202e1d29360031b01556202cdc5565b6202e1de818562004c79565b516202e1eb828762004c79565b5190606482101562004c30576202e213916003906001600160a01b0362011091868d62004c79565b91906202e221828862004c79565b5190606482101562004c30576202e24e9362000ef0926003906001600160a01b03620110e4878f62004c79565b6202e135565b5094915091620111156202e26891620312cf565b93604051926202e2788462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202e2a3938762004c79565b6202e284565b50945092602092506202e2bd915062004c12565b9190506202e09f565b602081949293940151602681101562002942576002036202e558576040018051928351906202e2fe62007a1660a08097015162004c22565b519382518651036202e5035782518451036202e4ad5782518551036202e4545760005b86518110156202e43e576202e337818862004c79565b51606481101562004c305760ff60076202e3589260031b015416156202ce7d565b6202e364818862004c79565b51606481101562004c305760031b600701805460ff191660011790556202e38c818562004c79565b516202e399828962004c79565b5190606482101562004c305760056202e3b69260031b0162005659565b6202e3c2818662004c79565b516202e3cf828962004c79565b51606481101562004c305760031b600101556202e3ed818762004c79565b516202e3fa828962004c79565b51606481101562004c305760031b600201556202e418818862004c79565b5190606482101562004c3057600060066202e4389360031b015562004c12565b6202e321565b509591509350602092506202e2bd915062004c12565b60405162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b92916020840151602681101562002942576003036202eb64576202e58460c06040860151015162004c22565b5160a0916202e5ad6202e59e846040890151015162004c22565b51936040880151015162004c46565b51936202e5c2835185511462000ee962031533565b6202e5d5835186511462000ee962031533565b60005b83518110156202e630576202e5ee818662004c79565b5190606482101562004c305760036202e62a9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6202e5d8565b509095919560005b87518110156202e757576202e64e818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b016020526202e68560406000205462007da7838962004c79565b906202e692838862004c79565b5191606483101562004c305760036202e6c89360018060a01b03895116600052811b0160205260406000205562000ee962031637565b6202e6d4818662004c79565b51606481101562004c30576003906001600160a01b036202e6f6848c62004c79565b5116600052811b016020526202e7176040600020546200685b838962004c79565b91906202e725828862004c79565b5190606482101562004c30576202e75193600362000ef0938d62007e608760018060a01b039262004c79565b6202e638565b50926202e76f919294506200bb4e90969596620312cf565b92604051906202e77f8262002a97565b6001825260203681840137516001600160a01b03166202e79f8262004c22565b526000945b80518610156202eb50576202e7ba868262004c79565b516108e0526202e7cb855162004d95565b966000946202e7db845162004d95565b6108c05260009460005b88518110156202e8aa578a896202e8156001600160a01b036202e809858462004c79565b51166108e051620310b9565b15806202e865575b6202e836575b50506202e8309062004c12565b6202e7e5565b986202e85a9162001a9c82859c62007f886202e8309760018060a01b039262004c79565b9790508a896202e823565b50505060646108e051101562004c30576001600160a01b036202e889828b62004c79565b511660005260036108e051811b016020528a8960406000205415156202e81d565b50909895979498969291939660005b88518110156202e94c5760646108e051101562004c30576001600160a01b036202e8e4828b62004c79565b511660005260036108e051811b01602052604060002054156202e913575b6202e90d9062004c12565b6202e8b9565b996202e90d906202e943906001600160a01b036202e9328e8d62004c79565b511662001a9c826108c05162004c79565b9a90506202e902565b509850969592919093966108e0516064811015806108805262004c305760031b60040154986202e981620080b6898c62006271565b6108a0526000610860526000610840525b6108805162004c3057610840518a8110156202ea5b576202e9c76202e9e49160006108805260046108e05160031b0162004e91565b90546108c05160039290921b1c6001600160a01b03169062031166565b156202ea03575b6202e9f96108405162004c12565b610840526202e992565b6000610880526202ea216108405160046108e05160031b0162004e91565b60018060a01b0391549060031b1c166202ea42610860516108a05162004c79565b526202ea516108605162004c12565b610860526202e9eb565b50979294959093985095909560005b8281106202eb04575050506108805162004c30576108a051516001600160401b038111620029ba576202eaa78160046108e05160031b0162004fcd565b60206108a0510160046108e05160031b01600052602060002060005b8381106202eae657505050506202eada9062004c12565b9492959091956202e7a4565b82516001600160a01b0316818301556020909201916001016202eac3565b6202eb4a906001600160a01b036202eb1d828562004c79565b51166202eb31610860516108a05162004c79565b526202eb406108605162004c12565b6108605262004c12565b6202ea6a565b5050936202e2bd9193506020925062004c12565b90926020810151602681101562002942576004036202ed975760400160c0936202eb966200bf71868451015162004c22565b51906202ebad60a0620077f0818651015162004c22565b51936202ebc2875184511462000ee962031533565b6202ebd5875185511462000ee962031533565b6202ebe8875186511462000ee962031533565b60005b87518110156202ec2f576202ec01818662004c79565b5190606482101562004c30576202ec29916003906001600160a01b036201141a848d62004c79565b6202ebeb565b509095919593929360005b83518110156202ed54576202ec50818762004c79565b51606481101562004c30576003906001600160a01b036202ec72848862004c79565b5116600052811b016020526202ec9360406000205462007da7838862004c79565b906202eca0838962004c79565b5191606483101562004c30576202ecc8926003906001600160a01b03620114da878b62004c79565b6202ecd4818762004c79565b51606481101562004c30576003906001600160a01b036202ecf6848c62004c79565b5116600052811b016020526202ed176040600020546200685b838862004c79565b9190506202ed26818862004c79565b5191606483101562004c30576202ed4e926003906001600160a01b036201157b858e62004c79565b6202ec3a565b50936202ed6e9192969350620084c562007e9891620312cf565b9260005b83518110156202e2a9578062000ef0620079b66202ed91938762004c79565b6202ed72565b926020840151602681101562002942576005036202ef525760408401906202edc960a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156202ee30576202edee818562004c79565b5190606482101562004c305760036202ee2a9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6202edd8565b509060005b83518110156202eed1576202ee4b818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b016020526202ee8260406000205462007da7838862004c79565b91906202ee90828762004c79565b5190606482101562004c30576202eecb93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b6202ee35565b50949250906202eee190620312cf565b90604051926202eef18462002a97565b6001845260203681860137516001600160a01b03166202ef118462004c22565b52604051946202ef218662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202ef4c938762004c79565b6202ef2d565b926020810151602681101562002942576006036202f0e6576040016202ef7d60c08251015162004c22565b51936202ef9460a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156202eff1576202efc3818562004c79565b5190606482101562004c30576202efeb916003906001600160a01b036201183d848c62004c79565b6202efad565b509060005b86518110156202f090576202f00c818562004c79565b51606481101562004c30576003906001600160a01b036202f02e848b62004c79565b5116600052811b016020526202f04f60406000205462007da7838862004c79565b91906202f05d828762004c79565b5190606482101562004c30576202f08a9362000ef0926003906001600160a01b03620114da878f62004c79565b6202eff6565b5094916202f0a59193506201111590620312cf565b91604051946202f0b58662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202f0e0938762004c79565b6202f0c1565b6020810151602681101562002942576007036202f16c57604001926202f11160c08551015162004c22565b51916202f12360a08651015162004c22565b51945151916202f13b845187511462000ee962031533565b60005b84518110156202e2a9576202f1669062000ef06001600160a01b0380620119d9848a62004c79565b6202f13e565b6020819493940151602681101562002942576008036202f1da5760c060406202f199920151015162004c22565b519160005b83518110156202f1c8576202f1c2906001600160a01b038062011ac1838862004c79565b6202f19e565b509260209192506202e2bd9062004c12565b6020810151602681101562002942576009036202f2335760c060406202f204920151015162004c22565b519160005b83518110156202f1c8576202f22d906001600160a01b038062011b55838862004c79565b6202f209565b602081015160268110156200294257600a036202f2b957604001906202f26460a06200d48660c08551015162004c22565b51926202f279835185511462000ee962031533565b60005b83518110156202f2a6576202f2a0906001600160a01b038062011bf1838862004c79565b6202f27c565b50936202e2bd9193506020925062004c12565b60208194939294015160268110156200294257600b036202f34457604001926202f2e860c08551015162004c22565b51935151916202f300855184511462000ee962031533565b60005b85518110156202f331576202f32b9062000ef06001600160a01b038062011ca4848b62004c79565b6202f303565b50935091602091506202e2bd9062004c12565b909192602082015160268110156200294257600c036202f47757606060408301510151926202f373846202c2eb565b60005b84518110156202f2a65760e06202f3968260606040880151015162004c79565b510151156202f40e576202f3b762008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f3da60059162005c20565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005c20565b6202f376565b6202f42662008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f44960059162005be0565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005be0565b929190602081015160268110156200294257600d036202f4e0576040019260206202f4a760a08651015162004c22565b5194510151916202f4bc85518451146202c9e4565b60005b85518110156202f331578062011e856202f4da928662004c79565b6202f4bf565b602081949294015160268110156200294257600e036202f549576040019060206202f51060a08451015162004c22565b5192510151936202f52583518651146202c9e4565b60005b83518110156202f331578062011f996202f543928862004c79565b6202f528565b90602082949394015160268110156200294257600f036202f67d57606060408301510151926202f579846202c2eb565b60005b84518110156202f2a65760e06202f59c8260606040880151015162004c79565b510151156202f614576202f5bd62008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f5e060059162005c20565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005c20565b6202f57c565b6202f62c62008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f64f60059162005be0565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005be0565b906020819493940151602681101562002942576010036202f6ee5760400151906202f6b160a0608084015193015162004c22565b51936202f6c6835186511462000ee962031533565b60005b83518110156202f331578062000ef06200935a6202f6e8938762004c79565b6202f6c9565b6020819492940151602681101562002942576011036202f90757604001906202f72260a06200d48660c08551015162004c22565b51936202f73383518651146202c163565b60005b83518110156202f764576202f75e9062000ef06001600160a01b03806201221c848962004c79565b6202f736565b509350906202f77390620311b3565b9061032654936202f78a620080b684518762006271565b9060009260005b8781106202f8ec575060005b85518110156202f844576000805b8981106202f7f5575b50156202f7cd575b6202f7c79062004c12565b6202f79d565b936202f7c7906202f7ec906001600160a01b036200ddb1888a62004c79565b9490506202f7bc565b6202f8008162004de9565b90546001600160a01b0360039290921b1c8116906202f820858b62004c79565b5116146202f839576202f8339062004c12565b6202f7ab565b50506001386202f7b4565b5095509392506202f8558262004d95565b8051906001600160401b038211620029ba576020906202f8758362004f2a565b01610326600052602060002060005b8381106202f8ce575050505060005b8281106202f8ab575050506202e2bd60209162004c12565b6202f8c89062000ef06001600160a01b03620019d0838662004c79565b6202f893565b82516001600160a01b0316818301556020909201916001016202f884565b936200defd6202f901916200dedf8762004de9565b6202f791565b6020819492940151602681101562002942576012036202fb2a57604001906202f93b60a06200d48660c08551015162004c22565b51936202f94c83518651146202c163565b60005b83518110156202f97d576202f9779062000ef06001600160a01b03806201247e848962004c79565b6202f94f565b50935091906202f98d90620311b3565b610326546202f99c8162004d95565b906000926000915b8083106202fa51575050506202f9ba8262004d95565b8051906001600160401b038211620029ba576020906202f9da8362004f2a565b01610326600052602060002060005b8381106202fa33575050505060005b8281106202fa10575050506202e2bd60209162004c12565b6202fa2d9062000ef06001600160a01b03620019d0838662004c79565b6202f9f8565b82516001600160a01b0316818301556020909201916001016202f9e9565b91956000959193959760005b85518110156202fb1b576202fa728962004de9565b90546001600160a01b0360039290921b1c8116906202fa92838962004c79565b5116146202faab576202faa59062004c12565b6202fa5d565b509750956001959391955b806202faea575b156202fad5576202face9062004c12565b916202f9a4565b936200defd6202face916200dedf8762004de9565b506202faf68162004de9565b60018060a01b0391549060031b1c16600052610325602052604060002054156202fabd565b5097969096959391956202fab6565b6020810151602681101562002942576013036202fb835760408091015101519260005b84518110156202fb72578062000ef0620098ce6202fb6c938862004c79565b6202fb4d565b509250906202e2bd60209162004c12565b6020810151602681101562002942576014036202fd2c57604001906202fbae60c08351015162004c22565b51936202fbc560a0620077f0818651015162004c22565b51916202fbd686518551146202cca5565b6202fbe586518451146202cd0b565b60005b86518110156202fcd7576202fbfe818562004c79565b516202fc0b828762004c79565b5190606482101562004c305760066202fc2a9260031b0154906200606a565b906202fc37838862004c79565b5191606483101562004c305760066202fc559360031b01556202cdc5565b6202fc61818562004c79565b516202fc6e828762004c79565b5190606482101562004c30576202fc96916003906001600160a01b0362011091868d62004c79565b91906202fca4828862004c79565b5190606482101562004c30576202fcd19362000ef0926003906001600160a01b03620110e4878f62004c79565b6202fbe8565b5094915091620111156202fceb91620312cf565b93604051926202fcfb8462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202fd26938762004c79565b6202fd07565b6020810151602681101562002942576015036202fd56576020919262000ef06202e2bd926202d93e565b6020810151602681101562002942576016036202fdb25760c060406202fd80920151015162004c22565b519260005b84518110156202fb72576202fdac9062000ef06001600160a01b0362009b14838962004c79565b6202fd85565b6020810151602681101562002942576017036202fe0f5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036202fe795760c060406202fe39920151015162004c22565b51610396805460ff191660011790559260005b84518110156202fb72576202fe739062000ef06001600160a01b0362009be0838962004c79565b6202fe4c565b6020819392930151602681101562002942576019036202ff605760008091604082910160a0808251015180516202ff27575b5050519060e0820151916202fecf6200685460c060018060a01b0393015162004c22565b511690602083519301915af13d156202ff1e573d906202feef8262002e73565b916202feff604051938462002ab3565b82523d6000602084013e5b1562012a4857506202e2bd60209162004c12565b6060906202ff0a565b6202ff329062004c22565b51516202ff41575b806202feab565b81925062006854906202ff579251015162004c22565b5190386202ff3a565b602081015160268110156200294257601a036202ffe25760a060406202ff8a920151015162004c22565b516202ff9a60038251146202c163565b6202ffa58162004c22565b51916202ffb662012b6e8362004c46565b51916200f053576020926202e2bd9260010362009e215762009e019062009df46103919182546200606a565b602081015160268110156200294257601b03620303cb575091906203001261038f54620061b062009e97620313c0565b50506203001e62031484565b506000805b606481106203037f575b5050620300396200618c565b90620300486107345462004d95565b906000946000905b606482101562030373578160031b9260ff600785015416156203015b5760009660028501541562030142576000975b62004c3057600485015488101562030142576203013b62030134899a620300ae620300e59b60048a0162004e91565b60018060a01b0391549060031b1c168060005260038901602052620300d98b60406000205462005ebb565b9c9062000ee962031484565b620301286203010c6203010060009e60028d01549062005ebb565b919062000ee962031484565b8260005261032760205262009df460406000209182546200606a565b62001a9c828b62004c79565b9962004c12565b976203007f565b929093506203015391965062004c12565b909462030050565b95969392509350505b6203016f8262004d95565b9160009160005b828110620302dd57505050610328549162030196620080b6848462006271565b926000906000905b808210620302c057505060005b8381106203022a5750508251929150506001600160401b038211620029ba57602090620301d88362004eef565b01610328600052602060002060005b8381106203020c57505050506202e2bd60209160006103915560006103925562004c12565b82516001600160a01b031681830155602090920191600101620301e7565b6000805b83811062030278575b501562030250575b6203024a9062004c12565b620301ab565b906203024a906203026f906001600160a01b036200823e858762004c79565b9190506203023f565b6001600160a01b03806203028d858862004c79565b5116906203029c838a62004c79565b511614620302b557620302af9062004c12565b6203022e565b505060013862030237565b90916200824c620302d691620098248562004dcd565b906203019e565b6000805b8581106203032b575b501562030303575b620302fd9062004c12565b62030176565b92620302fd9062030322906001600160a01b036200823e878662004c79565b939050620302f2565b6001600160a01b038062030340858762004c79565b5116906203034f838a62004c79565b5116146203036857620303629062004c12565b620302e1565b5050600138620302ea565b93505092939062030164565b8060039594951b9060ff60078301541615620303c1576200a2d4620074b662000ef0946200a2c8620303b89560026200a2be8762005d82565b93929362030023565b509392936203002d565b602081015160268110156200294257601c03620304285760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036203044e575b506202e2bd60209162004c12565b602081015160268110156200294257601e146203044057602081015160268110156200294257601f036203049f57602091620304976200a3b960406202e2bd9401515162004c22565b915062030440565b602081015160268110156200294257602003620304c5575b506202e2bd60209162030497565b6020810151602681101562002942576021809103620304e6575b50620304b7565b602082015160268110156200a53a57602203620305225750506202e2bd60209161039660ff1981541690556203051b62004fba565b91620304df565b602082015160268110156200a53a5760230362030549575b50506202e2bd6020916203051b565b6020820151906026821015620137aa5760248092036203056b575b506203053a565b60208301516026811015620306075760251462030564576020830151906026821015620305f35750601503620305b65750602091620305ae6202e2bd926202d93e565b913862030564565b60649060166040519162461bcd60e51b83526020600484015282015275496e76616c6964206f7065726174696f6e207479706560501b6044820152fd5b9050634e487b7160e01b6000526004526000fd5b50634e487b7160e01b6000526004526000fd5b815162030630906001600160a01b031662006647565b6202e011565b620306418162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462030670576203066a9062004c12565b6202dfff565b505050600138806202e008565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062030704575050565b62002b5a91600052601f6020600020910160051c81019062004ed6565b90600160401b8111620029ba5781548183558082106203074057505050565b62002b5a92600052601f6020600020918180850160051c84019416806203076f575b500160051c019062004ed6565b600019908186019182549160200360031b1c1690553862030762565b9060ff809160031b9316831b921b19161790565b919091620307ba620307b36000946202de4d565b5062003495565b91835b83518051821015620308ac5781620307d59162004c79565b516064908181101562004c3057600390811b9660018060a01b038616600052602091880182526203081360409860018a600020549101549062005ebb565b91901562030879579062030827916200606a565b97901562030843575050506203083d9062004c12565b620307bd565b519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b505086519062461bcd60e51b82526004820152600e60248201526d706f776572206f766572666c6f7760901b6044820152fd5b509092505050565b60005b61073854908160005261073691602092808452600393604092858460002001805486101562030a1557620308f086620308fc9262004e91565b905490881b1c6202de4d565b509560ff6006809801541662030924575b50505050506203091e915062004c12565b620308b7565b816000528383526203094c620309408783886000200162004e91565b905490831b1c6202de4d565b50966203096c876001809a01549285600052878752886000200162004e91565b905490831b1c91836000528585526203098c886005896000200162004e91565b9054911b1c9060009260649283810293818504149015171562030a015790620309b59162004eaa565b10620309f9575b620309c857806203090d565b6009945060005252600020019060ff1991818382541617905561073391825416179055600061073155600061073255565b5085620309bc565b634e487b7160e01b84526011600452602484fd5b50505050505050600061073854905b81600052610736602052600380604060002001805483101562030a9a57600662030a6162030a558560ff9462004e91565b905490851b1c6202de4d565b500154161562030a955762030a768262030caa565b908110156200294257620105035762030a8f9062004c12565b62030a24565b505050565b50505060ff19906107336003838254161790556000526107366020526009604060002001908154169055565b6107385490600090828252610736916020928084526003906040908282852001549562030af38762002b80565b9662030b028451988962002ab3565b80885262030b13601f199162002b80565b013682890137845b88865282825284848720015481101562030b64579062030b598262000ef062030b478897969562030caa565b62030b53838d62004c79565b6200520e565b909192935062030b1b565b5050505090919350815b835181101562030bdb5762030b84818562004c79565b518281101562030bc757600180911462030baa575062030ba49062004c12565b62030b6e565b610733805460ff1916909117905550506107318190556107325550565b634e487b7160e01b84526021600452602484fd5b509091506107328054421060001462030c0257506107339060ff1982541617905561073155565b9050610733600160ff19825416179055816107315555565b1562030c2257565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b1562030c6f57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b61073854906000918083526107368060205282604085206003019062030cd09162004e91565b90549060031b1c62030ce2816202de4d565b5060010154938386528260205280604087206004019062030d039162004e91565b90549060031b1c928487528060205281604088206005019062030d269162004e91565b90549060031b1c948752602052604086206006019062030d469162004e91565b90549060031b1c9062030d59906202de4d565b506006015460ff1662030da5575062030d959262005da862021a9f938362030d8562030d8d9562005e85565b969062030c67565b929062030c67565b111562030d9f5790565b50600190565b6200f136925062030d959362030dbf62030d8d9362005e85565b949062030c67565b9092919262030dd7825162004d95565b60009162030de6815162004d95565b8390845b865181101562030e80576001600160a01b0362030e0d816202d155848b62004c79565b158062030e4c575b62030e2d575b5062030e279062004c12565b62030dea565b819662030e44916200823e62030e27948b62004c79565b959062030e1b565b5060648a101562004c30578062030e64838a62004c79565b511660005260038a811b01602052604060002054151562030e15565b509295919694509260005b875181101562030f0057606486101562004c30576001600160a01b038062030eb4838b62004c79565b5116600052600387811b016020526040600020541562030ee1575b5062030edb9062004c12565b62030e8b565b819562030ef8916200ddb162030edb948c62004c79565b949062030ecf565b5092509450926064831015938462004c305760049586600395861b019687549462030f30620080b6828862006271565b9460009689889a5b620310a457818b101562030fd957506000998b62030f7362030f5b838362004e91565b90546001600160a01b0392918e1b1c82168a62031166565b1562030f96575b50509062030f8b8b94939262004c12565b9a9091929362030f38565b91998c95949392909162030fac908c9062004e91565b9054908d1b1c1662030fbf828b62004c79565b5262030fcb9062004c12565b9890919293508b3862030f7a565b9697949a98505091975092506000915b8383106203107f57505050506203106a578051926001600160401b03841162031055575062031019838362004fcd565b602080910191600052806000209060005b84811062031039575050505050565b83516001600160a01b031683820155928101926001016203102a565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203109d906200824c906001600160a01b036200a147868662004c79565b9162030fe9565b603285634e487b7160e01b6000525260246000fd5b9060005b606483101562004c30576003600484821b01805483101562015fff5782620310e59162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311099062004c12565b620310bd565b9060005b606483101562004c3057600361039c84821b01805483101562015fff57826203113c9162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311609062004c12565b62031113565b9060005b825181101562006638576001600160a01b038062031189838662004c79565b51169083161462006625576203119f9062004c12565b6203116a565b801562001de8576000190190565b9081519060005b60001983810184811162001de85782101562031281576001820180831162001de8575b848110620311f8575050620311f29062004c12565b620311ba565b6001600160a01b03806203120d858962004c79565b5116816203121c848a62004c79565b51161462031237575b50620312319062004c12565b620311dd565b828692960182811162001de85762031231926203127a926203125e62031273938b62004c79565b51166203126c898b62004c79565b52620311a5565b95620311a5565b9062031225565b5050906203128f8162004d95565b9060005b818110620312a2575090925050565b620312c9906001600160a01b03620312bb828862004c79565b511662001a9c828662004c79565b62031293565b80519160005b60001984810185811162001de85782101562031387576001820180831162001de8575b858110620313135750506203130d9062004c12565b620312d5565b6203131f838662004c79565b516203132c828762004c79565b511462031345575b6203133f9062004c12565b620312f8565b948181019080821162001de857620313786203137f916203136b6203133f948962004c79565b516203126c8a8a62004c79565b96620311a5565b905062031334565b50509091620313968162004d95565b9060005b818110620313a9575090925050565b806202a11a620313ba928762004c79565b6203139a565b604051620313ce816200299e565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203143c8162002a26565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620314928162002a97565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b604051620314cc8162002a97565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620314f78162002a26565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620315418162002a97565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620315718162002a97565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620315a48162002a97565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620315d98162002a97565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620316128162002a97565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b604051620316458162002a97565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b604051620316748162002a97565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b604051620316aa8162002a97565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b60268110156200294257801562007507576001811462030d9f5760028114620319025760038114620318fc5760048114620318f65760058114620318f05760068114620318ea5760078114620318e45760088114620318de5760098114620318d857600a8114620318d257600b8114620318cc57600c8114620318c657600d8114620318c057600e8114620318ba57600f8114620318b45760108114620318ae5760118114620318a85760128114620318a257601381146203189c57601481146203189657601581146203189057601681146203188a57601781146203188457601881146203187e57601981146203187857601a81146203187257601b81146203186c57601c81146203186657601d81146203186057601e81146203185a57601f81146203185457602081146203184e57602181146203184857602281146203184257602381146203183c576024811462031836576025146203183157600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200664057600090815b8351811015620166ee576001600160f81b03198062031938838762006577565b51169062031947838562006577565b511603620166e7576203195a9062004c12565b62031918565b604051906203196f8262002a26565b60288252604036602084013760005b601481106203198c57505090565b60139080820391821162001de857600382901b916001600160fd1b0381160362001de85760ff80831162001de857600192620319d59084901b6001600160a01b03861662005007565b60f081168282160391821162001de857620319f99060f41b600f60f81b1662031a62565b82841b916001600160ff1b038416840362001de85762031a369160001a62031a22848962006577565b5360f81b6001600160f81b03191662031a62565b92810180911162001de85762031a5562031a5c9360001a918662006577565b5362004c12565b6203197e565b60f81c600a81101562031a8b5760300160ff811162001de85760f81b6001600160f81b03191690565b60570160ff811162001de85760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65a4039f5a7be218ee4582681830797ad3adb3fc42221d510b404c1c20513cd5f9305d206c656e677468206973206e6f7420320000000000000000000000000000546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b617665203120656c656d656e74000000000000000000000000000000000000007420686176652074776f20656c656d656e747300000000000000000000000000f8c51ad45ec8504cc31b470490eebc0390b72c6fe329b047b8c5d2eaf5faf707546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f7420310000000000000000000000000000006506a45eb4eaa8543dde316bec7c09b25ef1e87a59a8ef880021210a26a5aa39742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f7420afaf75ed05c3fa878ca2fef6bc901427ab4ca9c5028b0bbe72a546312bd924aa2e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973745d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d706c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212201b9fa0280c35b6e081eb1f2914678c611bc8026b085956491408d50c5865193d64736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/darc-js/tests/runtime-test/basic-runtime-test.ts b/darc-js/tests/runtime-test/basic-runtime-test.ts index 551bc533..5b2743eb 100644 --- a/darc-js/tests/runtime-test/basic-runtime-test.ts +++ b/darc-js/tests/runtime-test/basic-runtime-test.ts @@ -18,7 +18,7 @@ const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; * 2. mint 100 token_0 and 200 token_1 to address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 */ const code = ` -batch_create_token_class(['token_0', 'token_1'], +batch_create_token_classes(['token_0', 'token_1'], [0,1], [10,20], [20,30]); diff --git a/darc-js/tests/runtime-test/pressure-mint-token-test.ts b/darc-js/tests/runtime-test/pressure-mint-token-test.ts index ee930121..a5ac4225 100644 --- a/darc-js/tests/runtime-test/pressure-mint-token-test.ts +++ b/darc-js/tests/runtime-test/pressure-mint-token-test.ts @@ -20,7 +20,7 @@ const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; const code = ` -batch_create_token_class(['token_0', 'token_1'], +batch_create_token_classes(['token_0', 'token_1'], [0,1], [10,20], [20,30]); @@ -42,7 +42,7 @@ for (let i = 0; i < 1000; i++) { tokenClassList2.push(1); tokenNumberList.push(100); } -batch_create_token_class(['token_0', 'token_1'], +batch_create_token_classes(['token_0', 'token_1'], [0,1], [10,20], [20,30]); diff --git a/darc-protocol/contracts/protocol/Opcodes.sol b/darc-protocol/contracts/protocol/Opcodes.sol index 99a9cc1b..fbb40417 100644 --- a/darc-protocol/contracts/protocol/Opcodes.sol +++ b/darc-protocol/contracts/protocol/Opcodes.sol @@ -83,7 +83,7 @@ enum EnumOpcode { * * ID:7 */ - BATCH_ADD_MEMBERSHIP, + BATCH_ADD_MEMBERSHIPS, /** * @notice Batch Suspend Member Operation @@ -91,7 +91,7 @@ enum EnumOpcode { * * ID:8 */ - BATCH_SUSPEND_MEMBERSHIP, + BATCH_SUSPEND_MEMBERSHIPS, /** * @notice Batch Resume Member Operation @@ -99,7 +99,7 @@ enum EnumOpcode { * * ID:9 */ - BATCH_RESUME_MEMBERSHIP, + BATCH_RESUME_MEMBERSHIPS, /** * @notice Batch Change Member Role Operation @@ -278,11 +278,11 @@ enum EnumOpcode { BATCH_BURN_TOKENS_AND_REFUND, /** - * @notice Add storage IPFS hash to the storage list permanently - * @paran STRING_ARRAY[0][0] address: the address to set approval for all cash withdraw operations + * @notice Add a string (IPFS,JSON,raw text) to the storage list permanently + * @paran STRING_ARRAY[0][0] text: the string text to add to the storage list * ID:31 */ - ADD_STORAGE_IPFS_HASH, + ADD_STORAGE_STRING, /** diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_BatchOp.sol b/darc-protocol/contracts/protocol/Plugin/Condition_BatchOp.sol index 46a0a330..8cd398a3 100644 --- a/darc-protocol/contracts/protocol/Plugin/Condition_BatchOp.sol +++ b/darc-protocol/contracts/protocol/Plugin/Condition_BatchOp.sol @@ -1424,9 +1424,9 @@ contract Condition_BatchOp is MachineStateManager { if (op.opcode == EnumOpcode.BATCH_TRANSFER_TOKENS_FROM_TO) return true; if (op.opcode == EnumOpcode.BATCH_BURN_TOKENS) return true; if (op.opcode == EnumOpcode.BATCH_BURN_TOKENS_FROM) return true; - if (op.opcode == EnumOpcode.BATCH_ADD_MEMBERSHIP) return true; - if (op.opcode == EnumOpcode.BATCH_SUSPEND_MEMBERSHIP) return true; - if (op.opcode == EnumOpcode.BATCH_RESUME_MEMBERSHIP) return true; + if (op.opcode == EnumOpcode.BATCH_ADD_MEMBERSHIPS) return true; + if (op.opcode == EnumOpcode.BATCH_SUSPEND_MEMBERSHIPS) return true; + if (op.opcode == EnumOpcode.BATCH_RESUME_MEMBERSHIPS) return true; if (op.opcode == EnumOpcode.BATCH_CHANGE_MEMBER_ROLES) return true; if (op.opcode == EnumOpcode.BATCH_CHANGE_MEMBER_NAMES) return true; if (op.opcode == EnumOpcode.BATCH_ADD_PLUGINS) return true; diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol b/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol index 5d4641f5..dec68629 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol @@ -75,18 +75,18 @@ OfferDividendsInstructions } // opcode id == 7 - else if (operation.opcode == EnumOpcode.BATCH_ADD_MEMBERSHIP) { - op_BATCH_ADD_MEMBERSHIP(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_ADD_MEMBERSHIPS) { + op_BATCH_ADD_MEMBERSHIPS(operation, bIsSandbox); } // opcode id == 8 - else if (operation.opcode == EnumOpcode.BATCH_SUSPEND_MEMBERSHIP) { - op_BATCH_SUSPEND_MEMBERSHIP(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_SUSPEND_MEMBERSHIPS) { + op_BATCH_SUSPEND_MEMBERSHIPS(operation, bIsSandbox); } // opcode id == 9 - else if (operation.opcode == EnumOpcode.BATCH_RESUME_MEMBERSHIP){ - op_BATCH_RESUME_MEMBERSHIP(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_RESUME_MEMBERSHIPS){ + op_BATCH_RESUME_MEMBERSHIPS(operation, bIsSandbox); } // opcode id == 10 @@ -195,8 +195,8 @@ OfferDividendsInstructions } // opcode id == 31 - else if (operation.opcode == EnumOpcode.ADD_STORAGE_IPFS_HASH) { - op_ADD_STORAGE_IPFS_HASH(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.ADD_STORAGE_STRING) { + op_ADD_STORAGE_STRING(operation, bIsSandbox); } // opcode id == 32 diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol index 72833cbf..7e750d69 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol @@ -17,11 +17,11 @@ import "../../../Utilities/ErrorMsg.sol"; contract MembershipInstructions is MachineStateManager { /** - * @notice The function that executes the BATCH_ADD_MEMBERSHIP operation + * @notice The function that executes the BATCH_ADD_MEMBERSHIPS operation * @param operation The operation to be executed * @param bIsSandbox The flag to indicate if the operation is being executed in sandbox */ - function op_BATCH_ADD_MEMBERSHIP(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_ADD_MEMBERSHIPS(Operation memory operation, bool bIsSandbox) internal { // param 1 is the address of the members // param 2 is the member role numbers // param 3 is the member role name strings @@ -57,11 +57,11 @@ contract MembershipInstructions is MachineStateManager { } } /** - * @notice The function that executes the BATCH_SUSPEND_MEMBERSHIP operation + * @notice The function that executes the BATCH_SUSPEND_MEMBERSHIPS operation * @param operation The operation to be executed * @param bIsSandbox The flag to indicate if the operation is being executed in sandbox */ - function op_BATCH_SUSPEND_MEMBERSHIP(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_SUSPEND_MEMBERSHIPS(Operation memory operation, bool bIsSandbox) internal { // param 1 is the address of the members address[] memory members = operation.param.ADDRESS_2DARRAY[0]; for (uint256 i=0;i Date: Sat, 20 Jan 2024 12:40:05 -0600 Subject: [PATCH 02/62] update --- darc-js/src/SDK/includes.ts | 176 ++++++++++++++++++++++++- darc-js/src/SDK/opcodes/opcodeTable.ts | 3 +- 2 files changed, 173 insertions(+), 6 deletions(-) diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 0d8cccf0..8847c384 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -3,7 +3,7 @@ import { TokenOperations } from "./struct/token-operation-map"; import { Plugin } from "./struct/Plugin"; -import { OperationStruct } from "../types/basicTypes"; +import { OperationStruct, PluginStruct, VotingRuleStruct } from "../types/basicTypes"; import { objectMethod } from "@babel/types"; @@ -49,8 +49,13 @@ export let operationList: OperationStruct[] = []; export let programNotes: string = ""; -export function batch_mint_tokens(addressArray: string[], amountArray: bigint[], tokenClass: bigint[]) { - let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, amountArray, tokenClass); + +export function setNote(note:string) { + programNotes = note; +} + +export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { + let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); operationList.push(operation); } @@ -59,6 +64,167 @@ export function batch_create_token_classes(nameArray: string[], tokenIndexArray: operationList.push(operation); } -export function setNote(note:string) { - programNotes = note; +export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { + let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); + operationList.push(operation); +} + +export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { + let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); + operationList.push(operation); +} + +export function batch_burn_tokens(tokenClassArray: bigint[], amountArray: bigint[]) { + let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); + operationList.push(operation); +} + +export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { + let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); + operationList.push(operation); +} + +export function batch_add_memberships(addressArray: string[], roleArray: bigint[], nameArray: string[]) { + let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); + operationList.push(operation); +} + +export function batch_suspend_memberships(addressArray: string[]) { + let operation = OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS(addressArray); + operationList.push(operation); +} + +export function batch_resume_memberships(addressArray: string[]) { + let operation = OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS(addressArray); + operationList.push(operation); +} + +export function batch_change_member_roles(addressArray: string[], roleArray: bigint[]) { + let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); + operationList.push(operation); +} + +export function batch_change_member_names(addressArray: string[], nameArray: string[]) { + let operation = OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES(addressArray, nameArray); + operationList.push(operation); +} + +export function batch_add_plugins(pluginArray: PluginStruct[]) { + let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); + operationList.push(operation); +} + +export function batch_enable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]) { + let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); + operationList.push(operation); +} + +export function batch_disable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]) { + let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); + operationList.push(operation); +} + +export function batch_add_and_enable_plugins(pluginArray: PluginStruct[]) { + let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); + operationList.push(operation); +} + +export function batch_set_parameters(parameterIndexArray: bigint[], parameterValueArray: bigint[]) { + let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); + operationList.push(operation); +} + +export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[]) { + let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); + operationList.push(operation); +} + +export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[]) { + let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); + operationList.push(operation); +} + +export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]) { + let operation = OPCODE_ID_19_BATCH_ADD_VOTING_RULES(ruleArray); + operationList.push(operation); +} + +export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint) { + let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); + operationList.push(operation); +} + +export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint) { + let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); + operationList.push(operation); +} + +export function add_emergency(emergencyAddressArray: string[]) { + let operation = OPCODE_ID_22_ADD_EMERGENCY(emergencyAddressArray); + operationList.push(operation); +} + +export function call_emergency(emergencyAddressArrayIndex: bigint[]) { + let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); + operationList.push(operation); +} + +export function call_contract_abi(contractAddress: string, abi: string | Uint8Array, value: bigint) { + let operation = OPCODE_ID_25_CALL_CONTRACT_ABI(contractAddress, abi, value); + operationList.push(operation); +} + +export function pay_cash(amount: bigint, paymentType: bigint, dividendable: bigint) { + let operation = OPCODE_ID_26_PAY_CASH(amount, paymentType, dividendable); + operationList.push(operation); +} + +export function offer_dividends() { + let operation = OPCODE_ID_27_OFFER_DIVIDENDS(); + operationList.push(operation); +} + +export function set_approval_for_all_operations(address: string) { + let operation = OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS(address); + operationList.push(operation); +} + +export function batch_burn_tokens_and_refund(tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[]) { + let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); + operationList.push(operation); +} + +export function add_storage_string(value: string) { + let operation = OPCODE_ID_31_ADD_STORAGE_STRING(value); + operationList.push(operation); +} + +export function vote(voteArray: boolean[]) { + let operation = OPCODE_ID_32_VOTE(voteArray); + operationList.push(operation); +} + +export function execute_pending_program() { + let operation = OPCODE_ID_33_EXECUTE_PENDING_PROGRAM(); + operationList.push(operation); +} + +export function end_emergency() { + let operation = OPCODE_ID_34_END_EMERGENCY(); + operationList.push(operation); +} + +export function upgrade_to_address(newAddress: string) { + let operation = OPCODE_ID_35_UPGRADE_TO_ADDRESS(newAddress); + operationList.push(operation); +} + +export function confirm_upgrade_from_address(newAddress: string) { + let operation = OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS(newAddress); + operationList.push(operation); +} + +export function upgrade_to_the_latest() { + let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); + operationList.push(operation); } \ No newline at end of file diff --git a/darc-js/src/SDK/opcodes/opcodeTable.ts b/darc-js/src/SDK/opcodes/opcodeTable.ts index 0dae6a49..260f634b 100644 --- a/darc-js/src/SDK/opcodes/opcodeTable.ts +++ b/darc-js/src/SDK/opcodes/opcodeTable.ts @@ -1283,7 +1283,8 @@ function OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS( function OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND( tokenClassArray: bigint[], - amountArray: bigint[] + amountArray: bigint[], + priceArray: bigint[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (tokenClassArray.length != amountArray.length) { From e1af9eb3e3fc9fcd367314ac32a3c6ff610f6b08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 22 Jan 2024 19:03:58 -0600 Subject: [PATCH 03/62] Create Node.ts --- darc-js/src/SDK/conditionNodes/Node.ts | 226 +++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 darc-js/src/SDK/conditionNodes/Node.ts diff --git a/darc-js/src/SDK/conditionNodes/Node.ts b/darc-js/src/SDK/conditionNodes/Node.ts new file mode 100644 index 00000000..72ffe4bb --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Node.ts @@ -0,0 +1,226 @@ +import { ConditionNodeStruct, NodeParamStruct } from "../../types/basicTypes"; + +/** + * The node type: AND, OR, NOT, EXPRESSION, TRUE, FALSE, UNDEFINED + */ +type NodeType = "AND" | "OR" | "NOT" | "EXPRESSION" | "TRUE" | "FALSE" | "UNDEFINED"; + +/** + * The core base class for all nodes + */ +class Node { + type: NodeType; + childList: Node[]; + expressionId: number; + nodeParam: NodeParamStruct; + constructor() { + this.childList = []; + this.type = "UNDEFINED"; + this.expressionId = 0; + this.nodeParam = { + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + UINT256_2DARRAY: [], + BYTES: "", + } + } + + /** + * Just generate a condition node struct for the expression node + * @param id The id of the condition node + * @returns The condition node struct + */ + generateExpressionConditionNodeStruct(id: bigint): ConditionNodeStruct { + if (this.type !== "EXPRESSION") { + throw new Error("Node type is not EXPRESSION"); + } + const conditionNodeStruct: ConditionNodeStruct = { + id: id, + nodeType: 1, + logicalOperator:0, + conditionExpression: this.expressionId, + childList: [], + param: this.nodeParam, + }; + return conditionNodeStruct; + } + + /** + * Generate a condition node struct for BOOLEAN_TRUE or BOOLEAN_FALSE + * @param id The id of the condition node + * @returns The condition node struct + */ + generateBooleanConditionNodeStruct(id: bigint): ConditionNodeStruct { + if (this.type !== "TRUE" && this.type !== "FALSE") { + throw new Error("Node type is not TRUE or FALSE"); + } + if (this.type === "TRUE") { + const conditionNodeStruct: ConditionNodeStruct = { + id: id, + nodeType: 3, + logicalOperator: 0, + conditionExpression: 0, + childList: [], + param: this.nodeParam, + }; + return conditionNodeStruct; + } + else { + const conditionNodeStruct: ConditionNodeStruct = { + id: id, + nodeType: 4, + logicalOperator: 0, + conditionExpression: 0, + childList: [], + param: this.nodeParam, + }; + return conditionNodeStruct; + } + } + + /** + * Generate a list of condition node structs for the AND node + * For example, if the AND node has 2 children, and the ID = 5, then the list will be: + * [ + * AND(5), + * EXPRESSION_NODE(6), + * EXPRESSION_NODE(7) + * ] + * @param id The id of the condition node + * @param bIsAND True if the parent node is AND, false if the parent node is OR + */ + generate_AND_or_OR_ConditionNodeStructList(id: bigint): ConditionNodeStruct[] { + let returnArray: ConditionNodeStruct[] = []; + if (this.type !== "AND" && this.type !== "OR") { + throw new Error("Node type is not AND or OR node"); + } + const nodeType: number = this.type === "AND" ? 1 : 2; + const node0: ConditionNodeStruct = { + id: id, + nodeType: 2, // logical operator + logicalOperator: nodeType, // AND or OR + conditionExpression: 0, + childList: [], + param: this.nodeParam, + } + returnArray.push(node0); + for (let i = 0; i < this.childList.length; i++) { + const currentChildNode = this.childList[i]; + if (currentChildNode.type === "EXPRESSION") { + returnArray.push(currentChildNode.generateExpressionConditionNodeStruct(id + BigInt(i + 1))); + } + else if (currentChildNode.type === "TRUE" || currentChildNode.type === "FALSE") { + returnArray.push(currentChildNode.generateBooleanConditionNodeStruct(id + BigInt(i + 1))); + } + else if (currentChildNode.type === "AND" || currentChildNode.type === "OR") { + returnArray = returnArray.concat(currentChildNode.generate_AND_or_OR_ConditionNodeStructList(id + BigInt(i + 1))); + } + else if (currentChildNode.type === "UNDEFINED") { + returnArray = []; + } + } + + return returnArray; + } + + /** + * Generate a list of condition node structs for any node + * @param id The id of the condition node + */ + generateConditionNodeList(): ConditionNodeStruct[] { + if (this.type === "EXPRESSION") { + return [this.generateExpressionConditionNodeStruct(BigInt(0))]; + } + else if (this.type === "TRUE" || this.type === "FALSE") { + return [this.generateBooleanConditionNodeStruct(BigInt(0))]; + } + else if (this.type === "UNDEFINED") { + return [{ + id: BigInt(0), + nodeType: 0, + logicalOperator: 0, + conditionExpression: 0, + childList: [], + param: this.nodeParam, + }]; + } + return []; + } +} + +class AND extends Node { + constructor(... args:Node[]) { + super(); + this.processChildList(args); + this.type = "AND"; + } + + processChildList(childList: Node[]) { + for (let i = 0; i < childList.length; i++) { + if (childList[i].type === "UNDEFINED") { + continue; + } + else if (childList[i].type === "AND") { + this.processAndNode(childList[i]); + } else { + this.childList.push(childList[i]); + } + } + } + + processAndNode(node: Node) { + for (let i = 0; i < node.childList.length; i++) { + if (node.childList[i].type === "UNDEFINED") { + continue; + } + else if (node.childList[i].type === "AND") { + this.processChildList(node.childList[i].childList); + } else { + this.childList.push(node.childList[i]); + } + } + } +} + +class OR extends Node { + constructor(... args:Node[]) { + super(); + this.processChildList(args); + this.type = "OR"; + } + + processChildList(childList: Node[]) { + for (let i = 0; i < childList.length; i++) { + if (childList[i].type === "UNDEFINED") { + continue; + } + else if (childList[i].type === "OR") { + this.processOrNode(childList[i]); + } else { + this.childList.push(childList[i]); + } + } + } + + processOrNode(node: Node) { + for (let i = 0; i < node.childList.length; i++) { + if (node.childList[i].type === "UNDEFINED") { + continue; + } + else if (node.childList[i].type === "OR") { + this.processChildList(node.childList[i].childList); + } else { + this.childList.push(node.childList[i]); + } + } + } +} + +class ExpressionNode extends Node { + constructor(expressionId:number, nodeParam:NodeParamStruct) { + super(); + this.expressionId = expressionId; + this.nodeParam = nodeParam; + this.type = "EXPRESSION"; + } +} \ No newline at end of file From 4698d819b3956f47250564b38b14ec0a7935eb4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 23 Jan 2024 19:23:57 -0600 Subject: [PATCH 04/62] update --- darc-js/src/SDK/conditionNodes/Node.ts | 105 +++++++++++++++++---- darc-js/tests/node-test/basic-node-test.ts | 36 +++++++ 2 files changed, 123 insertions(+), 18 deletions(-) create mode 100644 darc-js/tests/node-test/basic-node-test.ts diff --git a/darc-js/src/SDK/conditionNodes/Node.ts b/darc-js/src/SDK/conditionNodes/Node.ts index 72ffe4bb..bbbd10da 100644 --- a/darc-js/src/SDK/conditionNodes/Node.ts +++ b/darc-js/src/SDK/conditionNodes/Node.ts @@ -30,7 +30,7 @@ class Node { * @param id The id of the condition node * @returns The condition node struct */ - generateExpressionConditionNodeStruct(id: bigint): ConditionNodeStruct { + private generateExpressionConditionNodeStruct(id: bigint): ConditionNodeStruct { if (this.type !== "EXPRESSION") { throw new Error("Node type is not EXPRESSION"); } @@ -50,7 +50,7 @@ class Node { * @param id The id of the condition node * @returns The condition node struct */ - generateBooleanConditionNodeStruct(id: bigint): ConditionNodeStruct { + private generateBooleanConditionNodeStruct(id: bigint): ConditionNodeStruct { if (this.type !== "TRUE" && this.type !== "FALSE") { throw new Error("Node type is not TRUE or FALSE"); } @@ -87,44 +87,64 @@ class Node { * EXPRESSION_NODE(7) * ] * @param id The id of the condition node - * @param bIsAND True if the parent node is AND, false if the parent node is OR */ - generate_AND_or_OR_ConditionNodeStructList(id: bigint): ConditionNodeStruct[] { + private generate_AND_or_OR_or_NOT_ConditionNodeStructList(id: bigint): ConditionNodeStruct[] { let returnArray: ConditionNodeStruct[] = []; - if (this.type !== "AND" && this.type !== "OR") { + if (this.type !== "AND" && this.type !== "OR" && this.type !== "NOT") { throw new Error("Node type is not AND or OR node"); } - const nodeType: number = this.type === "AND" ? 1 : 2; + let nodeType: number = 1; + if (this.type === "OR") { + nodeType = 2; + } + else if (this.type === "NOT") { + nodeType = 3; + } const node0: ConditionNodeStruct = { id: id, nodeType: 2, // logical operator - logicalOperator: nodeType, // AND or OR + logicalOperator: nodeType, // AND or OR or NOT conditionExpression: 0, childList: [], param: this.nodeParam, } - returnArray.push(node0); + + const resultList = []; + let pointer = 0; for (let i = 0; i < this.childList.length; i++) { + pointer += 1; const currentChildNode = this.childList[i]; if (currentChildNode.type === "EXPRESSION") { - returnArray.push(currentChildNode.generateExpressionConditionNodeStruct(id + BigInt(i + 1))); + resultList.push(currentChildNode.generateExpressionConditionNodeStruct(id + BigInt(pointer))); + node0.childList.push(id + BigInt(pointer)); + //returnArray.push(currentChildNode.generateExpressionConditionNodeStruct(id + BigInt(i + 1))); } else if (currentChildNode.type === "TRUE" || currentChildNode.type === "FALSE") { - returnArray.push(currentChildNode.generateBooleanConditionNodeStruct(id + BigInt(i + 1))); + //returnArray.push(currentChildNode.generateBooleanConditionNodeStruct(id + BigInt(i + 1))); + resultList.push(currentChildNode.generateBooleanConditionNodeStruct(id + BigInt(pointer))); + node0.childList.push(id + BigInt(pointer)); } - else if (currentChildNode.type === "AND" || currentChildNode.type === "OR") { - returnArray = returnArray.concat(currentChildNode.generate_AND_or_OR_ConditionNodeStructList(id + BigInt(i + 1))); + else if (currentChildNode.type === "AND" || currentChildNode.type === "OR" || currentChildNode.type === "NOT") { + const result = currentChildNode.generate_AND_or_OR_or_NOT_ConditionNodeStructList(id + BigInt(pointer)); + node0.childList.push(result[0].id); + resultList.push(result); + pointer += result.length - 1; } else if (currentChildNode.type === "UNDEFINED") { - returnArray = []; + throw new Error("Undefined node is not allowed"); } } - + returnArray.push(node0); + for (let i = 0; i < resultList.length; i++) { + returnArray = returnArray.concat(resultList[i]); + } return returnArray; } /** * Generate a list of condition node structs for any node + * This is the root function for generating the condition node struct list + * All condition node list should be generated from this function * @param id The id of the condition node */ generateConditionNodeList(): ConditionNodeStruct[] { @@ -144,6 +164,9 @@ class Node { param: this.nodeParam, }]; } + else if (this.type === "AND" || this.type === "OR" || this.type === "NOT") { + return this.generate_AND_or_OR_or_NOT_ConditionNodeStructList(BigInt(0)); + } return []; } } @@ -151,6 +174,9 @@ class Node { class AND extends Node { constructor(... args:Node[]) { super(); + if (args.length <= 1) { + throw new Error("AND node must have at least 2 children"); + } this.processChildList(args); this.type = "AND"; } @@ -185,6 +211,9 @@ class AND extends Node { class OR extends Node { constructor(... args:Node[]) { super(); + if (args.length <= 1) { + throw new Error("OR node must have at least 2 children"); + } this.processChildList(args); this.type = "OR"; } @@ -216,11 +245,51 @@ class OR extends Node { } } -class ExpressionNode extends Node { - constructor(expressionId:number, nodeParam:NodeParamStruct) { +class NOT extends Node { + constructor(node:Node) { + super(); + if (node.type === "UNDEFINED") { + throw new Error("NOT node must have a valid child"); + } + this.childList.push(node); + this.type = "NOT"; + } +} + +class EXPRESSION extends Node { + constructor(expressionId:number, nodeParam?:NodeParamStruct | undefined) { super(); this.expressionId = expressionId; - this.nodeParam = nodeParam; + if (nodeParam) { + this.nodeParam = nodeParam; + } this.type = "EXPRESSION"; } -} \ No newline at end of file +} + +class TRUE extends Node { + constructor() { + super(); + this.type = "TRUE"; + } +} + +class FALSE extends Node { + constructor() { + super(); + this.type = "FALSE"; + } +} + + +// export everything +export { + Node, + AND, + OR, + NOT, + EXPRESSION, + TRUE, + FALSE, + NodeType, +}; \ No newline at end of file diff --git a/darc-js/tests/node-test/basic-node-test.ts b/darc-js/tests/node-test/basic-node-test.ts new file mode 100644 index 00000000..bbaf3a15 --- /dev/null +++ b/darc-js/tests/node-test/basic-node-test.ts @@ -0,0 +1,36 @@ +import { expect } from 'chai'; +import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../../src/SDK/conditionNodes/Node'; + +import 'mocha'; + + + +describe.only('class DARC test', + () => { + it('should return true', async () => { + + // create a new AND node with 10 expression + const andNode = new AND( + new EXPRESSION(7), + new EXPRESSION(1), + new EXPRESSION(2), + ); + + // create a new OR node with 10 expression + const orNode = new OR( + new EXPRESSION(3), + new EXPRESSION(4), + new EXPRESSION(5), + ); + + const AND_and_OR = new AND( + andNode, + orNode, + ); + + // serialize the AND_and_OR node + const serialized_AND_and_OR = AND_and_OR.generateConditionNodeList(); + + console.log(serialized_AND_and_OR); + }); +}); \ No newline at end of file From 8b58b9fcc753cc581b15cf3b04c3dc956e75883f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 23 Jan 2024 23:41:49 -0600 Subject: [PATCH 05/62] update --- darc-js/dist/DARC/DARC.d.ts | 74 - darc-js/dist/DARC/DARC.d.ts.map | 1 - darc-js/dist/DARC/DARC.js | 126 -- darc-js/dist/DARC/DARC.js.map | 1 - darc-js/dist/SDK/SDK.d.ts | 1 - darc-js/dist/SDK/SDK.d.ts.map | 1 - darc-js/dist/SDK/SDK.js | 2 - darc-js/dist/SDK/SDK.js.map | 1 - darc-js/dist/SDK/instructions.d.ts | 23 - darc-js/dist/SDK/instructions.d.ts.map | 1 - darc-js/dist/SDK/instructions.js | 41 - darc-js/dist/SDK/instructions.js.map | 1 - darc-js/dist/SDK/plugin/ConditionNode.d.ts | 26 - .../dist/SDK/plugin/ConditionNode.d.ts.map | 1 - darc-js/dist/SDK/plugin/ConditionNode.js | 258 --- darc-js/dist/SDK/plugin/ConditionNode.js.map | 1 - darc-js/dist/SDK/plugin/Expression.d.ts | 17 - darc-js/dist/SDK/plugin/Expression.d.ts.map | 1 - darc-js/dist/SDK/plugin/Expression.js | 22 - darc-js/dist/SDK/plugin/Expression.js.map | 1 - darc-js/dist/SDK/runtime.d.ts | 3 - darc-js/dist/SDK/runtime.d.ts.map | 1 - darc-js/dist/SDK/runtime.js | 12 - darc-js/dist/SDK/runtime.js.map | 1 - darc-js/dist/SDK/struct/Plugin.d.ts | 21 - darc-js/dist/SDK/struct/Plugin.d.ts.map | 1 - darc-js/dist/SDK/struct/Plugin.js | 22 - darc-js/dist/SDK/struct/Plugin.js.map | 1 - darc-js/dist/SDK/struct/Program.d.ts | 1 - darc-js/dist/SDK/struct/Program.d.ts.map | 1 - darc-js/dist/SDK/struct/Program.js | 2 - darc-js/dist/SDK/struct/Program.js.map | 1 - darc-js/dist/SDK/struct/basicTypes.d.ts | 6 - darc-js/dist/SDK/struct/basicTypes.d.ts.map | 1 - darc-js/dist/SDK/struct/basicTypes.js | 2 - darc-js/dist/SDK/struct/basicTypes.js.map | 1 - .../dist/SDK/struct/token-operation-map.d.ts | 6 - .../SDK/struct/token-operation-map.d.ts.map | 1 - .../dist/SDK/struct/token-operation-map.js | 10 - .../SDK/struct/token-operation-map.js.map | 1 - darc-js/dist/SDK/struct/voting-param.d.ts | 7 - darc-js/dist/SDK/struct/voting-param.d.ts.map | 1 - darc-js/dist/SDK/struct/voting-param.js | 8 - darc-js/dist/SDK/struct/voting-param.js.map | 1 - darc-js/dist/SDK/transpiler.d.ts | 2 - darc-js/dist/SDK/transpiler.d.ts.map | 1 - darc-js/dist/SDK/transpiler.js | 45 - darc-js/dist/SDK/transpiler.js.map | 1 - darc-js/dist/codeGenerator/codeGenerator.d.ts | 2 - .../dist/codeGenerator/codeGenerator.d.ts.map | 1 - darc-js/dist/codeGenerator/codeGenerator.js | 3 - .../dist/codeGenerator/codeGenerator.js.map | 1 - darc-js/dist/darcBinary/DARC-test.json | 1381 ----------------- darc-js/dist/darcBinary/darcBinary.d.ts | 10 - darc-js/dist/darcBinary/darcBinary.d.ts.map | 1 - darc-js/dist/darcBinary/darcBinary.js | 16 - darc-js/dist/darcBinary/darcBinary.js.map | 1 - darc-js/dist/darcjs.d.ts | 8 - darc-js/dist/darcjs.d.ts.map | 1 - darc-js/dist/darcjs.js | 8 - darc-js/dist/darcjs.js.map | 1 - darc-js/dist/index.d.ts | 3 - darc-js/dist/index.d.ts.map | 1 - darc-js/dist/index.js | 3 - darc-js/dist/index.js.map | 1 - darc-js/dist/instructions.d.ts | 25 - darc-js/dist/instructions.d.ts.map | 1 - darc-js/dist/instructions.js | 46 - darc-js/dist/instructions.js.map | 1 - darc-js/dist/plugin/ConditionNode.d.ts | 26 - darc-js/dist/plugin/ConditionNode.d.ts.map | 1 - darc-js/dist/plugin/ConditionNode.js | 258 --- darc-js/dist/plugin/ConditionNode.js.map | 1 - darc-js/dist/plugin/Expression.d.ts | 17 - darc-js/dist/plugin/Expression.d.ts.map | 1 - darc-js/dist/plugin/Expression.js | 22 - darc-js/dist/plugin/Expression.js.map | 1 - darc-js/dist/runtime/runtime.d.ts | 4 - darc-js/dist/runtime/runtime.d.ts.map | 1 - darc-js/dist/runtime/runtime.js | 24 - darc-js/dist/runtime/runtime.js.map | 1 - darc-js/dist/struct/restriction-plugin.d.ts | 21 - .../dist/struct/restriction-plugin.d.ts.map | 1 - darc-js/dist/struct/restriction-plugin.js | 22 - darc-js/dist/struct/restriction-plugin.js.map | 1 - darc-js/dist/struct/token-operation-map.d.ts | 6 - .../dist/struct/token-operation-map.d.ts.map | 1 - darc-js/dist/struct/token-operation-map.js | 10 - .../dist/struct/token-operation-map.js.map | 1 - darc-js/dist/struct/voting-param.d.ts | 7 - darc-js/dist/struct/voting-param.d.ts.map | 1 - darc-js/dist/struct/voting-param.js | 8 - darc-js/dist/struct/voting-param.js.map | 1 - darc-js/dist/transpiler.d.ts | 2 - darc-js/dist/transpiler.d.ts.map | 1 - darc-js/dist/transpiler.js | 45 - darc-js/dist/transpiler.js.map | 1 - darc-js/src/SDK/conditionNodes/Node.ts | 37 + darc-js/src/codeGenerator/codeGenerator.ts | 3 - darc-js/src/deployDARC/deployDARC.ts | 1 - darc-js/tests/node-test/basic-node-test.ts | 124 +- 101 files changed, 157 insertions(+), 2770 deletions(-) delete mode 100644 darc-js/dist/DARC/DARC.d.ts delete mode 100644 darc-js/dist/DARC/DARC.d.ts.map delete mode 100644 darc-js/dist/DARC/DARC.js delete mode 100644 darc-js/dist/DARC/DARC.js.map delete mode 100644 darc-js/dist/SDK/SDK.d.ts delete mode 100644 darc-js/dist/SDK/SDK.d.ts.map delete mode 100644 darc-js/dist/SDK/SDK.js delete mode 100644 darc-js/dist/SDK/SDK.js.map delete mode 100644 darc-js/dist/SDK/instructions.d.ts delete mode 100644 darc-js/dist/SDK/instructions.d.ts.map delete mode 100644 darc-js/dist/SDK/instructions.js delete mode 100644 darc-js/dist/SDK/instructions.js.map delete mode 100644 darc-js/dist/SDK/plugin/ConditionNode.d.ts delete mode 100644 darc-js/dist/SDK/plugin/ConditionNode.d.ts.map delete mode 100644 darc-js/dist/SDK/plugin/ConditionNode.js delete mode 100644 darc-js/dist/SDK/plugin/ConditionNode.js.map delete mode 100644 darc-js/dist/SDK/plugin/Expression.d.ts delete mode 100644 darc-js/dist/SDK/plugin/Expression.d.ts.map delete mode 100644 darc-js/dist/SDK/plugin/Expression.js delete mode 100644 darc-js/dist/SDK/plugin/Expression.js.map delete mode 100644 darc-js/dist/SDK/runtime.d.ts delete mode 100644 darc-js/dist/SDK/runtime.d.ts.map delete mode 100644 darc-js/dist/SDK/runtime.js delete mode 100644 darc-js/dist/SDK/runtime.js.map delete mode 100644 darc-js/dist/SDK/struct/Plugin.d.ts delete mode 100644 darc-js/dist/SDK/struct/Plugin.d.ts.map delete mode 100644 darc-js/dist/SDK/struct/Plugin.js delete mode 100644 darc-js/dist/SDK/struct/Plugin.js.map delete mode 100644 darc-js/dist/SDK/struct/Program.d.ts delete mode 100644 darc-js/dist/SDK/struct/Program.d.ts.map delete mode 100644 darc-js/dist/SDK/struct/Program.js delete mode 100644 darc-js/dist/SDK/struct/Program.js.map delete mode 100644 darc-js/dist/SDK/struct/basicTypes.d.ts delete mode 100644 darc-js/dist/SDK/struct/basicTypes.d.ts.map delete mode 100644 darc-js/dist/SDK/struct/basicTypes.js delete mode 100644 darc-js/dist/SDK/struct/basicTypes.js.map delete mode 100644 darc-js/dist/SDK/struct/token-operation-map.d.ts delete mode 100644 darc-js/dist/SDK/struct/token-operation-map.d.ts.map delete mode 100644 darc-js/dist/SDK/struct/token-operation-map.js delete mode 100644 darc-js/dist/SDK/struct/token-operation-map.js.map delete mode 100644 darc-js/dist/SDK/struct/voting-param.d.ts delete mode 100644 darc-js/dist/SDK/struct/voting-param.d.ts.map delete mode 100644 darc-js/dist/SDK/struct/voting-param.js delete mode 100644 darc-js/dist/SDK/struct/voting-param.js.map delete mode 100644 darc-js/dist/SDK/transpiler.d.ts delete mode 100644 darc-js/dist/SDK/transpiler.d.ts.map delete mode 100644 darc-js/dist/SDK/transpiler.js delete mode 100644 darc-js/dist/SDK/transpiler.js.map delete mode 100644 darc-js/dist/codeGenerator/codeGenerator.d.ts delete mode 100644 darc-js/dist/codeGenerator/codeGenerator.d.ts.map delete mode 100644 darc-js/dist/codeGenerator/codeGenerator.js delete mode 100644 darc-js/dist/codeGenerator/codeGenerator.js.map delete mode 100644 darc-js/dist/darcBinary/DARC-test.json delete mode 100644 darc-js/dist/darcBinary/darcBinary.d.ts delete mode 100644 darc-js/dist/darcBinary/darcBinary.d.ts.map delete mode 100644 darc-js/dist/darcBinary/darcBinary.js delete mode 100644 darc-js/dist/darcBinary/darcBinary.js.map delete mode 100644 darc-js/dist/darcjs.d.ts delete mode 100644 darc-js/dist/darcjs.d.ts.map delete mode 100644 darc-js/dist/darcjs.js delete mode 100644 darc-js/dist/darcjs.js.map delete mode 100644 darc-js/dist/index.d.ts delete mode 100644 darc-js/dist/index.d.ts.map delete mode 100644 darc-js/dist/index.js delete mode 100644 darc-js/dist/index.js.map delete mode 100644 darc-js/dist/instructions.d.ts delete mode 100644 darc-js/dist/instructions.d.ts.map delete mode 100644 darc-js/dist/instructions.js delete mode 100644 darc-js/dist/instructions.js.map delete mode 100644 darc-js/dist/plugin/ConditionNode.d.ts delete mode 100644 darc-js/dist/plugin/ConditionNode.d.ts.map delete mode 100644 darc-js/dist/plugin/ConditionNode.js delete mode 100644 darc-js/dist/plugin/ConditionNode.js.map delete mode 100644 darc-js/dist/plugin/Expression.d.ts delete mode 100644 darc-js/dist/plugin/Expression.d.ts.map delete mode 100644 darc-js/dist/plugin/Expression.js delete mode 100644 darc-js/dist/plugin/Expression.js.map delete mode 100644 darc-js/dist/runtime/runtime.d.ts delete mode 100644 darc-js/dist/runtime/runtime.d.ts.map delete mode 100644 darc-js/dist/runtime/runtime.js delete mode 100644 darc-js/dist/runtime/runtime.js.map delete mode 100644 darc-js/dist/struct/restriction-plugin.d.ts delete mode 100644 darc-js/dist/struct/restriction-plugin.d.ts.map delete mode 100644 darc-js/dist/struct/restriction-plugin.js delete mode 100644 darc-js/dist/struct/restriction-plugin.js.map delete mode 100644 darc-js/dist/struct/token-operation-map.d.ts delete mode 100644 darc-js/dist/struct/token-operation-map.d.ts.map delete mode 100644 darc-js/dist/struct/token-operation-map.js delete mode 100644 darc-js/dist/struct/token-operation-map.js.map delete mode 100644 darc-js/dist/struct/voting-param.d.ts delete mode 100644 darc-js/dist/struct/voting-param.d.ts.map delete mode 100644 darc-js/dist/struct/voting-param.js delete mode 100644 darc-js/dist/struct/voting-param.js.map delete mode 100644 darc-js/dist/transpiler.d.ts delete mode 100644 darc-js/dist/transpiler.d.ts.map delete mode 100644 darc-js/dist/transpiler.js delete mode 100644 darc-js/dist/transpiler.js.map delete mode 100644 darc-js/src/codeGenerator/codeGenerator.ts diff --git a/darc-js/dist/DARC/DARC.d.ts b/darc-js/dist/DARC/DARC.d.ts deleted file mode 100644 index 5e75b307..00000000 --- a/darc-js/dist/DARC/DARC.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { ethers } from 'ethers'; -import * as darcBinary from '../darcBinary/darcBinary'; -export type InitParam = { - address: string; - version: darcBinary.DARC_VERSION; - wallet?: ethers.Wallet; - provider?: ethers.providers.Provider; -}; -export type TokenInfo = { - votingWeight: BigInt; - dividendWeight: BigInt; - tokenInfo: string; - totalSupply: BigInt; -}; -export type MemberInfo = { - bIsInitialized: boolean; - bIsSuspened: boolean; - name: string; - role: bigint; -}; -/** - * The DARC class is used to interact with the DARC contract. - */ -export declare class DARC { - private darcContract; - private darcAddress; - private darcVersion; - private wallet; - private provider; - /** - * The constructor of the DARC class. - * @param param: the init param including the address, version, wallet and/or provider. - */ - constructor(param: InitParam); - /** - * Run the program on the DARC contract. - * @param program: the program to be run. - */ - entrance(program: any): Promise; - /** - * Below are all DARC's dashboard functions, read parameters from the DARC contract. - */ - getTokenOwners(tokenClass: BigInt): Promise; - getTokenInfo(tokenClass: BigInt): Promise; - /** - * Return the address of the DARC contract. - * @returns the address of the DARC contract. - */ - address(): string; - /** - * Return the number of token classes. - * @returns the number of token classes. - */ - getNumberOfTokenClasses(): Promise; - /** - * Return the balance of the owner for the token class. - * @param tokenClass the index of the token class. - * @param owner the address of the owner. - * @returns the balance of the owner for the token class. - */ - getTokenOwnerBalance(tokenClass: BigInt, owner: string): Promise; - /** - * Get the DARC plugins. - * @returns the number of token classes. - */ - getPluginInfo(): Promise; - /** - * Get the DARC member list. - * @returns the DARC member list. - */ - getMemberList(): Promise; - getMemberInfo(memberAddress: string): Promise; -} -//# sourceMappingURL=DARC.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/DARC/DARC.d.ts.map b/darc-js/dist/DARC/DARC.d.ts.map deleted file mode 100644 index 2bc22de1..00000000 --- a/darc-js/dist/DARC/DARC.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DARC.d.ts","sourceRoot":"","sources":["../../src/DARC/DARC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,0BAA0B,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;CACtC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;GAEG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAAwC;IAExD;;;OAGG;gBACS,KAAK,EAAE,SAAS;IAe5B;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAC,GAAG;IAY1B;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAe1D;;;OAGG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlD;;;;;OAKG;IACK,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAInC;;;MAGE;IACI,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlC,aAAa,CAAC,aAAa,EAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAIxD"} \ No newline at end of file diff --git a/darc-js/dist/DARC/DARC.js b/darc-js/dist/DARC/DARC.js deleted file mode 100644 index ae55b285..00000000 --- a/darc-js/dist/DARC/DARC.js +++ /dev/null @@ -1,126 +0,0 @@ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -import { ethers } from 'ethers'; -import * as darcBinary from '../darcBinary/darcBinary'; -/** - * The DARC class is used to interact with the DARC contract. - */ -export class DARC { - /** - * The constructor of the DARC class. - * @param param: the init param including the address, version, wallet and/or provider. - */ - constructor(param) { - const { address, version, wallet, provider } = param; - this.darcAddress = address; - this.darcVersion = version; - this.wallet = wallet; - this.provider = provider; - if (wallet !== undefined) { - this.darcContract = new ethers.Contract(address, darcBinary.darcBinary(version).abi, wallet); - } - else if (provider !== undefined) { - this.darcContract = new ethers.Contract(address, darcBinary.darcBinary(version).abi, provider); - } - else { - throw new Error("Either wallet or provider should be provided."); - } - } - /** - * Run the program on the DARC contract. - * @param program: the program to be run. - */ - entrance(program) { - return __awaiter(this, void 0, void 0, function* () { - if (this.wallet === undefined) { - throw new Error("Wallet is not provided for this DARC instance."); - } - try { - yield this.darcContract.entrance(program); - } - catch (e) { - console.log("Error when running the program: " + e); - } - }); - } - /** - * Below are all DARC's dashboard functions, read parameters from the DARC contract. - */ - getTokenOwners(tokenClass) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.darcContract.getTokenOwners(tokenClass); - }); - } - getTokenInfo(tokenClass) { - return __awaiter(this, void 0, void 0, function* () { - const result = yield this.darcContract.getTokenInfo(tokenClass); - //console.log("result: " + JSON.stringify(result)); - const { 0: returnVotingWeight, 1: returnDividendWeight, 2: returnTokenInfo, 3: returnTotalSupply } = result; - let returnStruct = { - votingWeight: returnVotingWeight, - dividendWeight: returnDividendWeight, - tokenInfo: returnTokenInfo, - totalSupply: returnTotalSupply, - }; - return returnStruct; - }); - } - /** - * Return the address of the DARC contract. - * @returns the address of the DARC contract. - */ - address() { - return this.darcAddress; - } - /** - * Return the number of token classes. - * @returns the number of token classes. - */ - getNumberOfTokenClasses() { - return __awaiter(this, void 0, void 0, function* () { - return yield this.darcContract.getNumberOfTokenClasses(); - }); - } - /** - * Return the balance of the owner for the token class. - * @param tokenClass the index of the token class. - * @param owner the address of the owner. - * @returns the balance of the owner for the token class. - */ - getTokenOwnerBalance(tokenClass, owner) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.darcContract.getTokenOwnerBalance(tokenClass, owner); - }); - } - /** - * Get the DARC plugins. - * @returns the number of token classes. - */ - getPluginInfo() { - return __awaiter(this, void 0, void 0, function* () { - return yield this.darcContract.getPluginInfo(); - }); - } - /** - * Get the DARC member list. - * @returns the DARC member list. - */ - getMemberList() { - return __awaiter(this, void 0, void 0, function* () { - return yield this.darcContract.getMemberList(); - }); - } - getMemberInfo(memberAddress) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.darcContract.getMemberInfo(memberAddress); - }); - } -} -//# sourceMappingURL=DARC.js.map \ No newline at end of file diff --git a/darc-js/dist/DARC/DARC.js.map b/darc-js/dist/DARC/DARC.js.map deleted file mode 100644 index 2c6f4489..00000000 --- a/darc-js/dist/DARC/DARC.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DARC.js","sourceRoot":"","sources":["../../src/DARC/DARC.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,0BAA0B,CAAC;AAuBvD;;GAEG;AACH,MAAM,OAAO,IAAI;IAOf;;;OAGG;IACH,YAAY,KAAgB;QAC1B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAC9F;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAChG;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAClE;IACH,CAAC;IAED;;;OAGG;IACG,QAAQ,CAAC,OAAW;;YACxB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;aACnE;YACD,IAAG;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC3C;YACD,OAAM,CAAC,EAAC;gBACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,CAAC,CAAC;aACrD;QACH,CAAC;KAAA;IAED;;OAEG;IACG,cAAc,CAAC,UAAkB;;YACrC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;KAAA;IAEK,YAAY,CAAC,UAAkB;;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAChE,mDAAmD;YACnD,MAAM,EAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,iBAAiB,EAAC,GAAG,MAAM,CAAC;YAE1G,IAAI,YAAY,GAAc;gBAC5B,YAAY,EAAE,kBAAkB;gBAChC,cAAc,EAAE,oBAAoB;gBACpC,SAAS,EAAE,eAAe;gBAC1B,WAAW,EAAE,iBAAiB;aAC/B,CAAC;YAEF,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACG,uBAAuB;;YAC3B,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;QAC3D,CAAC;KAAA;IAEH;;;;;OAKG;IACK,oBAAoB,CAAC,UAAkB,EAAE,KAAa;;YAC1D,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC;KAAA;IAED;;;OAGG;IACG,aAAa;;YACjB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACjD,CAAC;KAAA;IAED;;;MAGE;IACI,aAAa;;YACjB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACjD,CAAC;KAAA;IAEK,aAAa,CAAC,aAAoB;;YACtC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;KAAA;CAEF"} \ No newline at end of file diff --git a/darc-js/dist/SDK/SDK.d.ts b/darc-js/dist/SDK/SDK.d.ts deleted file mode 100644 index 82f430ff..00000000 --- a/darc-js/dist/SDK/SDK.d.ts +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=SDK.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/SDK.d.ts.map b/darc-js/dist/SDK/SDK.d.ts.map deleted file mode 100644 index 4e4b97a2..00000000 --- a/darc-js/dist/SDK/SDK.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SDK.d.ts","sourceRoot":"","sources":["../../src/SDK/SDK.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/darc-js/dist/SDK/SDK.js b/darc-js/dist/SDK/SDK.js deleted file mode 100644 index e2ba557f..00000000 --- a/darc-js/dist/SDK/SDK.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -//# sourceMappingURL=SDK.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/SDK.js.map b/darc-js/dist/SDK/SDK.js.map deleted file mode 100644 index 873b4eae..00000000 --- a/darc-js/dist/SDK/SDK.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SDK.js","sourceRoot":"","sources":["../../src/SDK/SDK.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/darc-js/dist/SDK/instructions.d.ts b/darc-js/dist/SDK/instructions.d.ts deleted file mode 100644 index b2c03b40..00000000 --- a/darc-js/dist/SDK/instructions.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TokenOperations } from "./struct/token-operation-map"; -import { Plugin } from "./struct/Plugin"; -export declare let operationList: never[]; -declare function withdraw_dividends(): void; -declare function withdraw_money(amount: number): void; -declare function withdraw_money_and_send_to_address(amount: number, targetAddress: string): void; -declare function pay_money(amount: number): void; -declare function enable_plugin_index(pluginIndex: number): void; -declare function disable_plugin_index(pluginIndex: number): void; -declare function add_plugin(currentRestrictionPlugin: Plugin): void; -declare function add_and_enable_plugin(currentRestrictionPlugin: Plugin): void; -declare function burn_tokens(tokenID: number, amount: number, targetAddress: string): void; -declare function batch_transfer_tokens(tokenOperations: TokenOperations): void; -declare function batch_mint_tokens(tokenOperations: TokenOperations): void; -declare function batch_burn_tokens(tokenOperations: TokenOperations): void; -declare function call_emergency(emergency_id: number): void; -declare function set_parameter(parameter: string, value: string): void; -declare function add_to_member_list(alias: string, role: string, address: string): void; -declare function modify_member_list(alias: string, role: string, address: string): void; -declare function suspend_member_list(address: string): void; -declare function reactivate_member_list(address: string): void; -export { withdraw_dividends, withdraw_money, withdraw_money_and_send_to_address, pay_money, enable_plugin_index, disable_plugin_index, add_plugin, add_and_enable_plugin, burn_tokens, batch_transfer_tokens, batch_mint_tokens, batch_burn_tokens, call_emergency, set_parameter, add_to_member_list, modify_member_list, suspend_member_list, reactivate_member_list }; -//# sourceMappingURL=instructions.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/instructions.d.ts.map b/darc-js/dist/SDK/instructions.d.ts.map deleted file mode 100644 index f8d86e98..00000000 --- a/darc-js/dist/SDK/instructions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/SDK/instructions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,eAAO,IAAI,aAAa,SAAK,CAAC;AAE9B,iBAAS,kBAAkB,SAE1B;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,QAErC;AAED,iBAAS,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAEhF;AAED,iBAAS,SAAS,CAAC,MAAM,EAAE,MAAM,QAEhC;AAED,iBAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,QAE/C;AAED,iBAAS,oBAAoB,CAAC,WAAW,EAAE,MAAM,QAEhD;AAED,iBAAS,UAAU,CAAC,wBAAwB,EAAE,MAAM,QAEnD;AAED,iBAAS,qBAAqB,CAAC,wBAAwB,EAAE,MAAM,QAE9D;AAED,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAE1E;AAED,iBAAS,qBAAqB,CAAC,eAAe,EAAE,eAAe,QAE9D;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,eAAe,QAE1D;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,eAAe,QAE1D;AAED,iBAAS,cAAc,CAAC,YAAY,EAAE,MAAM,QAE3C;AAED,iBAAS,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEtD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAEvE;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAEvE;AAED,iBAAS,mBAAmB,CAAC,OAAO,EAAE,MAAM,QAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,EAAE,MAAM,QAE9C;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,kCAAkC,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAC,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/instructions.js b/darc-js/dist/SDK/instructions.js deleted file mode 100644 index 4a581ed9..00000000 --- a/darc-js/dist/SDK/instructions.js +++ /dev/null @@ -1,41 +0,0 @@ -// all the included instructions are here, mostly instructions for operations -// todo: add backend support for current operations -export let operationList = []; -function withdraw_dividends() { -} -function withdraw_money(amount) { -} -function withdraw_money_and_send_to_address(amount, targetAddress) { -} -function pay_money(amount) { -} -function enable_plugin_index(pluginIndex) { -} -function disable_plugin_index(pluginIndex) { -} -function add_plugin(currentRestrictionPlugin) { -} -function add_and_enable_plugin(currentRestrictionPlugin) { -} -function burn_tokens(tokenID, amount, targetAddress) { -} -function batch_transfer_tokens(tokenOperations) { -} -function batch_mint_tokens(tokenOperations) { -} -function batch_burn_tokens(tokenOperations) { -} -function call_emergency(emergency_id) { -} -function set_parameter(parameter, value) { -} -function add_to_member_list(alias, role, address) { -} -function modify_member_list(alias, role, address) { -} -function suspend_member_list(address) { -} -function reactivate_member_list(address) { -} -export { withdraw_dividends, withdraw_money, withdraw_money_and_send_to_address, pay_money, enable_plugin_index, disable_plugin_index, add_plugin, add_and_enable_plugin, burn_tokens, batch_transfer_tokens, batch_mint_tokens, batch_burn_tokens, call_emergency, set_parameter, add_to_member_list, modify_member_list, suspend_member_list, reactivate_member_list }; -//# sourceMappingURL=instructions.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/instructions.js.map b/darc-js/dist/SDK/instructions.js.map deleted file mode 100644 index 3a7e1689..00000000 --- a/darc-js/dist/SDK/instructions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/SDK/instructions.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mDAAmD;AAKnD,MAAM,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC;AAE9B,SAAS,kBAAkB;AAE3B,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;AAEtC,CAAC;AAED,SAAS,kCAAkC,CAAC,MAAc,EAAE,aAAqB;AAEjF,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;AAEjC,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB;AAEhD,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;AAEjD,CAAC;AAED,SAAS,UAAU,CAAC,wBAAgC;AAEpD,CAAC;AAED,SAAS,qBAAqB,CAAC,wBAAgC;AAE/D,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB;AAE3E,CAAC;AAED,SAAS,qBAAqB,CAAC,eAAgC;AAE/D,CAAC;AAED,SAAS,iBAAiB,CAAC,eAAgC;AAE3D,CAAC;AAED,SAAS,iBAAiB,CAAC,eAAgC;AAE3D,CAAC;AAED,SAAS,cAAc,CAAC,YAAoB;AAE5C,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,KAAa;AAEvD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe;AAExE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe;AAExE,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;AAE5C,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;AAE/C,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,kCAAkC,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAC,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/ConditionNode.d.ts b/darc-js/dist/SDK/plugin/ConditionNode.d.ts deleted file mode 100644 index 280b3a11..00000000 --- a/darc-js/dist/SDK/plugin/ConditionNode.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Expression } from "./Expression"; -declare enum ConditionNodeType { - ExpressionNode = 0, - LogicalOperatorNode = 1, - BooleanValueNode = 2 -} -declare enum LogicalOperatorType { - AND = 0, - OR = 1, - NOT = 2 -} -declare class ConditionNode { - type: ConditionNodeType; - expression: Expression | null; - logicalOperator: LogicalOperatorType | null; - expressionParameters: (number | string | bigint)[] | null; - booleanValue: boolean | null; - childList: ConditionNode[]; - constructor(type: ConditionNodeType, expression: Expression | null, logicalOperator: LogicalOperatorType | null, expressionParameters: (number | string | bigint)[] | null, booleanValue?: boolean | null); - serializeToString(): string; - isValidLogicalOperatorNode(): void; - isValidExpressionNode(): void; - isValidBooleanValueNode(): void; -} -export { ConditionNode, Expression, ConditionNodeType, LogicalOperatorType }; -//# sourceMappingURL=ConditionNode.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/ConditionNode.d.ts.map b/darc-js/dist/SDK/plugin/ConditionNode.d.ts.map deleted file mode 100644 index a6d1c315..00000000 --- a/darc-js/dist/SDK/plugin/ConditionNode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConditionNode.d.ts","sourceRoot":"","sources":["../../../src/SDK/plugin/ConditionNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,aAAK,iBAAiB;IAAG,cAAc,IAAA;IAAE,mBAAmB,IAAA;IAAE,gBAAgB,IAAA;CAAC;AAC/E,aAAK,mBAAmB;IAAE,GAAG,IAAA;IAAE,EAAE,IAAA;IAAE,GAAG,IAAA;CAAC;AAEvC,cAAM,aAAa;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IACtD,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,aAAa,EAAE,CAAM;gBACpB,IAAI,EAAE,iBAAiB,EAC/B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,eAAe,EAAE,mBAAmB,GAAG,IAAI,EAC3C,oBAAoB,EAAG,CAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EACtD,YAAY,GAAE,OAAO,GAAG,IAAW;IAavC,iBAAiB,IAAI,MAAM;IAsL3B,0BAA0B;IA0B1B,qBAAqB;IAiBrB,uBAAuB;CA6B1B;AAGD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/ConditionNode.js b/darc-js/dist/SDK/plugin/ConditionNode.js deleted file mode 100644 index c700a0e4..00000000 --- a/darc-js/dist/SDK/plugin/ConditionNode.js +++ /dev/null @@ -1,258 +0,0 @@ -// The basic abstact syntax tree node of the expression tree -// representing the condition of a restriction plugin condition -import { Expression } from "./Expression"; -var ConditionNodeType; -(function (ConditionNodeType) { - ConditionNodeType[ConditionNodeType["ExpressionNode"] = 0] = "ExpressionNode"; - ConditionNodeType[ConditionNodeType["LogicalOperatorNode"] = 1] = "LogicalOperatorNode"; - ConditionNodeType[ConditionNodeType["BooleanValueNode"] = 2] = "BooleanValueNode"; -})(ConditionNodeType || (ConditionNodeType = {})); -var LogicalOperatorType; -(function (LogicalOperatorType) { - LogicalOperatorType[LogicalOperatorType["AND"] = 0] = "AND"; - LogicalOperatorType[LogicalOperatorType["OR"] = 1] = "OR"; - LogicalOperatorType[LogicalOperatorType["NOT"] = 2] = "NOT"; -})(LogicalOperatorType || (LogicalOperatorType = {})); -class ConditionNode { - constructor(type, expression, logicalOperator, expressionParameters, booleanValue = null) { - this.childList = []; - this.type = type; - this.expression = expression; - this.logicalOperator = logicalOperator; - this.expressionParameters = expressionParameters; - this.childList = []; - this.booleanValue = booleanValue; - // validate the node - this.isValidLogicalOperatorNode(); - this.isValidExpressionNode(); - } - serializeToString() { - const childListString = this.childList.length == 0 ? this.childList.map((child) => child.serializeToString()).join(" ") : null; - let returnString = ""; - if (this.type === ConditionNodeType.ExpressionNode) { - returnString += `Expression: ${this.expression}(${this.expressionParameters})`; - } - else if (this.type === ConditionNodeType.LogicalOperatorNode) { - returnString += `LogicalOperator: ${this.logicalOperator}`; - } - else if (this.type === ConditionNodeType.BooleanValueNode) { - returnString += `BooleanValue: ${this.booleanValue}`; - } - if (childListString) { - returnString += ` Child List: ${childListString}`; - } - return returnString; - } - // operator overloading for '&' operator - [Symbol.for('&')](rightOperand) { - // if the current node is an expression node - if (this.type === ConditionNodeType.ExpressionNode) { - // if the right operand is an expression node, create a new logical operator node of type OR - if (rightOperand.type == ConditionNodeType.BooleanValueNode || rightOperand.type == ConditionNodeType.ExpressionNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // if the right operand is a logical operator node, add the current node as the left child of the right operand - else if (rightOperand.type == ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an AND operator, add the current node as the child to the child list of the right operand - if (rightOperand.logicalOperator == LogicalOperatorType.AND) { - rightOperand.childList.push(this); - return rightOperand; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.OR) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // else throw an exception - else { - throw new Error("Invalid logical operator type"); - } - } - } - // if the current node is a logical operator node - else if (this.type === ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an expression node, add the right operand as the right child of the current node - if (this.logicalOperator === LogicalOperatorType.AND) { - this.childList.push(rightOperand); - return this; - } - // if the right operand is a logical operator node, add the right operand as the right child of the current node - else if (this.logicalOperator === LogicalOperatorType.OR) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (this.logicalOperator === LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - } - else if (this.type === ConditionNodeType.BooleanValueNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - throw new Error("Invalid condition node type"); - } - // operator overloading for '|' operator - [Symbol.for('|')](rightOperand) { - // if the current node is an expression node - if (this.type === ConditionNodeType.ExpressionNode) { - // if the right operand is an expression node, create a new logical operator node of type OR - if (rightOperand.type == ConditionNodeType.BooleanValueNode || rightOperand.type == ConditionNodeType.ExpressionNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // if the right operand is a logical operator node, add the current node as the left child of the right operand - else if (rightOperand.type == ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an AND operator, add the current node as the child to the child list of the right operand - if (rightOperand.logicalOperator == LogicalOperatorType.OR) { - rightOperand.childList.push(this); - return rightOperand; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.AND) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // else throw an exception - else { - throw new Error("Invalid logical operator type"); - } - } - } - // if the current node is a logical operator node - else if (this.type === ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an expression node, add the right operand as the right child of the current node - if (this.logicalOperator === LogicalOperatorType.OR) { - this.childList.push(rightOperand); - return this; - } - // if the right operand is a logical operator node, add the right operand as the right child of the current node - else if (this.logicalOperator === LogicalOperatorType.AND) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (this.logicalOperator === LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - } - else if (this.type === ConditionNodeType.BooleanValueNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - throw new Error("Invalid condition node type"); - } - // if an operator "!" is used, the expression will return a - // logical operator node with current node as left child, and - // a null object as right child, and the operator type is "!" - [Symbol.for('!')]() { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.NOT, null); - logicalOperatorNode.childList.push(this); - return logicalOperatorNode; - } - // check if the current node is a valid logical operator node, - // and throw an exception if it is not - isValidLogicalOperatorNode() { - if (this.type === ConditionNodeType.LogicalOperatorNode) { - // check if the logical operator type is null - if (this.logicalOperator === null) { - throw new Error("The logical operator type of the current node is null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // if operator is AND, OR, make sure that child list has at least 2 elements - if (this.logicalOperator === LogicalOperatorType.AND || this.logicalOperator === LogicalOperatorType.OR) { - if (this.childList.length < 2) { - throw new Error("The list of all child nodes has less than 2 elements, which is illegal.\n\ - Current node:\n " + JSON.stringify(this)); - } - } - // if operator is NOT, make sure that the child list has only 1 element - if (this.logicalOperator === LogicalOperatorType.NOT) { - if (this.childList.length !== 1) { - throw new Error("Invalid length of child node for NOT operator.\n\ - Current node:\n " + JSON.stringify(this)); - } - } - } - } - // check if the current node is a valid expression node, - // and throw an exception if it is not - isValidExpressionNode() { - if (this.type === ConditionNodeType.ExpressionNode) { - // check if the expression type is null - if (this.expression === null) { - throw new Error("The expression type of the current expression node is null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the child list is empty - if (this.childList.length !== 0) { - throw new Error("Illegal element in child node list of an expression node.\n\ - Current node:\n " + JSON.stringify(this)); - } - } - } - // check if the current node is a valid boolean value node, - // and throw an exception if it is not - isValidBooleanValueNode() { - if (this.type === ConditionNodeType.BooleanValueNode) { - // check if the boolean value is null - if (this.booleanValue === null) { - throw new Error("The boolean value of the current boolean value node is null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the left and right child are null - if (this.childList.length !== 0) { - throw new Error("The child list node of current node is not empty for a boolean value node.\n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the expression type is null - if (this.expression !== null) { - throw new Error("The expression type of the current boolean value node is not null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the logical operator type is null - if (this.logicalOperator !== null) { - throw new Error("The logical operator type of the current boolean value node is not null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the expression parameters is null - if (this.expressionParameters !== null) { - throw new Error("The expression parameters of the current boolean value node is not null. \n\ - Current node:\n " + JSON.stringify(this)); - } - } - } -} -export { ConditionNode, Expression, ConditionNodeType, LogicalOperatorType }; -//# sourceMappingURL=ConditionNode.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/ConditionNode.js.map b/darc-js/dist/SDK/plugin/ConditionNode.js.map deleted file mode 100644 index 982a3b51..00000000 --- a/darc-js/dist/SDK/plugin/ConditionNode.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConditionNode.js","sourceRoot":"","sources":["../../../src/SDK/plugin/ConditionNode.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+DAA+D;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,IAAK,iBAA0E;AAA/E,WAAK,iBAAiB;IAAG,6EAAc,CAAA;IAAE,uFAAmB,CAAA;IAAE,iFAAgB,CAAA;AAAA,CAAC,EAA1E,iBAAiB,KAAjB,iBAAiB,QAAyD;AAC/E,IAAK,mBAAkC;AAAvC,WAAK,mBAAmB;IAAE,2DAAG,CAAA;IAAE,yDAAE,CAAA;IAAE,2DAAG,CAAA;AAAA,CAAC,EAAlC,mBAAmB,KAAnB,mBAAmB,QAAe;AAEvC,MAAM,aAAa;IAOf,YAAY,IAAuB,EAC/B,UAA6B,EAC7B,eAA2C,EAC3C,oBAAsD,EACtD,eAA+B,IAAI;QALvC,cAAS,GAAoB,EAAE,CAAC;QAM5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,oBAAoB;QACpB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED,iBAAiB;QACb,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/H,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAE;YAChD,YAAY,IAAG,eAAe,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;SACjF;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAE;YAC1D,YAAY,IAAG,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC7D;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;YACvD,YAAY,IAAG,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvD;QACD,IAAI,eAAe,EAAE;YACjB,YAAY,IAAG,gBAAgB,eAAe,EAAE,CAAC;SACpD;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,wCAAwC;IACxC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,YAA2B;QAE1C,4CAA4C;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAE;YAEhD,4FAA4F;YAC5F,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,cAAc,EAAC;gBACjH,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;YAED,+GAA+G;iBAC1G,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,mBAAmB,EAAE;gBAEjE,oHAAoH;gBACpH,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBACzD,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,OAAO,YAAY,CAAC;iBACvB;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,EAAE,EAAE;oBAC7D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBAC9D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;gBAED,0BAA0B;qBACrB;oBACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBACpD;aACJ;SACJ;QAED,iDAAiD;aAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAE;YAE1D,2GAA2G;YAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;aACf;YAED,gHAAgH;iBAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBACtD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;iBACI,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;SACJ;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;YACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjD,OAAO,mBAAmB,CAAC;SAC9B;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEnD,CAAC;IAED,wCAAwC;IACxC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,YAA2B;QAE1C,4CAA4C;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAE;YAEhD,4FAA4F;YAC5F,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,cAAc,EAAC;gBACjH,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;YAED,+GAA+G;iBAC1G,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,mBAAmB,EAAE;gBAEjE,oHAAoH;gBACpH,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,EAAE,EAAE;oBACxD,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,OAAO,YAAY,CAAC;iBACvB;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBAC9D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBAC9D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;gBAED,0BAA0B;qBACrB;oBACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBACpD;aACJ;SACJ;QAED,iDAAiD;aAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAE;YAE1D,2GAA2G;YAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;aACf;YAED,gHAAgH;iBAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;iBACI,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;SACJ;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;YACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjD,OAAO,mBAAmB,CAAC;SAC9B;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED,2DAA2D;IAC3D,6DAA6D;IAC7D,6DAA6D;IAC7D,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,8DAA8D;IAC9D,sCAAsC;IACtC,0BAA0B;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAC;YACpD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,4EAA4E;YAC5E,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,EAAE,EAAC;gBACpG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC;qCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC7C;aACJ;YACD,uEAAuE;YACvE,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAC;gBACjD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC;qCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC7C;aACJ;SACJ;IACL,CAAC;IAED,wDAAwD;IACxD,sCAAsC;IACtC,qBAAqB;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAC;YAC/C,uCAAuC;YACvC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAC;gBACzB,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,yCAAyC;YACzC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;IAED,2DAA2D;IAC3D,sCAAsC;IACtC,uBAAuB;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAC;YACjD,qCAAqC;YACrC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,mDAAmD;YACnD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAC;gBACzB,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,mDAAmD;YACnD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,mDAAmD;YACnD,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAC;gBACnC,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;CACJ;AAGD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/Expression.d.ts b/darc-js/dist/SDK/plugin/Expression.d.ts deleted file mode 100644 index 1fb38c6d..00000000 --- a/darc-js/dist/SDK/plugin/Expression.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export declare enum Expression { - Operator_Address_Equals = 1, - Operator_Alias_Equals = 2, - Operator_Role_Equals = 3, - Operator_Address_Not_Equals = 4, - Operator_Alias_Not_Equals = 5, - Operator_Role_Not_Equals = 6, - Operator_Address_In_List = 7, - Operator_Alias_In_List = 8, - Operator_Role_In_List = 9, - Operator_Address_Not_In_List = 10, - Operator_Alias_Not_In_List = 11, - Operator_Role_Not_In_List = 12, - Operation_Equals = 1000, - Operation_Not_Equals = 1001 -} -//# sourceMappingURL=Expression.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/Expression.d.ts.map b/darc-js/dist/SDK/plugin/Expression.d.ts.map deleted file mode 100644 index 8007b566..00000000 --- a/darc-js/dist/SDK/plugin/Expression.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Expression.d.ts","sourceRoot":"","sources":["../../../src/SDK/plugin/Expression.ts"],"names":[],"mappings":"AAEA,oBAAY,UAAU;IAEpB,uBAAuB,IAAI;IAC3B,qBAAqB,IAAI;IACzB,oBAAoB,IAAI;IACxB,2BAA2B,IAAI;IAC/B,yBAAyB,IAAI;IAC7B,wBAAwB,IAAI;IAC5B,wBAAwB,IAAI;IAC5B,sBAAsB,IAAI;IAC1B,qBAAqB,IAAI;IACzB,4BAA4B,KAAK;IACjC,0BAA0B,KAAK;IAC/B,yBAAyB,KAAK;IAG9B,gBAAgB,OAAO;IACvB,oBAAoB,OAAO;CAI5B"} \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/Expression.js b/darc-js/dist/SDK/plugin/Expression.js deleted file mode 100644 index 3d3de73b..00000000 --- a/darc-js/dist/SDK/plugin/Expression.js +++ /dev/null @@ -1,22 +0,0 @@ -// All the expressions that can be used in the by-law script -export var Expression; -(function (Expression) { - // operator identifiers - Expression[Expression["Operator_Address_Equals"] = 1] = "Operator_Address_Equals"; - Expression[Expression["Operator_Alias_Equals"] = 2] = "Operator_Alias_Equals"; - Expression[Expression["Operator_Role_Equals"] = 3] = "Operator_Role_Equals"; - Expression[Expression["Operator_Address_Not_Equals"] = 4] = "Operator_Address_Not_Equals"; - Expression[Expression["Operator_Alias_Not_Equals"] = 5] = "Operator_Alias_Not_Equals"; - Expression[Expression["Operator_Role_Not_Equals"] = 6] = "Operator_Role_Not_Equals"; - Expression[Expression["Operator_Address_In_List"] = 7] = "Operator_Address_In_List"; - Expression[Expression["Operator_Alias_In_List"] = 8] = "Operator_Alias_In_List"; - Expression[Expression["Operator_Role_In_List"] = 9] = "Operator_Role_In_List"; - Expression[Expression["Operator_Address_Not_In_List"] = 10] = "Operator_Address_Not_In_List"; - Expression[Expression["Operator_Alias_Not_In_List"] = 11] = "Operator_Alias_Not_In_List"; - Expression[Expression["Operator_Role_Not_In_List"] = 12] = "Operator_Role_Not_In_List"; - // operations - Expression[Expression["Operation_Equals"] = 1000] = "Operation_Equals"; - Expression[Expression["Operation_Not_Equals"] = 1001] = "Operation_Not_Equals"; - // todo: add more operations -})(Expression || (Expression = {})); -//# sourceMappingURL=Expression.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/plugin/Expression.js.map b/darc-js/dist/SDK/plugin/Expression.js.map deleted file mode 100644 index 264faf45..00000000 --- a/darc-js/dist/SDK/plugin/Expression.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../../src/SDK/plugin/Expression.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,MAAM,CAAN,IAAY,UAqBX;AArBD,WAAY,UAAU;IACpB,uBAAuB;IACvB,iFAA2B,CAAA;IAC3B,6EAAyB,CAAA;IACzB,2EAAwB,CAAA;IACxB,yFAA+B,CAAA;IAC/B,qFAA6B,CAAA;IAC7B,mFAA4B,CAAA;IAC5B,mFAA4B,CAAA;IAC5B,+EAA0B,CAAA;IAC1B,6EAAyB,CAAA;IACzB,4FAAiC,CAAA;IACjC,wFAA+B,CAAA;IAC/B,sFAA8B,CAAA;IAE9B,aAAa;IACb,sEAAuB,CAAA;IACvB,8EAA2B,CAAA;IAE3B,4BAA4B;AAE9B,CAAC,EArBW,UAAU,KAAV,UAAU,QAqBrB"} \ No newline at end of file diff --git a/darc-js/dist/SDK/runtime.d.ts b/darc-js/dist/SDK/runtime.d.ts deleted file mode 100644 index d0559397..00000000 --- a/darc-js/dist/SDK/runtime.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ethers } from 'ethers'; -export declare function run(code: string, wallet: ethers.Wallet, provider: ethers.providers.Provider, address: string): void; -//# sourceMappingURL=runtime.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/runtime.d.ts.map b/darc-js/dist/SDK/runtime.d.ts.map deleted file mode 100644 index 25e5d0c3..00000000 --- a/darc-js/dist/SDK/runtime.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/SDK/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAE1C,wBAAgB,GAAG,CAAC,IAAI,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,QAaxG"} \ No newline at end of file diff --git a/darc-js/dist/SDK/runtime.js b/darc-js/dist/SDK/runtime.js deleted file mode 100644 index e242d7d6..00000000 --- a/darc-js/dist/SDK/runtime.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as instructions from "./includes"; -import { ethers } from 'ethers'; -export function run(code, wallet, provider, address) { - let include = ''; - for (const key in instructions) { - include += `let ${key} = instructions.${key};\n`; - } - const fn = new Function('instructions', 'ethers', 'wallet', 'provider', 'address', include + code + '\n return operationList;'); - const results = fn(instructions, ethers, wallet, provider, address); - const resultList = [...results]; -} -//# sourceMappingURL=runtime.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/runtime.js.map b/darc-js/dist/SDK/runtime.js.map deleted file mode 100644 index ced2595c..00000000 --- a/darc-js/dist/SDK/runtime.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/SDK/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,IAAW,EAAE,MAAoB,EAAE,QAAkC,EAAE,OAAc;IACvG,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;QAC9B,OAAO,IAAI,OAAO,GAAG,mBAAmB,GAAG,KAAK,CAAC;KAClD;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,0BAA0B,CAAC,CAAC;IAEhI,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAGlC,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Plugin.d.ts b/darc-js/dist/SDK/struct/Plugin.d.ts deleted file mode 100644 index ef867247..00000000 --- a/darc-js/dist/SDK/struct/Plugin.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ConditionNode } from "../plugins/ConditionNode"; -import { VotingParameters } from "./voting-param"; -declare class Plugin { - note: string; - conditionExpressionTreeRootNode: ConditionNode; - restrictionPluginReturnType: RestrictionPluginReturnType; - votingParameters: VotingParameters | null; - restrictionPluginType: RestrictionPluginType; - constructor(note: string, conditionExpressionTreeRootNode: ConditionNode, restrictionPluginReturnType: RestrictionPluginReturnType, votingParameters: VotingParameters | null, restrictionPluginType: RestrictionPluginType); -} -declare enum RestrictionPluginReturnType { - NO = 0, - ABSOLUTELY_YES = 1, - VOTING_NEEDED = 2 -} -declare enum RestrictionPluginType { - BEFORE_OPERATION = 0, - AFTER_OPERATION = 1 -} -export { Plugin, RestrictionPluginReturnType, RestrictionPluginType }; -//# sourceMappingURL=Plugin.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Plugin.d.ts.map b/darc-js/dist/SDK/struct/Plugin.d.ts.map deleted file mode 100644 index ab1361cf..00000000 --- a/darc-js/dist/SDK/struct/Plugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../../src/SDK/struct/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAM,MAAM;IACV,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B,EAAE,aAAa,CAAC;IAC/C,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,qBAAqB,CAAC;gBACjC,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,aAAa,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EAAE,qBAAqB,EAAE,qBAAqB;CAO5N;AAED,aAAK,2BAA2B;IAC9B,EAAE,IAAA;IACF,cAAc,IAAA;IACd,aAAa,IAAA;CACd;AAED,aAAK,qBAAqB;IACxB,gBAAgB,IAAA;IAChB,eAAe,IAAA;CAChB;AAED,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Plugin.js b/darc-js/dist/SDK/struct/Plugin.js deleted file mode 100644 index f591a3b3..00000000 --- a/darc-js/dist/SDK/struct/Plugin.js +++ /dev/null @@ -1,22 +0,0 @@ -class Plugin { - constructor(note, conditionExpressionTreeRootNode, restrictionPluginReturnType, votingParameters, restrictionPluginType) { - this.note = note; - this.conditionExpressionTreeRootNode = conditionExpressionTreeRootNode; - this.restrictionPluginReturnType = restrictionPluginReturnType; - this.votingParameters = votingParameters; - this.restrictionPluginType = restrictionPluginType; - } -} -var RestrictionPluginReturnType; -(function (RestrictionPluginReturnType) { - RestrictionPluginReturnType[RestrictionPluginReturnType["NO"] = 0] = "NO"; - RestrictionPluginReturnType[RestrictionPluginReturnType["ABSOLUTELY_YES"] = 1] = "ABSOLUTELY_YES"; - RestrictionPluginReturnType[RestrictionPluginReturnType["VOTING_NEEDED"] = 2] = "VOTING_NEEDED"; -})(RestrictionPluginReturnType || (RestrictionPluginReturnType = {})); -var RestrictionPluginType; -(function (RestrictionPluginType) { - RestrictionPluginType[RestrictionPluginType["BEFORE_OPERATION"] = 0] = "BEFORE_OPERATION"; - RestrictionPluginType[RestrictionPluginType["AFTER_OPERATION"] = 1] = "AFTER_OPERATION"; -})(RestrictionPluginType || (RestrictionPluginType = {})); -export { Plugin, RestrictionPluginReturnType, RestrictionPluginType }; -//# sourceMappingURL=Plugin.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Plugin.js.map b/darc-js/dist/SDK/struct/Plugin.js.map deleted file mode 100644 index 0504d489..00000000 --- a/darc-js/dist/SDK/struct/Plugin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../../src/SDK/struct/Plugin.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM;IAMV,YAAY,IAAY,EAAE,+BAA8C,EAAE,2BAAwD,EAAE,gBAAyC,EAAE,qBAA4C;QACzN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,+BAA+B,GAAG,+BAA+B,CAAC;QACvE,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;CACF;AAED,IAAK,2BAIJ;AAJD,WAAK,2BAA2B;IAC9B,yEAAE,CAAA;IACF,iGAAc,CAAA;IACd,+FAAa,CAAA;AACf,CAAC,EAJI,2BAA2B,KAA3B,2BAA2B,QAI/B;AAED,IAAK,qBAGJ;AAHD,WAAK,qBAAqB;IACxB,yFAAgB,CAAA;IAChB,uFAAe,CAAA;AACjB,CAAC,EAHI,qBAAqB,KAArB,qBAAqB,QAGzB;AAED,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Program.d.ts b/darc-js/dist/SDK/struct/Program.d.ts deleted file mode 100644 index ca4092be..00000000 --- a/darc-js/dist/SDK/struct/Program.d.ts +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=Program.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Program.d.ts.map b/darc-js/dist/SDK/struct/Program.d.ts.map deleted file mode 100644 index d95e3e23..00000000 --- a/darc-js/dist/SDK/struct/Program.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Program.d.ts","sourceRoot":"","sources":["../../../src/SDK/struct/Program.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Program.js b/darc-js/dist/SDK/struct/Program.js deleted file mode 100644 index 507e65b1..00000000 --- a/darc-js/dist/SDK/struct/Program.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -//# sourceMappingURL=Program.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/Program.js.map b/darc-js/dist/SDK/struct/Program.js.map deleted file mode 100644 index adaeee98..00000000 --- a/darc-js/dist/SDK/struct/Program.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Program.js","sourceRoot":"","sources":["../../../src/SDK/struct/Program.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/basicTypes.d.ts b/darc-js/dist/SDK/struct/basicTypes.d.ts deleted file mode 100644 index 568bff6b..00000000 --- a/darc-js/dist/SDK/struct/basicTypes.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -type ADDRESS = string; -type UINT256 = bigint; -type ADDRESS_2D_ARRAY = string[][]; -type UINT256_2D_ARRAY = bigint[][]; -export { ADDRESS, UINT256, ADDRESS_2D_ARRAY, UINT256_2D_ARRAY }; -//# sourceMappingURL=basicTypes.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/basicTypes.d.ts.map b/darc-js/dist/SDK/struct/basicTypes.d.ts.map deleted file mode 100644 index 4e772ba2..00000000 --- a/darc-js/dist/SDK/struct/basicTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"basicTypes.d.ts","sourceRoot":"","sources":["../../../src/SDK/struct/basicTypes.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,CAAC;AACtB,KAAK,OAAO,GAAG,MAAM,CAAC;AACtB,KAAK,gBAAgB,GAAG,MAAM,EAAE,EAAE,CAAC;AACnC,KAAK,gBAAgB,GAAG,MAAM,EAAE,EAAE,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAC,CAAA"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/basicTypes.js b/darc-js/dist/SDK/struct/basicTypes.js deleted file mode 100644 index f1c8683c..00000000 --- a/darc-js/dist/SDK/struct/basicTypes.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=basicTypes.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/basicTypes.js.map b/darc-js/dist/SDK/struct/basicTypes.js.map deleted file mode 100644 index 2f64d467..00000000 --- a/darc-js/dist/SDK/struct/basicTypes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"basicTypes.js","sourceRoot":"","sources":["../../../src/SDK/struct/basicTypes.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/token-operation-map.d.ts b/darc-js/dist/SDK/struct/token-operation-map.d.ts deleted file mode 100644 index 8273bd77..00000000 --- a/darc-js/dist/SDK/struct/token-operation-map.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare class TokenOperations { - arrayTokenOperations: Array<[number, string, number]>; - constructor(); - add_token_ownership_tuple(tokenID: number, ownerAddress: string, amount: number): void; -} -//# sourceMappingURL=token-operation-map.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/token-operation-map.d.ts.map b/darc-js/dist/SDK/struct/token-operation-map.d.ts.map deleted file mode 100644 index c2093179..00000000 --- a/darc-js/dist/SDK/struct/token-operation-map.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"token-operation-map.d.ts","sourceRoot":"","sources":["../../../src/SDK/struct/token-operation-map.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAEnB,oBAAoB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;;IAItD,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAGvF"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/token-operation-map.js b/darc-js/dist/SDK/struct/token-operation-map.js deleted file mode 100644 index e85b525a..00000000 --- a/darc-js/dist/SDK/struct/token-operation-map.js +++ /dev/null @@ -1,10 +0,0 @@ -// TokenOwnershipMap is a map of tokenID to owner address and amount -export class TokenOperations { - constructor() { - this.arrayTokenOperations = new Array(); - } - add_token_ownership_tuple(tokenID, ownerAddress, amount) { - this.arrayTokenOperations.push([tokenID, ownerAddress, amount]); - } -} -//# sourceMappingURL=token-operation-map.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/token-operation-map.js.map b/darc-js/dist/SDK/struct/token-operation-map.js.map deleted file mode 100644 index 929bf05c..00000000 --- a/darc-js/dist/SDK/struct/token-operation-map.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"token-operation-map.js","sourceRoot":"","sources":["../../../src/SDK/struct/token-operation-map.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,MAAM,OAAO,eAAe;IAG1B;QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAA4B,CAAC;IACtE,CAAC;IACM,yBAAyB,CAAC,OAAe,EAAE,YAAoB,EAAE,MAAc;QAClF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/voting-param.d.ts b/darc-js/dist/SDK/struct/voting-param.d.ts deleted file mode 100644 index b12389b4..00000000 --- a/darc-js/dist/SDK/struct/voting-param.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare class VotingParameters { - votingPeriodInSeconds: number; - votingThresholdInPercentage: number; - votingTokenIDList: Array; - constructor(votingPeriodInSeconds: number, votingThresholdInPercentage: number, votingTokenIDList: Array); -} -//# sourceMappingURL=voting-param.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/voting-param.d.ts.map b/darc-js/dist/SDK/struct/voting-param.d.ts.map deleted file mode 100644 index 66774f95..00000000 --- a/darc-js/dist/SDK/struct/voting-param.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"voting-param.d.ts","sourceRoot":"","sources":["../../../src/SDK/struct/voting-param.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAE3B,qBAAqB,EAAE,MAAM,CAAC;IAG9B,2BAA2B,EAAE,MAAM,CAAC;IAIpC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAErB,qBAAqB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC;CAKjH"} \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/voting-param.js b/darc-js/dist/SDK/struct/voting-param.js deleted file mode 100644 index 100b186f..00000000 --- a/darc-js/dist/SDK/struct/voting-param.js +++ /dev/null @@ -1,8 +0,0 @@ -export class VotingParameters { - constructor(votingPeriodInSeconds, votingThresholdInPercentage, votingTokenIDList) { - this.votingPeriodInSeconds = votingPeriodInSeconds; - this.votingThresholdInPercentage = votingThresholdInPercentage; - this.votingTokenIDList = votingTokenIDList; - } -} -//# sourceMappingURL=voting-param.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/struct/voting-param.js.map b/darc-js/dist/SDK/struct/voting-param.js.map deleted file mode 100644 index 194874ca..00000000 --- a/darc-js/dist/SDK/struct/voting-param.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"voting-param.js","sourceRoot":"","sources":["../../../src/SDK/struct/voting-param.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IAW3B,YAAY,qBAA6B,EAAE,2BAAmC,EAAE,iBAAgC;QAC9G,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;CACF"} \ No newline at end of file diff --git a/darc-js/dist/SDK/transpiler.d.ts b/darc-js/dist/SDK/transpiler.d.ts deleted file mode 100644 index e87314f0..00000000 --- a/darc-js/dist/SDK/transpiler.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function transpiler(sourceCode: string): string; -//# sourceMappingURL=transpiler.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/SDK/transpiler.d.ts.map b/darc-js/dist/SDK/transpiler.d.ts.map deleted file mode 100644 index 85518ba8..00000000 --- a/darc-js/dist/SDK/transpiler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../../src/SDK/transpiler.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAuDrD"} \ No newline at end of file diff --git a/darc-js/dist/SDK/transpiler.js b/darc-js/dist/SDK/transpiler.js deleted file mode 100644 index aa42f315..00000000 --- a/darc-js/dist/SDK/transpiler.js +++ /dev/null @@ -1,45 +0,0 @@ -export function transpiler(sourceCode) { - // compile the source code with babel standalone - const babel = require('@babel/standalone'); - // register the plugin - babel.registerPlugin('overload', require('@jetblack/operator-overloading')); //jetblack_operator_overload); - /* - babel.registerPlugin( - '@babel/plugin-proposal-class-properties', - require('@babel/plugin-proposal-class-properties') - ); - babel.registerPlugin( - '@babel/plugin-proposal-private-methods', - require('@babel/plugin-proposal-private-methods') - ); - - function lolizer() { - return { - visitor: { - Identifier(path:any) { - console.log(JSON.stringify( path.node)); - //path.node.name = "LOL"; - }, - }, - }; - } - - babel.registerPlugin("lolizer", lolizer); - */ - // register the preset - babel.registerPreset('@babel/preset-env', require('@babel/preset-env')); - // register the typescript preset - babel.registerPreset('@babel/preset-typescript', require('@babel/preset-typescript')); - // compile the code - const result = babel.transform(sourceCode, { - plugins: ['overload'], - //['@babel/plugin-proposal-class-properties', { "loose": true }], - //['@babel/plugin-proposal-private-methods', { loose: true }] - presets: ['@babel/preset-env', '@babel/preset-typescript'], - filename: 'source.ts', - sourceType: 'script' - }); - console.log(JSON.stringify(babel)); - return result.code; -} -//# sourceMappingURL=transpiler.js.map \ No newline at end of file diff --git a/darc-js/dist/SDK/transpiler.js.map b/darc-js/dist/SDK/transpiler.js.map deleted file mode 100644 index cfdd6797..00000000 --- a/darc-js/dist/SDK/transpiler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transpiler.js","sourceRoot":"","sources":["../../src/SDK/transpiler.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,UAAkB;IAE3C,gDAAgD;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE3C,sBAAsB;IAEtB,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,8BAA8B;IAE3G;;;;;;;;;;;;;;;;;;;;;;MAsBE;IAGF,sBAAsB;IACtB,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAGxE,iCAAiC;IACjC,KAAK,CAAC,cAAc,CAAC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEtF,mBAAmB;IACnB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;QACzC,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,iEAAiE;QACjE,6DAA6D;QAE7D,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;QAC1D,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,OAAQ,MAAM,CAAC,IAAI,CAAC;AACtB,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/codeGenerator/codeGenerator.d.ts b/darc-js/dist/codeGenerator/codeGenerator.d.ts deleted file mode 100644 index 2b1f5fe7..00000000 --- a/darc-js/dist/codeGenerator/codeGenerator.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function codeGenerator(): void; -//# sourceMappingURL=codeGenerator.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/codeGenerator/codeGenerator.d.ts.map b/darc-js/dist/codeGenerator/codeGenerator.d.ts.map deleted file mode 100644 index 51cc6cd6..00000000 --- a/darc-js/dist/codeGenerator/codeGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"codeGenerator.d.ts","sourceRoot":"","sources":["../../src/codeGenerator/codeGenerator.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,SAE5B"} \ No newline at end of file diff --git a/darc-js/dist/codeGenerator/codeGenerator.js b/darc-js/dist/codeGenerator/codeGenerator.js deleted file mode 100644 index 02863314..00000000 --- a/darc-js/dist/codeGenerator/codeGenerator.js +++ /dev/null @@ -1,3 +0,0 @@ -export function codeGenerator() { -} -//# sourceMappingURL=codeGenerator.js.map \ No newline at end of file diff --git a/darc-js/dist/codeGenerator/codeGenerator.js.map b/darc-js/dist/codeGenerator/codeGenerator.js.map deleted file mode 100644 index 06fb588f..00000000 --- a/darc-js/dist/codeGenerator/codeGenerator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"codeGenerator.js","sourceRoot":"","sources":["../../src/codeGenerator/codeGenerator.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa;AAE7B,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/darcBinary/DARC-test.json b/darc-js/dist/darcBinary/DARC-test.json deleted file mode 100644 index c314ce58..00000000 --- a/darc-js/dist/darcBinary/DARC-test.json +++ /dev/null @@ -1,1381 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DARC", - "sourceName": "contracts/protocol/DARC.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "idx", - "type": "uint256" - } - ], - "name": "checkVotingResult", - "outputs": [ - { - "internalType": "enum VotingStatus", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "checkVotingResults", - "outputs": [ - { - "internalType": "enum VotingStatus[]", - "name": "", - "type": "uint8[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "currentVotingEndTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "programOperatorAddress", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "operatorAddress", - "type": "address" - }, - { - "internalType": "enum EnumOpcode", - "name": "opcode", - "type": "uint8" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "bool[]", - "name": "BOOL_ARRAY", - "type": "bool[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "votingTokenClassList", - "type": "uint256[]" - }, - { - "internalType": "uint256", - "name": "approvalThresholdPercentage", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "votingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "executionPendingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "isEnabled", - "type": "bool" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsAbsoluteMajority", - "type": "bool" - } - ], - "internalType": "struct VotingRule[]", - "name": "VOTING_RULE_ARRAY", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "enum EnumReturnType", - "name": "returnType", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "enum EnumConditionNodeType", - "name": "nodeType", - "type": "uint8" - }, - { - "internalType": "enum EnumLogicalOperatorType", - "name": "logicalOperator", - "type": "uint8" - }, - { - "internalType": "enum EnumConditionExpression", - "name": "conditionExpression", - "type": "uint8" - }, - { - "internalType": "uint256[]", - "name": "childList", - "type": "uint256[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - }, - { - "internalType": "string[][]", - "name": "STRING_2DARRAY", - "type": "string[][]" - } - ], - "internalType": "struct NodeParam", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct ConditionNode[]", - "name": "conditionNodes", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "votingRuleIndex", - "type": "uint256" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsBeforeOperation", - "type": "bool" - } - ], - "internalType": "struct Plugin[]", - "name": "PLUGIN_ARRAY", - "type": "tuple[]" - }, - { - "internalType": "enum MachineParameter[]", - "name": "PARAMETER_ARRAY", - "type": "uint8[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - } - ], - "internalType": "struct Param", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct Operation[]", - "name": "operations", - "type": "tuple[]" - } - ], - "internalType": "struct Program", - "name": "program", - "type": "tuple" - } - ], - "name": "entrance", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "executingPendingDeadline", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "finiteState", - "outputs": [ - { - "internalType": "enum FiniteState", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentDividendPerUnit", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "getMemberInfo", - "outputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsSuspended", - "type": "bool" - }, - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "uint256", - "name": "role", - "type": "uint256" - } - ], - "internalType": "struct MemberInfo", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getMemberList", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getMyInfo", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getNumberOfTokenClasses", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getPluginInfo", - "outputs": [ - { - "components": [ - { - "internalType": "enum EnumReturnType", - "name": "returnType", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "enum EnumConditionNodeType", - "name": "nodeType", - "type": "uint8" - }, - { - "internalType": "enum EnumLogicalOperatorType", - "name": "logicalOperator", - "type": "uint8" - }, - { - "internalType": "enum EnumConditionExpression", - "name": "conditionExpression", - "type": "uint8" - }, - { - "internalType": "uint256[]", - "name": "childList", - "type": "uint256[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - }, - { - "internalType": "string[][]", - "name": "STRING_2DARRAY", - "type": "string[][]" - } - ], - "internalType": "struct NodeParam", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct ConditionNode[]", - "name": "conditionNodes", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "votingRuleIndex", - "type": "uint256" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsBeforeOperation", - "type": "bool" - } - ], - "internalType": "struct Plugin[]", - "name": "", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "enum EnumReturnType", - "name": "returnType", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "enum EnumConditionNodeType", - "name": "nodeType", - "type": "uint8" - }, - { - "internalType": "enum EnumLogicalOperatorType", - "name": "logicalOperator", - "type": "uint8" - }, - { - "internalType": "enum EnumConditionExpression", - "name": "conditionExpression", - "type": "uint8" - }, - { - "internalType": "uint256[]", - "name": "childList", - "type": "uint256[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - }, - { - "internalType": "string[][]", - "name": "STRING_2DARRAY", - "type": "string[][]" - } - ], - "internalType": "struct NodeParam", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct ConditionNode[]", - "name": "conditionNodes", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "votingRuleIndex", - "type": "uint256" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsBeforeOperation", - "type": "bool" - } - ], - "internalType": "struct Plugin[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenClassIndex", - "type": "uint256" - } - ], - "name": "getSumDividendWeightByTokenClass", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenClassIndex", - "type": "uint256" - } - ], - "name": "getSumVotingWeightByTokenClass", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenClassIndex", - "type": "uint256" - } - ], - "name": "getTokenInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "votingWeight", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "dividendWeight", - "type": "uint256" - }, - { - "internalType": "string", - "name": "tokenInfo", - "type": "string" - }, - { - "internalType": "uint256", - "name": "totalSupply", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenClassIndex", - "type": "uint256" - }, - { - "internalType": "address", - "name": "tokenOwnerAddress", - "type": "address" - } - ], - "name": "getTokenOwnerBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenClassIndex", - "type": "uint256" - } - ], - "name": "getTokenOwners", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "getWithdrawableCashBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getWithdrawableCashOwnerList", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "getWithdrawableDividendBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getWithdrawableDividendOwnerList", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialOwnerAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "votingRuleIndices", - "type": "uint256[]" - }, - { - "components": [ - { - "internalType": "address", - "name": "programOperatorAddress", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "operatorAddress", - "type": "address" - }, - { - "internalType": "enum EnumOpcode", - "name": "opcode", - "type": "uint8" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "bool[]", - "name": "BOOL_ARRAY", - "type": "bool[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "votingTokenClassList", - "type": "uint256[]" - }, - { - "internalType": "uint256", - "name": "approvalThresholdPercentage", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "votingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "executionPendingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "isEnabled", - "type": "bool" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsAbsoluteMajority", - "type": "bool" - } - ], - "internalType": "struct VotingRule[]", - "name": "VOTING_RULE_ARRAY", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "enum EnumReturnType", - "name": "returnType", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "enum EnumConditionNodeType", - "name": "nodeType", - "type": "uint8" - }, - { - "internalType": "enum EnumLogicalOperatorType", - "name": "logicalOperator", - "type": "uint8" - }, - { - "internalType": "enum EnumConditionExpression", - "name": "conditionExpression", - "type": "uint8" - }, - { - "internalType": "uint256[]", - "name": "childList", - "type": "uint256[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - }, - { - "internalType": "string[][]", - "name": "STRING_2DARRAY", - "type": "string[][]" - } - ], - "internalType": "struct NodeParam", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct ConditionNode[]", - "name": "conditionNodes", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "votingRuleIndex", - "type": "uint256" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsBeforeOperation", - "type": "bool" - } - ], - "internalType": "struct Plugin[]", - "name": "PLUGIN_ARRAY", - "type": "tuple[]" - }, - { - "internalType": "enum MachineParameter[]", - "name": "PARAMETER_ARRAY", - "type": "uint8[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - } - ], - "internalType": "struct Param", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct Operation[]", - "name": "operations", - "type": "tuple[]" - } - ], - "internalType": "struct Program", - "name": "currentProgram", - "type": "tuple" - } - ], - "name": "initializeVoting", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "latestVotingItemIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "voter", - "type": "address" - }, - { - "internalType": "bool[]", - "name": "votes", - "type": "bool[]" - } - ], - "name": "vote", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "votingDeadline", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "votingItems", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "programOperatorAddress", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "operatorAddress", - "type": "address" - }, - { - "internalType": "enum EnumOpcode", - "name": "opcode", - "type": "uint8" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "bool[]", - "name": "BOOL_ARRAY", - "type": "bool[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "votingTokenClassList", - "type": "uint256[]" - }, - { - "internalType": "uint256", - "name": "approvalThresholdPercentage", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "votingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "executionPendingDurationInSeconds", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "isEnabled", - "type": "bool" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsAbsoluteMajority", - "type": "bool" - } - ], - "internalType": "struct VotingRule[]", - "name": "VOTING_RULE_ARRAY", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "enum EnumReturnType", - "name": "returnType", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "enum EnumConditionNodeType", - "name": "nodeType", - "type": "uint8" - }, - { - "internalType": "enum EnumLogicalOperatorType", - "name": "logicalOperator", - "type": "uint8" - }, - { - "internalType": "enum EnumConditionExpression", - "name": "conditionExpression", - "type": "uint8" - }, - { - "internalType": "uint256[]", - "name": "childList", - "type": "uint256[]" - }, - { - "components": [ - { - "internalType": "uint256[]", - "name": "UINT256_ARRAY", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "ADDRESS_ARRAY", - "type": "address[]" - }, - { - "internalType": "string[]", - "name": "STRING_ARRAY", - "type": "string[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - }, - { - "internalType": "string[][]", - "name": "STRING_2DARRAY", - "type": "string[][]" - } - ], - "internalType": "struct NodeParam", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct ConditionNode[]", - "name": "conditionNodes", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "votingRuleIndex", - "type": "uint256" - }, - { - "internalType": "string", - "name": "note", - "type": "string" - }, - { - "internalType": "bool", - "name": "bIsEnabled", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, - { - "internalType": "bool", - "name": "bIsBeforeOperation", - "type": "bool" - } - ], - "internalType": "struct Plugin[]", - "name": "PLUGIN_ARRAY", - "type": "tuple[]" - }, - { - "internalType": "enum MachineParameter[]", - "name": "PARAMETER_ARRAY", - "type": "uint8[]" - }, - { - "internalType": "uint256[][]", - "name": "UINT256_2DARRAY", - "type": "uint256[][]" - }, - { - "internalType": "address[][]", - "name": "ADDRESS_2DARRAY", - "type": "address[][]" - } - ], - "internalType": "struct Param", - "name": "param", - "type": "tuple" - } - ], - "internalType": "struct Operation[]", - "name": "operations", - "type": "tuple[]" - } - ], - "internalType": "struct Program", - "name": "program", - "type": "tuple" - }, - { - "internalType": "uint256", - "name": "votingEndTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "executingEndTime", - "type": "uint256" - }, - { - "internalType": "enum VotingStatus", - "name": "votingStatus", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "bIsProgramExecuted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6080806040523462000019576201349190816200001f8239f35b600080fdfe6107008060405260043610156200001557600080fd5b600090813560e01c908163036ee8501462003b2e575080630e5a3b2914620037d057806310ade3ea14620037a05780631797631d14620037185780631c75255a14620036b257806323b65c78146200362a57806341d1a43814620035f657806356424cf414620035155780635c00d98714620034c45780635d0b184914620034a25780635f1231ea14620033c85780635f5d5f001462003340578063681ece9d14620032fb57806379532bfe14620032d95780637daa10ce14620032bc5780638129fc1c1462002ef9578063864f9f7a1462002eba57806386ad77e21462002ba75780638c7a63ae1462002b355780639f36145f14620017f5578063a064c4f1146200172c578063a2f7d1011462000504578063acf80bc414620004c5578063aefca42a14620004a3578063afc820aa146200037e578063bba5103014620001f4578063d5a172f214620001c75763d6a93c51146200017357600080fd5b34620001c45780600319360112620001c4575b61271081106200019c575b602090604051908152f35b60ff60078260031b01541615620001be57620001b89062005a5a565b62000186565b62000191565b80fd5b5034620001c45780600319360112620001c45762027126546040516001600160a01b039091168152602090f35b5034620001c45780600319360112620001c4576202712e548082526202712b9160209083825260029384604083200154946200024d620002348762003c62565b9662000244604051988962003c3e565b80885262003c62565b8685019290601f1901368437835b86855281865282604086200154811015620003285760405163083a348760e31b815260048101829052602487828281305afa9182156200031d578792620002da575b50620002aa838b62005ab0565b906003831015620002c8575052620002c29062005a5a565b6200025b565b634e487b7160e01b8852602160045287fd5b9091508781813d831162000315575b620002f5818362003c3e565b810103126200031157516003811015620003115790386200029d565b8680fd5b503d620002e9565b6040513d89823e3d90fd5b505060408051858152875181870181905290948594928501935086905b8281106200035557505050500390f35b91938395509080826200036d60019483975162003d5f565b019501910191859493919262000345565b506020366003190112620001c4576004356001600160401b0381116200049f57620003ae90369060040162004d21565b805190916001600160a01b039162000403908316620003fa620003db620003d533620131f4565b62005923565b620003f3620003ed87895116620131f4565b62005989565b90620059e0565b90331462005a27565b9060208301915b825180518210156200047757906200046b6200047192846200042e84339362005ab0565b515116146200046462000445620003d533620131f4565b620003f3620003ed886200045b888c5162005ab0565b515116620131f4565b9062005a27565b62005a5a565b6200040a565b6200049b620004868662006d3f565b60405191829160208352602083019062003d92565b0390f35b5080fd5b5034620001c45780600319360112620001c45760206202712854604051908152f35b5034620001c4576020366003190112620001c4576020906040906001600160a01b03620004f162003b4e565b1681526201388783522054604051908152f35b5034620001c4576040366003190112620001c4576004356001600160401b0381116200049f576200053a90369060040162004a4f565b6024356001600160401b03811162001728576200055c90369060040162004d21565b620271298054600260ff8216620005738162003cf8565b14620016e35760ff191660021790556202712e54600181018111620016cf57600181016202712e558391845b84518110156200060257836002620005c3620005bc848962005ab0565b5162012484565b50015410620005de575b620005d89062005a5a565b6200059f565b9250620005d86002620005f6620005bc868862005ab0565b500154939050620005cd565b509093918291825b8551811015620006665784600362000627620005bc848a62005ab0565b5001541062000642575b6200063c9062005a5a565b6200060a565b93506200063c60036200065a620005bc878962005ab0565b50015494905062000631565b50600190950182526202712b602090815260408320865181546001600160a01b0319166001600160a01b039190911617815595015180519295919290600160401b821162000be5576001830154826001850155808310620014ee575b50602060019101920186526020862086925b82841062000c235750505050620006ec835162006777565b6202712e5485526202712b6020526004604086200181519160018060401b03831162000be55760209062000721848462005b96565b0190865260208620865b83811062000c0e575050505062000743835162006777565b6202712e5485526202712b6020526003604086200181519160018060401b03831162000be55760209062000778848462005b96565b0190865260208620865b83811062000bf957505050506200079a835162006777565b6202712e5485526202712b6020526005604086200181519160018060401b03831162000be557602090620007cf848462005b96565b0190865260208620865b83811062000bd05750505050620007f1904262006c06565b6202712e5485526202712b60205260066040862001551562000b90576200082e906202712e5484526202712b602052600660408520015462006c06565b60076040852001551562000b4d576202712e5482526202712b60205260086040832001600260ff1982541617905562000868815162006777565b6202712e5483526202712b6020526002604084200181519160018060401b03831162000b39576020906200089d848462005b96565b0190845260208420845b83811062000b24578585815b81518110156200091457806200046b620008d26200090e938562005ab0565b516202712e5486526202712b602052620008f3836002604089200162006ac7565b90919082549060031b600019811b9283911b16911916179055565b620008b3565b50815b815181101562000b20576202712e54928381526202712b6020526200095462000947836002604085200162006ac7565b90549060031b1c62012484565b505491620009628362006777565b92825b81811062000acf5750508182905b845182101562000a9f5762000989828662005ab0565b5161271081101562000a8b5760031b60010154620009a8838762005ab0565b5161271081101562000a775760031b60060154620009c691620069da565b901562000a3357620009d89162006c06565b919015620009f257620009eb9062005a5a565b9062000973565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b85526032600452602485fd5b905062000ac993506200046b91929586526202712b602052620008f3836005604089200162006ac7565b62000917565b62000b1a908785526202712b60205262000b008162000af96200094787600260408b200162006ac7565b5062006ac7565b90549060031b1c62000b13828862005ab0565b5262005a5a565b62000965565b8280f35b600190602084519401938184015501620008a7565b634e487b7160e01b85526041600452602485fd5b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620007d9565b634e487b7160e01b87526041600452602487fd5b60019060208451940193818401550162000782565b6001906020845194019381840155016200072b565b805180518354602083015190916001600160a01b0316906022811015620014da576001600160a81b03199092161760a09190911b60ff60a01b161783556040015180518051906001600160401b0382116200103d576020600186019162000c8b848462005b96565b01908b5260208b208b5b838110620014c5575050505060208101518051906001600160401b0382116200103d576020600286019162000ccb848462005b96565b01908b5260208b208b5b838110620014a7575050505060038301604082015190602082519262000cfc848462005ca7565b01908b5260208b20908b905b838210620013bc5750505050606081015180516001600160401b0381116200103d576020600486019262000d3d838562012406565b01918b5260208b20908b5b8160051c8110620013815750601f19811681036200133e575b5050506080810151805190600160401b82116200103d576005850154826005870155808310620012bb575b5060200190600585018b5260208b20918b905b82821062001103575050505060a0810151805190600160401b82116200103d57600685015482600687015580831062001072575b50602001600685018b5260208b20908b905b83821062001051575050505060c081015180516001600160401b0381116200103d576020600786019262000e1a838562012406565b01918b5260208b20908b5b8160051c811062000fff5750601f198116810362000fb3575b5050506008830160e082015190602082519262000e5c848462005d35565b01908b5260208b20908b905b83821062000f3c57505050506101006009840191015190602082519262000e90848462005d35565b01908a5260208a20908a905b83821062000ebc5750505050600a602060019201920193019290620006d4565b80518051906001600160401b03821162000f28578460208f9262000ee1858462005b96565b0191528d60208120905b83811062000f0a57505050506001602081920193019101909162000e9c565b82516001600160a01b03168183015560209092019160010162000eeb565b634e487b7160e01b8e52604160045260248efd5b80518051906001600160401b03821162000f9f5760208f9162000f60848862005b96565b019085815260208120905b83811062000f8a57505050506001602081920193019101909162000e68565b60019060208451940193818401550162000f6b565b634e487b7160e01b8f52604160045260248ffd5b8b928c5b601f1983168303811062000fd557505060051c015538808062000e3e565b9093602062000ff56001928488519162000fef8362003db9565b62012470565b9501910162000fb7565b8c8d5b602081106200101957508382015560010162000e25565b94906020620010336001928885519162000fef8362003db9565b9201950162001002565b634e487b7160e01b8b52604160045260248bfd5b6006602082620010656001945187620060b3565b0193019101909162000de5565b6006818102048103620010ef576006838102048303620010ef57600686018c5260208c208360060281015b8d8360060283018210620010b45750505062000dd3565b90816006928255806001830155620010cf6002830162005e12565b806003830155620010e36004830162005c16565b6005820155016200109d565b634e487b7160e01b8c52601160045260248cfd5b805180518051906001600160401b03821162001291578f906020906200112a848a62005b96565b019087815260208120905b838110620012a6575050505060208101516001860155604081015160028601556060810151600386015562001174608082015115156004870162006070565b60a08101518051906001600160401b03821162001291578f90620011ab83620011a160058b015462004249565b60058b0162006026565b602091601f841160011462001212576007948460209560019895620011f99560c0959262001206575b5050600019600383901b1c191690881b1760058b01555b015115156006890162006070565b0194019101909262000d9f565b015190503880620011d4565b919060058901835260208320925b601f1985168110620012785750600794600185819895620011f99560c095602099601f198116106200125e575b505050811b0160058b0155620011eb565b015160001960f88460031b161c191690553880806200124d565b9192602060018192868501518155019401920162001220565b50634e487b7160e01b8f52604160045260248ffd5b60019060208451940193818401550162001135565b6007818102048103620010ef576007838102048303620010ef57600586018c5260208c208360070281015b8d8360070283018210620012fd5750505062000d8c565b906007916200130c8262005b6f565b806001830155806002830155806003830155806004830155620013326005830162005c16565b600682015501620012e6565b8b928c5b601f198316830381106200136057505060051c015538808062000d61565b909360206200137760019284885115159162012470565b9501910162001342565b8c8d5b602081106200139b57508382015560010162000d48565b94906020620013b260019288855115159162012470565b9201950162001384565b80518051906001600160401b03821162000f9f578e90620013ea83620013e3885462004249565b8862006026565b602091601f841160011462001438579280602093600196938796926200142c575b5050600019600383901b1c191690841b1786555b0193019101909162000d08565b0151905038806200140b565b9190601f19841687845260208420935b8181106200148e575093602093600196938796938388951062001474575b505050811b0186556200141f565b015160001960f88460031b161c1916905538808062001466565b9293602060018192878601518155019501930162001448565b82516001600160a01b03168183015560209092019160010162000cd5565b60019060208451940193818401550162000c95565b634e487b7160e01b8c52602160045260248cfd5b600a818102048103620016bb57600a838102048303620016bb576001840188526020882083600a0281015b82600a02820181106200152e575050620006c2565b8981556200153f6001820162005b6f565b6200154d6002820162005b6f565b6200155b6003820162005c68565b6200156f600482018054908c8155620123de565b60058101548a6005830155806200164c575b5060068101548a600683015580620015cf575b5080620015ac6007600a93018054908d8155620123de565b620015ba6008820162005cf6565b620015c86009820162005cf6565b0162001519565b60068181020481036200163857600682018b5260208b20906006028101905b818110620015fd575062001594565b808c600692558c6001820155620016176002820162005e12565b8c60038201556200162b6004820162005c16565b8c600582015501620015ee565b634e487b7160e01b8b52601160045260248bfd5b60078181020481036200163857600582018b5260208b20906007028101905b8181106200167a575062001581565b806200168860079262005b6f565b8c60018201558c60028201558c60038201558c6004820155620016ae6005820162005c16565b8c6006820155016200166b565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b84526011600452602484fd5b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b8280fd5b5034620001c4576020366003190112620001c45760043590612710821015620017e1576200176e826200176760018260031b01549162006b44565b90620069da565b90156200178057602090604051908152f35b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b634e487b7160e01b81526032600452602490fd5b5034620001c4576020366003190112620001c45760043581526202712b602052604080822081519182016001600160401b0381118382101762002b215760405280546001600160a01b03168252600181018054620018538162003c62565b9162001863604051938462003c3e565b81835285526020808620869184015b838310620018d957620018ae878787602083015260ff600682015491600860078201549101549060405195869560a0875260a0870190620045b5565b9360208601526040850152620018ca6060850183831662003d5f565b60081c16151560808301520390f35b6040516001600160401b03606082019081119082111762002b0d576060810160405282546001600160a01b0381168252602260a082901c60ff16101562002af95760a01c60ff1660208201526040516001600160401b0361012082019081119082111762002ae5576101208101604052620019576001850162004198565b81526200196760028501620041ed565b60208201526200197a6003850162004336565b6040820152600484018a604051809283916020825491828152019184526020842093905b80601f830110620029115762001ae1945491818110620028fa575b818110620028e0575b818110620028c6575b818110620028ac575b81811062002893575b81811062002879575b8181106200285f575b81811062002845575b8181106200282b575b81811062002811575b818110620027f7575b818110620027dd575b818110620027c3575b818110620027a9575b8181106200278f575b81811062002775575b8181106200275b575b81811062002741575b81811062002727575b8181106200270d575b818110620026f3575b818110620026d9575b818110620026bf575b818110620026a5575b8181106200268b575b81811062002671575b81811062002657575b8181106200263d575b81811062002623575b81811062002609575b818110620025ef575b10620025de575b509b9a999897969594939b038262003c3e565b60608a015260058301805462001af78162003c62565b9162001b07604051938462003c3e565b8183528c526020808d20908d9084015b838210620025a9575050505060808a01526006830198895462001b3a8162003c62565b9a62001b4a6040519c8d62003c3e565b818c5260208c01908d528c6020812091815b8483106200243a57505050505090919293949596979860a0820152604051806007860190602082549182815201918d5260208d20908d915b81601f840110620021315784600a97946020979460019a979462001cdb94549181811062002113575b818110620020f2575b818110620020d1575b818110620020b0575b81811062002090575b8181106200206f575b8181106200204e575b8181106200202d575b8181106200200c575b81811062001feb575b81811062001fca575b81811062001fa9575b81811062001f88575b81811062001f67575b81811062001f46575b81811062001f25575b81811062001f04575b81811062001ee3575b81811062001ec2575b81811062001ea1575b81811062001e80575b81811062001e5f575b81811062001e3e575b81811062001e1d575b81811062001dfc575b81811062001ddb575b81811062001dba575b81811062001d99575b81811062001d78575b81811062001d57575b81811062001d36575b1062001d1b575b50038262003c3e565b60c082015262001cee600888016200442b565b60e082015262001d016009880162004488565b610100820152604082015281520192019201919062001872565b90889160f81c62001d2c8162003db9565b8152013862001cd2565b928a8d9160ff8560f01c1662001d4c8162003db9565b815201930162001ccb565b928a8d9160ff8560e81c1662001d6d8162003db9565b815201930162001cc2565b928a8d9160ff8560e01c1662001d8e8162003db9565b815201930162001cb9565b928a8d9160ff8560d81c1662001daf8162003db9565b815201930162001cb0565b928a8d9160ff8560d01c1662001dd08162003db9565b815201930162001ca7565b928a8d9160ff8560c81c1662001df18162003db9565b815201930162001c9e565b928a8d9160ff8560c01c1662001e128162003db9565b815201930162001c95565b928a8d9160ff8560b81c1662001e338162003db9565b815201930162001c8c565b928a8d9160ff8560b01c1662001e548162003db9565b815201930162001c83565b928a8d9160ff8560a81c1662001e758162003db9565b815201930162001c7a565b928a8d9160ff8560a01c1662001e968162003db9565b815201930162001c71565b928a8d9160ff8560981c1662001eb78162003db9565b815201930162001c68565b928a8d9160ff8560901c1662001ed88162003db9565b815201930162001c5f565b928a8d9160ff8560881c1662001ef98162003db9565b815201930162001c56565b928a8d9160ff8560801c1662001f1a8162003db9565b815201930162001c4d565b928a8d9160ff8560781c1662001f3b8162003db9565b815201930162001c44565b928a8d9160ff8560701c1662001f5c8162003db9565b815201930162001c3b565b928a8d9160ff8560681c1662001f7d8162003db9565b815201930162001c32565b928a8d9160ff8560601c1662001f9e8162003db9565b815201930162001c29565b928a8d9160ff8560581c1662001fbf8162003db9565b815201930162001c20565b928a8d9160ff8560501c1662001fe08162003db9565b815201930162001c17565b928a8d9160ff8560481c16620020018162003db9565b815201930162001c0e565b928a8d9160ff8560401c16620020228162003db9565b815201930162001c05565b928a8d9160ff8560381c16620020438162003db9565b815201930162001bfc565b928a8d9160ff8560301c16620020648162003db9565b815201930162001bf3565b928a8d9160ff8560281c16620020858162003db9565b815201930162001bea565b928a8d9160ff85831c16620020a58162003db9565b815201930162001be1565b928a8d9160ff8560181c16620020c68162003db9565b815201930162001bd8565b928a8d9160ff8560101c16620020e78162003db9565b815201930162001bcf565b928a8d9160ff8560081c16620021088162003db9565b815201930162001bc6565b928a8d9160ff8516620021268162003db9565b815201930162001bbd565b926001610400602092865460ff81166200214b8162003db9565b825260ff8160081c166200215f8162003db9565b8583015260ff8160101c16620021758162003db9565b604083015260ff8160181c166200218c8162003db9565b606083015260ff81861c16620021a28162003db9565b608083015260ff8160281c16620021b98162003db9565b60a0830152620021cf60ff8260301c1662003db9565b60ff8160301c1660c083015260ff8160381c16620021ed8162003db9565b60e083015260ff8160401c16620022048162003db9565b61010083015260ff8160481c166200221c8162003db9565b61012083015260ff8160501c16620022348162003db9565b61014083015260ff8160581c166200224c8162003db9565b61016083015260ff8160601c16620022648162003db9565b61018083015260ff8160681c166200227c8162003db9565b6101a083015260ff8160701c16620022948162003db9565b6101c083015260ff8160781c16620022ac8162003db9565b6101e083015260ff8160801c16620022c48162003db9565b61020083015260ff8160881c16620022dc8162003db9565b61022083015260ff8160901c16620022f48162003db9565b61024083015260ff8160981c166200230c8162003db9565b61026083015260ff8160a01c16620023248162003db9565b61028083015260ff8160a81c166200233c8162003db9565b6102a083015260ff8160b01c16620023548162003db9565b6102c083015260ff8160b81c166200236c8162003db9565b6102e083015260ff8160c01c16620023848162003db9565b61030083015260ff8160c81c166200239c8162003db9565b61032083015260ff8160d01c16620023b48162003db9565b61034083015260ff8160d81c16620023cc8162003db9565b61036083015260ff8160e01c16620023e48162003db9565b61038083015260ff8160e81c16620023fc8162003db9565b6103a083015260ff8160f01c16620024148162003db9565b6103c083015260f81c620024288162003db9565b6103e082015201940192019162001b94565b60405190620024498262003bcd565b6200245960ff8654168362004411565b600185015460208301526002850154620024738162003c62565b9162002483604051938462003c3e565b81835260028701815260208082209084015b8383106200251b57505050509d9e95969798999a9b9c9d600192826020926040600695015260038701546060820152620024d26004880162004286565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301910190918e9d9c9b9a9998979695949d62001b5c565b60096020600192604051620025308162003bb1565b855481526200257460ff868801548181166200254c8162003db9565b86850152818160081c16620025618162003cf8565b604085015260101c16606083016200441e565b620025826002870162004198565b60808201526200259560038701620044e5565b60a082015281520192019201919062002495565b600760209d9e969798999a9b9c9d600192620025c58662004393565b8152019301910190919c9b9a9998979695949c62001b17565b60f81c151581526020013862001ace565b92602060019160ff8560f01c161515815201930162001ac7565b92602060019160ff8560e81c161515815201930162001abe565b92602060019160ff8560e01c161515815201930162001ab5565b92602060019160ff8560d81c161515815201930162001aac565b92602060019160ff8560d01c161515815201930162001aa3565b92602060019160ff8560c81c161515815201930162001a9a565b92602060019160ff8560c01c161515815201930162001a91565b92602060019160ff8560b81c161515815201930162001a88565b92602060019160ff8560b01c161515815201930162001a7f565b92602060019160ff8560a81c161515815201930162001a76565b92602060019160ff8560a01c161515815201930162001a6d565b92602060019160ff8560981c161515815201930162001a64565b92602060019160ff8560901c161515815201930162001a5b565b92602060019160ff8560881c161515815201930162001a52565b92602060019160ff8560801c161515815201930162001a49565b92602060019160ff8560781c161515815201930162001a40565b92602060019160ff8560701c161515815201930162001a37565b92602060019160ff8560681c161515815201930162001a2e565b92602060019160ff8560601c161515815201930162001a25565b92602060019160ff8560581c161515815201930162001a1c565b92602060019160ff8560501c161515815201930162001a13565b92602060019160ff8560481c161515815201930162001a0a565b92602060019160ff8560401c161515815201930162001a01565b92602060019160ff8560381c1615158152019301620019f8565b92602060019160ff8560301c1615158152019301620019ef565b92602060019160ff8560281c1615158152019301620019e6565b92602060019160ff85831c1615158152019301620019dd565b92602060019160ff8560181c1615158152019301620019d4565b92602060019160ff8560101c1615158152019301620019cb565b92602060019160ff8560081c1615158152019301620019c2565b92602060019160ff851615158152019301620019b9565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff8160181c161515606083015260ff8160808282891c16151581860152828260281c16151560a0860152828260c092828260301c16151584890152828260381c16151560e0890152828260401c161515610100890152828260481c161515610120890152828260501c161515610140890152828260581c161515610160890152828260601c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e08201520194019201849293916200199e565b634e487b7160e01b8a52604160045260248afd5b634e487b7160e01b8a52602160045260248afd5b634e487b7160e01b89526041600452602489fd5b634e487b7160e01b84526041600452602484fd5b5034620001c4576020366003190112620001c45760043590612710821015620017e1575060031b600181015460028201549162002b9d62002b7e60056006840154930162004286565b6040519485948552602085015260806040850152608084019062003d92565b9060608301520390f35b5034620001c45780600319360112620001c45762013882805462002bcb8162003c62565b9162002bdb604051938462003c3e565b81835283526020808420849184015b83831062002d8c5785856201388380549062002c068262003c62565b9362002c16604051958662003c3e565b82855260208501918152602081209080925b84841062002c5e5762002c4f866200049b8960405193849360408552604085019062003f44565b90838203602085015262003f44565b60405162002c6c8162003bcd565b62002c7c60ff8554168262004411565b6001840154602082015260028401805462002c978162003c62565b9162002ca7604051938462003c3e565b8183528552602080862090869084015b83821062002d26575050505060019282602092604060069501526003870154606082015262002ce96004880162004286565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520193019301929162002c28565b6009602060019260405162002d3b8162003bb1565b8654815262002d5760ff868901548181166200254c8162003db9565b62002d656002880162004198565b608082015262002d7860038801620044e5565b60a082015281520193019101909162002cb7565b60405162002d9a8162003bcd565b62002daa60ff8454168262004411565b6001830154602082015260028301805462002dc58162003c62565b9162002dd5604051938462003c3e565b81835289526020808a20908a9084015b83821062002e54575050505060019282602092604060069501526003860154606082015262002e176004870162004286565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520192019201919062002bea565b6009602060019260405162002e698162003bb1565b8654815262002e8560ff868901548181166200254c8162003db9565b62002e936002880162004198565b608082015262002ea660038801620044e5565b60a082015281520193019101909162002de5565b5034620001c4576020366003190112620001c4576020906040906001600160a01b0362002ee662003b4e565b1681526201388583522054604051908152f35b5034620001c45780600319360112620001c4576202712680546001600160a01b0319163317905562027129805460ff19166001908117909155604051909190819062002f458162003c06565b5290620138828054600082558062003253575b508252818060405162002f6b8162003c06565b526200323f576201388380546000825580620031c0575b5082526127106202712a556040519162002f9c8362003bea565b818352805b60208082101562003017576040516020929162002fbe8262003bb1565b8482528481830152846040830152606085818401526080908082850152806040519262002feb8462003bb1565b8184528185850152816040850152818085015283015260a0908183015283015282870101520162002fa1565b8284620031b0876040516200302c8162003c06565b8481526040516200303d8162003c06565b8581526040516200304e8162003c06565b8681526040516200305f8162003c06565b878152604051620030708162003c06565b88815260405191620030828362003c06565b89835260405193620030948562003c06565b8a855260405195620030a68762003bb1565b8652602086015260408501526060840152608083015260a082015260405191620030d08362003bb1565b86835260036020840152866040840152866060840152608083015260a0820152620030fb8262005a6a565b52620031078162005a6a565b506200315e6040516200311a8162003bcd565b600481528460208201528260408201528560608201526040516200313e8162003c06565b86815260808201528460a08201528460c08201528460e082015262006833565b604051906200316d8262003bcd565b600282528360208301526040820152836060820152604051620031908162003c06565b84815260808201528260a08201528260c08201528360e082015262006880565b6113886201388b556201388c5580f35b925060068381029381850403620032295760009382855260208520908101905b818110620031f057505062002f82565b80868492558686820155620032086002820162005e12565b8660038201556200321c6004820162005c16565b86600582015501620031e0565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b925060068381029381850403620032295760009382855260208520908101905b8181106200328357505062002f58565b808684925586868201556200329b6002820162005e12565b866003820155620032af6004820162005c16565b8660058201550162003273565b5034620001c45780600319360112620001c4576020604051338152f35b5034620001c45780600319360112620001c45760206202712d54604051908152f35b5034620001c4576020366003190112620001c45760043590612710821015620017e1576200049b6200333360048460031b01620041ed565b6040519182918262003d19565b5034620001c45780600319360112620001c4576040516201388180548083529083526020808301937fcd6f7cece5c70f73af31bb8ed8b80ae1c2a9e5eb261bd5ab2d9374b0c38719c892915b828210620033a7576200049b85620033338189038262003c3e565b83546001600160a01b0316865294850194600193840193909101906200338c565b5034620001c45760209081600319360112620001c457604090620033eb62003b4e565b8160608451620033fb8162003b7f565b82815286810183905285810182905201526001600160a01b0316815262013880835220604051906200342d8262003b7f565b6200349781549160ff83161515845260ff8585019360081c161515835260026200345a6001830162004286565b916040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062003d92565b905160808301520390f35b5034620001c45780600319360112620001c45760206202712e54604051908152f35b5034620001c4576020366003190112620001c45760043590612710821015620017e15760206200350d62003505846200176760028260031b01549162006b44565b9190620068ec565b604051908152f35b5034620001c45780600319360112620001c4576201388b54620035726200353b62012d29565b916200354d6127109384831062005a27565b620035676201388e546201388c5411156200046462012d97565b6201388d54620069da565b90506200357e62012ded565b50825b828110620035a4575b60206200359a8585850462006c94565b9050604051908152f35b909260ff60078360031b01541615620035ee5781620035d8620035e492620035d16200046b969562006959565b9062006c06565b94906200046462012ded565b9290919262003581565b92906200358a565b5034620001c4576020366003190112620001c457602062003619600435620125f9565b62003628604051809262003d5f565bf35b5034620001c45780600319360112620001c4576040516201388680548083529083526020808301937f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa492915b82821062003691576200049b85620033338189038262003c3e565b83546001600160a01b03168652948501946001938401939091019062003676565b5034620001c4576040366003190112620001c4576004356024356001600160a01b03811690819003620017285761271082101562003704579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b5034620001c45780600319360112620001c4576040516201388880548083529083526020808301937ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df92915b8282106200377f576200049b85620033338189038262003c3e565b83546001600160a01b03168652948501946001938401939091019062003764565b5034620001c45780600319360112620001c457602060ff62027129541660405190620037cc8162003cf8565b8152f35b5034620001c4576040366003190112620001c457620037ee62003b4e565b60249081356001600160401b03811162003b2a576200381290369060040162003c88565b91600260ff620271295416620038288162003cf8565b0362003aea576202712d5442101562003aac5760018060a01b0382168085526202712c92602093808552604087206202712e91825491828a52875260ff60408a20541662003a6e57875194828a526202712b95868952600260408c2001540362003a08578952865260408820908852855260408720956001968760ff198254161790558688905b620038b8578880f35b815181101562003a0457620038ce818362005ab0565b51156200397e578254808a528588526200392388620008f3848d60406003918c620039158d620035d1876200390881898989200162006ac7565b905490891b1c92620124a5565b979099835252200162006ac7565b156200393b57620039349062005a5a565b87620038af565b60405162461bcd60e51b815260048101889052601c818801527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b8254808a52858852620039b188620008f3848d60406003918c620039158d620035d1876200390881898989200162006ac7565b15620039c257620039349062005a5a565b60405162461bcd60e51b815260048101889052601b818801527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b8880f35b60405162461bcd60e51b8152600481018990526039818901527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b60405162461bcd60e51b815260048101889052601781880152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b60649060176040519162461bcd60e51b835260206004840152820152761d9bdd1a5b99c81c195c9a5bd9081a185cc8195b991959604a1b6044820152fd5b60649060196040519162461bcd60e51b83526020600484015282015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152fd5b8380fd5b9050346200049f57816003193601126200049f5760209062027127548152f35b600435906001600160a01b038216820362003b6557565b600080fd5b35906001600160a01b038216820362003b6557565b608081019081106001600160401b0382111762003b9b57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762003b9b57604052565b61010081019081106001600160401b0382111762003b9b57604052565b604081019081106001600160401b0382111762003b9b57604052565b602081019081106001600160401b0382111762003b9b57604052565b606081019081106001600160401b0382111762003b9b57604052565b601f909101601f19168101906001600160401b0382119082101762003b9b57604052565b6001600160401b03811162003b9b5760051b60200190565b3590811515820362003b6557565b81601f8201121562003b655780359162003ca28362003c62565b9262003cb2604051948562003c3e565b808452602092838086019260051b82010192831162003b65578301905b82821062003cde575050505090565b83809162003cec8462003c7a565b81520191019062003ccf565b6004111562003d0357565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062003d41575050505090565b83516001600160a01b03168552938101939281019260010162003d32565b90600382101562003d035752565b60005b83811062003d815750506000910152565b818101518382015260200162003d70565b9060209162003dad8151809281855285808601910162003d6d565b601f01601f1916010190565b6005111562003d0357565b90815180825260208080930193019160005b82811062003de5575050505090565b83518552938101939281019260010162003dd6565b90815180825260208080930193019160005b82811062003e1b575050505090565b83516001600160a01b03168552938101939281019260010162003e0c565b90815180825260208092019182818360051b85019501936000915b84831062003e655750505050505090565b909192939495848062003e8183856001950387528a5162003d92565b980193019301919493929062003e54565b90815180825260208092019182818360051b82019501936000915b84831062003ebe5750505050505090565b909192939495848062003eda83856001950387528a5162003dc4565b980193019301919493929062003ead565b90815180825260208092019182818360051b82019501936000915b84831062003f175750505050505090565b909192939495848062003f3383856001950387528a5162003dfa565b980193019301919493929062003f06565b9060208251918281520190819060208160051b84019401926000905b82821062003f7057505050505090565b909192939481810385528551906101008082018351600681101562003d0357835260208401516020840152604084015191604084015281518091526101206020818501918360051b86010193019160005b8181106200402b575050505060019260209262003ff7849360608085015190840152608080850151908483039085015262003d92565b9160a08082015115159083015260c08082015115159083015260e08091015115159101529701950192019092919262003f60565b9091929361011f9c9b9c19868203018452845190815181526020820151620040538162003db9565b60208201526040820151620040688162003cf8565b60408201526060820151603d81101562003d0357606082015260a06200409e608084015160c0608085015260c084019062003dc4565b9201519060a081840391015260a06200411d6200410a620040f7620040e4620040d1865160c0895260c089019062003dc4565b602087015188820360208a015262003dfa565b6040860151878203604089015262003e39565b6060850151868203606088015262003e92565b6080840151858203608087015262003eeb565b9101519160a081830391015281519081815260208101906020808460051b8301019401926000915b8183106200416a5750505050506020806001929e9d9e96019401910191909162003fc1565b90919293946020806200418a600193601f19868203018952895162003e39565b970195019301919062004145565b9060405191828154918282526020928383019160005283600020936000905b828210620041d257505050620041d09250038362003c3e565b565b855484526001958601958895509381019390910190620041b7565b9060405191828154918282526020928383019160005283600020936000905b8282106200422557505050620041d09250038362003c3e565b85546001600160a01b0316845260019586019588955093810193909101906200420c565b90600182811c921680156200427b575b60208310146200426557565b634e487b7160e01b600052602260045260246000fd5b91607f169162004259565b90604051918260008254926200429c8462004249565b908184526001948581169081600014620043115750600114620042ca575b5050620041d09250038362003c3e565b9093915060005260209081600020936000915b818310620042f8575050620041d093508201013880620042ba565b85548884018501529485019487945091830191620042dd565b915050620041d094506020925060ff191682840152151560051b8201013880620042ba565b908154620043448162003c62565b9262004354604051948562003c3e565b818452600090815260208082208186015b84841062004374575050505050565b6001838192620043848562004286565b81520192019301929062004365565b60405190919060e081016001600160401b0381118282101762003b9b5760405260c060ff60068395620043c68162004198565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152620044026005820162004286565b60a08601520154161515910152565b600682101562003d035752565b603d82101562003d035752565b908154620044398162003c62565b9262004449604051948562003c3e565b818452600090815260208082208186015b84841062004469575050505050565b6001838192620044798562004198565b8152019201930192906200445a565b908154620044968162003c62565b92620044a6604051948562003c3e565b818452600090815260208082208186015b848410620044c6575050505050565b6001838192620044d685620041ed565b815201920193019290620044b7565b9060405191620044f58362003bb1565b82620045018262004198565b81526001600562004514828501620041ed565b93602094858501526200452a6002820162004336565b60408501526200453d600382016200442b565b6060850152620045506004820162004488565b608085015201805490620045648262003c62565b9462004574604051968762003c3e565b82865260009182528082208187015b848410620045975750505050505060a00152565b85838192620045a68562004336565b81520192019301929062004583565b906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b8501019401926000905b828210620045ff57505050505090565b9091929394605f19828203018552855160018060a01b038151168252602081015190602282101562003d03576040916020840152015190606060408201526200468d620046766200465f8451610120606086015261018085019062003dc4565b6020850151848203605f1901608086015262003dfa565b6040840151838203605f190160a085015262003e39565b606083015190605f198382030160c0840152602080835192838152019201906000905b80821062004a3457505050608083015190605f198382030160e0840152815180825260208201906020808260051b85010194019260005b828110620049b057505050505060a083015190605f1983820301610100840152815190818152602081016020808460051b8401019401926000925b818410620047d257505050505060c083015190605f1983820301610120840152602080835192838152019201906000905b808210620047ae57505050620047a08360209361010062004789869560e06001990151605f198583030161014086015262003e92565b92015190610160605f198285030191015262003eeb565b9701950193920190620045ef565b9091926020806001928651620047c48162003db9565b815201940192019062004753565b9091929394601f9d9c9d198282030184528551908151600681101562003d03578152602082015160208201526040820151610100604083015261010082018151809152610120830160206101208360051b8601019301916000905b8082106200489857505050509d9e9d8260209260e0806200486886956060600199015160608601526080860151858203608087015262003d92565b9360a0810151151560a085015260c0810151151560c0850152015115159101529701940194019293919062004722565b9091929361011f19868203018452845190815181526020820151620048bd8162003db9565b60208201526040820151620048d28162003cf8565b60408201526060820151603d81101562003d0357606082015260a062004908608084015160c0608085015260c084019062003dc4565b9201519060a081840391015260a06200493b6200410a620040f7620040e4620040d1865160c0895260c089019062003dc4565b9101519160a0818303910152815180825260208201906020808260051b8501019401926000915b80831062004982575050505050602080600192960194019201906200482d565b9091929394602080620049a2600193601f19878203018952895162003e39565b970195019301919062004962565b9091929394602080600192601f1986820301885288519060c08062004a1e620049e3855160e0865260e086019062003dc4565b8686015187860152604086015160408601526060860151606086015260808601511515608086015260a086015185820360a087015262003d92565b93015115159101529701950193929101620046e7565b909192602080600192865115158152019401920190620046b0565b81601f8201121562003b655780359162004a698362003c62565b9262004a79604051948562003c3e565b808452602092838086019260051b82010192831162003b65578301905b82821062004aa5575050505090565b8135815290830190830162004a96565b81601f8201121562003b655780359162004acf8362003c62565b9262004adf604051948562003c3e565b808452602092838086019260051b82010192831162003b65578301905b82821062004b0b575050505090565b83809162004b198462003b6a565b81520191019062004afc565b81601f8201121562003b65578035906001600160401b03821162003b9b576040519262004b5d601f8401601f19166020018562003c3e565b8284526020838301011162003b6557816000926020809301838601378301015290565b9080601f8301121562003b655781359062004b9b8262003c62565b9262004bab604051948562003c3e565b828452602092838086019160051b8301019280841162003b6557848301915b84831062004bdb5750505050505090565b82356001600160401b03811162003b6557869162004bff8484809489010162004b25565b81520192019162004bca565b9080601f8301121562003b655781359062004c268262003c62565b9262004c36604051948562003c3e565b828452602092838086019160051b8301019280841162003b6557848301915b84831062004c665750505050505090565b82356001600160401b03811162003b6557869162004c8a8484809489010162004a4f565b81520192019162004c55565b9080601f8301121562003b655781359062004cb18262003c62565b9262004cc1604051948562003c3e565b828452602092838086019160051b8301019280841162003b6557848301915b84831062004cf15750505050505090565b82356001600160401b03811162003b6557869162004d158484809489010162004ab5565b81520192019162004ce0565b9190826040918161056052806105a052031262003b655760408051929083016001600160401b0381118482101762003b9b5760405262004d62839162003b6a565b83526105605160208101356106408190526001600160401b03811162003b65576105a051910190601f8201121562003b6557359162004da18362003c62565b62004db0604051918262003c3e565b83815260208101610500526105a0516106405161056051019060208660051b8301011162003b6557602090959392949501915b61064051610560510160208760051b82010184101562005917578335906001600160401b03821162003b65578181016106a0526060601f198383016105a05103011262003b65576040516105208190529160608301906001600160401b03821184831017620051715762004e5f92602092604052010162003b6a565b905260406106a0510135602281101562003b655761052051602001526106a05160608101356106808190526001600160401b031062003b65576105a051610120606083013583018203601f19011262003b65576040516106008190526001600160401b036101208201908111908211176200517157610120016040526001600160401b0360608301358301602001351162003b655762004f0f916060810135016020818101359091010162004a4f565b6106005152610680516106a051016040810135906001600160401b03821162003b6557602062004f46926105a05192010162004ab5565b6106005160200152610680516106a051016001600160401b0360608201351162003b65576105a05162004f829160608101350160200162004b80565b6106005160400152610680516106a051016080810135906001600160401b03821162003b6557602062004fbc926105a05192010162003c88565b6106005160600152610680516106a05101936001600160401b0360a08601351162003b65576105a051603f60a0870135870101121562003b65576200500b602060a08701358701013562003c62565b956200501b604051978862003c3e565b60a0860135808701602090810135808a526105a051610680516106a051938c01989493019092019160059190911b82016040011162003b6557604001945b610680516106a0510160a08901359081019089016020013560051b810160400187101562005186578635906001600160401b03821162003b655701906105a0519060e09182603f19858303011262003b6557604051908382016001600160401b0381118382101762005171576040908152850135906001600160401b03821162003b65576040620050ed9287010162004a4f565b8152606084013560208201526080840135604082015260a0840135606082015260c0926200511d84860162003c7a565b6080830152840135926001600160401b03841162003b65576200516161010060209662005155889760406105a0519184010162004b25565b60a08601520162003c7a565b9082015281520195019462005059565b60246000634e487b7160e01b81526041600452fd5b5050949793509450946080610600510152610680516106a0510160c08101356105e05260018060401b0360c08201351162003b65576105a0519060c08101350190603f8201121562003b6557620051ea6020620051f8920135806105c05262003c62565b604051806105405262003c3e565b610540516105c051905260206105405101610660526105a0516105c05160051b9060406105e051610680516106a0510101928301011162003b65576040016106c05292939092905b6105c05160051b6105e051610680516106a05101019060406106c05191830101811015620057865780356105808190526001600160401b031062003b6557610100603f19823584016105a05103011262003b6557604051610620819052916101008301916001600160401b03831184841017620051715760409283523501013590600682101562003b6557526060610580516105e051610680516106a05101010101356020610620510152610580516105e051610680516106a0510101019460018060401b0360808701351162003b65576105a051605f6080880135880101121562003b65576200534d6200533f604060808901358901013562003c62565b604051806106e05262003c3e565b6106e080516080880135808901604001359182905291516105a051610580516105e051610680516106a0516020959095019a96940101019091019160051b82016060011162003b6557606001945b610580516105e051610680516106a05101010160808901359081019089016040013560051b81016060018710156200566b578635906001600160401b03821162003b655701605f1960c081836105a05103011262003b655760405191620054028362003bb1565b606081013583526080810135600581101562003b6557602084015260a0810135600481101562003b6557604084015260c0810135603d81101562003b6557606084015260e08101356001600160401b03811162003b65576105a0516200546d91830160600162004a4f565b6080840152610100810135916001600160401b03831162003b655760c0908383016105a05103011262003b655760405191620054a98362003bb1565b818101606001356001600160401b03811162003b65576105a051620054d5918484010160600162004a4f565b8352818101608001356001600160401b03811162003b65576105a05162005503918484010160600162004ab5565b602084015281810160a001356001600160401b03811162003b65576105a05162005534918484010160600162004b80565b604084015281810160c001356001600160401b03811162003b65576105a05162005565918484010160600162004c0b565b60608401526001600160401b0382820160e001351162003b65576105a0516200559a9083830160e08101350160600162004c96565b60808401528181016101000135906001600160401b03821162003b65576105a05192010190607f8201121562003b6557606081013590620055db8262003c62565b91620055eb604051938462003c3e565b808352602083019160806105a0519260051b82010191821162003b655760808101925b82841062005635575050505060a0808301919091528201528152602095860195016200539b565b83356001600160401b03811162003b65576020916200565f839260806105a0519187010162004b80565b8152019301926200560e565b5050935093919094506106e051604061062051015260a0610580516105e051610680516106a05101010101356060610620510152610580516105e051610680516106a05101010160018060401b0360c08201351162003b65576105a051620056dc9160c08101350160400162004b25565b608061062051015260e06200570581610580516105e051610680516106a0510101010162003c7a565b60a06106205101526200572e610100610580516105e051610680516106a0510101010162003c7a565b60c061062051015262005757610120610580516105e051610680516106a0510101010162003c7a565b90610620510152610620516106605152602061066051016106605260206106c051016106c05290929362005240565b5050610540516106005160a00152610680516106a05193969495929301906001600160401b0360e08301351162003b65576105a0519560e0830135830196603f8801121562003b6557620057de602088013562003c62565b94620057ee604051968762003c3e565b6020888101358088526105a051610680516106a051938a0198930160e0880135019160051b82016040011162003b6557604001955b604060208b013560051b60e0880135610680516106a05101010101871015620058625760058735101562003b6557863581526020968701960162005823565b509592989450959250955060c0610600510152610680516106a051019061010091828101359060018060401b03821162003b65576020620058aa926105a05192010162004c0b565b6106005160e00152610680516106a05101916101208301356001600160401b03811162003b65576105a051602094620058e69201850162004c96565b9061060051015261060051604061052051015261052051610500515281610500510161050052019193949262004de3565b50945091602091500152565b90620041d0604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262005978815180926020868601910162003d6d565b810103602581018552018362003c3e565b90620041d06040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a206020830152620059cf815180926020868601910162003d6d565b810103602081018552018362003c3e565b6020620041d091939293604051948162005a04879351809286808701910162003d6d565b820162005a1a8251809386808501910162003d6d565b0103808552018362003c3e565b1562005a305750565b60405162461bcd60e51b81526020600482015290819062005a5690602483019062003d92565b0390fd5b6000198114620032295760010190565b80511562005a785760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562005a785760400190565b80516002101562005a785760600190565b805182101562005a785760209160051b010190565b9062005ad18262003c62565b60409062005ae28251918262003c3e565b838152809362005af5601f199162003c62565b019160005b83811062005b085750505050565b602090825162005b188162003bcd565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e083015282860101520162005afa565b81811062005b62575050565b6000815560010162005b56565b8054600082558062005b7f575050565b620041d09160005260206000209081019062005b56565b90600160401b811162003b9b5781549080835581811062005bb657505050565b620041d0926000526020600020918201910162005b56565b600160401b811162003b9b576202711b9081549080835581811062005bb657505050565b600160401b811162003b9b57620138889081549080835581811062005bb657505050565b62005c22815462004249565b908162005c2d575050565b81601f6000931160011462005c40575055565b8183526020832062005c5e91601f0160051c81019060010162005b56565b8160208120915555565b805490600081558162005c79575050565b6000526020600020908101905b81811062005c92575050565b8062005ca060019262005c16565b0162005c86565b90600160401b811162003b9b5781549181815582821062005cc757505050565b600052602060002091820191015b81811062005ce1575050565b8062005cef60019262005c16565b0162005cd5565b805490600081558162005d07575050565b6000526020600020908101905b81811062005d20575050565b8062005d2e60019262005b6f565b0162005d14565b90600160401b811162003b9b5781549181815582821062005d5557505050565b600052602060002091820191015b81811062005d6f575050565b8062005d7d60019262005b6f565b0162005d63565b805490600081558162005d95575050565b6000526020600020908101905b81811062005dae575050565b8062005dbc60019262005c68565b0162005da2565b90600160401b811162003b9b5781549181815582821062005de357505050565b600052602060002091820191015b81811062005dfd575050565b8062005e0b60019262005c68565b0162005df1565b805460008083558162005e2457505050565b600992828402928484040362005ec157815260208120918201915b82811062005e4d5750505050565b808285925582600182015562005e666002820162005b6f565b62005e746003820162005b6f565b62005e826004820162005b6f565b62005e906005820162005c68565b62005e9e6006820162005cf6565b62005eac6007820162005cf6565b62005eba6008820162005d84565b0162005e3f565b634e487b7160e01b82526011600452602482fd5b600160401b821162003b9b5780549082815581831062005ef457505050565b600992828402928484040362003229578084029084820403620032295760009182526020822092830192015b82811062005f2e5750505050565b808285925582600182015562005f476002820162005b6f565b62005f556003820162005b6f565b62005f636004820162005b6f565b62005f716005820162005c68565b62005f7f6006820162005cf6565b62005f8d6007820162005cf6565b62005f9b6008820162005d84565b0162005f20565b51600681101562003d035790565b90600681101562003d035760ff80198354169116179055565b9062005fd58162003db9565b60ff80198354169116179055565b9062005fef8162003cf8565b61ff0082549160081b169061ff001916179055565b90603d81101562003d035762ff000082549160101b169062ff00001916179055565b9190601f81116200603657505050565b620041d0926000526020600020906020601f840160051c8301931062006065575b601f0160051c019062005b56565b909150819062006057565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b8151600681101562003d0357620060cb908262005fb0565b602082015160018201556002810160408301516020815191620060ef838562005ed5565b019160005260206000206000925b828410620062375750505050606082015160038201556080820151805160048301916001600160401b03821162003b9b5762006146826200613f855462004249565b8562006026565b602090601f8311600114620061bf579282600593620041d097969360e096600092620061b3575b50508160011b916000199060031b1c19161790555b01916200619660a082015115158462006070565b620061a860c082015115158462006081565b015115159062006099565b0151905038806200616d565b90601f198316918460005260206000209260005b8181106200621e575093620041d097969360e09693600193836005981062006204575b505050811b01905562006182565b015160001960f88460031b161c19169055388080620061f6565b92936020600181928786015181550195019301620061d3565b805180518355600183016200625c6020830151620062558162003db9565b8262005fc9565b620062776040830151620062708162003cf8565b8262005fe3565b6060820151603d81101562003d0357620062919162006004565b608081015180519060028501906001600160401b03831162003b9b57602090620062bc848462005b96565b0190600052602060002060005b83811062006762575050505060a0015180518051906001600160401b03821162003b9b576020600386019162006300848462005b96565b0190600052602060002060005b8381106200674d575050505060208101518051906001600160401b03821162003b9b576020600486019162006343848462005b96565b0190600052602060002060005b8381106200672f5750505050600583016040820151602081519162006376838562005ca7565b019160005260206000206000925b8284106200663e57505050506006830160608201516020815191620063aa838562005d35565b019160005260206000206000925b828410620065da57505050506007830160808201516020815191620063de838562005d35565b019160005260206000206000925b8284106200656d575050505060a060088401910151602081519162006412838562005dc3565b01916000526020600020916000905b8282106200644157505050506009602060019201920193019290620060fd565b8051602081519162006454838862005ca7565b0190856000526020600020916000905b8282106200648357505050506001602081920194019101909262006421565b80518051906001600160401b03821162003b9b57620064a882620013e3885462004249565b602090601f8311600114620064f8579282600194936020938695600092620064ec575b5050600019600383901b1c191690841b1787555b0194019101909262006464565b015190503880620064cb565b908660005260206000209160005b601f198516811062006554575083602093600196938796938794601f198116106200653a575b505050811b018755620064df565b015160001960f88460031b161c191690553880806200652c565b9192602060018192868501518155019401920162006506565b80518051906001600160401b03821162003b9b5760209062006590838662005b96565b0183600052602060002060005b838110620065bc575050505060016020819201920193019290620063ec565b82516001600160a01b0316818301556020909201916001016200659d565b80518051906001600160401b03821162003b9b57602090620065fd838662005b96565b0183600052602060002060005b83811062006629575050505060016020819201920193019290620063b8565b6001906020845194019381840155016200660a565b80518051906001600160401b03821162003b9b576200666a8262006663865462004249565b8662006026565b602090601f8311600114620066ba579282600194936020938695600092620066ae575b5050600019600383901b1c191690841b1785555b0192019301929062006384565b0151905038806200668d565b908460005260206000209160005b601f198516811062006716575083602093600196938796938794601f19811610620066fc575b505050811b018555620066a1565b015160001960f88460031b161c19169055388080620066ee565b91926020600181928685015181550194019201620066c8565b82516001600160a01b03168183015560209092019160010162006350565b6001906020845194019381840155016200630d565b600190602084519401938184015501620062c9565b90620067838262003c62565b62006792604051918262003c3e565b8281528092620067a5601f199162003c62565b0190602036910137565b62013883805482101562005a78576000526006602060002091020190600090565b62027116805482101562005a78576000526006602060002091020190600090565b62013882805482101562005a78576000526006602060002091020190600090565b62027115805482101562005a78576000526006602060002091020190600090565b620138828054600160401b81101562003b9b576200685791600182019055620067f1565b9190916200686a57620041d091620060b3565b634e487b7160e01b600052600060045260246000fd5b620138838054600160401b81101562003b9b576200685791600182019055620067af565b620271168054600160401b81101562003b9b576200685791600182019055620067d0565b620271158054600160401b81101562003b9b57620068579160018201905562006812565b15620068f457565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b61271081101562005a78576200350581620017676002620069809460031b01549162006b44565b90565b81156200698e570490565b634e487b7160e01b600052601260045260246000fd5b908115620069d1576064620069bd818402938462006983565b03620069c95760019190565b600091508190565b60019150600090565b91908215620069f257620069bd818402938462006983565b5060019150600090565b62013886805482101562005a785760005260206000200190600090565b62013881805482101562005a785760005260206000200190600090565b6202711d805482101562005a785760005260206000200190600090565b6201388a805482101562005a785760005260206000200190600090565b62027119805482101562005a785760005260206000200190600090565b6202711b805482101562005a785760005260206000200190600090565b62013888805482101562005a785760005260206000200190600090565b805482101562005a785760005260206000200190600090565b1562006ae857565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b612710811015908162005a7857600390811b906004928383019182549260009582879601935b85871062006b7c575050505050505090565b97969091929394959762006bde5762006bd28862006bca62006ba46200046b9a9b8762006ac7565b905490881b1c6001600160a01b0316600090815260208990526040812054909462006c06565b999062006ae0565b95949392919062006b6a565b603282634e487b7160e01b6000525260246000fd5b9060018201918210620069c95760019190565b91908201918210620069c95760019190565b6201388b5462006c2b6200353b62012d29565b91905062006c3862012ded565b5060009081925b81841062006c5a575b62006c5593500462006c94565b905090565b9160ff60078560031b0154161562006c8d5783620035d862006c8692620035d16200046b969762006959565b9262006c3f565b9162006c48565b90801562006cac5762006ca79162006983565b600191565b5050600090600090565b6201388180549190600160401b83101562003b9b578262006ce1916001620041d09501905562006a19565b9080546001600160a01b0360039390931b83811b80199092169390941690931b909216179055565b6040519062006d188262003bea565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b600091825b6020808401908151805187101562006ed5578162006d678862006d6f9362005ab0565b5101620074c6565b6022928382101562003d0357601a91820362006e2d578762006d92915162005ab0565b5192828401519081101562003d03570362006deb57509362006ddc62006de49262006dd462006dcd60e060406200046b9a0151015162005a6a565b5162005a6a565b519062006c06565b9590620074d4565b9262006d44565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b9291905062006e468162006d6789869a979a5162005ab0565b8281101562003d035760140362006e7f5750509062006ddc6200046b95620035d162006e788462006de4965162005ab0565b5162007521565b62006e919062006d6785855162005ab0565b9081101562003d035760151462006eaf575b5062006de49062005a5a565b9062006ddc62006ece95620035d162006e788462006de4965162005ab0565b9062006ea3565b50505090925080341060001462006f4b5760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007321575b5062027129805460ff811662006f6a8162003cf8565b6001810362006fa0575050508062006f9062006f8a62006f9693620075c8565b620075dd565b62007667565b6200698062006d09565b62006fab8162003cf8565b60028114808062007313575b156200709c575050505062006fcc81620075c8565b156200705d5762006fdd81620075c8565b15620070215762006fee9062007667565b60405162006ffc8162003bea565b60158152742a3432903b37ba329034b99032bc32b1baba32b21760591b602082015290565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b620070a78262003cf8565b6003821491828062007305575b1562007192575050505050620070ca81620075c8565b1562007142578062006f9062006f8a620070e493620075c8565b604051620070f28162003c22565b603a81527f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b604082015290565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b6200719d8162003cf8565b8180620072f6575b80620072e8575b15620071d657505050509062006f9691600360ff1982541617905562006f9062006f8a82620075c8565b620071e18162003cf8565b8215620072d3575b505080620072c4575b6200722b57505050604051620072088162003bea565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b60ff191660011790556200723f81620075c8565b1562007259578062006f9062006f8a62006f9693620075c8565b60405162461bcd60e51b815260206004820152603e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201527f76616c696420657865637574652070656e64696e672070726f6772616d2e00006064820152608490fd5b506202712854421015620071f2565b620072e091925062003cf8565b3880620071e9565b5062027128544210620071ac565b506202712754421015620071a5565b5062027128544210620070b4565b506202712754421062006fb7565b60018060a01b0390818351166000526201388590816020526040600020541562007418575b620073529034620074ac565b9015620073d4576200737590838551166000528260205260406000205462006c06565b92901562007393578351166000526020526040600020553862006f54565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b6000908162013886928354915b82811062007471575b50156200743f575b50905062007346565b85518516600160401b82101562003b9b5762006ce182620073529560016200746a95019055620069fc565b3862007436565b866200747d82620069fc565b919054818b51169260031b1c1614620074a1576200749b9062005a5a565b62007425565b50506001386200742e565b9190828111620074bd576001920390565b50600091508190565b51602281101562003d035790565b15620074dc57565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b6000805b604083019060e06200753b818451015162005a8e565b5151841015620075c057620075608462007559838651015162005a8e565b5162005ab0565b51925101519283516002101562005a7857620075af620075a9620075b793620075a1604096620075998660606200046b9b015162005ab0565b5190620069da565b9290620074d4565b62006c06565b9490620074d4565b91905062007525565b509250505090565b602001515115620075d857600190565b600090565b15620075e557565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200767281620109d7565b516201045157600681101562003d035760038114620103f85780620076cf5760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b6004810362009b6b5750906000905b6020830151805183101562009b655782620076f99162005ab0565b516020810180516022908181101562003d03571562009b225781518181101562003d0357600103620079485750506040809101906200773e6101008351015162005a6a565b51926200776060e062007755818651015162005a6a565b519451015162005a8e565b519562007771855185511462011c60565b62007780855188511462011cc6565b60005b8551811015620078c65762007799818662005ab0565b51612710908181101562005a7857600160ff6007620077c19360031b01541615151462011d28565b620077cd828a62005ab0565b51620077da838862005ab0565b51908282101562005a78576006620077f89260031b01549062006c06565b9062007805848962005ab0565b51918383101562005a78576006620078229360031b015562011d80565b6200782e828a62005ab0565b51906200783c838862005ab0565b518181101562005a78576001600160a01b0393926200787c916003908662007865878e62005ab0565b5116600052811b0160205287600020549062006c06565b62007888848a62005ab0565b519283101562005a785760036200046b93620078c096620078aa878e62005ab0565b5116600052811b01602052876000205562011ddf565b62007783565b509392620078e391929650620078dc9062012c2b565b9262012b0f565b945192620078f18462003c06565b60008452600036813760005b83518110156200792b57806200046b6200791c62007925938762005ab0565b51878a620126f5565b620078fd565b50945092602092506200793f915062005a5a565b919050620076de565b819592939495518181101562003d035760020362007cdc5750506040809201908151938385015191620079a06200798460e08098015162005a6a565b519662007995818751015162005a8e565b519551015162005a9f565b5194835187510362007c8957835185510362007c3557835186510362007bde575060005b865181101562007bc857620079da818862005ab0565b5161271081101562005a7857620079fd60ff6007809360031b0154161562011e38565b62007a09828962005ab0565b5161271081101562005a785760031b01805460ff1916600117905562007a30818562005ab0565b5162007a3d828962005ab0565b519061271082101562005a78578051906001600160401b03821162003b9b5762007a808262007a7360058660031b015462004249565b60058660031b0162006026565b602090601f831160011462007b4d57600592916000918362007b41575b50508160011b916000199060031b1c1916179160031b01555b62007ac2818662005ab0565b5162007acf828962005ab0565b5161271081101562005a785760031b6001015562007aee818762005ab0565b5162007afb828962005ab0565b5161271081101562005a785760031b6002015562007b1a818862005ab0565b519061271082101562005a78576000600662007b3b9360031b015562005a5a565b620079c4565b01519050388062007a9d565b9060058460031b0160005260206000209160005b601f198516811062007baf5750918391600193600595601f1981161062007b95575b505050811b019160031b015562007ab6565b015160001960f88460031b161c1916905538808062007b83565b9192602060018192868501518155019401920162007b61565b509591509350602092506200793f915062005a5a565b5162461bcd60e51b815260206004820152603c6024820152600080516020620133bc83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b81526020600482015260396024820152600080516020620133bc8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b81526020600482015260386024820152600080516020620133bc8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b8195929395518181101562003d0357600303620082d3575050604084019062007d0b6101008351015162005a6a565b519362007d2260e062007755818651015162005a6a565b519362007d3786518551146200046462012e52565b62007d4a86518651146200046462012e52565b60005b865181101562007db35762007d63818662005ab0565b519061271082101562005a7857600362007dad9260018060a01b038b5116600052811b016020526200046b60406000205462007da0838a62005ab0565b5111156200046462012f56565b62007d4d565b50909493919460005b855181101562007ee75762007dd2818662005ab0565b51906127108083101562005a7857600360018060a01b0393848c5116600052811b0160205262007e1560406000205462007e0d848962005ab0565b5190620074ac565b9062007e22848a62005ab0565b51918383101562005a7857600362007e5193878f5116600052811b016020526040600020556200046462012f56565b62007e5d828862005ab0565b518181101562005a78576003908462007e77858c62005ab0565b5116600052811b0160205262007e9860406000205462006dd4848962005ab0565b62007ea4848a62005ab0565b519283101562005a785760036200046b9362007ee19662007ec6878e62005ab0565b5116600052811b016020526040600020556200046462012fbb565b62007dbc565b5091509162007efe62007f05919695949662012c2b565b9562012b0f565b926040519462007f158662003bea565b6001865260203681880137516001600160a01b031662007f358662005a6a565b526000905b8651821015620082be5762007f50828862005ab0565b516101005262007f61855162006777565b9660009462007f71885162006777565b610260528594865b885181101562008048578a8962007fa96001600160a01b0362007f9d858462005ab0565b511661010051620129f8565b158062008002575b62007fca575b505062007fc49062005a5a565b62007f79565b9862007ff79162000b1382859c62007fee62007fc49760018060a01b039262005ab0565b51169262005ab0565b9790508a8962007fb7565b50505061271061010051101562005a78576001600160a01b0362008027828b62005ab0565b5116600052600361010051811b016020528a89604060002054151562007fb1565b509098949897969291939760005b8851811015620080ea5761271061010051101562005a78576001600160a01b0362008082828b62005ab0565b5116600052600361010051811b0160205260406000205415620080b1575b620080ab9062005a5a565b62008056565b99620080ab90620080e1906001600160a01b03620080d08e8d62005ab0565b511662000b13826102605162005ab0565b9a9050620080a0565b50985096949392919561010051612710811015806102005262005a785760031b6004015496620081256200811f878a620118f8565b62006777565b996000998a60c0525b6102005162005a785760c0518a811015620081df57620081626200817f9160006102005260046101005160031b0162006ac7565b90546102605160039290921b1c6001600160a01b03169062012aba565b156200819c575b6200819360c05162005a5a565b60c0526200812e565b99808c62000b13620081d893620081bf60c05160046101005160031b0162006ac7565b905460039190911b1c6001600160a01b03169262005ab0565b9962008186565b509a939794969299919850946000915b8383106200828457505050506102005162005a78578051906001600160401b03821162003b9b576020906200822e8360046101005160031b0162005b96565b0160046101005160031b01600052602060002060005b8381106200826657505050506200825b9062005a5a565b909295919562007f3a565b82516001600160a01b03168183015560209092019160010162008244565b620082b790620082b0906001600160a01b03620082a2868662005ab0565b511662000b13828962005ab0565b9262005a5a565b91620081ef565b919450506200793f9194506020925062005a5a565b819593949295518181101562003d03576004036200855c5750506040809201610100946200831562008309878451015162005a6a565b51968351015162005a8e565b51946200832c60e062007755818651015162005a6a565b51936200834188518851146200046462012e52565b6200835488518551146200046462012e52565b6200836788518651146200046462012e52565b60005b8851811015620083cf5762008380818662005ab0565b519061271082101562005a7857620083c9916003906001600160a01b03620083a9848e62005ab0565b5116600052811b016020526200046b886000205462007da0838a62005ab0565b6200836a565b50909691959294939660005b83518110156200851057620083f1818862005ab0565b5190612710918281101562005a78576001600160a01b03906003908262008419858a62005ab0565b5116600052811b016020526200843a8b62007e0d848b600020549262005ab0565b9062008447848c62005ab0565b51918583101562005a7857600362008480938562008466888d62005ab0565b5116600052811b016020528a600020556200046462012f56565b6200848c828a62005ab0565b518381101562005a785760039082620084a6858b62005ab0565b5116600052811b01602052620084c78b62006dd4848b600020549262005ab0565b919050620084d6838b62005ab0565b519384101562005a78576200850a93600391620084f4858b62005ab0565b5116600052811b01602052876000205562005a5a565b620083db565b50946200853392975062007efe919394506200852c9062012c2b565b9362012b0f565b9260005b83518110156200792b57806200046b6200791c62008556938762005ab0565b62008537565b819594939551908082101562003d03576005918203620087725750505060409182850190620085a060e062008595818551015162005a6a565b519351015162005a8e565b51928251845103620087215760005b83518110156200860757620085c5818562005ab0565b519061271082101562005a78576003620086019260018060a01b038b5116600052811b016020526200046b876000205462007da0838962005ab0565b620085af565b509092919260005b8451811015620086a25762008625818662005ab0565b51906127108083101562005a7857600360018060a01b0393848c5116600052811b016020526200865f886000205462007e0d848962005ab0565b6200866b848a62005ab0565b519283101562005a785760036200046b936200869c968e5116600052811b0160205289600020556200046462012f56565b6200860f565b50959392620086b391925062012c2b565b91805193620086c28562003bea565b6001855260203681870137516001600160a01b0316620086e28562005a6a565b525194620086f08662003c06565b60008652600036813760005b83518110156200792b57806200046b6200791c6200871b938762005ab0565b620086fc565b845162461bcd60e51b815260206004820152603560248201526000805160206201339c833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969496518181101562003d0357600603620089db575050506040809201620087a16101008251015162005a6a565b5194620087b860e062008595818551015162005a6a565b519286518351036200898a5786518451036200893e5760005b87518110156200883657620087e7818562005ab0565b519061271082101562005a785762008830916003906001600160a01b0362008810848d62005ab0565b5116600052811b016020526200046b876000205462007da0838962005ab0565b620087d1565b509092919260005b8751811015620088ea5762008854818662005ab0565b516127108082101562005a78576001600160a01b039291600390846200887b858e62005ab0565b5116600052811b016020526200889b886000205462007e0d848962005ab0565b620088a7848a62005ab0565b519283101562005a785760036200046b93620088e496620088ca8f889062005ab0565b5116600052811b0160205289600020556200046462012f56565b6200883e565b509592620088ff919250620078dc9062012c2b565b9251946200890d8662003c06565b60008652600036813760005b83518110156200792b57806200046b6200791c62008938938762005ab0565b62008919565b845162461bcd60e51b815260206004820152603060248201526000805160206201343c83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b815260206004820152603560248201526000805160206201333c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b8296949396518181101562003d035760070362008c4857505050604090939193019062008a0e6101008351015162005a6a565b5193604062008a2260e08551015162005a6a565b51935101519162008a3b86518551146200046462012e52565b6000915b865183101562008c33576001600160a01b0362008a5d848962005ab0565b511660005262013880928360205262008a8360ff60406000205416156200046462012f23565b62008a8f818662005ab0565b5162008a9c828862005ab0565b51906040519562008aad8762003b7f565b600187526000602088019081526040880192835260608801939093526001600160a01b0362008add858d62005ab0565b511660005260205262008b0860406000209262008afe885115158562006070565b5115158362006081565b5180519095906001600160401b03811162003b9b5762008b3b8162008b31600186015462004249565b6001860162006026565b602096601f821160011462008bb357918160609262008b9f97989960029560009262008ba7575b50508160011b916000199060031b1c19161760018501555b01519101556200046b6001600160a01b0362008b97838b62005ab0565b511662006cb6565b919062008a3f565b01519050388062008b62565b966001840160005260206000209760005b601f198416811062008c1a57508262008b9f97989960029593600193606096601f1981161062008c00575b505050811b01600185015562008b7a565b015160001960f88460031b161c1916905538808062008bef565b818301518a556001909901986020928301920162008bc4565b9550939050602092506200793f915062005a5a565b829694959651928184101562003d0357600893840362008d2c575050506101009262008c7c84604080950151015162005a6a565b519460005b865181101562007bc85762008d2690876001600160a01b038062008ca6848462005ab0565b511660005262008cfd888262008ce18662013880968760205262008cdb600160ff809760002054161515146200046462012e82565b62005ab0565b5116600052836020528960002054891c16156200046462012eea565b62008d09838b62005ab0565b5116600052602052856000208761ff001982541617905562005a5a565b62008c81565b8095939495518281101562003d035760090362008e1b5750505062008d5b610100604080950151015162005a6a565b519360005b855181101562008e065762008e0090866001600160a01b038062008d85848462005ab0565b511660005262008dd96001898362008dbb8762013880978860205262008cdb8660ff809760002054161515146200046462012e82565b5116600052846020528a600020548a1c161515146200046462012eb5565b62008de5838a62005ab0565b51166000526020528560002061ff0019815416905562005a5a565b62008d60565b5094909350602092506200793f915062005a5a565b80969593949296518281101562003d0357600f0362008f565750505060400160a09182825101519360005b855181101562007bc85760e062008e6282878751015162005ab0565b5101511562008eed5762008e8662008e7f82878751015162005ab0565b5162006833565b620138828054600019929190838101908111620032295762008ea98a91620067f1565b5001805461ff0019166101001790555491820191821162003229578762008ed462008ee793620067f1565b5001805460ff1916600117905562005a5a565b62008e46565b62008f0862008f0182878751015162005ab0565b5162006880565b620138828054600019929190838101908111620032295762008f2b8a91620067af565b5001805461ff0019166101001790555491820191821162003229578762008ed462008ee793620067af565b80518281101562003d0357600c036200907a5750505060400160a09182825101519360005b855181101562007bc85760e062008f9782878751015162005ab0565b51015115620090185762008fb462008e7f82878751015162005ab0565b620138828054600019929190838101908111620032295762008fd78a91620067f1565b5001805461ff00191661010017905554918201918211620032295787620090026200901293620067f1565b5001805460ff1916905562005a5a565b62008f7b565b6200902c62008f0182878751015162005ab0565b62013882805460001992919083810190811162003229576200904f8a91620067af565b5001805461ff00191661010017905554918201918211620032295787620090026200901293620067af565b8097969593929497518281101562003d0357600d03620091d4575050604001946060620090ac60e08851015162005a6a565b519651015191620090c187518451146201199f565b60005b8751811015620091be578080878a620090e26200915f958962005ab0565b51156200916557620091436200912a848362009115620091086200914e98889762005ab0565b5162013882541162011a28565b62008cdb8d620091316200912a858562005ab0565b51620067f1565b509060ff9889920154901c1662011a80565b500154161562011ae1565b8662008ed46200912a838c62005ab0565b620090c4565b62009143620091a684836200919162009184620091ad98889762005ab0565b5162013883541162011a28565b62008cdb8d62009131620091a6858562005ab0565b51620067af565b8662008ed4620091a6838c62005ab0565b509550939050602092506200793f915062005a5a565b8097949397518281101562003d0357600e03620092bb5750506040019160606200920360e08551015162005a6a565b5193510151956200921884518851146201199f565b60005b8451811015620091be57806200923662009242928a62005ab0565b51620092485762005a5a565b6200921b565b6200926562009258828862005ab0565b5162013882541162011b42565b620092aa876200928f6200927e6200912a858b62005ab0565b5060ff9283910154891c1662011b9b565b88620092a06200912a858b62005ab0565b5001541662011bfd565b86620090026200912a838962005ab0565b91939450915080518281101562003d03576010036200935f5750506040015190620092ef60e060c084015193015162005a6a565b51936200930483518651146200046462012e52565b60005b83518110156200934c57806200046b6200932662009346938762005ab0565b51620093328162003db9565b6200933e838a62005ab0565b519062011906565b62009307565b50935091602091506200793f9062005a5a565b80949394518281101562003d0357601a036200949e5750506200938b60e0604080930151015162005a6a565b5160038151036200945b57620093a18162005a6a565b5191620093ba620093b28362005a8e565b519262005a9f565b5191620094215750916200793f916001602094146000146200941a57620093f990620093ec6201388d91825462006c06565b9091556200046462012ded565b6200046b6201388e6200940d815462006bf3565b9091556200046462012e27565b5062005a5a565b5162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b815162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b80949394518281101562003d0357601b036200991d57505050620094d96201388b546200354d620094ce62012d29565b612710831062005a27565b5050620094e562012ded565b506000805b6127108110620098b8575b50506200950162006c18565b90620095116202712a5462006777565b9060009384905b612710821015620098ad578160031b9260ff6007850154161562009669576000976002850154156200965757889798975b62005a785760048501548810156200963d576200956a886004870162006ac7565b9054600391821b1c6001600160a01b0316600081815291870160205260409182902054919a916200959d908a90620069da565b9b90620095a962012ded565b620095b49162005a27565b60009b6002890154620095c791620069da565b90620095d262012ded565b620095dd9162005a27565b828d5262013887602052818d205490620095f79162006c06565b90918d20556200960662012ded565b620096119162005a27565b6200961d828962005ab0565b52620096299062005a5a565b97620096359062005a5a565b979862009549565b929093506200964e91965062005a5a565b90959462009518565b929093506200964e9196975062005a5a565b959392509350505b6200967c8262006777565b91600091825b82811062009817575050506201388890815492620096a56200811f8584620118f8565b9360009081905b808210620097dc57505060005b838110620097385750508351939150506001600160401b03831162003b9b57602090620096e68462005bf2565b0190600052602060002060005b8381106200971a57505050506200793f60209160006201388d5560006201388e5562005a5a565b82516001600160a01b031681830155602090920191600101620096f3565b6000805b83811062009794575b50156200975e575b620097589062005a5a565b620096b9565b9062009758906200978b906001600160a01b036200977d858762005ab0565b511662000b13828a62005ab0565b9190506200974d565b6001600160a01b0380620097a9858862005ab0565b511690620097b8838b62005ab0565b511614620097d157620097cb9062005a5a565b6200973c565b505060013862009745565b9091620082b06200981091620097f28562006aaa565b905460039190911b1c6001600160a01b031662000b13828b62005ab0565b90620096ac565b6000805b85811062009865575b50156200983d575b620098379062005a5a565b62009682565b9262009837906200985c906001600160a01b03620082a2878662005ab0565b9390506200982c565b6001600160a01b03806200987a858762005ab0565b51169062009889838a62005ab0565b511614620098a2576200989c9062005a5a565b6200981b565b505060013862009824565b935050929062009671565b8060031b9060ff60078301541615620099165762009904620075a96200046b94620098f862009910956002620098ee8762006959565b91015490620069da565b92906200046462012ded565b93906200046462012ded565b620094ea565b50620094f5565b80518281101562003d035760140362009abd575050604080910190620099496101008351015162005a6a565b51926200996060e062007755818651015162005a6a565b519562009971855185511462011c60565b62009980855188511462011cc6565b60005b855181101562009a685762009999818962005ab0565b51620099a6828762005ab0565b51612710918282101562005a78576006620099c79260031b01549062006c06565b90620099d4848962005ab0565b51918383101562005a78576006620099f19360031b015562011d80565b620099fd828a62005ab0565b519062009a0b838862005ab0565b518181101562005a78576001600160a01b03939262009a34916003908662007865878e62005ab0565b62009a40848a62005ab0565b519283101562005a785760036200046b9362009a6296620078aa878e62005ab0565b62009983565b50939262009a7e91929650620078dc9062012c2b565b94519262009a8c8462003c06565b60008452600036813760005b83518110156200792b57806200046b6200791c62009ab7938762005ab0565b62009a98565b939293519081101562003d035760150362009ae4576020916200046b6200793f9262011e84565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b6002810362009b8f5760405162461bcd60e51b81528062005a56600482016200761c565b60011462009b9a5750565b9062009baa620138835462005ac5565b805190600160401b821162003b9b5762027116548262027116558083106201037c575b506020016202711660005260206000206000915b8383106201035b575050505060005b620138835481101562009c2a57806200046b62009c1162009c2493620067af565b5062009c1d83620067d0565b906201090c565b62009bf0565b5062009c3a620138825462005ac5565b805190600160401b821162003b9b576202711554826202711555808310620102be575b506020016202711560005260206000206000915b8383106201029d575050505060005b620138825481101562009cb357806200046b62009ca162009cad93620067f1565b5062009c1d8362006812565b62009c80565b5060005b6127108110158062009e7f57600160ff6201389a8460031b01541615151462009ced575b5062009ce79062005a5a565b62009cb7565b916000835b62005a7857620138978360031b015481101562009d5f5762009d569293506000928162009d298593620138978860031b0162006ac7565b9054600391821b1c6001600160a01b031660009081529087901b6201389601602052604081205562005a5a565b90939262009cf2565b50916040519062009d708262003c06565b6000825262005a78578051906001600160401b03821162003b9b5760209062009da283620138978660031b0162005b96565b01620138978360031b01600052602060002060005b83811062009e615750505050600381901b6201389a8101805460ff1916905560006201389382018190556201389482018190556201389582015562013898015462009ce7919062009e089062004249565b601f9081811162009e35575b50506000620138988260031b01556000620138998260031b01559062009cdb565b62009e5991620138988460031b016000526020600020910160051c81019062005b56565b388062009e14565b82516001600160a01b03168183015560209092019160010162009db7565b505060005b612710811062010208575060005b620138815481101562009eef578062009eaf62009ee99262006a19565b60018060a01b0391549060031b1c1660005262027113602052600060026040822082815562009ee16001820162005c16565b015562005a5a565b62009e92565b5062009eff620138815462006777565b8051906001600160401b03821162003b9b57600160401b821162003b9b576020906202711454836202711455808410620101e5575b500162027114600052602060002060005b838110620101c7575050505060005b620138815481101562009fc95762009f6c8162006a19565b9054620271145460039290921b1c6001600160a01b0316919081101562005a785762027114600052600080516020620133dc833981519152810180546001600160a01b03191690921790915562009fc39062005a5a565b62009f54565b509060005b62013881548110156200a08b578062009feb6200a0409262006a19565b9060018060a01b03918291549060031b1c1660005262013880602052604080600020916200a0198462006a19565b90549060031b1c1660005262027113602052600020908082036200a046575b505062005a5a565b62009fce565b600280916200a06c60ff6200a05f818454168762006070565b825460081c168562006081565b6200a07e600182016001860162010592565b015491015538806200a038565b5060005b6202711d548110156200a0df57806200a0ac6200a0d99262006a36565b60018060a01b0391549060031b1c166000526202711c6020526200046b6040600020606481019062005b56565b6200a08f565b506200a0ef6201388a5462006777565b8051906001600160401b03821162003b9b57600160401b821162003b9b576020906202711d54836202711d55808410620101a4575b50016202711d600052602060002060005b83811062010186575050505060005b6201388a548110156200a18857806200046b6200a1656200a1829362006a53565b905460039190911b1c6001600160a01b031662006ce18362006a36565b6200a144565b5060005b6201388a548110156200a21657806200a1a96200a1fd9262006a53565b9060018060a01b03918291549060031b1c1660005262013889602052604080600020916200a1d78462006a53565b90549060031b1c166000526202711c602052600020908082036200a20357505062005a5a565b6200a18c565b6200a20e91620109a0565b38806200a038565b506201388b546202711e556201388c546202711f556201388d5462027120556201388e5462027121556201388f546001600160401b03811162003b9b57600160401b811162003b9b57620271225481620271225580821062010157575b506202712260009081527f846ab89c81ea9339188216a1864da1a19ebe28d411cbec99efa70ca6d389710d80546000805160206201335c83398151915291905b848410620101355750505050506201389054600160401b811162003b9b576202712354816202712355808210620100f2575b506202712360009081526000805160206201337c8339815191527f7f73709277f72a9bc7b284375e83603a53394744e9fa86da811e86c2aa78e05e5b838310620100d457505062013891549150506001600160401b03811162003b9b57600160401b811162003b9b576202712454816202712455808210620100a5575b506202712460009081527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e9453668054600080516020620133fc83398151915291905b8484106201008357505050505060ff6201389254161515620271259060ff8019835416911617905560005b62027119548110156200a41957806200a3ea6200a4139262006a70565b905460039190911b1c6001600160a01b0316600090815262027118602052604081205562005a5a565b6200a3cd565b506200a429620138865462006777565b8051906001600160401b03821162003b9b57600160401b821162003b9b57602090620271195483620271195580841062010060575b500162027119600052602060002060005b83811062010042575050505060005b62013886548110156200a4c257806200046b6200a49f6200a4bc93620069fc565b905460039190911b1c6001600160a01b031662006ce18362006a70565b6200a47e565b5060005b62013886548110156200a53457806200a4e36200a52e92620069fc565b9060018060a01b03918291549060031b1c166000526201388560205260408060002054916200a51284620069fc565b90549060031b1c16600052620271186020526000205562005a5a565b6200a4c6565b5060005b6202711b548110156200a58457806200a5556200a57e9262006a8d565b905460039190911b1c6001600160a01b031660009081526202711a602052604081205562005a5a565b6200a538565b506200a594620138885462006777565b8051906001600160401b03821162003b9b576020906200a5b48362005bce565b016202711b600052602060002060005b83811062010024575050505060005b62013888548110156200a61757806200046b6200a5f46200a6119362006aaa565b905460039190911b1c6001600160a01b031662006ce18362006a8d565b6200a5d3565b5060005b62013888548110156200a68957806200a6386200a6839262006aaa565b9060018060a01b03918291549060031b1c166000526201388760205260408060002054916200a6678462006aaa565b90549060031b1c166000526202711a6020526000205562005a5a565b6200a61b565b50906000905b602083015180518310156200e52e57826200a6aa9162005ab0565b516020810151602281101562003d03571562009b22576020810151602281101562003d03576001036200ac8957604001906200a6ec6101008351015162005a6a565b51936200a70360e062007755818651015162005a6a565b51916200a714865185511462011c60565b6200a723865184511462011cc6565b60005b86518110156200a886576200a73c818662005ab0565b5161271081101562005a7857600160ff6201389a6200a7649360031b01541615151462011d28565b6200a770818562005ab0565b516200a77d828762005ab0565b519061271082101562005a7857620138996200a79f9260031b01549062006c06565b906200a7ac838862005ab0565b519161271083101562005a7857620138996200a7cd9360031b015562011d80565b6200a7d9818562005ab0565b516200a7e6828762005ab0565b519061271082101562005a78576200a82a9162013896906001600160a01b036200a811868d62005ab0565b511660005260031b016020526040600020549062006c06565b91906200a838828862005ab0565b519061271082101562005a78576200a880936200046b9262013896906001600160a01b036200a868878f62005ab0565b511660005260031b0160205260406000205562011ddf565b6200a726565b50926200a89d9192506200852c9095949562012c2b565b916040516200a8ac8162003c06565b6000815260003681376000945b80518610156200ac6f576200a8cf868262005ab0565b51610600526200a8e0855162006777565b966000946200a8f0845162006777565b6103805260009460005b88518110156200a9c3578a896200a92a6001600160a01b036200a91e858462005ab0565b51166106005162012a61565b15806200a97a575b6200a94b575b50506200a9459062005a5a565b6200a8fa565b986200a96f9162000b1382859c62007fee6200a9459760018060a01b039262005ab0565b9790508a896200a938565b50505061271061060051101562005a78576001600160a01b036200a99f828b62005ab0565b5116600052620138966106005160031b016020528a8960406000205415156200a932565b50909895979498969291939660005b88518110156200aa625761271061060051101562005a78576001600160a01b03806200a9ff838c62005ab0565b5116600052620138966106005160031b01602052604060002054156200aa32575b506200aa2c9062005a5a565b6200a9d2565b819b6200aa5a916200aa496200aa2c948d62005ab0565b511662000b13826103805162005ab0565b9a906200aa20565b5098509695929190939661060051612710811015806101205262005a785760031b620138970154986200aa9a6200811f898c620118f8565b610580526000610540526000610400525b6101205162005a7857610400518a8110156200ab76576200aae26200ab0291600061012052620138976106005160031b0162006ac7565b9054610380516001600160a01b03939260031b9190911c83169062012aba565b156200ab22575b506200ab186104005162005a5a565b610400526200aaab565b6000610120526200ab4261040051620138976106005160031b0162006ac7565b90549060031b1c166200ab5c610540516105805162005ab0565b526200ab6b6105405162005a5a565b61054052386200ab09565b50979294959093985095909560005b8281106200ac23575050506101205162005a785761058051516001600160401b03811162003b9b576200abc481620138976106005160031b0162005b96565b60206105805101620138976106005160031b01600052602060002060005b8381106200ac0557505050506200abf99062005a5a565b9492959091956200a8b9565b82516001600160a01b0316818301556020909201916001016200abe2565b6200ac69906001600160a01b036200ac3c828562005ab0565b51166200ac50610540516105805162005ab0565b526200ac5f6105405162005a5a565b6105405262005a5a565b6200ab85565b5050939092506200ac81915062005a5a565b90916200a68f565b906020829493940151602281101562003d03576002036200af165760408092019081519383850151916200acc66200798460e08098015162005a6a565b5194835187510362007c8957835185510362007c3557835186510362007bde575060005b86518110156200af03576200ad00818862005ab0565b5161271081101562005a785760ff6201389a6200ad249260031b0154161562011e38565b6200ad30818862005ab0565b5161271081101562005a785760031b6201389a01805460ff191660011790556200ad5b818562005ab0565b516200ad68828962005ab0565b519061271082101562005a78578051906001600160401b03821162003b9b576200adaf826200ada0620138988660031b015462004249565b620138988660031b0162006026565b602090601f83116001146200ae8457620138989291600091836200ae78575b50508160011b916000199060031b1c1916179160031b01555b6200adf3818662005ab0565b516200ae00828962005ab0565b5161271081101562005a785760031b6201389401556200ae21818762005ab0565b516200ae2e828962005ab0565b5161271081101562005a785760031b6201389501556200ae4f818862005ab0565b519061271082101562005a78576000620138996200ae729360031b015562005a5a565b6200acea565b0151905038806200adce565b90620138988460031b0160005260206000209160005b601f19851681106200aeea57509183916001936201389895601f198116106200aed0575b505050811b019160031b01556200ade7565b015160001960f88460031b161c191690553880806200aebe565b919260206001819286850151815501940192016200ae9a565b509592509350506200ac81915062005a5a565b9092916020840151602281101562003d03576003036200b5445760408401906200af466101008351015162005a6a565b51906200af5d60e062007755818651015162005a6a565b51936200af7283518551146200046462012e52565b6200af8583518651146200046462012e52565b60005b83518110156200afe4576200af9e818662005ab0565b519061271082101562005a7857620138966200afde9260018060a01b038b511660005260031b016020526200046b60406000205462007da0838a62005ab0565b6200af88565b509095919560005b87518110156200b136576200b002818662005ab0565b5161271081101562005a7857620138969060018060a01b0386511660005260031b016020526200b03d60406000205462007e0d838962005ab0565b906200b04a838862005ab0565b519161271083101562005a7857620138966200b0849360018060a01b0389511660005260031b016020526040600020556200046462012f56565b6200b090818662005ab0565b5161271081101562005a785762013896906001600160a01b036200b0b5848c62005ab0565b511660005260031b016020526200b0d760406000205462006dd4838962005ab0565b91906200b0e5828862005ab0565b519061271082101562005a78576200b13093620138966200046b938d6200b1148760018060a01b039262005ab0565b511660005260031b016020526040600020556200046462012fbb565b6200afec565b50926200b155919294506200b14e9096959662012c2b565b9462012b0f565b92604051906200b1658262003bea565b6001825260203681840137516001600160a01b03166200b1858262005a6a565b526000945b80518610156200ac6f576200b1a0868262005ab0565b516101e0526200b1b1855162006777565b966000946200b1c1845162006777565b6103005260009460005b88518110156200b294578a896200b1fb6001600160a01b036200b1ef858462005ab0565b51166101e05162012a61565b15806200b24b575b6200b21c575b50506200b2169062005a5a565b6200b1cb565b986200b2409162000b1382859c62007fee6200b2169760018060a01b039262005ab0565b9790508a896200b209565b5050506127106101e051101562005a78576001600160a01b036200b270828b62005ab0565b5116600052620138966101e05160031b016020528a8960406000205415156200b203565b50909895979498969291939660005b88518110156200b33a576127106101e051101562005a78576001600160a01b036200b2cf828b62005ab0565b5116600052620138966101e05160031b01602052604060002054156200b301575b6200b2fb9062005a5a565b6200b2a3565b996200b2fb906200b331906001600160a01b036200b3208e8d62005ab0565b511662000b13826103005162005ab0565b9a90506200b2f0565b509850969592919093966101e051612710811015806104405262005a785760031b620138970154986200b3726200811f898c620118f8565b60a05260006101405260006103c0525b6104405162005a78576103c0518a8110156200b44e576200b3b96200b3d691600061044052620138976101e05160031b0162006ac7565b90546103005160039290921b1c6001600160a01b03169062012aba565b156200b3f5575b6200b3eb6103c05162005a5a565b6103c0526200b382565b6000610440526200b4156103c051620138976101e05160031b0162006ac7565b60018060a01b0391549060031b1c166200b4356101405160a05162005ab0565b526200b4446101405162005a5a565b610140526200b3dd565b50979294959093985095909560005b8281106200b4f9575050506104405162005a785760a051516001600160401b03811162003b9b576200b49b81620138976101e05160031b0162005b96565b602060a05101620138976101e05160031b01600052602060002060005b8381106200b4db57505050506200b4cf9062005a5a565b9492959091956200b18a565b82516001600160a01b0316818301556020909201916001016200b4b8565b6200b53e906001600160a01b036200b512828562005ab0565b51166200b5256101405160a05162005ab0565b526200b5346101405162005a5a565b6101405262005a5a565b6200b45d565b90926020810151602281101562003d03576004036200bb9157610100936200b5866200b577866040850151015162005a6a565b51956040840151015162005a8e565b51906200b5ad60e060406200b5a18282880151015162005a6a565b51950151015162005a8e565b51936200b5c287518451146200046462012e52565b6200b5d587518551146200046462012e52565b6200b5e887518651146200046462012e52565b60005b87518110156200b654576200b601818662005ab0565b519061271082101562005a78576200b64e9162013896906001600160a01b036200b62c848d62005ab0565b511660005260031b016020526200046b60406000205462007da0838a62005ab0565b6200b5eb565b509095919593929360005b83518110156200b7bb576200b675818762005ab0565b5161271081101562005a785762013896906001600160a01b036200b69a848862005ab0565b511660005260031b016020526200b6bc60406000205462007e0d838862005ab0565b906200b6c9838962005ab0565b519161271083101562005a78576200b7109262013896906001600160a01b036200b6f4878b62005ab0565b511660005260031b016020526040600020556200046462012f56565b6200b71c818762005ab0565b5161271081101562005a785762013896906001600160a01b036200b741848c62005ab0565b511660005260031b016020526200b76360406000205462006dd4838862005ab0565b9190506200b772818862005ab0565b519161271083101562005a78576200b7b59262013896906001600160a01b036200b79d858e62005ab0565b511660005260031b0160205260406000205562005a5a565b6200b65f565b5091936200b7d791935062007efe6200852c9197969762012c2b565b6000945b80518610156200ac6f576200b7f1868262005ab0565b51610520526200b802855162006777565b966000946200b812845162006777565b6102e05260009460005b88518110156200b8e5578a896200b84c6001600160a01b036200b840858462005ab0565b51166105205162012a61565b15806200b89c575b6200b86d575b50506200b8679062005a5a565b6200b81c565b986200b8919162000b1382859c62007fee6200b8679760018060a01b039262005ab0565b9790508a896200b85a565b50505061271061052051101562005a78576001600160a01b036200b8c1828b62005ab0565b5116600052620138966105205160031b016020528a8960406000205415156200b854565b50909895979498969291939660005b88518110156200b9845761271061052051101562005a78576001600160a01b03806200b921838c62005ab0565b5116600052620138966105205160031b01602052604060002054156200b954575b506200b94e9062005a5a565b6200b8f4565b819b6200b97c916200b96b6200b94e948d62005ab0565b511662000b13826102e05162005ab0565b9a906200b942565b5098509695929190939661052051612710811015806105a05262005a785760031b620138970154986200b9bc6200811f898c620118f8565b6104805260006105605260006102c0525b6105a05162005a78576102c0518a8110156200ba98576200ba046200ba249160006105a052620138976105205160031b0162006ac7565b90546102e0516001600160a01b03939260031b9190911c83169062012aba565b156200ba44575b506200ba3a6102c05162005a5a565b6102c0526200b9cd565b60006105a0526200ba646102c051620138976105205160031b0162006ac7565b90549060031b1c166200ba7e610560516104805162005ab0565b526200ba8d6105605162005a5a565b61056052386200ba2b565b50979294959093985095909560005b8281106200bb45575050506105a05162005a785761048051516001600160401b03811162003b9b576200bae681620138976105205160031b0162005b96565b60206104805101620138976105205160031b01600052602060002060005b8381106200bb2757505050506200bb1b9062005a5a565b9492959091956200b7db565b82516001600160a01b0316818301556020909201916001016200bb04565b6200bb8b906001600160a01b036200bb5e828562005ab0565b51166200bb72610560516104805162005ab0565b526200bb816105605162005a5a565b6105605262005a5a565b6200baa7565b92906020840151602281101562003d03576005036200c1475760408401906200bbc460e062008595818551015162005a6a565b519282518451036200c0f55760005b83518110156200bc2f576200bbe9818562005ab0565b519061271082101562005a7857620138966200bc299260018060a01b038a511660005260031b016020526200046b60406000205462007da0838962005ab0565b6200bbd3565b509060005b83518110156200bcd8576200bc4a818562005ab0565b5161271081101562005a7857620138969060018060a01b0389511660005260031b016020526200bc8560406000205462007e0d838862005ab0565b91906200bc93828762005ab0565b519061271082101562005a78576200bcd293620138966200046b9360018060a01b038d511660005260031b016020526040600020556200046462012f56565b6200bc34565b50916200bce9919495935062012c2b565b92604051926200bcf98462003bea565b6001845260203681860137516001600160a01b03166200bd198462005a6a565b52604051926200bd298462003c06565b6000845260003681376000945b80518610156200ac6f576200bd4c868262005ab0565b51610180526200bd5d855162006777565b966000946200bd6d845162006777565b6105e05260009460005b88518110156200be40578a896200bda76001600160a01b036200bd9b858462005ab0565b51166101805162012a61565b15806200bdf7575b6200bdc8575b50506200bdc29062005a5a565b6200bd77565b986200bdec9162000b1382859c62007fee6200bdc29760018060a01b039262005ab0565b9790508a896200bdb5565b50505061271061018051101562005a78576001600160a01b036200be1c828b62005ab0565b5116600052620138966101805160031b016020528a8960406000205415156200bdaf565b50909895979498969291939660005b88518110156200bee65761271061018051101562005a78576001600160a01b036200be7b828b62005ab0565b5116600052620138966101805160031b01602052604060002054156200bead575b6200bea79062005a5a565b6200be4f565b996200bea7906200bedd906001600160a01b036200becc8e8d62005ab0565b511662000b13826105e05162005ab0565b9a90506200be9c565b5098509695929190939661018051612710811015806104205262005a785760031b620138970154986200bf1e6200811f898c620118f8565b6102405260006104a05260006101a0525b6104205162005a78576101a0518a8110156200bffc576200bf666200bf8391600061042052620138976101805160031b0162006ac7565b90546105e05160039290921b1c6001600160a01b03169062012aba565b156200bfa2575b6200bf986101a05162005a5a565b6101a0526200bf2f565b6000610420526200bfc26101a051620138976101805160031b0162006ac7565b60018060a01b0391549060031b1c166200bfe36104a0516102405162005ab0565b526200bff26104a05162005a5a565b6104a0526200bf8a565b50979294959093985095909560005b8281106200c0a9575050506104205162005a785761024051516001600160401b03811162003b9b576200c04a81620138976101805160031b0162005b96565b60206102405101620138976101805160031b01600052602060002060005b8381106200c08b57505050506200c07f9062005a5a565b9492959091956200bd36565b82516001600160a01b0316818301556020909201916001016200c068565b6200c0ef906001600160a01b036200c0c2828562005ab0565b51166200c0d66104a0516102405162005ab0565b526200c0e56104a05162005a5a565b6104a05262005a5a565b6200c00b565b60405162461bcd60e51b815260206004820152603560248201526000805160206201339c833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b926020810151602281101562003d03576006036200c730576040016200c1736101008251015162005a6a565b51936200c18a60e062008595818551015162005a6a565b519285518351036200c6de5785518451036200c6915760005b86518110156200c20c576200c1b9818562005ab0565b519061271082101562005a78576200c2069162013896906001600160a01b036200c1e4848c62005ab0565b511660005260031b016020526200046b60406000205462007da0838962005ab0565b6200c1a3565b509060005b86518110156200c2b2576200c227818562005ab0565b5161271081101562005a785762013896906001600160a01b036200c24c848b62005ab0565b511660005260031b016020526200c26e60406000205462007e0d838862005ab0565b91906200c27c828762005ab0565b519061271082101562005a78576200c2ac936200046b9262013896906001600160a01b036200b6f4878f62005ab0565b6200c211565b50916200c2c99193506200852c9095949562012c2b565b91604051926200c2d98462003c06565b6000845260003681376000945b80518610156200ac6f576200c2fc868262005ab0565b5160e0526200c30c855162006777565b966000946200c31c845162006777565b6103a05260009460005b88518110156200c3ec578a896200c3556001600160a01b036200c34a858462005ab0565b511660e05162012a61565b15806200c3a5575b6200c376575b50506200c3709062005a5a565b6200c326565b986200c39a9162000b1382859c62007fee6200c3709760018060a01b039262005ab0565b9790508a896200c363565b50505061271060e051101562005a78576001600160a01b036200c3c9828b62005ab0565b51166000526201389660e05160031b016020528a8960406000205415156200c35d565b50909895979498969291939660005b88518110156200c4895761271060e051101562005a78576001600160a01b03806200c427838c62005ab0565b51166000526201389660e05160031b01602052604060002054156200c459575b506200c4539062005a5a565b6200c3fb565b819b6200c481916200c4706200c453948d62005ab0565b511662000b13826103a05162005ab0565b9a906200c447565b5098509695929190939660e051612710811015806102805262005a785760031b620138970154986200c4c06200811f898c620118f8565b6105c0526000610460526000610320525b6102805162005a7857610320518a8110156200c59a576200c5076200c527916000610280526201389760e05160031b0162006ac7565b90546103a0516001600160a01b03939260031b9190911c83169062012aba565b156200c547575b506200c53d6103205162005a5a565b610320526200c4d1565b6000610280526200c566610320516201389760e05160031b0162006ac7565b90549060031b1c166200c580610460516105c05162005ab0565b526200c58f6104605162005a5a565b61046052386200c52e565b50979294959093985095909560005b8281106200c645575050506102805162005a78576105c051516001600160401b03811162003b9b576200c5e7816201389760e05160031b0162005b96565b60206105c051016201389760e05160031b01600052602060002060005b8381106200c62757505050506200c61b9062005a5a565b9492959091956200c2e6565b82516001600160a01b0316818301556020909201916001016200c604565b6200c68b906001600160a01b036200c65e828562005ab0565b51166200c672610460516105c05162005ab0565b526200c6816104605162005a5a565b6104605262005a5a565b6200c5a9565b60405162461bcd60e51b815260206004820152603060248201526000805160206201343c83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b815260206004820152603560248201526000805160206201333c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b6020819493940151602281101562003d03576007036200c9d857604001906200c75f6101008351015162005a6a565b519260406200c77360e08551015162005a6a565b5193510151916200c78c85518551146200046462012e52565b60005b85518110156200c9c6576001600160a01b036200c7ad828862005ab0565b511660005262027113806020526200c7d260ff60406000205416156200046462012f23565b6200c7de828662005ab0565b51906200c7ec838862005ab0565b5191604051916200c7fd8362003b7f565b600183526000602084019081526040840192835260608401949094526001600160a01b036200c82d868c62005ab0565b51166000526020526200c8586040600020936200c84e845115158662006070565b5115158462006081565b518051906001600160401b03821162003b9b576200c889826200c87f600187015462004249565b6001870162006026565b602090601f83116001146200c94c579180600294926060946000926200c940575b50508160011b916000199060031b1c19161760018501555b01519101556001600160a01b036200c8db828862005ab0565b516202711454929116600160401b83101562003b9b576001830180620271145583101562005a785762027114600052600080516020620133dc83398151915290920180546001600160a01b0319169092179091556200c93a9062005a5a565b6200c78f565b0151905038806200c8aa565b906001850160005260206000209160005b601f19851681106200c9ad5750926002949260019260609583601f198116106200c993575b505050811b0160018501556200c8c2565b015160001960f88460031b161c191690553880806200c982565b919260206001819286850151815501940192016200c95d565b5094915092506200ac81915062005a5a565b6020819392930151602281101562003d03576008036200cacb5761010060406200ca06920151015162005a6a565b519160005b83518110156200cabc576200cab6906001600160a01b03806200ca2f838862005ab0565b51166000526202711390816020526200ca59600160ff604060002054161515146200046462012e82565b806200ca66848962005ab0565b5116600052816020526200ca8a60ff60406000205460081c16156200046462012eea565b6200ca96838862005ab0565b5116600052602052604060002061010061ff001982541617905562005a5a565b6200ca0b565b50926200ac8191925062005a5a565b6020810151602281101562003d03576009036200cbac5761010060406200caf6920151015162005a6a565b519160005b83518110156200cabc576200cba6906001600160a01b03806200cb1f838862005ab0565b51166000526202711390816020526200cb49600160ff604060002054161515146200046462012e82565b806200cb56848962005ab0565b5116600052816020526200cb7e600160ff60406000205460081c161515146200046462012eb5565b6200cb8a838862005ab0565b5116600052602052604060002061ff0019815416905562005a5a565b6200cafb565b906020820151602281101562003d0357600f036200ccf75760a0604083015101519260005b84518110156200cce65760e06200cbf18260a06040880151015162005ab0565b510151156200cc73576200cc196200cc128260a06040880151015162005ab0565b51620068c8565b6202711554600019919082810190811162003229576200cc3b60059162006812565b500161010061ff00198254161790556202711554918281810111620032295762008ed46005916200cc6d940162006812565b6200cbd1565b6200cc926200cc8b8260a06040880151015162005ab0565b51620068a4565b6202711654600019919082810190811162003229576200ccb4600591620067d0565b500161010061ff00198254161790556202711654918281810111620032295762008ed46005916200cc6d9401620067d0565b50939092506200ac81915062005a5a565b6020820151602281101562003d0357600c036200ce225760a0604083015101519260005b84518110156200cce65760e06200cd3b8260a06040880151015162005ab0565b510151156200cdb6576200cd5c6200cc128260a06040880151015162005ab0565b6202711554600019919082810190811162003229576200cd7e60059162006812565b500161010061ff001982541617905562027115549182818101116200322957620090026005916200cdb0940162006812565b6200cd1b565b6200cdce6200cc8b8260a06040880151015162005ab0565b6202711654600019919082810190811162003229576200cdf0600591620067d0565b500161010061ff001982541617905562027116549182818101116200322957620090026005916200cdb09401620067d0565b9291906020810151602281101562003d0357600d036200cf7b576040019260606200ce5260e08651015162005a6a565b5194510151916200ce6785518451146201199f565b60005b85518110156200cf6b57806200ce856200ceff928662005ab0565b51156200cf05576200cea96200ce9c828962005ab0565b5162027115541162011a28565b6200ced560ff60056200cec86200cec1858c62005ab0565b5162006812565b50015460081c1662011a80565b6200ceed60ff6005620091436200cec1858c62005ab0565b600562008ed46200cec1838a62005ab0565b6200ce6a565b6200cf226200cf15828962005ab0565b5162027116541162011a28565b6200cf4160ff60056200cec86200cf3a858c62005ab0565b51620067d0565b6200cf5960ff6005620091436200cf3a858c62005ab0565b600562008ed46200cf3a838a62005ab0565b509350916200ac81915062005a5a565b6020810151602281101562003d0357600e036200d0b3576040019260606200cfa860e08651015162005a6a565b5194510151916200cfbd85518451146201199f565b60005b85518110156200cf6b57806200cfdb6200d04e928662005ab0565b51156200d054576200cfff6200cff2828962005ab0565b5162027115541162011b42565b6200d02460ff60056200d0176200cec1858c62005ab0565b50015460081c1662011b9b565b6200d03c60ff6005620092a06200cec1858c62005ab0565b6005620090026200cec1838a62005ab0565b6200cfc0565b6200d0716200d064828962005ab0565b5162027116541162011b42565b6200d08960ff60056200d0176200cf3a858c62005ab0565b6200d0a160ff6005620092a06200cf3a858c62005ab0565b6005620090026200cf3a838a62005ab0565b6020810151602281101562003d03576010036200d1f95760400151926200d0e360e060c086015195015162005a6a565b51916200d0f885518451146200046462012e52565b60005b85518110156200cf6b57806200d1166200d18c928862005ab0565b516200d1228162003db9565b6200d12e828762005ab0565b51906200d13b8162003db9565b6200d1526200d14962012f85565b82151562005a27565b6200d15d8162003db9565b600181036200d19257506200d1816200d17562012f85565b61271083111562005a27565b6202711e5562005a5a565b6200d0fb565b6200d19d8162003db9565b600281036200d1b257506202711f5562005a5a565b6200d1bd8162003db9565b600381036200d1d25750620271205562005a5a565b806200d1e060049262003db9565b146200d1ed575062005a5a565b6202712155386200941a565b602081949392940151602281101562003d0357601a036200d3b15760e060406200d227920151015162005a6a565b519060038251036200d36d576200d23e8262005a6a565b516200d2566200d24e8462005a8e565b519362005a9f565b51926200d331576200ac81926001036200941a576200d27e6200d2dd91620271205462006c06565b6202712055604051906200d2928262003c22565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262005a27565b6200046b6200d2f0620271215462006bf3565b6202712155604051906200d3048262003bea565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262005a27565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6020819392930151602281101562003d0357601b036200d9d657506202711e929192546200d3e2620094ce62012d29565b62027121546202711f5411156200d4036200d3fc62012d97565b8262005a27565b6202712054906200d4158383620069da565b50506200d42162012ded565b506000805b61271082106200d92a575b5050906200d4616200d46793926200d4576200d44c62012d29565b612710861062005a27565b6200046462012d97565b620069da565b90506200d47362012ded565b5060009060005b61271081106200d852575b50906127106200d496920462006c94565b90506200d4a76202712a5462006777565b906000946000905b6127108210156200d845578160031b9460ff6201389a87015416156200d60d5760009662013895870154156200d5fc57600098975b62005a7857620138978701548910156200d5e2576200d5098962013897890162006ac7565b600160a01b6001900391549060031b1c169788600052620138968801602052604098868a60002054906200d53d91620069da565b9a906200d54962012ded565b6200d5549162005a27565b60009a620138958b01546200d56991620069da565b906200d57462012ded565b6200d57f9162005a27565b826000526202711a6020528160002054906200d59b9162006c06565b9091600020556200d5ab62012ded565b6200d5b69162005a27565b6200d5c2828962005ab0565b526200d5ce9062005a5a565b986200d5da9062005a5a565b98976200d4e4565b929095506200d5f49196975062005a5a565b90946200d4af565b929095506200d5f491965062005a5a565b95969392509350505b6200d6218262006777565b9160009160005b8281106200d7af575050506202711b54916200d6496200811f8484620118f8565b926000906000905b8082106200d77457505060005b8381106200d6de5750508251929150506001600160401b03821162003b9b576020906200d68b8362005bce565b016202711b600052602060002060005b8381106200d6c057505050506200ac8190600062027120556000620271215562005a5a565b82516001600160a01b0316818301556020909201916001016200d69b565b6000805b8381106200d72c575b50156200d704575b6200d6fe9062005a5a565b6200d65e565b906200d6fe906200d723906001600160a01b03620082a2858762005ab0565b9190506200d6f3565b6001600160a01b03806200d741858862005ab0565b5116906200d750838a62005ab0565b5116146200d769576200d7639062005a5a565b6200d6e2565b50506001386200d6eb565b9091620082b06200d7a8916200d78a8562006a8d565b905460039190911b1c6001600160a01b031662000b13828a62005ab0565b906200d651565b6000805b8581106200d7fd575b50156200d7d5575b6200d7cf9062005a5a565b6200d628565b926200d7cf906200d7f4906001600160a01b03620082a2878662005ab0565b9390506200d7c4565b6001600160a01b03806200d812858762005ab0565b5116906200d821838a62005ab0565b5116146200d83a576200d8349062005a5a565b6200d7b3565b50506001386200d7bc565b939495929150506200d616565b90918160039695961b60ff6201389a82015416156200d91e5762013895810154620138978201546000928391825b8184106200d8bc5750505050620075a96200d8b3936200d8ab6200046b979694620035d894620069da565b9290620068ec565b9493946200d47a565b94929462005a78576200d917856200d90f6200d8e26200046b9862013897870162006ac7565b905460039190911b1c6001600160a01b031660009081526201389686016020526040812054909662006c06565b979062006ae0565b926200d880565b5091909493946200d485565b8160039897981b60ff6201389a82015416156200d9cc576201389581015490600062013897820154916000926000925b8184106200d9975750505050620075a96200d98d93620098f8846200d4616200350562009904966200046b9a98620069da565b909695966200d426565b93929362005a78576200d9c5846200d9bd6200d8e26200046b9762013897870162006ac7565b969062006ae0565b926200d95a565b509695966200d431565b6020819492940151602281101562003d03576014036200df2357604001906200da056101008351015162005a6a565b51936200da1c60e062007755818651015162005a6a565b51916200da2d865185511462011c60565b6200da3c865184511462011cc6565b60005b86518110156200db3a576200da55818562005ab0565b516200da62828762005ab0565b519061271082101562005a7857620138996200da849260031b01549062006c06565b906200da91838862005ab0565b519161271083101562005a7857620138996200dab29360031b015562011d80565b6200dabe818562005ab0565b516200dacb828762005ab0565b519061271082101562005a78576200daf69162013896906001600160a01b036200a811868d62005ab0565b91906200db04828862005ab0565b519061271082101562005a78576200db34936200046b9262013896906001600160a01b036200a868878f62005ab0565b6200da3f565b50926200db519192506200852c9095949562012c2b565b916040516200db608162003c06565b6000815260003681376000945b80518610156200ac6f576200db83868262005ab0565b51610220526200db94855162006777565b966000946200dba4845162006777565b6103605260009460005b88518110156200dc77578a896200dbde6001600160a01b036200dbd2858462005ab0565b51166102205162012a61565b15806200dc2e575b6200dbff575b50506200dbf99062005a5a565b6200dbae565b986200dc239162000b1382859c62007fee6200dbf99760018060a01b039262005ab0565b9790508a896200dbec565b50505061271061022051101562005a78576001600160a01b036200dc53828b62005ab0565b5116600052620138966102205160031b016020528a8960406000205415156200dbe6565b50909895979498969291939660005b88518110156200dd165761271061022051101562005a78576001600160a01b03806200dcb3838c62005ab0565b5116600052620138966102205160031b01602052604060002054156200dce6575b506200dce09062005a5a565b6200dc86565b819b6200dd0e916200dcfd6200dce0948d62005ab0565b511662000b13826103605162005ab0565b9a906200dcd4565b5098509695929190939661022051612710811015806103405262005a785760031b620138970154986200dd4e6200811f898c620118f8565b6104e0526000610500526000610160525b6103405162005a7857610160518a8110156200de2a576200dd966200ddb691600061034052620138976102205160031b0162006ac7565b9054610360516001600160a01b03939260031b9190911c83169062012aba565b156200ddd6575b506200ddcc6101605162005a5a565b610160526200dd5f565b6000610340526200ddf661016051620138976102205160031b0162006ac7565b90549060031b1c166200de10610500516104e05162005ab0565b526200de1f6105005162005a5a565b61050052386200ddbd565b50979294959093985095909560005b8281106200ded7575050506103405162005a78576104e051516001600160401b03811162003b9b576200de7881620138976102205160031b0162005b96565b60206104e05101620138976102205160031b01600052602060002060005b8381106200deb957505050506200dead9062005a5a565b9492959091956200db6d565b82516001600160a01b0316818301556020909201916001016200de96565b6200df1d906001600160a01b036200def0828562005ab0565b51166200df04610500516104e05162005ab0565b526200df136105005162005a5a565b6105005262005a5a565b6200de39565b926020840151602281101562003d035760150362009ae45760408401906200df516101008351015162005a6a565b51906200df6860e062007755818651015162005a6a565b51936200df7d83518551146200046462012e52565b6200df9083518651146200046462012e52565b60005b83518110156200dfef576200dfa9818662005ab0565b519061271082101562005a7857620138966200dfe99260018060a01b038b511660005260031b016020526200046b60406000205462007da0838a62005ab0565b6200df93565b509095919560005b87518110156200e125576200e00d818662005ab0565b5161271081101562005a7857620138969060018060a01b0386511660005260031b016020526200e04860406000205462007e0d838962005ab0565b906200e055838862005ab0565b519161271083101562005a7857620138966200e08f9360018060a01b0389511660005260031b016020526040600020556200046462012f56565b6200e09b818662005ab0565b5161271081101562005a785762013896906001600160a01b036200e0c0848c62005ab0565b511660005260031b016020526200e0e260406000205462006dd4838962005ab0565b91906200e0f0828862005ab0565b519061271082101562005a78576200e11f93620138966200046b938d6200b1148760018060a01b039262005ab0565b6200dff7565b50926200e13d919294506200b14e9096959662012c2b565b92604051906200e14d8262003bea565b6001825260203681840137516001600160a01b03166200e16d8262005a6a565b526000945b80518610156200ac6f576200e188868262005ab0565b516102a0526200e199855162006777565b966000946200e1a9845162006777565b60805260009460005b88518110156200e27b578a896200e1e26001600160a01b036200e1d6858462005ab0565b51166102a05162012a61565b15806200e232575b6200e203575b50506200e1fd9062005a5a565b6200e1b2565b986200e2279162000b1382859c62007fee6200e1fd9760018060a01b039262005ab0565b9790508a896200e1f0565b5050506127106102a051101562005a78576001600160a01b036200e257828b62005ab0565b5116600052620138966102a05160031b016020528a8960406000205415156200e1ea565b50909895979498969291939660005b88518110156200e320576127106102a051101562005a78576001600160a01b036200e2b6828b62005ab0565b5116600052620138966102a05160031b01602052604060002054156200e2e8575b6200e2e29062005a5a565b6200e28a565b996200e2e2906200e317906001600160a01b036200e3078e8d62005ab0565b511662000b138260805162005ab0565b9a90506200e2d7565b509850969592919093966102a051612710811015806106205262005a785760031b620138970154986200e3586200811f898c620118f8565b6101c05260006104c05260006103e0525b6106205162005a78576103e0518a8110156200e435576200e3a06200e3bc91600061062052620138976102a05160031b0162006ac7565b905460805160039290921b1c6001600160a01b03169062012aba565b156200e3db575b6200e3d16103e05162005a5a565b6103e0526200e369565b6000610620526200e3fb6103e051620138976102a05160031b0162006ac7565b60018060a01b0391549060031b1c166200e41c6104c0516101c05162005ab0565b526200e42b6104c05162005a5a565b6104c0526200e3c3565b50979294959093985095909560005b8281106200e4e2575050506106205162005a78576101c051516001600160401b03811162003b9b576200e48381620138976102a05160031b0162005b96565b60206101c05101620138976102a05160031b01600052602060002060005b8381106200e4c457505050506200e4b89062005a5a565b9492959091956200e172565b82516001600160a01b0316818301556020909201916001016200e4a1565b6200e528906001600160a01b036200e4fb828562005ab0565b51166200e50f6104c0516101c05162005ab0565b526200e51e6104c05162005a5a565b6104c05262005a5a565b6200e444565b509190506200e53d8162010df2565b90600681101562003d0357600281036200e56c5760405162461bcd60e51b81528062005a56600482016200761c565b600381036200e61f5750303b1562003b655790604051809263a2f7d10160e01b82526044820160406004840152815180915260206064840192019060005b8181106200e605575050506200e5d08291600094600319848303016024850152620045b5565b038183305af180156200e5f9576200e5e55750565b6001600160401b03811162003b9b57604052565b6040513d6000823e3d90fd5b82518452869450602093840193909201916001016200e5aa565b60059150146200e62c5750565b906000905b6020830151805183101562009b6557826200e64c9162005ab0565b516020810151602281101562003d03571562009b22576020810151602281101562003d03576001036200e89557604001906200e68e6101008351015162005a6a565b51936200e6a560e062007755818651015162005a6a565b51916200e6b6865185511462011c60565b6200e6c5865184511462011cc6565b60005b86518110156200e81c576200e6de818662005ab0565b5161271081101562005a7857600160ff60076200e7049360031b01541615151462011d28565b6200e710818562005ab0565b516200e71d828762005ab0565b519061271082101562005a785760066200e73d9260031b01549062006c06565b906200e74a838862005ab0565b519161271083101562005a785760066200e7699360031b015562011d80565b6200e775818562005ab0565b516200e782828762005ab0565b519061271082101562005a78576200e7c3916003906001600160a01b036200e7ab868d62005ab0565b5116600052811b016020526040600020549062006c06565b91906200e7d1828862005ab0565b519061271082101562005a78576200e816936200046b926003906001600160a01b036200e7ff878f62005ab0565b5116600052811b0160205260406000205562011ddf565b6200e6c8565b50949150916200e8306200e8379162012c2b565b9162012b0f565b93604051926200e8478462003c06565b60008452600036813760005b83518110156200e87857806200046b6200791c6200e872938762005ab0565b6200e853565b50945092602092506200e88c915062005a5a565b9190506200e631565b9091926020820151602281101562003d03576002036200eb035760408092019081519383850151916200e8d16200798460e08098015162005a6a565b5194835187510362007c8957835185510362007c3557835186510362007bde575060005b86518110156200eaed576200e90b818862005ab0565b5161271081101562005a785760ff60076200e92d9260031b0154161562011e38565b6200e939818862005ab0565b5161271081101562005a785760031b600701805460ff191660011790556200e962818562005ab0565b516200e96f828962005ab0565b519061271082101562005a78578051906001600160401b03821162003b9b576200e9a58262007a7360058660031b015462004249565b602090601f83116001146200ea725760059291600091836200ea66575b50508160011b916000199060031b1c1916179160031b01555b6200e9e7818662005ab0565b516200e9f4828962005ab0565b5161271081101562005a785760031b600101556200ea13818762005ab0565b516200ea20828962005ab0565b5161271081101562005a785760031b600201556200ea3f818862005ab0565b519061271082101562005a7857600060066200ea609360031b015562005a5a565b6200e8f5565b0151905038806200e9c2565b9060058460031b0160005260206000209160005b601f19851681106200ead45750918391600193600595601f198116106200eaba575b505050811b019160031b01556200e9db565b015160001960f88460031b161c191690553880806200eaa8565b919260206001819286850151815501940192016200ea86565b509591509350602092506200e88c915062005a5a565b9291906020810151602281101562003d03576003036200eb3057602091926200046b6200e88c9262011e84565b6020810151602281101562003d03576004036200edce576200eb5b6101006040830151015162005a6a565b51936200eb716101006040840151015162005a8e565b51906200eb8c60e060406200b5a18282880151015162005a6a565b51936200eba187518451146200046462012e52565b6200ebb487518551146200046462012e52565b6200ebc787518651146200046462012e52565b60005b87518110156200ec30576200ebe0818662005ab0565b519061271082101562005a78576200ec2a916003906001600160a01b036200ec09848d62005ab0565b5116600052811b016020526200046b60406000205462007da0838a62005ab0565b6200ebca565b509095919593929360005b83518110156200ed8b576200ec51818762005ab0565b5161271081101562005a78576003906001600160a01b036200ec74848862005ab0565b5116600052811b016020526200ec9560406000205462007e0d838862005ab0565b906200eca2838962005ab0565b519161271083101562005a78576200ece6926003906001600160a01b036200eccb878b62005ab0565b5116600052811b016020526040600020556200046462012f56565b6200ecf2818762005ab0565b5161271081101562005a78576003906001600160a01b036200ed15848c62005ab0565b5116600052811b016020526200ed3660406000205462006dd4838862005ab0565b9190506200ed45818862005ab0565b519161271083101562005a78576200ed85926003906001600160a01b036200ed6e858e62005ab0565b5116600052811b0160205260406000205562005a5a565b6200ec3b565b50936200eda591929693506200852c62007efe9162012c2b565b9260005b83518110156200e87857806200046b6200791c6200edc8938762005ab0565b6200eda9565b926020840151602281101562003d03576005036200ef8c5760408401906200ee0060e062008595818551015162005a6a565b519282518451036200c0f55760005b83518110156200ee68576200ee25818562005ab0565b519061271082101562005a785760036200ee629260018060a01b038a5116600052811b016020526200046b60406000205462007da0838962005ab0565b6200ee0f565b509060005b83518110156200ef0b576200ee83818562005ab0565b5161271081101562005a785760039060018060a01b03895116600052811b016020526200eebb60406000205462007e0d838862005ab0565b91906200eec9828762005ab0565b519061271082101562005a78576200ef059360036200046b9360018060a01b038d5116600052811b016020526040600020556200046462012f56565b6200ee6d565b50949250906200ef1b9062012c2b565b90604051926200ef2b8462003bea565b6001845260203681860137516001600160a01b03166200ef4b8462005a6a565b52604051946200ef5b8662003c06565b60008652600036813760005b83518110156200e87857806200046b6200791c6200ef86938762005ab0565b6200ef67565b926020810151602281101562003d03576006036200f145576040016200efb86101008251015162005a6a565b51936200efcf60e062008595818551015162005a6a565b519285518351036200c6de5785518451036200c6915760005b86518110156200f04e576200effe818562005ab0565b519061271082101562005a78576200f048916003906001600160a01b036200f027848c62005ab0565b5116600052811b016020526200046b60406000205462007da0838962005ab0565b6200efe8565b509060005b86518110156200f0ef576200f069818562005ab0565b5161271081101562005a78576003906001600160a01b036200f08c848b62005ab0565b5116600052811b016020526200f0ad60406000205462007e0d838862005ab0565b91906200f0bb828762005ab0565b519061271082101562005a78576200f0e9936200046b926003906001600160a01b036200eccb878f62005ab0565b6200f053565b5094916200f1049193506200e8309062012c2b565b91604051946200f1148662003c06565b60008652600036813760005b83518110156200e87857806200046b6200791c6200f13f938762005ab0565b6200f120565b90926020820151602281101562003d03576007036200f36c57926200f1736101006040840151015162005a6a565b51936040806200f18a60e082870151015162005a6a565b519401510151916200f1a486518551146200046462012e52565b6000915b86518310156200f357576001600160a01b036200f1c6848962005ab0565b51166000526201388092836020526200f1ec60ff60406000205416156200046462012f23565b6200f1f8818662005ab0565b516200f205828862005ab0565b5190604051956200f2168762003b7f565b600187526000602088019081526040880192835260608801939093526001600160a01b036200f246858d62005ab0565b51166000526020526200f26760406000209262008afe885115158562006070565b5180519095906001600160401b03811162003b9b576200f2908162008b31600186015462004249565b602096601f82116001146200f2f25791816060926200f2ea97989960029560009262008ba75750508160011b916000199060031b1c191617600185015501519101556200046b6001600160a01b0362008b97838b62005ab0565b91906200f1a8565b966001840160005260206000209760005b601f19841681106200f33e5750826200f2ea97989960029593600193606096601f1981161062008c0057505050811b01600185015562008b7a565b818301518a55600190990198602092830192016200f303565b9550939050602092506200e88c915062005a5a565b9192906020810151602281101562003d03576008036200f4055761010060406200f39a920151015162005a6a565b519160005b83518110156200f3f3576200f3ed906001600160a01b03806200f3c3838862005ab0565b51166000526201388090816020526200ca59600160ff604060002054161515146200046462012e82565b6200f39f565b509260209192506200e88c9062005a5a565b6020810151602281101562003d03576009036200f4895761010060406200f430920151015162005a6a565b519160005b83518110156200f3f3576200f483906001600160a01b03806200f459838862005ab0565b51166000526201388090816020526200cb49600160ff604060002054161515146200046462012e82565b6200f435565b906020820151602281101562003d0357600f036200f5d05760a0604083015101519260005b84518110156200f5bd5760e06200f4ce8260a06040880151015162005ab0565b510151156200f54d576200f4ef62008e7f8260a06040880151015162005ab0565b62013882548060001981011162003229576200f51160059160001901620067f1565b5001805461ff001916610100179055620138825490600019820182106200322957600562008ed46200f5479360001901620067f1565b6200f4ae565b6200f56562008f018260a06040880151015162005ab0565b62013882548060001981011162003229576200f58760059160001901620067af565b5001805461ff001916610100179055620138825490600019820182106200322957600562008ed46200f5479360001901620067af565b50936200e88c9193506020925062005a5a565b6020820151602281101562003d0357600c036200f7035760a0604083015101519260005b84518110156200f5bd5760e06200f6148260a06040880151015162005ab0565b510151156200f693576200f63562008e7f8260a06040880151015162005ab0565b62013882548060001981011162003229576200f65760059160001901620067f1565b5001805461ff0019166101001790556201388254906000198201821062003229576005620090026200f68d9360001901620067f1565b6200f5f4565b6200f6ab62008f018260a06040880151015162005ab0565b62013882548060001981011162003229576200f6cd60059160001901620067af565b5001805461ff0019166101001790556201388254906000198201821062003229576005620090026200f68d9360001901620067af565b9291906020810151602281101562003d0357600d036200f82a576040019260606200f73360e08651015162005a6a565b5194510151916200f74885518451146201199f565b60005b85518110156200f81757806200f7666200f7bf928662005ab0565b51156200f7c5576200f77d62009108828962005ab0565b6200f79560ff60056200cec86200912a858c62005ab0565b6200f7ad60ff6005620091436200912a858c62005ab0565b600562008ed46200912a838a62005ab0565b6200f74b565b6200f7d562009184828962005ab0565b6200f7ed60ff60056200cec8620091a6858c62005ab0565b6200f80560ff600562009143620091a6858c62005ab0565b600562008ed4620091a6838a62005ab0565b50935091602091506200e88c9062005a5a565b6020819492940151602281101562003d0357600e036200f8f1576040019060606200f85a60e08451015162005a6a565b5192510151936200f86f83518651146201199f565b60005b83518110156200f81757806200f88d6200f899928862005ab0565b516200f89f5762005a5a565b6200f872565b6200f8af62009258828762005ab0565b6200f8c760ff60056200d0176200912a858a62005ab0565b6200f8df60ff6005620092a06200912a858a62005ab0565b6005620090026200912a838862005ab0565b6020810151602281101562003d03576010036200f95e5760400151906200f92160e060c084015193015162005a6a565b51936200f93683518651146200046462012e52565b60005b83518110156200f81757806200046b620093266200f958938762005ab0565b6200f939565b6020819392930151602281101562003d0357601a036200fa0e5760e060406200f98b920151015162005a6a565b5160038151036200d36d576200f9a18162005a6a565b51916200f9b2620093b28362005a8e565b51916200d331576020926200e88c926001036200941a576200f9dd6200f9ec916201388d5462006c06565b6201388d556200046462012ded565b6200046b6200f9ff6201388e5462006bf3565b6201388e556200046462012e27565b6020819392930151602281101562003d0357601b036200fe4a57506200fa436201388b939293546200354d620094ce62012d29565b50506200fa4f62012ded565b506000805b61271081106200fdfe575b50506200fa6b62006c18565b6200fa7a6202712a5462006777565b906000946000905b6127108210156200fdf1578160031b9460ff600787015416156200fbd5576000966002870154156200fbc457600098975b62005a785760048701548910156200fbaa576200fad4896004890162006ac7565b9054600391821b1c6001600160a01b03166000818152918901602052604091829020549199916200fb07908890620069da565b9a906200fb1362012ded565b6200fb1e9162005a27565b60009a60028b01546200fb3191620069da565b906200fb3c62012ded565b6200fb479162005a27565b82600052620138876020528160002054906200fb639162006c06565b9091600020556200fb7362012ded565b6200fb7e9162005a27565b6200fb8a828962005ab0565b526200fb969062005a5a565b986200fba29062005a5a565b98976200fab3565b929095506200fbbc9196975062005a5a565b90946200fa82565b929095506200fbbc91965062005a5a565b95969392509350505b6200fbe98262006777565b9160009160005b8281106200fd5b575050506201388854916200fc116200811f8484620118f8565b926000906000905b8082106200fd3e57505060005b8381106200fca85750508251929150506001600160401b03821162003b9b576020906200fc538362005bf2565b0162013888600052602060002060005b8381106200fc8a57505050506200e88c60209160006201388d5560006201388e5562005a5a565b82516001600160a01b0316818301556020909201916001016200fc63565b6000805b8381106200fcf6575b50156200fcce575b6200fcc89062005a5a565b6200fc26565b906200fcc8906200fced906001600160a01b03620082a2858762005ab0565b9190506200fcbd565b6001600160a01b03806200fd0b858862005ab0565b5116906200fd1a838a62005ab0565b5116146200fd33576200fd2d9062005a5a565b6200fcac565b50506001386200fcb5565b9091620082b06200fd54916200d78a8562006aaa565b906200fc19565b6000805b8581106200fda9575b50156200fd81575b6200fd7b9062005a5a565b6200fbf0565b926200fd7b906200fda0906001600160a01b03620082a2878662005ab0565b9390506200fd70565b6001600160a01b03806200fdbe858762005ab0565b5116906200fdcd838a62005ab0565b5116146200fde6576200fde09062005a5a565b6200fd5f565b50506001386200fd68565b939495929150506200fbde565b8060039594951b9060ff600783015416156200fe405762009904620075a96200046b94620098f86200fe37956002620098ee8762006959565b9392936200fa54565b509392936200fa5f565b6020810151602281101562003d03576014036200fff857604001906200fe766101008351015162005a6a565b51936200fe8d60e062007755818651015162005a6a565b51916200fe9e865185511462011c60565b6200fead865184511462011cc6565b60005b86518110156200ffa3576200fec6818562005ab0565b516200fed3828762005ab0565b519061271082101562005a785760066200fef39260031b01549062006c06565b906200ff00838862005ab0565b519161271083101562005a785760066200ff1f9360031b015562011d80565b6200ff2b818562005ab0565b516200ff38828762005ab0565b519061271082101562005a78576200ff61916003906001600160a01b036200e7ab868d62005ab0565b91906200ff6f828862005ab0565b519061271082101562005a78576200ff9d936200046b926003906001600160a01b036200e7ff878f62005ab0565b6200feb0565b50949150916200e8306200ffb79162012c2b565b93604051926200ffc78462003c06565b60008452600036813760005b83518110156200e87857806200046b6200791c6200fff2938762005ab0565b6200ffd3565b6020819392930151602281101562003d035760150362009ae4576020916200046b6200e88c9262011e84565b82516001600160a01b0316818301556020909201916001016200a5c4565b82516001600160a01b0316818301556020909201916001016200a46f565b6201007c90620271196000528484600020918201910162005b56565b386200a45e565b600191820180546001600160a01b03909216848601559390910192906200a3a2565b62027124600052620100cd90600080516020620133fc83398151915290810190830162005b56565b386200a362565b60018082620100e582948662010592565b019201920191906200a321565b620271236000526000805160206201337c833981519152908282015b8183018110620101205750506200a2e5565b806201012e60019262005c16565b016201010e565b600191820180546001600160a01b03909216848601559390910192906200a2b3565b620271226000526201017f906000805160206201335c83398151915290810190830162005b56565b386200a273565b82516001600160a01b0316818301556020909201916001016200a135565b620101c0906202711d6000528484600020918201910162005b56565b386200a124565b82516001600160a01b03168183015560209092019160010162009f45565b6201020190620271146000528484600020918201910162005b56565b3862009f34565b806201022a9160031b600160ff60078301541615151462010230575062005a5a565b62009e84565b620102446004820162013897830162010523565b6201389a8101600160ff198254161790558054816201389301556001810154620138948201556002810154620138958201556201028a6005820162013898830162010592565b620138996006820154910155386200941a565b6006602082620102b16001945186620060b3565b0192019201919062009c71565b6006818102048103620032295760068381020483036200322957620271156000527f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf926006840281015b82600602820181106201031c57505062009c5d565b8060006006925560006001820155620103386002820162005e12565b600060038201556201034d6004820162005c16565b600060058201550162010307565b60066020826201036f6001945186620060b3565b0192019201919062009be1565b8060060290600682040362003229578260060260068104840362003229576000906202711682526020822092830192015b828110620103bd57505062009bcd565b808260069255826001820155620103d76002820162005e12565b826003820155620103eb6004820162005c16565b82600582015501620103ad565b608460405162461bcd60e51b815260206004820152604060248201526000805160206201341c83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206201341c83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b8181146201051f578154916001600160401b03831162003b9b57620104e1838362005b96565b60005260206000209060005260206000208154916000925b84841062010508575050505050565b6001809192019384549281850155019290620104f9565b5050565b8181146201051f578154916001600160401b03831162003b9b5762010549838362005b96565b60005260206000209060005260206000208154916000925b84841062010570575050505050565b600191820180546001600160a01b039092168486015593909101929062010561565b908082146201051f57620105a7815462004249565b906001600160401b03821162003b9b578190620105ca8262006663865462004249565b600090601f83116001146201060457600092620105f8575b50508160011b916000199060031b1c1916179055565b015490503880620105e2565b81526020808220858352818320935090601f1985169083905b8282106201065a57505090846001959493921062010640575b505050811b019055565b015460001960f88460031b161c1916905538808062010636565b84958192958501548155600180910196019401906201061d565b8181146201051f578154916201068b838362005ca7565b6000526020600020906000526020600020906000905b838210620106af5750505050565b80620106be6001928562010592565b928101929181019101620106a1565b8181146201051f57815491620106e4838362005d35565b6000526020600020906000526020600020906000905b838210620107085750505050565b806201071760019285620104bb565b928101929181019101620106fa565b8181146201051f578154916201073d838362005d35565b6000526020600020906000526020600020906000905b838210620107615750505050565b80620107706001928562010523565b92810192918101910162010753565b8181146201051f5781549162010796838362005dc3565b6000526020600020906000526020600020906000905b838210620107ba5750505050565b80620107c96001928562010674565b928101929181019101620107ac565b8181146201051f57815491620107ef838362005ed5565b6000526020600020906000526020600020906000905b838210620108135750505050565b80600191840362010830575b600980910193019101909162010805565b8054845581620108728186019183019160ff62010851818554168362005fc9565b8354936201086682600896871c168462005fe3565b5460101c169062006004565b620108846002808401908701620104bb565b6003828101919086018387036201089f575b5050506201081f565b6201090392620108af91620104bb565b620108c1600480850190880162010523565b620108d3600580850190880162010674565b620108e56006808501908801620106cd565b620108f7600780850190880162010726565b8083019086016201077f565b38808062010896565b91906200686a578082036201091f575050565b60ff600580620041d09462010938848654168262005fb0565b60018501546001820155620109546002860160028301620107d8565b6003850154600382015562010970600486016004830162010592565b01920162010982828254168462006070565b6201099482825460081c168462006081565b5460101c169062006099565b908082146201051f57908154906000915b60648310620109c05750505050565b6001809194019283549481840155019192620109b1565b9062013882546020600093019081515190620109f38262003c62565b9162010a03604051938462003c3e565b80835262010a14601f199162003c62565b0136602084013762010a2983515182620069da565b901562010d9a5762010a3b9062006777565b9085928451511562010d915762010a528262006777565b965b85515181101562010bda5760008080805b86811062010af15750905062010a878162010a81858762005ab0565b62004411565b600681101562003d035760031462010aac575b5062010aa69062005a5a565b62010a54565b6000905b80821062010abf575062010a9a565b909562010ae362010aea9162010ad6898d62005ab0565b5162000b13828a62005ab0565b9662005a5a565b9062010ab0565b62010b0a8162010b03878d5162005ab0565b51620111b3565b9390948083118062010bc6575b1562010b7d57505091838562010b73575b600681101562003d035760038e911462010b53575b505062010b4a9062005a5a565b91909162010a65565b9462010b6a9162000b138262010b4a959862005ab0565b93908c62010b3d565b6000955062010b28565b809492959195148062010bb2575b1562010b3d57600681101562003d035760038e911462010b5357505062010b4a9062005a5a565b50600681101562003d035780151562010b8b565b50600686101562003d035785151562010b17565b5093505090929350600093845b835186101562010d2c5762010c0762010c01878662005ab0565b62005fa2565b9060068083101562003d0357600292830362010c3257505062010c2b909562005a5a565b9462010be7565b62010c4262010c01898862005ab0565b928184101562003d035760018094148062010d18575b1562010c6d5750505062010c2b909562005a5a565b62010c8262010c018a899b9694959b62005ab0565b928084101562003d03576004809414928362010cec575b508262010cc1575b505062010cb5575b5062010c2b9062005a5a565b955062010c2b62010ca9565b90915088101562010cd757871415388062010ca1565b602182634e487b7160e01b6000525260246000fd5b908093508a101562010d0357891415913862010c99565b602184634e487b7160e01b6000525260246000fd5b508183101562003d03578083141562010c58565b925092909350600682101562003d03576003820362010d88575b62010d518162006777565b9360005b82811062010d64575050509190565b8062010d7562010d82928462005ab0565b5162000b13828962005ab0565b62010d55565b50600062010d46565b50909392505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b906201388354602060009301908151519062010e0e8262003c62565b9162010e1e604051938462003c3e565b80835262010e2f601f199162003c62565b0136602084013762010e4483515182620069da565b901562010d9a5762010e569062006777565b9085928451511562010d915762010e6d8262006777565b965b85515181101562010fdb5760008080805b86811062010ef25750905062010e9c8162010a81858762005ab0565b600681101562003d035760031462010ec1575b5062010ebb9062005a5a565b62010e6f565b6000905b80821062010ed4575062010eaf565b909562010ae362010eeb9162010ad6898d62005ab0565b9062010ec5565b62010f0b8162010f04878d5162005ab0565b516201124f565b9390948083118062010fc7575b1562010f7e57505091838562010f74575b600681101562003d035760038e911462010f54575b505062010f4b9062005a5a565b91909162010e80565b9462010f6b9162000b138262010f4b959862005ab0565b93908c62010f3e565b6000955062010f29565b809492959195148062010fb3575b1562010f3e57600681101562003d035760038e911462010f5457505062010f4b9062005a5a565b50600681101562003d035780151562010f8c565b50600686101562003d035785151562010f18565b5093505090929350600093845b8351861015620110fd576201100262010c01878662005ab0565b9060068083101562003d035760029283036201102d57505062011026909562005a5a565b9462010fe8565b6201103d62010c01898862005ab0565b928184101562003d0357600380941480620110e9575b15620110685750505062011026909562005a5a565b6201107d62010c018a899b9694959b62005ab0565b928084101562003d035760058094149283620110d2575b5082620110bc575b5050620110b0575b50620110269062005a5a565b955062011026620110a4565b90915088101562003d035787141538806201109c565b908093508a101562003d0357891415913862011094565b508183101562003d03578083141562011053565b925092909350600682101562003d0357600382036201114c575b620111228162006777565b9360005b82811062011135575050509190565b8062010d7562011146928462005ab0565b62011126565b50600062011117565b156201115d57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9091600080938193620111cc6201388254831062011155565b60ff6005620111db84620067f1565b50015460081c161562011243578282620111f7926001620113bb565b62011203575b50929190565b8094506001929350620112179150620067f1565b5001549060036201123860ff6201122e86620067f1565b50541694620067f1565b5001549138620111fd565b50509150915080918190565b9091600080938193620112686201388354831062011155565b60ff60056201127784620067af565b50015460081c161562011243578282620112929282620113bb565b6201129d5750929190565b8094506001929350620112b19150620067af565b5001549060036201123860ff620112c886620067af565b50541694620067af565b15620112da57565b60405162461bcd60e51b815260206004820152603160248201527f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e20696044820152706e646578206f7574206f662072616e676560781b6064820152608490fd5b156201134157565b60405162461bcd60e51b815260206004820152602f60248201527f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460448201526e6578206f7574206f662072616e676560881b6064820152608490fd5b805482101562005a78576000526009602060002091020190600090565b9092919080156201172a57620113d762013882548310620112d2565b620113f36002620113e884620067f1565b500154841062011339565b80156201170c576201142360016201141a8560026201141287620067f1565b50016201139e565b50015460ff1690565b6201142e8162003db9565b806201143e575050505050600090565b620114498162003db9565b600381036201145c575050505050600190565b620114678162003db9565b600481036201147a575050505050600090565b620114858162003db9565b6001908082036201149e57505092620069809362011752565b909293620114ac8262003db9565b6002809214620114c2575b505050505050600090565b8215620116ef57620114eb84620114df8385620114128a620067f1565b50015460081c60ff1690565b925b60009586865b6201167d575b50620115058762006777565b9760005b88811062011620575050505050620115218262003cf8565b8183036201158057505091906000915b8183106201153f5750505090565b909192806201155d575b62011555909362005a5a565b919062011531565b50620115556201157862011572858462005ab0565b51151590565b905062011549565b9091506201158e8262003cf8565b8103620115e757509060009182915b818310620115ab5750505090565b9091928015620115ca575b620115c2909362005a5a565b91906201159d565b50620115c2620115df62011572858462005ab0565b9050620115b6565b60039150620115f68162003cf8565b14620116095750388080808080620114b7565b6201161c62011572620069809262005a6a565b1590565b808a6201165c6201165362011649848b620116418c82620114128d620067af565b500162006ac7565b90549060031b1c90565b868689620113bb565b6201167062011677946200046b9362005ab0565b9015159052565b62011509565b846201168f85826201141286620067af565b500154811015620116e957620116b56201164982876201164188826201141289620067af565b620116ce575b620116c7879162005a5a565b90620114f3565b96620116c7620116df889262005a5a565b98915050620116bb565b620114f9565b6201170584620114df8385620114128a620067af565b92620114ed565b6201172460016201141a8560026201141287620067af565b62011423565b6201173b62013883548310620112d2565b6201174c6002620113e884620067af565b620113f3565b9092916003620117a49183600014620118265760ff60016201177b8760026201141286620067f1565b50015460101c16945b841562011815576002620114126201179c93620067f1565b5001620044e5565b91603d81101562003d0357602c8103620117e5575050620117c86020915162005a6a565b51910151602281101562003d0357620117e19062012fee565b1490565b90929060018103620117fa5750505050600090565b6003146201180a57505050600090565b620069809262011896565b6002620114126201179c93620067af565b60ff60016201183c8760026201141286620067af565b50015460101c169462011784565b156201185257565b606460405162461bcd60e51b815260206004820152602060248201527f4f70657261746f722061646472657373206973206e6f742070726f76696465646044820152fd5b9190608062006dcd9201620118b06001825151146201184a565b620118cb6001620118c2835162005a6a565b5151146201184a565b516001600160a01b03928391620118e3919062005a6a565b51169215620118f25751161490565b51161490565b919082018092116200322957565b620119118162003db9565b6201191f6200d14962012f85565b6201192a8162003db9565b60018103620119495750620119426200d17562012f85565b6201388b55565b620119548162003db9565b600281036201196557506201388c55565b620119708162003db9565b600381036201198157506201388d55565b806201198f60049262003db9565b14620119985750565b6201388e55565b15620119a757565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b1562011a3057565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b1562011a8857565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b1562011ae957565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b1562011b4a57565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b1562011ba357565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b1562011c0557565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b1562011c6857565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b1562011cce57565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b1562011d3057565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b1562011d8857565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b1562011de757565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b1562011e4057565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b604081019062011e9a6101008351015162005a6a565b519162011ebc60e062011eb1818451015162005a6a565b519251015162005a8e565b519362011ed184518351146200046462012e52565b62011ee484518651146200046462012e52565b60005b845181101562011f415762011efd818462005ab0565b519061271082101562005a785762011f3b9160018060a01b03865116600052600390811b016020526200046b60406000205462007da0838a62005ab0565b62011ee7565b5092919360005b83518110156201206c5762011f5e818462005ab0565b5190612710918281101562005a785760018060a01b03908189511660005260039081602091811b01815262011f9e60406000205462007e0d868962005ab0565b9062011fab868a62005ab0565b51918783101562005a78578462011fd893878f5116600052811b0184526040600020556200046462012f56565b62011fe4848862005ab0565b518581101562005a785782908462011ffd878c62005ab0565b5116600052811b0181526201201d60406000205462006dd4868962005ab0565b9190926201202c868a62005ab0565b519687101562005a785762012066966200046b956201204c888d62005ab0565b5116600052811b0190526040600020556200046462012fbb565b62011f48565b50506200e8306201207d9162012c2b565b90604051936201208d8562003bea565b60018552602036818701376001600160a01b036106e0819052905116620120b48562005a6a565b526000935b8151851015620123d757620120cf858362005ab0565b5194620120dd845162006777565b91600093620120ed825162006777565b6106a0528496855b875181101562012196576201211c6106e05162012113838b62005ab0565b51168b620129f8565b15806201215e575b6201213b575b620121359062005a5a565b620120f5565b956201215562012135916106e0516200977d8a8c62005ab0565b9690506201212a565b506127108a101562005a78576106e0516201217a828a62005ab0565b511660005260038a811b01602052604060002054151562012124565b509793929096949195976000986127108610159560031b9860038a019a5b895181101562012230578762005a78576106e051620121d4828c62005ab0565b51166000528b60205260406000205415620121fb575b620121f59062005a5a565b620121b4565b9762012227620121f5918b620122168c6106e0519262005ab0565b511662000b13826106a05162005ab0565b989050620121ea565b50949591939650985096909596806106805262005a785760040180610640525495620122616200811f8689620118f8565b61066052600097886106c0525b6106805162005a78576106c051888110156201230c576201229d620122b3916000610680526106405162006ac7565b6106e05191549060031b1c166106a05162012aba565b15620122d2575b620122c86106c05162005a5a565b6106c0526201226e565b976201230590620122ea6106c0516106405162006ac7565b6106e05191549060031b1c1662000b13826106605162005ab0565b97620122ba565b5095939096509690969391936000915b838310620123a657505050506106805162005a785761066051516001600160401b03811162003b9b5762012354816106405162005b96565b6020610660510161064051600052602060002060006106e051905b8481106201238f575050505050620123879062005a5a565b9392620120b9565b60019060208386511695019481850155016201236f565b620082b0620123d0916106e051620123bf868662005ab0565b511662000b13826106605162005ab0565b916201231c565b5050509050565b9080620123e9575050565b620041d091600052601f6020600020910160051c81019062005b56565b90600160401b811162003b9b5781548183558082106201242557505050565b620041d092600052601f6020600020918180850160051c840194168062012454575b500160051c019062005b56565b600019908186019182549160200360031b1c1690553862012447565b9060031b60ff811b9283911b169119161790565b62013884805482101562005a78576000526007602060002091020190600090565b600092620124bf620124b8859462012484565b5062004393565b9380935b855151851015620125ad575061271084101562005a785760039380851b9460018060a01b038516600052602090860181526201250c6040966001886000205491015490620069da565b93849115620125785790620125219162006c06565b9690156201253e575050620125369062005a5a565b9390620124c3565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b875162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b93505092505090565b15620125be57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b6001620126068262012484565b5001546202712e546000928184526202712b90816020526201262f816003604088200162006ac7565b90549060031b1c918386528060205262012650826004604089200162006ac7565b90549060031b1c93865260205260ff6006620126856201267784600560408b200162006ac7565b90549060031b1c9362012484565b50015416620126d35750620126c39262001767620126b59383620126ad620126bb95620069a4565b9690620125b6565b620118f8565b9290620125b6565b1115620126cd5790565b50600190565b6200d4619250620126c393620126ed620126bb93620069a4565b9490620125b6565b9092919262012705825162006777565b60009162012714815162006777565b8390845b8651811015620127af576001600160a01b036201273b8162012113848b62005ab0565b15806201277a575b6201275b575b50620127559062005a5a565b62012718565b81966201277291620082a262012755948b62005ab0565b959062012749565b506127108a101562005a78578062012793838a62005ab0565b511660005260038a811b01602052604060002054151562012743565b509295919694509260005b87518110156201283e5761271086101562005a78576001600160a01b0380620127e4838b62005ab0565b5116600052600387811b016020526040600020541562012811575b506201280b9062005a5a565b620127ba565b81956201283691620128286201280b948c62005ab0565b511662000b13828862005ab0565b9490620127ff565b509250945092612710831015938462005a785760049586600395861b01968754946201286f6200811f8288620118f8565b9460009689889a5b620129e357818b10156201291857506000998b620128b26201289a838362006ac7565b90546001600160a01b0392918e1b1c82168a62012aba565b15620128d5575b505090620128ca8b94939262005a5a565b9a9091929362012877565b91998c959493929091620128eb908c9062006ac7565b9054908d1b1c16620128fe828b62005ab0565b526201290a9062005a5a565b9890919293508b38620128b9565b9697949a98505091975092506000915b838310620129be5750505050620129a9578051926001600160401b03841162012994575062012958838362005b96565b602080910191600052806000209060005b84811062012978575050505050565b83516001600160a01b0316838201559281019260010162012969565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b620129dc90620082b0906001600160a01b036200977d868662005ab0565b9162012928565b603285634e487b7160e01b6000525260246000fd5b9060005b61271083101562005a78576003600484821b01805483101562012a57578262012a259162006ac7565b9054911b1c6001600160a01b039081169083161462012a4f5762012a499062005a5a565b620129fc565b505050600190565b5050505050600090565b9060005b61271083101562005a785760036201389784821b01805483101562012a57578262012a909162006ac7565b9054911b1c6001600160a01b039081169083161462012a4f5762012ab49062005a5a565b62012a65565b9060005b825181101562012af9576001600160a01b038062012add838662005ab0565b51169083161462012a4f5762012af39062005a5a565b62012abe565b505050600090565b801562003229576000190190565b9081519060005b600019838101848111620032295782101562012bdd576001820180831162003229575b84811062012b5457505062012b4e9062005a5a565b62012b16565b6001600160a01b038062012b69858962005ab0565b51168162012b78848a62005ab0565b51161462012b93575b5062012b8d9062005a5a565b62012b39565b8286929601828111620032295762012b8d9262012bd69262012bba62012bcf938b62005ab0565b511662012bc8898b62005ab0565b5262012b01565b9562012b01565b9062012b81565b50509062012beb8162006777565b9060005b81811062012bfe575090925050565b62012c25906001600160a01b0362012c17828862005ab0565b511662000b13828662005ab0565b62012bef565b80519160005b600019848101858111620032295782101562012ce3576001820180831162003229575b85811062012c6f57505062012c699062005a5a565b62012c31565b62012c7b838662005ab0565b5162012c88828762005ab0565b511462012ca1575b62012c9b9062005a5a565b62012c54565b9481810190808211620032295762012cd462012cdb9162012cc762012c9b948962005ab0565b5162012bc88a8a62005ab0565b9662012b01565b905062012c90565b5050909162012cf28162006777565b9060005b81811062012d05575090925050565b8062012d1662012d23928762005ab0565b5162000b13828662005ab0565b62012cf6565b60405162012d378162003b7f565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b60405162012da58162003c22565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b60405162012dfb8162003bea565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b60405162012e358162003bea565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b60405162012e608162003bea565b6012815271496e76616c696420506172616d657465727360701b602082015290565b60405162012e908162003bea565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b60405162012ec38162003bea565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b60405162012ef88162003bea565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b60405162012f318162003bea565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b60405162012f648162003bea565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b60405162012f938162003bea565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b60405162012fc98162003bea565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b602281101562003d03578015620131dc5760018114620126cd5760028114620131d65760038114620131d05760048114620131ca5760058114620131c45760068114620131be5760078114620131b85760088114620131b25760098114620131ac57600a8114620131a657600b8114620131a057600c81146201319a57600d81146201319457600e81146201318e57600f81146201318857601081146201318257601181146201317c57601281146201317657601381146201317057601481146201316a57601581146201316457601881146201315e57601781146201315857601981146201315257601a81146201314c57601b81146201314657601c81146201314057601d81146201313a57601e81146201313457601f81146201312e576020811462013128576021146201312357600090565b602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b50600090565b90815181101562005a78570160200190565b60405190620132038262003c22565b60288252604036602084013760005b601481106201322057505090565b6013908082039182116200322957600382901b916001600160fd1b03811603620032295760ff8083116200322957600192620132699084901b6001600160a01b03861662006983565b60f081168282160391821162003229576201328d9060f41b600f60f81b16620132f6565b82841b916001600160ff1b03841684036200322957620132ca9160001a620132b68489620131e2565b5360f81b6001600160f81b031916620132f6565b9281018091116200322957620132e9620132f09360001a9186620131e2565b5362005a5a565b62013212565b60f81c600a8110156201331f5760300160ff8111620032295760f81b6001600160f81b03191690565b60570160ff8111620032295760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b651f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a24ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b1224546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b658e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece8546865206265666f7265206f7065726174696f6e20706c7567696e2073797374546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212205acddd0e839937cf85abeb6e0ca1497280e5aef0b9680f5ad71a86008aa58f3864736f6c63430008110033", - "deployedBytecode": "0x6107008060405260043610156200001557600080fd5b600090813560e01c908163036ee8501462003b2e575080630e5a3b2914620037d057806310ade3ea14620037a05780631797631d14620037185780631c75255a14620036b257806323b65c78146200362a57806341d1a43814620035f657806356424cf414620035155780635c00d98714620034c45780635d0b184914620034a25780635f1231ea14620033c85780635f5d5f001462003340578063681ece9d14620032fb57806379532bfe14620032d95780637daa10ce14620032bc5780638129fc1c1462002ef9578063864f9f7a1462002eba57806386ad77e21462002ba75780638c7a63ae1462002b355780639f36145f14620017f5578063a064c4f1146200172c578063a2f7d1011462000504578063acf80bc414620004c5578063aefca42a14620004a3578063afc820aa146200037e578063bba5103014620001f4578063d5a172f214620001c75763d6a93c51146200017357600080fd5b34620001c45780600319360112620001c4575b61271081106200019c575b602090604051908152f35b60ff60078260031b01541615620001be57620001b89062005a5a565b62000186565b62000191565b80fd5b5034620001c45780600319360112620001c45762027126546040516001600160a01b039091168152602090f35b5034620001c45780600319360112620001c4576202712e548082526202712b9160209083825260029384604083200154946200024d620002348762003c62565b9662000244604051988962003c3e565b80885262003c62565b8685019290601f1901368437835b86855281865282604086200154811015620003285760405163083a348760e31b815260048101829052602487828281305afa9182156200031d578792620002da575b50620002aa838b62005ab0565b906003831015620002c8575052620002c29062005a5a565b6200025b565b634e487b7160e01b8852602160045287fd5b9091508781813d831162000315575b620002f5818362003c3e565b810103126200031157516003811015620003115790386200029d565b8680fd5b503d620002e9565b6040513d89823e3d90fd5b505060408051858152875181870181905290948594928501935086905b8281106200035557505050500390f35b91938395509080826200036d60019483975162003d5f565b019501910191859493919262000345565b506020366003190112620001c4576004356001600160401b0381116200049f57620003ae90369060040162004d21565b805190916001600160a01b039162000403908316620003fa620003db620003d533620131f4565b62005923565b620003f3620003ed87895116620131f4565b62005989565b90620059e0565b90331462005a27565b9060208301915b825180518210156200047757906200046b6200047192846200042e84339362005ab0565b515116146200046462000445620003d533620131f4565b620003f3620003ed886200045b888c5162005ab0565b515116620131f4565b9062005a27565b62005a5a565b6200040a565b6200049b620004868662006d3f565b60405191829160208352602083019062003d92565b0390f35b5080fd5b5034620001c45780600319360112620001c45760206202712854604051908152f35b5034620001c4576020366003190112620001c4576020906040906001600160a01b03620004f162003b4e565b1681526201388783522054604051908152f35b5034620001c4576040366003190112620001c4576004356001600160401b0381116200049f576200053a90369060040162004a4f565b6024356001600160401b03811162001728576200055c90369060040162004d21565b620271298054600260ff8216620005738162003cf8565b14620016e35760ff191660021790556202712e54600181018111620016cf57600181016202712e558391845b84518110156200060257836002620005c3620005bc848962005ab0565b5162012484565b50015410620005de575b620005d89062005a5a565b6200059f565b9250620005d86002620005f6620005bc868862005ab0565b500154939050620005cd565b509093918291825b8551811015620006665784600362000627620005bc848a62005ab0565b5001541062000642575b6200063c9062005a5a565b6200060a565b93506200063c60036200065a620005bc878962005ab0565b50015494905062000631565b50600190950182526202712b602090815260408320865181546001600160a01b0319166001600160a01b039190911617815595015180519295919290600160401b821162000be5576001830154826001850155808310620014ee575b50602060019101920186526020862086925b82841062000c235750505050620006ec835162006777565b6202712e5485526202712b6020526004604086200181519160018060401b03831162000be55760209062000721848462005b96565b0190865260208620865b83811062000c0e575050505062000743835162006777565b6202712e5485526202712b6020526003604086200181519160018060401b03831162000be55760209062000778848462005b96565b0190865260208620865b83811062000bf957505050506200079a835162006777565b6202712e5485526202712b6020526005604086200181519160018060401b03831162000be557602090620007cf848462005b96565b0190865260208620865b83811062000bd05750505050620007f1904262006c06565b6202712e5485526202712b60205260066040862001551562000b90576200082e906202712e5484526202712b602052600660408520015462006c06565b60076040852001551562000b4d576202712e5482526202712b60205260086040832001600260ff1982541617905562000868815162006777565b6202712e5483526202712b6020526002604084200181519160018060401b03831162000b39576020906200089d848462005b96565b0190845260208420845b83811062000b24578585815b81518110156200091457806200046b620008d26200090e938562005ab0565b516202712e5486526202712b602052620008f3836002604089200162006ac7565b90919082549060031b600019811b9283911b16911916179055565b620008b3565b50815b815181101562000b20576202712e54928381526202712b6020526200095462000947836002604085200162006ac7565b90549060031b1c62012484565b505491620009628362006777565b92825b81811062000acf5750508182905b845182101562000a9f5762000989828662005ab0565b5161271081101562000a8b5760031b60010154620009a8838762005ab0565b5161271081101562000a775760031b60060154620009c691620069da565b901562000a3357620009d89162006c06565b919015620009f257620009eb9062005a5a565b9062000973565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b85526032600452602485fd5b905062000ac993506200046b91929586526202712b602052620008f3836005604089200162006ac7565b62000917565b62000b1a908785526202712b60205262000b008162000af96200094787600260408b200162006ac7565b5062006ac7565b90549060031b1c62000b13828862005ab0565b5262005a5a565b62000965565b8280f35b600190602084519401938184015501620008a7565b634e487b7160e01b85526041600452602485fd5b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620007d9565b634e487b7160e01b87526041600452602487fd5b60019060208451940193818401550162000782565b6001906020845194019381840155016200072b565b805180518354602083015190916001600160a01b0316906022811015620014da576001600160a81b03199092161760a09190911b60ff60a01b161783556040015180518051906001600160401b0382116200103d576020600186019162000c8b848462005b96565b01908b5260208b208b5b838110620014c5575050505060208101518051906001600160401b0382116200103d576020600286019162000ccb848462005b96565b01908b5260208b208b5b838110620014a7575050505060038301604082015190602082519262000cfc848462005ca7565b01908b5260208b20908b905b838210620013bc5750505050606081015180516001600160401b0381116200103d576020600486019262000d3d838562012406565b01918b5260208b20908b5b8160051c8110620013815750601f19811681036200133e575b5050506080810151805190600160401b82116200103d576005850154826005870155808310620012bb575b5060200190600585018b5260208b20918b905b82821062001103575050505060a0810151805190600160401b82116200103d57600685015482600687015580831062001072575b50602001600685018b5260208b20908b905b83821062001051575050505060c081015180516001600160401b0381116200103d576020600786019262000e1a838562012406565b01918b5260208b20908b5b8160051c811062000fff5750601f198116810362000fb3575b5050506008830160e082015190602082519262000e5c848462005d35565b01908b5260208b20908b905b83821062000f3c57505050506101006009840191015190602082519262000e90848462005d35565b01908a5260208a20908a905b83821062000ebc5750505050600a602060019201920193019290620006d4565b80518051906001600160401b03821162000f28578460208f9262000ee1858462005b96565b0191528d60208120905b83811062000f0a57505050506001602081920193019101909162000e9c565b82516001600160a01b03168183015560209092019160010162000eeb565b634e487b7160e01b8e52604160045260248efd5b80518051906001600160401b03821162000f9f5760208f9162000f60848862005b96565b019085815260208120905b83811062000f8a57505050506001602081920193019101909162000e68565b60019060208451940193818401550162000f6b565b634e487b7160e01b8f52604160045260248ffd5b8b928c5b601f1983168303811062000fd557505060051c015538808062000e3e565b9093602062000ff56001928488519162000fef8362003db9565b62012470565b9501910162000fb7565b8c8d5b602081106200101957508382015560010162000e25565b94906020620010336001928885519162000fef8362003db9565b9201950162001002565b634e487b7160e01b8b52604160045260248bfd5b6006602082620010656001945187620060b3565b0193019101909162000de5565b6006818102048103620010ef576006838102048303620010ef57600686018c5260208c208360060281015b8d8360060283018210620010b45750505062000dd3565b90816006928255806001830155620010cf6002830162005e12565b806003830155620010e36004830162005c16565b6005820155016200109d565b634e487b7160e01b8c52601160045260248cfd5b805180518051906001600160401b03821162001291578f906020906200112a848a62005b96565b019087815260208120905b838110620012a6575050505060208101516001860155604081015160028601556060810151600386015562001174608082015115156004870162006070565b60a08101518051906001600160401b03821162001291578f90620011ab83620011a160058b015462004249565b60058b0162006026565b602091601f841160011462001212576007948460209560019895620011f99560c0959262001206575b5050600019600383901b1c191690881b1760058b01555b015115156006890162006070565b0194019101909262000d9f565b015190503880620011d4565b919060058901835260208320925b601f1985168110620012785750600794600185819895620011f99560c095602099601f198116106200125e575b505050811b0160058b0155620011eb565b015160001960f88460031b161c191690553880806200124d565b9192602060018192868501518155019401920162001220565b50634e487b7160e01b8f52604160045260248ffd5b60019060208451940193818401550162001135565b6007818102048103620010ef576007838102048303620010ef57600586018c5260208c208360070281015b8d8360070283018210620012fd5750505062000d8c565b906007916200130c8262005b6f565b806001830155806002830155806003830155806004830155620013326005830162005c16565b600682015501620012e6565b8b928c5b601f198316830381106200136057505060051c015538808062000d61565b909360206200137760019284885115159162012470565b9501910162001342565b8c8d5b602081106200139b57508382015560010162000d48565b94906020620013b260019288855115159162012470565b9201950162001384565b80518051906001600160401b03821162000f9f578e90620013ea83620013e3885462004249565b8862006026565b602091601f841160011462001438579280602093600196938796926200142c575b5050600019600383901b1c191690841b1786555b0193019101909162000d08565b0151905038806200140b565b9190601f19841687845260208420935b8181106200148e575093602093600196938796938388951062001474575b505050811b0186556200141f565b015160001960f88460031b161c1916905538808062001466565b9293602060018192878601518155019501930162001448565b82516001600160a01b03168183015560209092019160010162000cd5565b60019060208451940193818401550162000c95565b634e487b7160e01b8c52602160045260248cfd5b600a818102048103620016bb57600a838102048303620016bb576001840188526020882083600a0281015b82600a02820181106200152e575050620006c2565b8981556200153f6001820162005b6f565b6200154d6002820162005b6f565b6200155b6003820162005c68565b6200156f600482018054908c8155620123de565b60058101548a6005830155806200164c575b5060068101548a600683015580620015cf575b5080620015ac6007600a93018054908d8155620123de565b620015ba6008820162005cf6565b620015c86009820162005cf6565b0162001519565b60068181020481036200163857600682018b5260208b20906006028101905b818110620015fd575062001594565b808c600692558c6001820155620016176002820162005e12565b8c60038201556200162b6004820162005c16565b8c600582015501620015ee565b634e487b7160e01b8b52601160045260248bfd5b60078181020481036200163857600582018b5260208b20906007028101905b8181106200167a575062001581565b806200168860079262005b6f565b8c60018201558c60028201558c60038201558c6004820155620016ae6005820162005c16565b8c6006820155016200166b565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b84526011600452602484fd5b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b8280fd5b5034620001c4576020366003190112620001c45760043590612710821015620017e1576200176e826200176760018260031b01549162006b44565b90620069da565b90156200178057602090604051908152f35b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b634e487b7160e01b81526032600452602490fd5b5034620001c4576020366003190112620001c45760043581526202712b602052604080822081519182016001600160401b0381118382101762002b215760405280546001600160a01b03168252600181018054620018538162003c62565b9162001863604051938462003c3e565b81835285526020808620869184015b838310620018d957620018ae878787602083015260ff600682015491600860078201549101549060405195869560a0875260a0870190620045b5565b9360208601526040850152620018ca6060850183831662003d5f565b60081c16151560808301520390f35b6040516001600160401b03606082019081119082111762002b0d576060810160405282546001600160a01b0381168252602260a082901c60ff16101562002af95760a01c60ff1660208201526040516001600160401b0361012082019081119082111762002ae5576101208101604052620019576001850162004198565b81526200196760028501620041ed565b60208201526200197a6003850162004336565b6040820152600484018a604051809283916020825491828152019184526020842093905b80601f830110620029115762001ae1945491818110620028fa575b818110620028e0575b818110620028c6575b818110620028ac575b81811062002893575b81811062002879575b8181106200285f575b81811062002845575b8181106200282b575b81811062002811575b818110620027f7575b818110620027dd575b818110620027c3575b818110620027a9575b8181106200278f575b81811062002775575b8181106200275b575b81811062002741575b81811062002727575b8181106200270d575b818110620026f3575b818110620026d9575b818110620026bf575b818110620026a5575b8181106200268b575b81811062002671575b81811062002657575b8181106200263d575b81811062002623575b81811062002609575b818110620025ef575b10620025de575b509b9a999897969594939b038262003c3e565b60608a015260058301805462001af78162003c62565b9162001b07604051938462003c3e565b8183528c526020808d20908d9084015b838210620025a9575050505060808a01526006830198895462001b3a8162003c62565b9a62001b4a6040519c8d62003c3e565b818c5260208c01908d528c6020812091815b8483106200243a57505050505090919293949596979860a0820152604051806007860190602082549182815201918d5260208d20908d915b81601f840110620021315784600a97946020979460019a979462001cdb94549181811062002113575b818110620020f2575b818110620020d1575b818110620020b0575b81811062002090575b8181106200206f575b8181106200204e575b8181106200202d575b8181106200200c575b81811062001feb575b81811062001fca575b81811062001fa9575b81811062001f88575b81811062001f67575b81811062001f46575b81811062001f25575b81811062001f04575b81811062001ee3575b81811062001ec2575b81811062001ea1575b81811062001e80575b81811062001e5f575b81811062001e3e575b81811062001e1d575b81811062001dfc575b81811062001ddb575b81811062001dba575b81811062001d99575b81811062001d78575b81811062001d57575b81811062001d36575b1062001d1b575b50038262003c3e565b60c082015262001cee600888016200442b565b60e082015262001d016009880162004488565b610100820152604082015281520192019201919062001872565b90889160f81c62001d2c8162003db9565b8152013862001cd2565b928a8d9160ff8560f01c1662001d4c8162003db9565b815201930162001ccb565b928a8d9160ff8560e81c1662001d6d8162003db9565b815201930162001cc2565b928a8d9160ff8560e01c1662001d8e8162003db9565b815201930162001cb9565b928a8d9160ff8560d81c1662001daf8162003db9565b815201930162001cb0565b928a8d9160ff8560d01c1662001dd08162003db9565b815201930162001ca7565b928a8d9160ff8560c81c1662001df18162003db9565b815201930162001c9e565b928a8d9160ff8560c01c1662001e128162003db9565b815201930162001c95565b928a8d9160ff8560b81c1662001e338162003db9565b815201930162001c8c565b928a8d9160ff8560b01c1662001e548162003db9565b815201930162001c83565b928a8d9160ff8560a81c1662001e758162003db9565b815201930162001c7a565b928a8d9160ff8560a01c1662001e968162003db9565b815201930162001c71565b928a8d9160ff8560981c1662001eb78162003db9565b815201930162001c68565b928a8d9160ff8560901c1662001ed88162003db9565b815201930162001c5f565b928a8d9160ff8560881c1662001ef98162003db9565b815201930162001c56565b928a8d9160ff8560801c1662001f1a8162003db9565b815201930162001c4d565b928a8d9160ff8560781c1662001f3b8162003db9565b815201930162001c44565b928a8d9160ff8560701c1662001f5c8162003db9565b815201930162001c3b565b928a8d9160ff8560681c1662001f7d8162003db9565b815201930162001c32565b928a8d9160ff8560601c1662001f9e8162003db9565b815201930162001c29565b928a8d9160ff8560581c1662001fbf8162003db9565b815201930162001c20565b928a8d9160ff8560501c1662001fe08162003db9565b815201930162001c17565b928a8d9160ff8560481c16620020018162003db9565b815201930162001c0e565b928a8d9160ff8560401c16620020228162003db9565b815201930162001c05565b928a8d9160ff8560381c16620020438162003db9565b815201930162001bfc565b928a8d9160ff8560301c16620020648162003db9565b815201930162001bf3565b928a8d9160ff8560281c16620020858162003db9565b815201930162001bea565b928a8d9160ff85831c16620020a58162003db9565b815201930162001be1565b928a8d9160ff8560181c16620020c68162003db9565b815201930162001bd8565b928a8d9160ff8560101c16620020e78162003db9565b815201930162001bcf565b928a8d9160ff8560081c16620021088162003db9565b815201930162001bc6565b928a8d9160ff8516620021268162003db9565b815201930162001bbd565b926001610400602092865460ff81166200214b8162003db9565b825260ff8160081c166200215f8162003db9565b8583015260ff8160101c16620021758162003db9565b604083015260ff8160181c166200218c8162003db9565b606083015260ff81861c16620021a28162003db9565b608083015260ff8160281c16620021b98162003db9565b60a0830152620021cf60ff8260301c1662003db9565b60ff8160301c1660c083015260ff8160381c16620021ed8162003db9565b60e083015260ff8160401c16620022048162003db9565b61010083015260ff8160481c166200221c8162003db9565b61012083015260ff8160501c16620022348162003db9565b61014083015260ff8160581c166200224c8162003db9565b61016083015260ff8160601c16620022648162003db9565b61018083015260ff8160681c166200227c8162003db9565b6101a083015260ff8160701c16620022948162003db9565b6101c083015260ff8160781c16620022ac8162003db9565b6101e083015260ff8160801c16620022c48162003db9565b61020083015260ff8160881c16620022dc8162003db9565b61022083015260ff8160901c16620022f48162003db9565b61024083015260ff8160981c166200230c8162003db9565b61026083015260ff8160a01c16620023248162003db9565b61028083015260ff8160a81c166200233c8162003db9565b6102a083015260ff8160b01c16620023548162003db9565b6102c083015260ff8160b81c166200236c8162003db9565b6102e083015260ff8160c01c16620023848162003db9565b61030083015260ff8160c81c166200239c8162003db9565b61032083015260ff8160d01c16620023b48162003db9565b61034083015260ff8160d81c16620023cc8162003db9565b61036083015260ff8160e01c16620023e48162003db9565b61038083015260ff8160e81c16620023fc8162003db9565b6103a083015260ff8160f01c16620024148162003db9565b6103c083015260f81c620024288162003db9565b6103e082015201940192019162001b94565b60405190620024498262003bcd565b6200245960ff8654168362004411565b600185015460208301526002850154620024738162003c62565b9162002483604051938462003c3e565b81835260028701815260208082209084015b8383106200251b57505050509d9e95969798999a9b9c9d600192826020926040600695015260038701546060820152620024d26004880162004286565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301910190918e9d9c9b9a9998979695949d62001b5c565b60096020600192604051620025308162003bb1565b855481526200257460ff868801548181166200254c8162003db9565b86850152818160081c16620025618162003cf8565b604085015260101c16606083016200441e565b620025826002870162004198565b60808201526200259560038701620044e5565b60a082015281520192019201919062002495565b600760209d9e969798999a9b9c9d600192620025c58662004393565b8152019301910190919c9b9a9998979695949c62001b17565b60f81c151581526020013862001ace565b92602060019160ff8560f01c161515815201930162001ac7565b92602060019160ff8560e81c161515815201930162001abe565b92602060019160ff8560e01c161515815201930162001ab5565b92602060019160ff8560d81c161515815201930162001aac565b92602060019160ff8560d01c161515815201930162001aa3565b92602060019160ff8560c81c161515815201930162001a9a565b92602060019160ff8560c01c161515815201930162001a91565b92602060019160ff8560b81c161515815201930162001a88565b92602060019160ff8560b01c161515815201930162001a7f565b92602060019160ff8560a81c161515815201930162001a76565b92602060019160ff8560a01c161515815201930162001a6d565b92602060019160ff8560981c161515815201930162001a64565b92602060019160ff8560901c161515815201930162001a5b565b92602060019160ff8560881c161515815201930162001a52565b92602060019160ff8560801c161515815201930162001a49565b92602060019160ff8560781c161515815201930162001a40565b92602060019160ff8560701c161515815201930162001a37565b92602060019160ff8560681c161515815201930162001a2e565b92602060019160ff8560601c161515815201930162001a25565b92602060019160ff8560581c161515815201930162001a1c565b92602060019160ff8560501c161515815201930162001a13565b92602060019160ff8560481c161515815201930162001a0a565b92602060019160ff8560401c161515815201930162001a01565b92602060019160ff8560381c1615158152019301620019f8565b92602060019160ff8560301c1615158152019301620019ef565b92602060019160ff8560281c1615158152019301620019e6565b92602060019160ff85831c1615158152019301620019dd565b92602060019160ff8560181c1615158152019301620019d4565b92602060019160ff8560101c1615158152019301620019cb565b92602060019160ff8560081c1615158152019301620019c2565b92602060019160ff851615158152019301620019b9565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff8160181c161515606083015260ff8160808282891c16151581860152828260281c16151560a0860152828260c092828260301c16151584890152828260381c16151560e0890152828260401c161515610100890152828260481c161515610120890152828260501c161515610140890152828260581c161515610160890152828260601c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e08201520194019201849293916200199e565b634e487b7160e01b8a52604160045260248afd5b634e487b7160e01b8a52602160045260248afd5b634e487b7160e01b89526041600452602489fd5b634e487b7160e01b84526041600452602484fd5b5034620001c4576020366003190112620001c45760043590612710821015620017e1575060031b600181015460028201549162002b9d62002b7e60056006840154930162004286565b6040519485948552602085015260806040850152608084019062003d92565b9060608301520390f35b5034620001c45780600319360112620001c45762013882805462002bcb8162003c62565b9162002bdb604051938462003c3e565b81835283526020808420849184015b83831062002d8c5785856201388380549062002c068262003c62565b9362002c16604051958662003c3e565b82855260208501918152602081209080925b84841062002c5e5762002c4f866200049b8960405193849360408552604085019062003f44565b90838203602085015262003f44565b60405162002c6c8162003bcd565b62002c7c60ff8554168262004411565b6001840154602082015260028401805462002c978162003c62565b9162002ca7604051938462003c3e565b8183528552602080862090869084015b83821062002d26575050505060019282602092604060069501526003870154606082015262002ce96004880162004286565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520193019301929162002c28565b6009602060019260405162002d3b8162003bb1565b8654815262002d5760ff868901548181166200254c8162003db9565b62002d656002880162004198565b608082015262002d7860038801620044e5565b60a082015281520193019101909162002cb7565b60405162002d9a8162003bcd565b62002daa60ff8454168262004411565b6001830154602082015260028301805462002dc58162003c62565b9162002dd5604051938462003c3e565b81835289526020808a20908a9084015b83821062002e54575050505060019282602092604060069501526003860154606082015262002e176004870162004286565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520192019201919062002bea565b6009602060019260405162002e698162003bb1565b8654815262002e8560ff868901548181166200254c8162003db9565b62002e936002880162004198565b608082015262002ea660038801620044e5565b60a082015281520193019101909162002de5565b5034620001c4576020366003190112620001c4576020906040906001600160a01b0362002ee662003b4e565b1681526201388583522054604051908152f35b5034620001c45780600319360112620001c4576202712680546001600160a01b0319163317905562027129805460ff19166001908117909155604051909190819062002f458162003c06565b5290620138828054600082558062003253575b508252818060405162002f6b8162003c06565b526200323f576201388380546000825580620031c0575b5082526127106202712a556040519162002f9c8362003bea565b818352805b60208082101562003017576040516020929162002fbe8262003bb1565b8482528481830152846040830152606085818401526080908082850152806040519262002feb8462003bb1565b8184528185850152816040850152818085015283015260a0908183015283015282870101520162002fa1565b8284620031b0876040516200302c8162003c06565b8481526040516200303d8162003c06565b8581526040516200304e8162003c06565b8681526040516200305f8162003c06565b878152604051620030708162003c06565b88815260405191620030828362003c06565b89835260405193620030948562003c06565b8a855260405195620030a68762003bb1565b8652602086015260408501526060840152608083015260a082015260405191620030d08362003bb1565b86835260036020840152866040840152866060840152608083015260a0820152620030fb8262005a6a565b52620031078162005a6a565b506200315e6040516200311a8162003bcd565b600481528460208201528260408201528560608201526040516200313e8162003c06565b86815260808201528460a08201528460c08201528460e082015262006833565b604051906200316d8262003bcd565b600282528360208301526040820152836060820152604051620031908162003c06565b84815260808201528260a08201528260c08201528360e082015262006880565b6113886201388b556201388c5580f35b925060068381029381850403620032295760009382855260208520908101905b818110620031f057505062002f82565b80868492558686820155620032086002820162005e12565b8660038201556200321c6004820162005c16565b86600582015501620031e0565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b925060068381029381850403620032295760009382855260208520908101905b8181106200328357505062002f58565b808684925586868201556200329b6002820162005e12565b866003820155620032af6004820162005c16565b8660058201550162003273565b5034620001c45780600319360112620001c4576020604051338152f35b5034620001c45780600319360112620001c45760206202712d54604051908152f35b5034620001c4576020366003190112620001c45760043590612710821015620017e1576200049b6200333360048460031b01620041ed565b6040519182918262003d19565b5034620001c45780600319360112620001c4576040516201388180548083529083526020808301937fcd6f7cece5c70f73af31bb8ed8b80ae1c2a9e5eb261bd5ab2d9374b0c38719c892915b828210620033a7576200049b85620033338189038262003c3e565b83546001600160a01b0316865294850194600193840193909101906200338c565b5034620001c45760209081600319360112620001c457604090620033eb62003b4e565b8160608451620033fb8162003b7f565b82815286810183905285810182905201526001600160a01b0316815262013880835220604051906200342d8262003b7f565b6200349781549160ff83161515845260ff8585019360081c161515835260026200345a6001830162004286565b916040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062003d92565b905160808301520390f35b5034620001c45780600319360112620001c45760206202712e54604051908152f35b5034620001c4576020366003190112620001c45760043590612710821015620017e15760206200350d62003505846200176760028260031b01549162006b44565b9190620068ec565b604051908152f35b5034620001c45780600319360112620001c4576201388b54620035726200353b62012d29565b916200354d6127109384831062005a27565b620035676201388e546201388c5411156200046462012d97565b6201388d54620069da565b90506200357e62012ded565b50825b828110620035a4575b60206200359a8585850462006c94565b9050604051908152f35b909260ff60078360031b01541615620035ee5781620035d8620035e492620035d16200046b969562006959565b9062006c06565b94906200046462012ded565b9290919262003581565b92906200358a565b5034620001c4576020366003190112620001c457602062003619600435620125f9565b62003628604051809262003d5f565bf35b5034620001c45780600319360112620001c4576040516201388680548083529083526020808301937f4b58a51c867b7b693aaefb0acd6b55f4e7286e8436d34ab3cc63a1f2bfa35aa492915b82821062003691576200049b85620033338189038262003c3e565b83546001600160a01b03168652948501946001938401939091019062003676565b5034620001c4576040366003190112620001c4576004356024356001600160a01b03811690819003620017285761271082101562003704579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b5034620001c45780600319360112620001c4576040516201388880548083529083526020808301937ff9ab3ee50aab7a7cf5b7d30204dd21b5da7cc33690a7aec17b3653a822a635df92915b8282106200377f576200049b85620033338189038262003c3e565b83546001600160a01b03168652948501946001938401939091019062003764565b5034620001c45780600319360112620001c457602060ff62027129541660405190620037cc8162003cf8565b8152f35b5034620001c4576040366003190112620001c457620037ee62003b4e565b60249081356001600160401b03811162003b2a576200381290369060040162003c88565b91600260ff620271295416620038288162003cf8565b0362003aea576202712d5442101562003aac5760018060a01b0382168085526202712c92602093808552604087206202712e91825491828a52875260ff60408a20541662003a6e57875194828a526202712b95868952600260408c2001540362003a08578952865260408820908852855260408720956001968760ff198254161790558688905b620038b8578880f35b815181101562003a0457620038ce818362005ab0565b51156200397e578254808a528588526200392388620008f3848d60406003918c620039158d620035d1876200390881898989200162006ac7565b905490891b1c92620124a5565b979099835252200162006ac7565b156200393b57620039349062005a5a565b87620038af565b60405162461bcd60e51b815260048101889052601c818801527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b8254808a52858852620039b188620008f3848d60406003918c620039158d620035d1876200390881898989200162006ac7565b15620039c257620039349062005a5a565b60405162461bcd60e51b815260048101889052601b818801527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b8880f35b60405162461bcd60e51b8152600481018990526039818901527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b60405162461bcd60e51b815260048101889052601781880152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b60649060176040519162461bcd60e51b835260206004840152820152761d9bdd1a5b99c81c195c9a5bd9081a185cc8195b991959604a1b6044820152fd5b60649060196040519162461bcd60e51b83526020600484015282015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152fd5b8380fd5b9050346200049f57816003193601126200049f5760209062027127548152f35b600435906001600160a01b038216820362003b6557565b600080fd5b35906001600160a01b038216820362003b6557565b608081019081106001600160401b0382111762003b9b57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762003b9b57604052565b61010081019081106001600160401b0382111762003b9b57604052565b604081019081106001600160401b0382111762003b9b57604052565b602081019081106001600160401b0382111762003b9b57604052565b606081019081106001600160401b0382111762003b9b57604052565b601f909101601f19168101906001600160401b0382119082101762003b9b57604052565b6001600160401b03811162003b9b5760051b60200190565b3590811515820362003b6557565b81601f8201121562003b655780359162003ca28362003c62565b9262003cb2604051948562003c3e565b808452602092838086019260051b82010192831162003b65578301905b82821062003cde575050505090565b83809162003cec8462003c7a565b81520191019062003ccf565b6004111562003d0357565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062003d41575050505090565b83516001600160a01b03168552938101939281019260010162003d32565b90600382101562003d035752565b60005b83811062003d815750506000910152565b818101518382015260200162003d70565b9060209162003dad8151809281855285808601910162003d6d565b601f01601f1916010190565b6005111562003d0357565b90815180825260208080930193019160005b82811062003de5575050505090565b83518552938101939281019260010162003dd6565b90815180825260208080930193019160005b82811062003e1b575050505090565b83516001600160a01b03168552938101939281019260010162003e0c565b90815180825260208092019182818360051b85019501936000915b84831062003e655750505050505090565b909192939495848062003e8183856001950387528a5162003d92565b980193019301919493929062003e54565b90815180825260208092019182818360051b82019501936000915b84831062003ebe5750505050505090565b909192939495848062003eda83856001950387528a5162003dc4565b980193019301919493929062003ead565b90815180825260208092019182818360051b82019501936000915b84831062003f175750505050505090565b909192939495848062003f3383856001950387528a5162003dfa565b980193019301919493929062003f06565b9060208251918281520190819060208160051b84019401926000905b82821062003f7057505050505090565b909192939481810385528551906101008082018351600681101562003d0357835260208401516020840152604084015191604084015281518091526101206020818501918360051b86010193019160005b8181106200402b575050505060019260209262003ff7849360608085015190840152608080850151908483039085015262003d92565b9160a08082015115159083015260c08082015115159083015260e08091015115159101529701950192019092919262003f60565b9091929361011f9c9b9c19868203018452845190815181526020820151620040538162003db9565b60208201526040820151620040688162003cf8565b60408201526060820151603d81101562003d0357606082015260a06200409e608084015160c0608085015260c084019062003dc4565b9201519060a081840391015260a06200411d6200410a620040f7620040e4620040d1865160c0895260c089019062003dc4565b602087015188820360208a015262003dfa565b6040860151878203604089015262003e39565b6060850151868203606088015262003e92565b6080840151858203608087015262003eeb565b9101519160a081830391015281519081815260208101906020808460051b8301019401926000915b8183106200416a5750505050506020806001929e9d9e96019401910191909162003fc1565b90919293946020806200418a600193601f19868203018952895162003e39565b970195019301919062004145565b9060405191828154918282526020928383019160005283600020936000905b828210620041d257505050620041d09250038362003c3e565b565b855484526001958601958895509381019390910190620041b7565b9060405191828154918282526020928383019160005283600020936000905b8282106200422557505050620041d09250038362003c3e565b85546001600160a01b0316845260019586019588955093810193909101906200420c565b90600182811c921680156200427b575b60208310146200426557565b634e487b7160e01b600052602260045260246000fd5b91607f169162004259565b90604051918260008254926200429c8462004249565b908184526001948581169081600014620043115750600114620042ca575b5050620041d09250038362003c3e565b9093915060005260209081600020936000915b818310620042f8575050620041d093508201013880620042ba565b85548884018501529485019487945091830191620042dd565b915050620041d094506020925060ff191682840152151560051b8201013880620042ba565b908154620043448162003c62565b9262004354604051948562003c3e565b818452600090815260208082208186015b84841062004374575050505050565b6001838192620043848562004286565b81520192019301929062004365565b60405190919060e081016001600160401b0381118282101762003b9b5760405260c060ff60068395620043c68162004198565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152620044026005820162004286565b60a08601520154161515910152565b600682101562003d035752565b603d82101562003d035752565b908154620044398162003c62565b9262004449604051948562003c3e565b818452600090815260208082208186015b84841062004469575050505050565b6001838192620044798562004198565b8152019201930192906200445a565b908154620044968162003c62565b92620044a6604051948562003c3e565b818452600090815260208082208186015b848410620044c6575050505050565b6001838192620044d685620041ed565b815201920193019290620044b7565b9060405191620044f58362003bb1565b82620045018262004198565b81526001600562004514828501620041ed565b93602094858501526200452a6002820162004336565b60408501526200453d600382016200442b565b6060850152620045506004820162004488565b608085015201805490620045648262003c62565b9462004574604051968762003c3e565b82865260009182528082208187015b848410620045975750505050505060a00152565b85838192620045a68562004336565b81520192019301929062004583565b906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b8501019401926000905b828210620045ff57505050505090565b9091929394605f19828203018552855160018060a01b038151168252602081015190602282101562003d03576040916020840152015190606060408201526200468d620046766200465f8451610120606086015261018085019062003dc4565b6020850151848203605f1901608086015262003dfa565b6040840151838203605f190160a085015262003e39565b606083015190605f198382030160c0840152602080835192838152019201906000905b80821062004a3457505050608083015190605f198382030160e0840152815180825260208201906020808260051b85010194019260005b828110620049b057505050505060a083015190605f1983820301610100840152815190818152602081016020808460051b8401019401926000925b818410620047d257505050505060c083015190605f1983820301610120840152602080835192838152019201906000905b808210620047ae57505050620047a08360209361010062004789869560e06001990151605f198583030161014086015262003e92565b92015190610160605f198285030191015262003eeb565b9701950193920190620045ef565b9091926020806001928651620047c48162003db9565b815201940192019062004753565b9091929394601f9d9c9d198282030184528551908151600681101562003d03578152602082015160208201526040820151610100604083015261010082018151809152610120830160206101208360051b8601019301916000905b8082106200489857505050509d9e9d8260209260e0806200486886956060600199015160608601526080860151858203608087015262003d92565b9360a0810151151560a085015260c0810151151560c0850152015115159101529701940194019293919062004722565b9091929361011f19868203018452845190815181526020820151620048bd8162003db9565b60208201526040820151620048d28162003cf8565b60408201526060820151603d81101562003d0357606082015260a062004908608084015160c0608085015260c084019062003dc4565b9201519060a081840391015260a06200493b6200410a620040f7620040e4620040d1865160c0895260c089019062003dc4565b9101519160a0818303910152815180825260208201906020808260051b8501019401926000915b80831062004982575050505050602080600192960194019201906200482d565b9091929394602080620049a2600193601f19878203018952895162003e39565b970195019301919062004962565b9091929394602080600192601f1986820301885288519060c08062004a1e620049e3855160e0865260e086019062003dc4565b8686015187860152604086015160408601526060860151606086015260808601511515608086015260a086015185820360a087015262003d92565b93015115159101529701950193929101620046e7565b909192602080600192865115158152019401920190620046b0565b81601f8201121562003b655780359162004a698362003c62565b9262004a79604051948562003c3e565b808452602092838086019260051b82010192831162003b65578301905b82821062004aa5575050505090565b8135815290830190830162004a96565b81601f8201121562003b655780359162004acf8362003c62565b9262004adf604051948562003c3e565b808452602092838086019260051b82010192831162003b65578301905b82821062004b0b575050505090565b83809162004b198462003b6a565b81520191019062004afc565b81601f8201121562003b65578035906001600160401b03821162003b9b576040519262004b5d601f8401601f19166020018562003c3e565b8284526020838301011162003b6557816000926020809301838601378301015290565b9080601f8301121562003b655781359062004b9b8262003c62565b9262004bab604051948562003c3e565b828452602092838086019160051b8301019280841162003b6557848301915b84831062004bdb5750505050505090565b82356001600160401b03811162003b6557869162004bff8484809489010162004b25565b81520192019162004bca565b9080601f8301121562003b655781359062004c268262003c62565b9262004c36604051948562003c3e565b828452602092838086019160051b8301019280841162003b6557848301915b84831062004c665750505050505090565b82356001600160401b03811162003b6557869162004c8a8484809489010162004a4f565b81520192019162004c55565b9080601f8301121562003b655781359062004cb18262003c62565b9262004cc1604051948562003c3e565b828452602092838086019160051b8301019280841162003b6557848301915b84831062004cf15750505050505090565b82356001600160401b03811162003b6557869162004d158484809489010162004ab5565b81520192019162004ce0565b9190826040918161056052806105a052031262003b655760408051929083016001600160401b0381118482101762003b9b5760405262004d62839162003b6a565b83526105605160208101356106408190526001600160401b03811162003b65576105a051910190601f8201121562003b6557359162004da18362003c62565b62004db0604051918262003c3e565b83815260208101610500526105a0516106405161056051019060208660051b8301011162003b6557602090959392949501915b61064051610560510160208760051b82010184101562005917578335906001600160401b03821162003b65578181016106a0526060601f198383016105a05103011262003b65576040516105208190529160608301906001600160401b03821184831017620051715762004e5f92602092604052010162003b6a565b905260406106a0510135602281101562003b655761052051602001526106a05160608101356106808190526001600160401b031062003b65576105a051610120606083013583018203601f19011262003b65576040516106008190526001600160401b036101208201908111908211176200517157610120016040526001600160401b0360608301358301602001351162003b655762004f0f916060810135016020818101359091010162004a4f565b6106005152610680516106a051016040810135906001600160401b03821162003b6557602062004f46926105a05192010162004ab5565b6106005160200152610680516106a051016001600160401b0360608201351162003b65576105a05162004f829160608101350160200162004b80565b6106005160400152610680516106a051016080810135906001600160401b03821162003b6557602062004fbc926105a05192010162003c88565b6106005160600152610680516106a05101936001600160401b0360a08601351162003b65576105a051603f60a0870135870101121562003b65576200500b602060a08701358701013562003c62565b956200501b604051978862003c3e565b60a0860135808701602090810135808a526105a051610680516106a051938c01989493019092019160059190911b82016040011162003b6557604001945b610680516106a0510160a08901359081019089016020013560051b810160400187101562005186578635906001600160401b03821162003b655701906105a0519060e09182603f19858303011262003b6557604051908382016001600160401b0381118382101762005171576040908152850135906001600160401b03821162003b65576040620050ed9287010162004a4f565b8152606084013560208201526080840135604082015260a0840135606082015260c0926200511d84860162003c7a565b6080830152840135926001600160401b03841162003b65576200516161010060209662005155889760406105a0519184010162004b25565b60a08601520162003c7a565b9082015281520195019462005059565b60246000634e487b7160e01b81526041600452fd5b5050949793509450946080610600510152610680516106a0510160c08101356105e05260018060401b0360c08201351162003b65576105a0519060c08101350190603f8201121562003b6557620051ea6020620051f8920135806105c05262003c62565b604051806105405262003c3e565b610540516105c051905260206105405101610660526105a0516105c05160051b9060406105e051610680516106a0510101928301011162003b65576040016106c05292939092905b6105c05160051b6105e051610680516106a05101019060406106c05191830101811015620057865780356105808190526001600160401b031062003b6557610100603f19823584016105a05103011262003b6557604051610620819052916101008301916001600160401b03831184841017620051715760409283523501013590600682101562003b6557526060610580516105e051610680516106a05101010101356020610620510152610580516105e051610680516106a0510101019460018060401b0360808701351162003b65576105a051605f6080880135880101121562003b65576200534d6200533f604060808901358901013562003c62565b604051806106e05262003c3e565b6106e080516080880135808901604001359182905291516105a051610580516105e051610680516106a0516020959095019a96940101019091019160051b82016060011162003b6557606001945b610580516105e051610680516106a05101010160808901359081019089016040013560051b81016060018710156200566b578635906001600160401b03821162003b655701605f1960c081836105a05103011262003b655760405191620054028362003bb1565b606081013583526080810135600581101562003b6557602084015260a0810135600481101562003b6557604084015260c0810135603d81101562003b6557606084015260e08101356001600160401b03811162003b65576105a0516200546d91830160600162004a4f565b6080840152610100810135916001600160401b03831162003b655760c0908383016105a05103011262003b655760405191620054a98362003bb1565b818101606001356001600160401b03811162003b65576105a051620054d5918484010160600162004a4f565b8352818101608001356001600160401b03811162003b65576105a05162005503918484010160600162004ab5565b602084015281810160a001356001600160401b03811162003b65576105a05162005534918484010160600162004b80565b604084015281810160c001356001600160401b03811162003b65576105a05162005565918484010160600162004c0b565b60608401526001600160401b0382820160e001351162003b65576105a0516200559a9083830160e08101350160600162004c96565b60808401528181016101000135906001600160401b03821162003b65576105a05192010190607f8201121562003b6557606081013590620055db8262003c62565b91620055eb604051938462003c3e565b808352602083019160806105a0519260051b82010191821162003b655760808101925b82841062005635575050505060a0808301919091528201528152602095860195016200539b565b83356001600160401b03811162003b65576020916200565f839260806105a0519187010162004b80565b8152019301926200560e565b5050935093919094506106e051604061062051015260a0610580516105e051610680516106a05101010101356060610620510152610580516105e051610680516106a05101010160018060401b0360c08201351162003b65576105a051620056dc9160c08101350160400162004b25565b608061062051015260e06200570581610580516105e051610680516106a0510101010162003c7a565b60a06106205101526200572e610100610580516105e051610680516106a0510101010162003c7a565b60c061062051015262005757610120610580516105e051610680516106a0510101010162003c7a565b90610620510152610620516106605152602061066051016106605260206106c051016106c05290929362005240565b5050610540516106005160a00152610680516106a05193969495929301906001600160401b0360e08301351162003b65576105a0519560e0830135830196603f8801121562003b6557620057de602088013562003c62565b94620057ee604051968762003c3e565b6020888101358088526105a051610680516106a051938a0198930160e0880135019160051b82016040011162003b6557604001955b604060208b013560051b60e0880135610680516106a05101010101871015620058625760058735101562003b6557863581526020968701960162005823565b509592989450959250955060c0610600510152610680516106a051019061010091828101359060018060401b03821162003b65576020620058aa926105a05192010162004c0b565b6106005160e00152610680516106a05101916101208301356001600160401b03811162003b65576105a051602094620058e69201850162004c96565b9061060051015261060051604061052051015261052051610500515281610500510161050052019193949262004de3565b50945091602091500152565b90620041d0604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262005978815180926020868601910162003d6d565b810103602581018552018362003c3e565b90620041d06040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a206020830152620059cf815180926020868601910162003d6d565b810103602081018552018362003c3e565b6020620041d091939293604051948162005a04879351809286808701910162003d6d565b820162005a1a8251809386808501910162003d6d565b0103808552018362003c3e565b1562005a305750565b60405162461bcd60e51b81526020600482015290819062005a5690602483019062003d92565b0390fd5b6000198114620032295760010190565b80511562005a785760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562005a785760400190565b80516002101562005a785760600190565b805182101562005a785760209160051b010190565b9062005ad18262003c62565b60409062005ae28251918262003c3e565b838152809362005af5601f199162003c62565b019160005b83811062005b085750505050565b602090825162005b188162003bcd565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e083015282860101520162005afa565b81811062005b62575050565b6000815560010162005b56565b8054600082558062005b7f575050565b620041d09160005260206000209081019062005b56565b90600160401b811162003b9b5781549080835581811062005bb657505050565b620041d0926000526020600020918201910162005b56565b600160401b811162003b9b576202711b9081549080835581811062005bb657505050565b600160401b811162003b9b57620138889081549080835581811062005bb657505050565b62005c22815462004249565b908162005c2d575050565b81601f6000931160011462005c40575055565b8183526020832062005c5e91601f0160051c81019060010162005b56565b8160208120915555565b805490600081558162005c79575050565b6000526020600020908101905b81811062005c92575050565b8062005ca060019262005c16565b0162005c86565b90600160401b811162003b9b5781549181815582821062005cc757505050565b600052602060002091820191015b81811062005ce1575050565b8062005cef60019262005c16565b0162005cd5565b805490600081558162005d07575050565b6000526020600020908101905b81811062005d20575050565b8062005d2e60019262005b6f565b0162005d14565b90600160401b811162003b9b5781549181815582821062005d5557505050565b600052602060002091820191015b81811062005d6f575050565b8062005d7d60019262005b6f565b0162005d63565b805490600081558162005d95575050565b6000526020600020908101905b81811062005dae575050565b8062005dbc60019262005c68565b0162005da2565b90600160401b811162003b9b5781549181815582821062005de357505050565b600052602060002091820191015b81811062005dfd575050565b8062005e0b60019262005c68565b0162005df1565b805460008083558162005e2457505050565b600992828402928484040362005ec157815260208120918201915b82811062005e4d5750505050565b808285925582600182015562005e666002820162005b6f565b62005e746003820162005b6f565b62005e826004820162005b6f565b62005e906005820162005c68565b62005e9e6006820162005cf6565b62005eac6007820162005cf6565b62005eba6008820162005d84565b0162005e3f565b634e487b7160e01b82526011600452602482fd5b600160401b821162003b9b5780549082815581831062005ef457505050565b600992828402928484040362003229578084029084820403620032295760009182526020822092830192015b82811062005f2e5750505050565b808285925582600182015562005f476002820162005b6f565b62005f556003820162005b6f565b62005f636004820162005b6f565b62005f716005820162005c68565b62005f7f6006820162005cf6565b62005f8d6007820162005cf6565b62005f9b6008820162005d84565b0162005f20565b51600681101562003d035790565b90600681101562003d035760ff80198354169116179055565b9062005fd58162003db9565b60ff80198354169116179055565b9062005fef8162003cf8565b61ff0082549160081b169061ff001916179055565b90603d81101562003d035762ff000082549160101b169062ff00001916179055565b9190601f81116200603657505050565b620041d0926000526020600020906020601f840160051c8301931062006065575b601f0160051c019062005b56565b909150819062006057565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b8151600681101562003d0357620060cb908262005fb0565b602082015160018201556002810160408301516020815191620060ef838562005ed5565b019160005260206000206000925b828410620062375750505050606082015160038201556080820151805160048301916001600160401b03821162003b9b5762006146826200613f855462004249565b8562006026565b602090601f8311600114620061bf579282600593620041d097969360e096600092620061b3575b50508160011b916000199060031b1c19161790555b01916200619660a082015115158462006070565b620061a860c082015115158462006081565b015115159062006099565b0151905038806200616d565b90601f198316918460005260206000209260005b8181106200621e575093620041d097969360e09693600193836005981062006204575b505050811b01905562006182565b015160001960f88460031b161c19169055388080620061f6565b92936020600181928786015181550195019301620061d3565b805180518355600183016200625c6020830151620062558162003db9565b8262005fc9565b620062776040830151620062708162003cf8565b8262005fe3565b6060820151603d81101562003d0357620062919162006004565b608081015180519060028501906001600160401b03831162003b9b57602090620062bc848462005b96565b0190600052602060002060005b83811062006762575050505060a0015180518051906001600160401b03821162003b9b576020600386019162006300848462005b96565b0190600052602060002060005b8381106200674d575050505060208101518051906001600160401b03821162003b9b576020600486019162006343848462005b96565b0190600052602060002060005b8381106200672f5750505050600583016040820151602081519162006376838562005ca7565b019160005260206000206000925b8284106200663e57505050506006830160608201516020815191620063aa838562005d35565b019160005260206000206000925b828410620065da57505050506007830160808201516020815191620063de838562005d35565b019160005260206000206000925b8284106200656d575050505060a060088401910151602081519162006412838562005dc3565b01916000526020600020916000905b8282106200644157505050506009602060019201920193019290620060fd565b8051602081519162006454838862005ca7565b0190856000526020600020916000905b8282106200648357505050506001602081920194019101909262006421565b80518051906001600160401b03821162003b9b57620064a882620013e3885462004249565b602090601f8311600114620064f8579282600194936020938695600092620064ec575b5050600019600383901b1c191690841b1787555b0194019101909262006464565b015190503880620064cb565b908660005260206000209160005b601f198516811062006554575083602093600196938796938794601f198116106200653a575b505050811b018755620064df565b015160001960f88460031b161c191690553880806200652c565b9192602060018192868501518155019401920162006506565b80518051906001600160401b03821162003b9b5760209062006590838662005b96565b0183600052602060002060005b838110620065bc575050505060016020819201920193019290620063ec565b82516001600160a01b0316818301556020909201916001016200659d565b80518051906001600160401b03821162003b9b57602090620065fd838662005b96565b0183600052602060002060005b83811062006629575050505060016020819201920193019290620063b8565b6001906020845194019381840155016200660a565b80518051906001600160401b03821162003b9b576200666a8262006663865462004249565b8662006026565b602090601f8311600114620066ba579282600194936020938695600092620066ae575b5050600019600383901b1c191690841b1785555b0192019301929062006384565b0151905038806200668d565b908460005260206000209160005b601f198516811062006716575083602093600196938796938794601f19811610620066fc575b505050811b018555620066a1565b015160001960f88460031b161c19169055388080620066ee565b91926020600181928685015181550194019201620066c8565b82516001600160a01b03168183015560209092019160010162006350565b6001906020845194019381840155016200630d565b600190602084519401938184015501620062c9565b90620067838262003c62565b62006792604051918262003c3e565b8281528092620067a5601f199162003c62565b0190602036910137565b62013883805482101562005a78576000526006602060002091020190600090565b62027116805482101562005a78576000526006602060002091020190600090565b62013882805482101562005a78576000526006602060002091020190600090565b62027115805482101562005a78576000526006602060002091020190600090565b620138828054600160401b81101562003b9b576200685791600182019055620067f1565b9190916200686a57620041d091620060b3565b634e487b7160e01b600052600060045260246000fd5b620138838054600160401b81101562003b9b576200685791600182019055620067af565b620271168054600160401b81101562003b9b576200685791600182019055620067d0565b620271158054600160401b81101562003b9b57620068579160018201905562006812565b15620068f457565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b61271081101562005a78576200350581620017676002620069809460031b01549162006b44565b90565b81156200698e570490565b634e487b7160e01b600052601260045260246000fd5b908115620069d1576064620069bd818402938462006983565b03620069c95760019190565b600091508190565b60019150600090565b91908215620069f257620069bd818402938462006983565b5060019150600090565b62013886805482101562005a785760005260206000200190600090565b62013881805482101562005a785760005260206000200190600090565b6202711d805482101562005a785760005260206000200190600090565b6201388a805482101562005a785760005260206000200190600090565b62027119805482101562005a785760005260206000200190600090565b6202711b805482101562005a785760005260206000200190600090565b62013888805482101562005a785760005260206000200190600090565b805482101562005a785760005260206000200190600090565b1562006ae857565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b612710811015908162005a7857600390811b906004928383019182549260009582879601935b85871062006b7c575050505050505090565b97969091929394959762006bde5762006bd28862006bca62006ba46200046b9a9b8762006ac7565b905490881b1c6001600160a01b0316600090815260208990526040812054909462006c06565b999062006ae0565b95949392919062006b6a565b603282634e487b7160e01b6000525260246000fd5b9060018201918210620069c95760019190565b91908201918210620069c95760019190565b6201388b5462006c2b6200353b62012d29565b91905062006c3862012ded565b5060009081925b81841062006c5a575b62006c5593500462006c94565b905090565b9160ff60078560031b0154161562006c8d5783620035d862006c8692620035d16200046b969762006959565b9262006c3f565b9162006c48565b90801562006cac5762006ca79162006983565b600191565b5050600090600090565b6201388180549190600160401b83101562003b9b578262006ce1916001620041d09501905562006a19565b9080546001600160a01b0360039390931b83811b80199092169390941690931b909216179055565b6040519062006d188262003bea565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b600091825b6020808401908151805187101562006ed5578162006d678862006d6f9362005ab0565b5101620074c6565b6022928382101562003d0357601a91820362006e2d578762006d92915162005ab0565b5192828401519081101562003d03570362006deb57509362006ddc62006de49262006dd462006dcd60e060406200046b9a0151015162005a6a565b5162005a6a565b519062006c06565b9590620074d4565b9262006d44565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b9291905062006e468162006d6789869a979a5162005ab0565b8281101562003d035760140362006e7f5750509062006ddc6200046b95620035d162006e788462006de4965162005ab0565b5162007521565b62006e919062006d6785855162005ab0565b9081101562003d035760151462006eaf575b5062006de49062005a5a565b9062006ddc62006ece95620035d162006e788462006de4965162005ab0565b9062006ea3565b50505090925080341060001462006f4b5760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007321575b5062027129805460ff811662006f6a8162003cf8565b6001810362006fa0575050508062006f9062006f8a62006f9693620075c8565b620075dd565b62007667565b6200698062006d09565b62006fab8162003cf8565b60028114808062007313575b156200709c575050505062006fcc81620075c8565b156200705d5762006fdd81620075c8565b15620070215762006fee9062007667565b60405162006ffc8162003bea565b60158152742a3432903b37ba329034b99032bc32b1baba32b21760591b602082015290565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b620070a78262003cf8565b6003821491828062007305575b1562007192575050505050620070ca81620075c8565b1562007142578062006f9062006f8a620070e493620075c8565b604051620070f28162003c22565b603a81527f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b604082015290565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b6200719d8162003cf8565b8180620072f6575b80620072e8575b15620071d657505050509062006f9691600360ff1982541617905562006f9062006f8a82620075c8565b620071e18162003cf8565b8215620072d3575b505080620072c4575b6200722b57505050604051620072088162003bea565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b60ff191660011790556200723f81620075c8565b1562007259578062006f9062006f8a62006f9693620075c8565b60405162461bcd60e51b815260206004820152603e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201527f76616c696420657865637574652070656e64696e672070726f6772616d2e00006064820152608490fd5b506202712854421015620071f2565b620072e091925062003cf8565b3880620071e9565b5062027128544210620071ac565b506202712754421015620071a5565b5062027128544210620070b4565b506202712754421062006fb7565b60018060a01b0390818351166000526201388590816020526040600020541562007418575b620073529034620074ac565b9015620073d4576200737590838551166000528260205260406000205462006c06565b92901562007393578351166000526020526040600020553862006f54565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b6000908162013886928354915b82811062007471575b50156200743f575b50905062007346565b85518516600160401b82101562003b9b5762006ce182620073529560016200746a95019055620069fc565b3862007436565b866200747d82620069fc565b919054818b51169260031b1c1614620074a1576200749b9062005a5a565b62007425565b50506001386200742e565b9190828111620074bd576001920390565b50600091508190565b51602281101562003d035790565b15620074dc57565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b6000805b604083019060e06200753b818451015162005a8e565b5151841015620075c057620075608462007559838651015162005a8e565b5162005ab0565b51925101519283516002101562005a7857620075af620075a9620075b793620075a1604096620075998660606200046b9b015162005ab0565b5190620069da565b9290620074d4565b62006c06565b9490620074d4565b91905062007525565b509250505090565b602001515115620075d857600190565b600090565b15620075e557565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200767281620109d7565b516201045157600681101562003d035760038114620103f85780620076cf5760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b6004810362009b6b5750906000905b6020830151805183101562009b655782620076f99162005ab0565b516020810180516022908181101562003d03571562009b225781518181101562003d0357600103620079485750506040809101906200773e6101008351015162005a6a565b51926200776060e062007755818651015162005a6a565b519451015162005a8e565b519562007771855185511462011c60565b62007780855188511462011cc6565b60005b8551811015620078c65762007799818662005ab0565b51612710908181101562005a7857600160ff6007620077c19360031b01541615151462011d28565b620077cd828a62005ab0565b51620077da838862005ab0565b51908282101562005a78576006620077f89260031b01549062006c06565b9062007805848962005ab0565b51918383101562005a78576006620078229360031b015562011d80565b6200782e828a62005ab0565b51906200783c838862005ab0565b518181101562005a78576001600160a01b0393926200787c916003908662007865878e62005ab0565b5116600052811b0160205287600020549062006c06565b62007888848a62005ab0565b519283101562005a785760036200046b93620078c096620078aa878e62005ab0565b5116600052811b01602052876000205562011ddf565b62007783565b509392620078e391929650620078dc9062012c2b565b9262012b0f565b945192620078f18462003c06565b60008452600036813760005b83518110156200792b57806200046b6200791c62007925938762005ab0565b51878a620126f5565b620078fd565b50945092602092506200793f915062005a5a565b919050620076de565b819592939495518181101562003d035760020362007cdc5750506040809201908151938385015191620079a06200798460e08098015162005a6a565b519662007995818751015162005a8e565b519551015162005a9f565b5194835187510362007c8957835185510362007c3557835186510362007bde575060005b865181101562007bc857620079da818862005ab0565b5161271081101562005a7857620079fd60ff6007809360031b0154161562011e38565b62007a09828962005ab0565b5161271081101562005a785760031b01805460ff1916600117905562007a30818562005ab0565b5162007a3d828962005ab0565b519061271082101562005a78578051906001600160401b03821162003b9b5762007a808262007a7360058660031b015462004249565b60058660031b0162006026565b602090601f831160011462007b4d57600592916000918362007b41575b50508160011b916000199060031b1c1916179160031b01555b62007ac2818662005ab0565b5162007acf828962005ab0565b5161271081101562005a785760031b6001015562007aee818762005ab0565b5162007afb828962005ab0565b5161271081101562005a785760031b6002015562007b1a818862005ab0565b519061271082101562005a78576000600662007b3b9360031b015562005a5a565b620079c4565b01519050388062007a9d565b9060058460031b0160005260206000209160005b601f198516811062007baf5750918391600193600595601f1981161062007b95575b505050811b019160031b015562007ab6565b015160001960f88460031b161c1916905538808062007b83565b9192602060018192868501518155019401920162007b61565b509591509350602092506200793f915062005a5a565b5162461bcd60e51b815260206004820152603c6024820152600080516020620133bc83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b81526020600482015260396024820152600080516020620133bc8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b81526020600482015260386024820152600080516020620133bc8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b8195929395518181101562003d0357600303620082d3575050604084019062007d0b6101008351015162005a6a565b519362007d2260e062007755818651015162005a6a565b519362007d3786518551146200046462012e52565b62007d4a86518651146200046462012e52565b60005b865181101562007db35762007d63818662005ab0565b519061271082101562005a7857600362007dad9260018060a01b038b5116600052811b016020526200046b60406000205462007da0838a62005ab0565b5111156200046462012f56565b62007d4d565b50909493919460005b855181101562007ee75762007dd2818662005ab0565b51906127108083101562005a7857600360018060a01b0393848c5116600052811b0160205262007e1560406000205462007e0d848962005ab0565b5190620074ac565b9062007e22848a62005ab0565b51918383101562005a7857600362007e5193878f5116600052811b016020526040600020556200046462012f56565b62007e5d828862005ab0565b518181101562005a78576003908462007e77858c62005ab0565b5116600052811b0160205262007e9860406000205462006dd4848962005ab0565b62007ea4848a62005ab0565b519283101562005a785760036200046b9362007ee19662007ec6878e62005ab0565b5116600052811b016020526040600020556200046462012fbb565b62007dbc565b5091509162007efe62007f05919695949662012c2b565b9562012b0f565b926040519462007f158662003bea565b6001865260203681880137516001600160a01b031662007f358662005a6a565b526000905b8651821015620082be5762007f50828862005ab0565b516101005262007f61855162006777565b9660009462007f71885162006777565b610260528594865b885181101562008048578a8962007fa96001600160a01b0362007f9d858462005ab0565b511661010051620129f8565b158062008002575b62007fca575b505062007fc49062005a5a565b62007f79565b9862007ff79162000b1382859c62007fee62007fc49760018060a01b039262005ab0565b51169262005ab0565b9790508a8962007fb7565b50505061271061010051101562005a78576001600160a01b0362008027828b62005ab0565b5116600052600361010051811b016020528a89604060002054151562007fb1565b509098949897969291939760005b8851811015620080ea5761271061010051101562005a78576001600160a01b0362008082828b62005ab0565b5116600052600361010051811b0160205260406000205415620080b1575b620080ab9062005a5a565b62008056565b99620080ab90620080e1906001600160a01b03620080d08e8d62005ab0565b511662000b13826102605162005ab0565b9a9050620080a0565b50985096949392919561010051612710811015806102005262005a785760031b6004015496620081256200811f878a620118f8565b62006777565b996000998a60c0525b6102005162005a785760c0518a811015620081df57620081626200817f9160006102005260046101005160031b0162006ac7565b90546102605160039290921b1c6001600160a01b03169062012aba565b156200819c575b6200819360c05162005a5a565b60c0526200812e565b99808c62000b13620081d893620081bf60c05160046101005160031b0162006ac7565b905460039190911b1c6001600160a01b03169262005ab0565b9962008186565b509a939794969299919850946000915b8383106200828457505050506102005162005a78578051906001600160401b03821162003b9b576020906200822e8360046101005160031b0162005b96565b0160046101005160031b01600052602060002060005b8381106200826657505050506200825b9062005a5a565b909295919562007f3a565b82516001600160a01b03168183015560209092019160010162008244565b620082b790620082b0906001600160a01b03620082a2868662005ab0565b511662000b13828962005ab0565b9262005a5a565b91620081ef565b919450506200793f9194506020925062005a5a565b819593949295518181101562003d03576004036200855c5750506040809201610100946200831562008309878451015162005a6a565b51968351015162005a8e565b51946200832c60e062007755818651015162005a6a565b51936200834188518851146200046462012e52565b6200835488518551146200046462012e52565b6200836788518651146200046462012e52565b60005b8851811015620083cf5762008380818662005ab0565b519061271082101562005a7857620083c9916003906001600160a01b03620083a9848e62005ab0565b5116600052811b016020526200046b886000205462007da0838a62005ab0565b6200836a565b50909691959294939660005b83518110156200851057620083f1818862005ab0565b5190612710918281101562005a78576001600160a01b03906003908262008419858a62005ab0565b5116600052811b016020526200843a8b62007e0d848b600020549262005ab0565b9062008447848c62005ab0565b51918583101562005a7857600362008480938562008466888d62005ab0565b5116600052811b016020528a600020556200046462012f56565b6200848c828a62005ab0565b518381101562005a785760039082620084a6858b62005ab0565b5116600052811b01602052620084c78b62006dd4848b600020549262005ab0565b919050620084d6838b62005ab0565b519384101562005a78576200850a93600391620084f4858b62005ab0565b5116600052811b01602052876000205562005a5a565b620083db565b50946200853392975062007efe919394506200852c9062012c2b565b9362012b0f565b9260005b83518110156200792b57806200046b6200791c62008556938762005ab0565b62008537565b819594939551908082101562003d03576005918203620087725750505060409182850190620085a060e062008595818551015162005a6a565b519351015162005a8e565b51928251845103620087215760005b83518110156200860757620085c5818562005ab0565b519061271082101562005a78576003620086019260018060a01b038b5116600052811b016020526200046b876000205462007da0838962005ab0565b620085af565b509092919260005b8451811015620086a25762008625818662005ab0565b51906127108083101562005a7857600360018060a01b0393848c5116600052811b016020526200865f886000205462007e0d848962005ab0565b6200866b848a62005ab0565b519283101562005a785760036200046b936200869c968e5116600052811b0160205289600020556200046462012f56565b6200860f565b50959392620086b391925062012c2b565b91805193620086c28562003bea565b6001855260203681870137516001600160a01b0316620086e28562005a6a565b525194620086f08662003c06565b60008652600036813760005b83518110156200792b57806200046b6200791c6200871b938762005ab0565b620086fc565b845162461bcd60e51b815260206004820152603560248201526000805160206201339c833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969496518181101562003d0357600603620089db575050506040809201620087a16101008251015162005a6a565b5194620087b860e062008595818551015162005a6a565b519286518351036200898a5786518451036200893e5760005b87518110156200883657620087e7818562005ab0565b519061271082101562005a785762008830916003906001600160a01b0362008810848d62005ab0565b5116600052811b016020526200046b876000205462007da0838962005ab0565b620087d1565b509092919260005b8751811015620088ea5762008854818662005ab0565b516127108082101562005a78576001600160a01b039291600390846200887b858e62005ab0565b5116600052811b016020526200889b886000205462007e0d848962005ab0565b620088a7848a62005ab0565b519283101562005a785760036200046b93620088e496620088ca8f889062005ab0565b5116600052811b0160205289600020556200046462012f56565b6200883e565b509592620088ff919250620078dc9062012c2b565b9251946200890d8662003c06565b60008652600036813760005b83518110156200792b57806200046b6200791c62008938938762005ab0565b62008919565b845162461bcd60e51b815260206004820152603060248201526000805160206201343c83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b815260206004820152603560248201526000805160206201333c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b8296949396518181101562003d035760070362008c4857505050604090939193019062008a0e6101008351015162005a6a565b5193604062008a2260e08551015162005a6a565b51935101519162008a3b86518551146200046462012e52565b6000915b865183101562008c33576001600160a01b0362008a5d848962005ab0565b511660005262013880928360205262008a8360ff60406000205416156200046462012f23565b62008a8f818662005ab0565b5162008a9c828862005ab0565b51906040519562008aad8762003b7f565b600187526000602088019081526040880192835260608801939093526001600160a01b0362008add858d62005ab0565b511660005260205262008b0860406000209262008afe885115158562006070565b5115158362006081565b5180519095906001600160401b03811162003b9b5762008b3b8162008b31600186015462004249565b6001860162006026565b602096601f821160011462008bb357918160609262008b9f97989960029560009262008ba7575b50508160011b916000199060031b1c19161760018501555b01519101556200046b6001600160a01b0362008b97838b62005ab0565b511662006cb6565b919062008a3f565b01519050388062008b62565b966001840160005260206000209760005b601f198416811062008c1a57508262008b9f97989960029593600193606096601f1981161062008c00575b505050811b01600185015562008b7a565b015160001960f88460031b161c1916905538808062008bef565b818301518a556001909901986020928301920162008bc4565b9550939050602092506200793f915062005a5a565b829694959651928184101562003d0357600893840362008d2c575050506101009262008c7c84604080950151015162005a6a565b519460005b865181101562007bc85762008d2690876001600160a01b038062008ca6848462005ab0565b511660005262008cfd888262008ce18662013880968760205262008cdb600160ff809760002054161515146200046462012e82565b62005ab0565b5116600052836020528960002054891c16156200046462012eea565b62008d09838b62005ab0565b5116600052602052856000208761ff001982541617905562005a5a565b62008c81565b8095939495518281101562003d035760090362008e1b5750505062008d5b610100604080950151015162005a6a565b519360005b855181101562008e065762008e0090866001600160a01b038062008d85848462005ab0565b511660005262008dd96001898362008dbb8762013880978860205262008cdb8660ff809760002054161515146200046462012e82565b5116600052846020528a600020548a1c161515146200046462012eb5565b62008de5838a62005ab0565b51166000526020528560002061ff0019815416905562005a5a565b62008d60565b5094909350602092506200793f915062005a5a565b80969593949296518281101562003d0357600f0362008f565750505060400160a09182825101519360005b855181101562007bc85760e062008e6282878751015162005ab0565b5101511562008eed5762008e8662008e7f82878751015162005ab0565b5162006833565b620138828054600019929190838101908111620032295762008ea98a91620067f1565b5001805461ff0019166101001790555491820191821162003229578762008ed462008ee793620067f1565b5001805460ff1916600117905562005a5a565b62008e46565b62008f0862008f0182878751015162005ab0565b5162006880565b620138828054600019929190838101908111620032295762008f2b8a91620067af565b5001805461ff0019166101001790555491820191821162003229578762008ed462008ee793620067af565b80518281101562003d0357600c036200907a5750505060400160a09182825101519360005b855181101562007bc85760e062008f9782878751015162005ab0565b51015115620090185762008fb462008e7f82878751015162005ab0565b620138828054600019929190838101908111620032295762008fd78a91620067f1565b5001805461ff00191661010017905554918201918211620032295787620090026200901293620067f1565b5001805460ff1916905562005a5a565b62008f7b565b6200902c62008f0182878751015162005ab0565b62013882805460001992919083810190811162003229576200904f8a91620067af565b5001805461ff00191661010017905554918201918211620032295787620090026200901293620067af565b8097969593929497518281101562003d0357600d03620091d4575050604001946060620090ac60e08851015162005a6a565b519651015191620090c187518451146201199f565b60005b8751811015620091be578080878a620090e26200915f958962005ab0565b51156200916557620091436200912a848362009115620091086200914e98889762005ab0565b5162013882541162011a28565b62008cdb8d620091316200912a858562005ab0565b51620067f1565b509060ff9889920154901c1662011a80565b500154161562011ae1565b8662008ed46200912a838c62005ab0565b620090c4565b62009143620091a684836200919162009184620091ad98889762005ab0565b5162013883541162011a28565b62008cdb8d62009131620091a6858562005ab0565b51620067af565b8662008ed4620091a6838c62005ab0565b509550939050602092506200793f915062005a5a565b8097949397518281101562003d0357600e03620092bb5750506040019160606200920360e08551015162005a6a565b5193510151956200921884518851146201199f565b60005b8451811015620091be57806200923662009242928a62005ab0565b51620092485762005a5a565b6200921b565b6200926562009258828862005ab0565b5162013882541162011b42565b620092aa876200928f6200927e6200912a858b62005ab0565b5060ff9283910154891c1662011b9b565b88620092a06200912a858b62005ab0565b5001541662011bfd565b86620090026200912a838962005ab0565b91939450915080518281101562003d03576010036200935f5750506040015190620092ef60e060c084015193015162005a6a565b51936200930483518651146200046462012e52565b60005b83518110156200934c57806200046b6200932662009346938762005ab0565b51620093328162003db9565b6200933e838a62005ab0565b519062011906565b62009307565b50935091602091506200793f9062005a5a565b80949394518281101562003d0357601a036200949e5750506200938b60e0604080930151015162005a6a565b5160038151036200945b57620093a18162005a6a565b5191620093ba620093b28362005a8e565b519262005a9f565b5191620094215750916200793f916001602094146000146200941a57620093f990620093ec6201388d91825462006c06565b9091556200046462012ded565b6200046b6201388e6200940d815462006bf3565b9091556200046462012e27565b5062005a5a565b5162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b815162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b80949394518281101562003d0357601b036200991d57505050620094d96201388b546200354d620094ce62012d29565b612710831062005a27565b5050620094e562012ded565b506000805b6127108110620098b8575b50506200950162006c18565b90620095116202712a5462006777565b9060009384905b612710821015620098ad578160031b9260ff6007850154161562009669576000976002850154156200965757889798975b62005a785760048501548810156200963d576200956a886004870162006ac7565b9054600391821b1c6001600160a01b0316600081815291870160205260409182902054919a916200959d908a90620069da565b9b90620095a962012ded565b620095b49162005a27565b60009b6002890154620095c791620069da565b90620095d262012ded565b620095dd9162005a27565b828d5262013887602052818d205490620095f79162006c06565b90918d20556200960662012ded565b620096119162005a27565b6200961d828962005ab0565b52620096299062005a5a565b97620096359062005a5a565b979862009549565b929093506200964e91965062005a5a565b90959462009518565b929093506200964e9196975062005a5a565b959392509350505b6200967c8262006777565b91600091825b82811062009817575050506201388890815492620096a56200811f8584620118f8565b9360009081905b808210620097dc57505060005b838110620097385750508351939150506001600160401b03831162003b9b57602090620096e68462005bf2565b0190600052602060002060005b8381106200971a57505050506200793f60209160006201388d5560006201388e5562005a5a565b82516001600160a01b031681830155602090920191600101620096f3565b6000805b83811062009794575b50156200975e575b620097589062005a5a565b620096b9565b9062009758906200978b906001600160a01b036200977d858762005ab0565b511662000b13828a62005ab0565b9190506200974d565b6001600160a01b0380620097a9858862005ab0565b511690620097b8838b62005ab0565b511614620097d157620097cb9062005a5a565b6200973c565b505060013862009745565b9091620082b06200981091620097f28562006aaa565b905460039190911b1c6001600160a01b031662000b13828b62005ab0565b90620096ac565b6000805b85811062009865575b50156200983d575b620098379062005a5a565b62009682565b9262009837906200985c906001600160a01b03620082a2878662005ab0565b9390506200982c565b6001600160a01b03806200987a858762005ab0565b51169062009889838a62005ab0565b511614620098a2576200989c9062005a5a565b6200981b565b505060013862009824565b935050929062009671565b8060031b9060ff60078301541615620099165762009904620075a96200046b94620098f862009910956002620098ee8762006959565b91015490620069da565b92906200046462012ded565b93906200046462012ded565b620094ea565b50620094f5565b80518281101562003d035760140362009abd575050604080910190620099496101008351015162005a6a565b51926200996060e062007755818651015162005a6a565b519562009971855185511462011c60565b62009980855188511462011cc6565b60005b855181101562009a685762009999818962005ab0565b51620099a6828762005ab0565b51612710918282101562005a78576006620099c79260031b01549062006c06565b90620099d4848962005ab0565b51918383101562005a78576006620099f19360031b015562011d80565b620099fd828a62005ab0565b519062009a0b838862005ab0565b518181101562005a78576001600160a01b03939262009a34916003908662007865878e62005ab0565b62009a40848a62005ab0565b519283101562005a785760036200046b9362009a6296620078aa878e62005ab0565b62009983565b50939262009a7e91929650620078dc9062012c2b565b94519262009a8c8462003c06565b60008452600036813760005b83518110156200792b57806200046b6200791c62009ab7938762005ab0565b62009a98565b939293519081101562003d035760150362009ae4576020916200046b6200793f9262011e84565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b6002810362009b8f5760405162461bcd60e51b81528062005a56600482016200761c565b60011462009b9a5750565b9062009baa620138835462005ac5565b805190600160401b821162003b9b5762027116548262027116558083106201037c575b506020016202711660005260206000206000915b8383106201035b575050505060005b620138835481101562009c2a57806200046b62009c1162009c2493620067af565b5062009c1d83620067d0565b906201090c565b62009bf0565b5062009c3a620138825462005ac5565b805190600160401b821162003b9b576202711554826202711555808310620102be575b506020016202711560005260206000206000915b8383106201029d575050505060005b620138825481101562009cb357806200046b62009ca162009cad93620067f1565b5062009c1d8362006812565b62009c80565b5060005b6127108110158062009e7f57600160ff6201389a8460031b01541615151462009ced575b5062009ce79062005a5a565b62009cb7565b916000835b62005a7857620138978360031b015481101562009d5f5762009d569293506000928162009d298593620138978860031b0162006ac7565b9054600391821b1c6001600160a01b031660009081529087901b6201389601602052604081205562005a5a565b90939262009cf2565b50916040519062009d708262003c06565b6000825262005a78578051906001600160401b03821162003b9b5760209062009da283620138978660031b0162005b96565b01620138978360031b01600052602060002060005b83811062009e615750505050600381901b6201389a8101805460ff1916905560006201389382018190556201389482018190556201389582015562013898015462009ce7919062009e089062004249565b601f9081811162009e35575b50506000620138988260031b01556000620138998260031b01559062009cdb565b62009e5991620138988460031b016000526020600020910160051c81019062005b56565b388062009e14565b82516001600160a01b03168183015560209092019160010162009db7565b505060005b612710811062010208575060005b620138815481101562009eef578062009eaf62009ee99262006a19565b60018060a01b0391549060031b1c1660005262027113602052600060026040822082815562009ee16001820162005c16565b015562005a5a565b62009e92565b5062009eff620138815462006777565b8051906001600160401b03821162003b9b57600160401b821162003b9b576020906202711454836202711455808410620101e5575b500162027114600052602060002060005b838110620101c7575050505060005b620138815481101562009fc95762009f6c8162006a19565b9054620271145460039290921b1c6001600160a01b0316919081101562005a785762027114600052600080516020620133dc833981519152810180546001600160a01b03191690921790915562009fc39062005a5a565b62009f54565b509060005b62013881548110156200a08b578062009feb6200a0409262006a19565b9060018060a01b03918291549060031b1c1660005262013880602052604080600020916200a0198462006a19565b90549060031b1c1660005262027113602052600020908082036200a046575b505062005a5a565b62009fce565b600280916200a06c60ff6200a05f818454168762006070565b825460081c168562006081565b6200a07e600182016001860162010592565b015491015538806200a038565b5060005b6202711d548110156200a0df57806200a0ac6200a0d99262006a36565b60018060a01b0391549060031b1c166000526202711c6020526200046b6040600020606481019062005b56565b6200a08f565b506200a0ef6201388a5462006777565b8051906001600160401b03821162003b9b57600160401b821162003b9b576020906202711d54836202711d55808410620101a4575b50016202711d600052602060002060005b83811062010186575050505060005b6201388a548110156200a18857806200046b6200a1656200a1829362006a53565b905460039190911b1c6001600160a01b031662006ce18362006a36565b6200a144565b5060005b6201388a548110156200a21657806200a1a96200a1fd9262006a53565b9060018060a01b03918291549060031b1c1660005262013889602052604080600020916200a1d78462006a53565b90549060031b1c166000526202711c602052600020908082036200a20357505062005a5a565b6200a18c565b6200a20e91620109a0565b38806200a038565b506201388b546202711e556201388c546202711f556201388d5462027120556201388e5462027121556201388f546001600160401b03811162003b9b57600160401b811162003b9b57620271225481620271225580821062010157575b506202712260009081527f846ab89c81ea9339188216a1864da1a19ebe28d411cbec99efa70ca6d389710d80546000805160206201335c83398151915291905b848410620101355750505050506201389054600160401b811162003b9b576202712354816202712355808210620100f2575b506202712360009081526000805160206201337c8339815191527f7f73709277f72a9bc7b284375e83603a53394744e9fa86da811e86c2aa78e05e5b838310620100d457505062013891549150506001600160401b03811162003b9b57600160401b811162003b9b576202712454816202712455808210620100a5575b506202712460009081527f8f332db73d3937798ea82422156d059730b0b3058606439b57b7ae623e9453668054600080516020620133fc83398151915291905b8484106201008357505050505060ff6201389254161515620271259060ff8019835416911617905560005b62027119548110156200a41957806200a3ea6200a4139262006a70565b905460039190911b1c6001600160a01b0316600090815262027118602052604081205562005a5a565b6200a3cd565b506200a429620138865462006777565b8051906001600160401b03821162003b9b57600160401b821162003b9b57602090620271195483620271195580841062010060575b500162027119600052602060002060005b83811062010042575050505060005b62013886548110156200a4c257806200046b6200a49f6200a4bc93620069fc565b905460039190911b1c6001600160a01b031662006ce18362006a70565b6200a47e565b5060005b62013886548110156200a53457806200a4e36200a52e92620069fc565b9060018060a01b03918291549060031b1c166000526201388560205260408060002054916200a51284620069fc565b90549060031b1c16600052620271186020526000205562005a5a565b6200a4c6565b5060005b6202711b548110156200a58457806200a5556200a57e9262006a8d565b905460039190911b1c6001600160a01b031660009081526202711a602052604081205562005a5a565b6200a538565b506200a594620138885462006777565b8051906001600160401b03821162003b9b576020906200a5b48362005bce565b016202711b600052602060002060005b83811062010024575050505060005b62013888548110156200a61757806200046b6200a5f46200a6119362006aaa565b905460039190911b1c6001600160a01b031662006ce18362006a8d565b6200a5d3565b5060005b62013888548110156200a68957806200a6386200a6839262006aaa565b9060018060a01b03918291549060031b1c166000526201388760205260408060002054916200a6678462006aaa565b90549060031b1c166000526202711a6020526000205562005a5a565b6200a61b565b50906000905b602083015180518310156200e52e57826200a6aa9162005ab0565b516020810151602281101562003d03571562009b22576020810151602281101562003d03576001036200ac8957604001906200a6ec6101008351015162005a6a565b51936200a70360e062007755818651015162005a6a565b51916200a714865185511462011c60565b6200a723865184511462011cc6565b60005b86518110156200a886576200a73c818662005ab0565b5161271081101562005a7857600160ff6201389a6200a7649360031b01541615151462011d28565b6200a770818562005ab0565b516200a77d828762005ab0565b519061271082101562005a7857620138996200a79f9260031b01549062006c06565b906200a7ac838862005ab0565b519161271083101562005a7857620138996200a7cd9360031b015562011d80565b6200a7d9818562005ab0565b516200a7e6828762005ab0565b519061271082101562005a78576200a82a9162013896906001600160a01b036200a811868d62005ab0565b511660005260031b016020526040600020549062006c06565b91906200a838828862005ab0565b519061271082101562005a78576200a880936200046b9262013896906001600160a01b036200a868878f62005ab0565b511660005260031b0160205260406000205562011ddf565b6200a726565b50926200a89d9192506200852c9095949562012c2b565b916040516200a8ac8162003c06565b6000815260003681376000945b80518610156200ac6f576200a8cf868262005ab0565b51610600526200a8e0855162006777565b966000946200a8f0845162006777565b6103805260009460005b88518110156200a9c3578a896200a92a6001600160a01b036200a91e858462005ab0565b51166106005162012a61565b15806200a97a575b6200a94b575b50506200a9459062005a5a565b6200a8fa565b986200a96f9162000b1382859c62007fee6200a9459760018060a01b039262005ab0565b9790508a896200a938565b50505061271061060051101562005a78576001600160a01b036200a99f828b62005ab0565b5116600052620138966106005160031b016020528a8960406000205415156200a932565b50909895979498969291939660005b88518110156200aa625761271061060051101562005a78576001600160a01b03806200a9ff838c62005ab0565b5116600052620138966106005160031b01602052604060002054156200aa32575b506200aa2c9062005a5a565b6200a9d2565b819b6200aa5a916200aa496200aa2c948d62005ab0565b511662000b13826103805162005ab0565b9a906200aa20565b5098509695929190939661060051612710811015806101205262005a785760031b620138970154986200aa9a6200811f898c620118f8565b610580526000610540526000610400525b6101205162005a7857610400518a8110156200ab76576200aae26200ab0291600061012052620138976106005160031b0162006ac7565b9054610380516001600160a01b03939260031b9190911c83169062012aba565b156200ab22575b506200ab186104005162005a5a565b610400526200aaab565b6000610120526200ab4261040051620138976106005160031b0162006ac7565b90549060031b1c166200ab5c610540516105805162005ab0565b526200ab6b6105405162005a5a565b61054052386200ab09565b50979294959093985095909560005b8281106200ac23575050506101205162005a785761058051516001600160401b03811162003b9b576200abc481620138976106005160031b0162005b96565b60206105805101620138976106005160031b01600052602060002060005b8381106200ac0557505050506200abf99062005a5a565b9492959091956200a8b9565b82516001600160a01b0316818301556020909201916001016200abe2565b6200ac69906001600160a01b036200ac3c828562005ab0565b51166200ac50610540516105805162005ab0565b526200ac5f6105405162005a5a565b6105405262005a5a565b6200ab85565b5050939092506200ac81915062005a5a565b90916200a68f565b906020829493940151602281101562003d03576002036200af165760408092019081519383850151916200acc66200798460e08098015162005a6a565b5194835187510362007c8957835185510362007c3557835186510362007bde575060005b86518110156200af03576200ad00818862005ab0565b5161271081101562005a785760ff6201389a6200ad249260031b0154161562011e38565b6200ad30818862005ab0565b5161271081101562005a785760031b6201389a01805460ff191660011790556200ad5b818562005ab0565b516200ad68828962005ab0565b519061271082101562005a78578051906001600160401b03821162003b9b576200adaf826200ada0620138988660031b015462004249565b620138988660031b0162006026565b602090601f83116001146200ae8457620138989291600091836200ae78575b50508160011b916000199060031b1c1916179160031b01555b6200adf3818662005ab0565b516200ae00828962005ab0565b5161271081101562005a785760031b6201389401556200ae21818762005ab0565b516200ae2e828962005ab0565b5161271081101562005a785760031b6201389501556200ae4f818862005ab0565b519061271082101562005a78576000620138996200ae729360031b015562005a5a565b6200acea565b0151905038806200adce565b90620138988460031b0160005260206000209160005b601f19851681106200aeea57509183916001936201389895601f198116106200aed0575b505050811b019160031b01556200ade7565b015160001960f88460031b161c191690553880806200aebe565b919260206001819286850151815501940192016200ae9a565b509592509350506200ac81915062005a5a565b9092916020840151602281101562003d03576003036200b5445760408401906200af466101008351015162005a6a565b51906200af5d60e062007755818651015162005a6a565b51936200af7283518551146200046462012e52565b6200af8583518651146200046462012e52565b60005b83518110156200afe4576200af9e818662005ab0565b519061271082101562005a7857620138966200afde9260018060a01b038b511660005260031b016020526200046b60406000205462007da0838a62005ab0565b6200af88565b509095919560005b87518110156200b136576200b002818662005ab0565b5161271081101562005a7857620138969060018060a01b0386511660005260031b016020526200b03d60406000205462007e0d838962005ab0565b906200b04a838862005ab0565b519161271083101562005a7857620138966200b0849360018060a01b0389511660005260031b016020526040600020556200046462012f56565b6200b090818662005ab0565b5161271081101562005a785762013896906001600160a01b036200b0b5848c62005ab0565b511660005260031b016020526200b0d760406000205462006dd4838962005ab0565b91906200b0e5828862005ab0565b519061271082101562005a78576200b13093620138966200046b938d6200b1148760018060a01b039262005ab0565b511660005260031b016020526040600020556200046462012fbb565b6200afec565b50926200b155919294506200b14e9096959662012c2b565b9462012b0f565b92604051906200b1658262003bea565b6001825260203681840137516001600160a01b03166200b1858262005a6a565b526000945b80518610156200ac6f576200b1a0868262005ab0565b516101e0526200b1b1855162006777565b966000946200b1c1845162006777565b6103005260009460005b88518110156200b294578a896200b1fb6001600160a01b036200b1ef858462005ab0565b51166101e05162012a61565b15806200b24b575b6200b21c575b50506200b2169062005a5a565b6200b1cb565b986200b2409162000b1382859c62007fee6200b2169760018060a01b039262005ab0565b9790508a896200b209565b5050506127106101e051101562005a78576001600160a01b036200b270828b62005ab0565b5116600052620138966101e05160031b016020528a8960406000205415156200b203565b50909895979498969291939660005b88518110156200b33a576127106101e051101562005a78576001600160a01b036200b2cf828b62005ab0565b5116600052620138966101e05160031b01602052604060002054156200b301575b6200b2fb9062005a5a565b6200b2a3565b996200b2fb906200b331906001600160a01b036200b3208e8d62005ab0565b511662000b13826103005162005ab0565b9a90506200b2f0565b509850969592919093966101e051612710811015806104405262005a785760031b620138970154986200b3726200811f898c620118f8565b60a05260006101405260006103c0525b6104405162005a78576103c0518a8110156200b44e576200b3b96200b3d691600061044052620138976101e05160031b0162006ac7565b90546103005160039290921b1c6001600160a01b03169062012aba565b156200b3f5575b6200b3eb6103c05162005a5a565b6103c0526200b382565b6000610440526200b4156103c051620138976101e05160031b0162006ac7565b60018060a01b0391549060031b1c166200b4356101405160a05162005ab0565b526200b4446101405162005a5a565b610140526200b3dd565b50979294959093985095909560005b8281106200b4f9575050506104405162005a785760a051516001600160401b03811162003b9b576200b49b81620138976101e05160031b0162005b96565b602060a05101620138976101e05160031b01600052602060002060005b8381106200b4db57505050506200b4cf9062005a5a565b9492959091956200b18a565b82516001600160a01b0316818301556020909201916001016200b4b8565b6200b53e906001600160a01b036200b512828562005ab0565b51166200b5256101405160a05162005ab0565b526200b5346101405162005a5a565b6101405262005a5a565b6200b45d565b90926020810151602281101562003d03576004036200bb9157610100936200b5866200b577866040850151015162005a6a565b51956040840151015162005a8e565b51906200b5ad60e060406200b5a18282880151015162005a6a565b51950151015162005a8e565b51936200b5c287518451146200046462012e52565b6200b5d587518551146200046462012e52565b6200b5e887518651146200046462012e52565b60005b87518110156200b654576200b601818662005ab0565b519061271082101562005a78576200b64e9162013896906001600160a01b036200b62c848d62005ab0565b511660005260031b016020526200046b60406000205462007da0838a62005ab0565b6200b5eb565b509095919593929360005b83518110156200b7bb576200b675818762005ab0565b5161271081101562005a785762013896906001600160a01b036200b69a848862005ab0565b511660005260031b016020526200b6bc60406000205462007e0d838862005ab0565b906200b6c9838962005ab0565b519161271083101562005a78576200b7109262013896906001600160a01b036200b6f4878b62005ab0565b511660005260031b016020526040600020556200046462012f56565b6200b71c818762005ab0565b5161271081101562005a785762013896906001600160a01b036200b741848c62005ab0565b511660005260031b016020526200b76360406000205462006dd4838862005ab0565b9190506200b772818862005ab0565b519161271083101562005a78576200b7b59262013896906001600160a01b036200b79d858e62005ab0565b511660005260031b0160205260406000205562005a5a565b6200b65f565b5091936200b7d791935062007efe6200852c9197969762012c2b565b6000945b80518610156200ac6f576200b7f1868262005ab0565b51610520526200b802855162006777565b966000946200b812845162006777565b6102e05260009460005b88518110156200b8e5578a896200b84c6001600160a01b036200b840858462005ab0565b51166105205162012a61565b15806200b89c575b6200b86d575b50506200b8679062005a5a565b6200b81c565b986200b8919162000b1382859c62007fee6200b8679760018060a01b039262005ab0565b9790508a896200b85a565b50505061271061052051101562005a78576001600160a01b036200b8c1828b62005ab0565b5116600052620138966105205160031b016020528a8960406000205415156200b854565b50909895979498969291939660005b88518110156200b9845761271061052051101562005a78576001600160a01b03806200b921838c62005ab0565b5116600052620138966105205160031b01602052604060002054156200b954575b506200b94e9062005a5a565b6200b8f4565b819b6200b97c916200b96b6200b94e948d62005ab0565b511662000b13826102e05162005ab0565b9a906200b942565b5098509695929190939661052051612710811015806105a05262005a785760031b620138970154986200b9bc6200811f898c620118f8565b6104805260006105605260006102c0525b6105a05162005a78576102c0518a8110156200ba98576200ba046200ba249160006105a052620138976105205160031b0162006ac7565b90546102e0516001600160a01b03939260031b9190911c83169062012aba565b156200ba44575b506200ba3a6102c05162005a5a565b6102c0526200b9cd565b60006105a0526200ba646102c051620138976105205160031b0162006ac7565b90549060031b1c166200ba7e610560516104805162005ab0565b526200ba8d6105605162005a5a565b61056052386200ba2b565b50979294959093985095909560005b8281106200bb45575050506105a05162005a785761048051516001600160401b03811162003b9b576200bae681620138976105205160031b0162005b96565b60206104805101620138976105205160031b01600052602060002060005b8381106200bb2757505050506200bb1b9062005a5a565b9492959091956200b7db565b82516001600160a01b0316818301556020909201916001016200bb04565b6200bb8b906001600160a01b036200bb5e828562005ab0565b51166200bb72610560516104805162005ab0565b526200bb816105605162005a5a565b6105605262005a5a565b6200baa7565b92906020840151602281101562003d03576005036200c1475760408401906200bbc460e062008595818551015162005a6a565b519282518451036200c0f55760005b83518110156200bc2f576200bbe9818562005ab0565b519061271082101562005a7857620138966200bc299260018060a01b038a511660005260031b016020526200046b60406000205462007da0838962005ab0565b6200bbd3565b509060005b83518110156200bcd8576200bc4a818562005ab0565b5161271081101562005a7857620138969060018060a01b0389511660005260031b016020526200bc8560406000205462007e0d838862005ab0565b91906200bc93828762005ab0565b519061271082101562005a78576200bcd293620138966200046b9360018060a01b038d511660005260031b016020526040600020556200046462012f56565b6200bc34565b50916200bce9919495935062012c2b565b92604051926200bcf98462003bea565b6001845260203681860137516001600160a01b03166200bd198462005a6a565b52604051926200bd298462003c06565b6000845260003681376000945b80518610156200ac6f576200bd4c868262005ab0565b51610180526200bd5d855162006777565b966000946200bd6d845162006777565b6105e05260009460005b88518110156200be40578a896200bda76001600160a01b036200bd9b858462005ab0565b51166101805162012a61565b15806200bdf7575b6200bdc8575b50506200bdc29062005a5a565b6200bd77565b986200bdec9162000b1382859c62007fee6200bdc29760018060a01b039262005ab0565b9790508a896200bdb5565b50505061271061018051101562005a78576001600160a01b036200be1c828b62005ab0565b5116600052620138966101805160031b016020528a8960406000205415156200bdaf565b50909895979498969291939660005b88518110156200bee65761271061018051101562005a78576001600160a01b036200be7b828b62005ab0565b5116600052620138966101805160031b01602052604060002054156200bead575b6200bea79062005a5a565b6200be4f565b996200bea7906200bedd906001600160a01b036200becc8e8d62005ab0565b511662000b13826105e05162005ab0565b9a90506200be9c565b5098509695929190939661018051612710811015806104205262005a785760031b620138970154986200bf1e6200811f898c620118f8565b6102405260006104a05260006101a0525b6104205162005a78576101a0518a8110156200bffc576200bf666200bf8391600061042052620138976101805160031b0162006ac7565b90546105e05160039290921b1c6001600160a01b03169062012aba565b156200bfa2575b6200bf986101a05162005a5a565b6101a0526200bf2f565b6000610420526200bfc26101a051620138976101805160031b0162006ac7565b60018060a01b0391549060031b1c166200bfe36104a0516102405162005ab0565b526200bff26104a05162005a5a565b6104a0526200bf8a565b50979294959093985095909560005b8281106200c0a9575050506104205162005a785761024051516001600160401b03811162003b9b576200c04a81620138976101805160031b0162005b96565b60206102405101620138976101805160031b01600052602060002060005b8381106200c08b57505050506200c07f9062005a5a565b9492959091956200bd36565b82516001600160a01b0316818301556020909201916001016200c068565b6200c0ef906001600160a01b036200c0c2828562005ab0565b51166200c0d66104a0516102405162005ab0565b526200c0e56104a05162005a5a565b6104a05262005a5a565b6200c00b565b60405162461bcd60e51b815260206004820152603560248201526000805160206201339c833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b926020810151602281101562003d03576006036200c730576040016200c1736101008251015162005a6a565b51936200c18a60e062008595818551015162005a6a565b519285518351036200c6de5785518451036200c6915760005b86518110156200c20c576200c1b9818562005ab0565b519061271082101562005a78576200c2069162013896906001600160a01b036200c1e4848c62005ab0565b511660005260031b016020526200046b60406000205462007da0838962005ab0565b6200c1a3565b509060005b86518110156200c2b2576200c227818562005ab0565b5161271081101562005a785762013896906001600160a01b036200c24c848b62005ab0565b511660005260031b016020526200c26e60406000205462007e0d838862005ab0565b91906200c27c828762005ab0565b519061271082101562005a78576200c2ac936200046b9262013896906001600160a01b036200b6f4878f62005ab0565b6200c211565b50916200c2c99193506200852c9095949562012c2b565b91604051926200c2d98462003c06565b6000845260003681376000945b80518610156200ac6f576200c2fc868262005ab0565b5160e0526200c30c855162006777565b966000946200c31c845162006777565b6103a05260009460005b88518110156200c3ec578a896200c3556001600160a01b036200c34a858462005ab0565b511660e05162012a61565b15806200c3a5575b6200c376575b50506200c3709062005a5a565b6200c326565b986200c39a9162000b1382859c62007fee6200c3709760018060a01b039262005ab0565b9790508a896200c363565b50505061271060e051101562005a78576001600160a01b036200c3c9828b62005ab0565b51166000526201389660e05160031b016020528a8960406000205415156200c35d565b50909895979498969291939660005b88518110156200c4895761271060e051101562005a78576001600160a01b03806200c427838c62005ab0565b51166000526201389660e05160031b01602052604060002054156200c459575b506200c4539062005a5a565b6200c3fb565b819b6200c481916200c4706200c453948d62005ab0565b511662000b13826103a05162005ab0565b9a906200c447565b5098509695929190939660e051612710811015806102805262005a785760031b620138970154986200c4c06200811f898c620118f8565b6105c0526000610460526000610320525b6102805162005a7857610320518a8110156200c59a576200c5076200c527916000610280526201389760e05160031b0162006ac7565b90546103a0516001600160a01b03939260031b9190911c83169062012aba565b156200c547575b506200c53d6103205162005a5a565b610320526200c4d1565b6000610280526200c566610320516201389760e05160031b0162006ac7565b90549060031b1c166200c580610460516105c05162005ab0565b526200c58f6104605162005a5a565b61046052386200c52e565b50979294959093985095909560005b8281106200c645575050506102805162005a78576105c051516001600160401b03811162003b9b576200c5e7816201389760e05160031b0162005b96565b60206105c051016201389760e05160031b01600052602060002060005b8381106200c62757505050506200c61b9062005a5a565b9492959091956200c2e6565b82516001600160a01b0316818301556020909201916001016200c604565b6200c68b906001600160a01b036200c65e828562005ab0565b51166200c672610460516105c05162005ab0565b526200c6816104605162005a5a565b6104605262005a5a565b6200c5a9565b60405162461bcd60e51b815260206004820152603060248201526000805160206201343c83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b815260206004820152603560248201526000805160206201333c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b6020819493940151602281101562003d03576007036200c9d857604001906200c75f6101008351015162005a6a565b519260406200c77360e08551015162005a6a565b5193510151916200c78c85518551146200046462012e52565b60005b85518110156200c9c6576001600160a01b036200c7ad828862005ab0565b511660005262027113806020526200c7d260ff60406000205416156200046462012f23565b6200c7de828662005ab0565b51906200c7ec838862005ab0565b5191604051916200c7fd8362003b7f565b600183526000602084019081526040840192835260608401949094526001600160a01b036200c82d868c62005ab0565b51166000526020526200c8586040600020936200c84e845115158662006070565b5115158462006081565b518051906001600160401b03821162003b9b576200c889826200c87f600187015462004249565b6001870162006026565b602090601f83116001146200c94c579180600294926060946000926200c940575b50508160011b916000199060031b1c19161760018501555b01519101556001600160a01b036200c8db828862005ab0565b516202711454929116600160401b83101562003b9b576001830180620271145583101562005a785762027114600052600080516020620133dc83398151915290920180546001600160a01b0319169092179091556200c93a9062005a5a565b6200c78f565b0151905038806200c8aa565b906001850160005260206000209160005b601f19851681106200c9ad5750926002949260019260609583601f198116106200c993575b505050811b0160018501556200c8c2565b015160001960f88460031b161c191690553880806200c982565b919260206001819286850151815501940192016200c95d565b5094915092506200ac81915062005a5a565b6020819392930151602281101562003d03576008036200cacb5761010060406200ca06920151015162005a6a565b519160005b83518110156200cabc576200cab6906001600160a01b03806200ca2f838862005ab0565b51166000526202711390816020526200ca59600160ff604060002054161515146200046462012e82565b806200ca66848962005ab0565b5116600052816020526200ca8a60ff60406000205460081c16156200046462012eea565b6200ca96838862005ab0565b5116600052602052604060002061010061ff001982541617905562005a5a565b6200ca0b565b50926200ac8191925062005a5a565b6020810151602281101562003d03576009036200cbac5761010060406200caf6920151015162005a6a565b519160005b83518110156200cabc576200cba6906001600160a01b03806200cb1f838862005ab0565b51166000526202711390816020526200cb49600160ff604060002054161515146200046462012e82565b806200cb56848962005ab0565b5116600052816020526200cb7e600160ff60406000205460081c161515146200046462012eb5565b6200cb8a838862005ab0565b5116600052602052604060002061ff0019815416905562005a5a565b6200cafb565b906020820151602281101562003d0357600f036200ccf75760a0604083015101519260005b84518110156200cce65760e06200cbf18260a06040880151015162005ab0565b510151156200cc73576200cc196200cc128260a06040880151015162005ab0565b51620068c8565b6202711554600019919082810190811162003229576200cc3b60059162006812565b500161010061ff00198254161790556202711554918281810111620032295762008ed46005916200cc6d940162006812565b6200cbd1565b6200cc926200cc8b8260a06040880151015162005ab0565b51620068a4565b6202711654600019919082810190811162003229576200ccb4600591620067d0565b500161010061ff00198254161790556202711654918281810111620032295762008ed46005916200cc6d9401620067d0565b50939092506200ac81915062005a5a565b6020820151602281101562003d0357600c036200ce225760a0604083015101519260005b84518110156200cce65760e06200cd3b8260a06040880151015162005ab0565b510151156200cdb6576200cd5c6200cc128260a06040880151015162005ab0565b6202711554600019919082810190811162003229576200cd7e60059162006812565b500161010061ff001982541617905562027115549182818101116200322957620090026005916200cdb0940162006812565b6200cd1b565b6200cdce6200cc8b8260a06040880151015162005ab0565b6202711654600019919082810190811162003229576200cdf0600591620067d0565b500161010061ff001982541617905562027116549182818101116200322957620090026005916200cdb09401620067d0565b9291906020810151602281101562003d0357600d036200cf7b576040019260606200ce5260e08651015162005a6a565b5194510151916200ce6785518451146201199f565b60005b85518110156200cf6b57806200ce856200ceff928662005ab0565b51156200cf05576200cea96200ce9c828962005ab0565b5162027115541162011a28565b6200ced560ff60056200cec86200cec1858c62005ab0565b5162006812565b50015460081c1662011a80565b6200ceed60ff6005620091436200cec1858c62005ab0565b600562008ed46200cec1838a62005ab0565b6200ce6a565b6200cf226200cf15828962005ab0565b5162027116541162011a28565b6200cf4160ff60056200cec86200cf3a858c62005ab0565b51620067d0565b6200cf5960ff6005620091436200cf3a858c62005ab0565b600562008ed46200cf3a838a62005ab0565b509350916200ac81915062005a5a565b6020810151602281101562003d0357600e036200d0b3576040019260606200cfa860e08651015162005a6a565b5194510151916200cfbd85518451146201199f565b60005b85518110156200cf6b57806200cfdb6200d04e928662005ab0565b51156200d054576200cfff6200cff2828962005ab0565b5162027115541162011b42565b6200d02460ff60056200d0176200cec1858c62005ab0565b50015460081c1662011b9b565b6200d03c60ff6005620092a06200cec1858c62005ab0565b6005620090026200cec1838a62005ab0565b6200cfc0565b6200d0716200d064828962005ab0565b5162027116541162011b42565b6200d08960ff60056200d0176200cf3a858c62005ab0565b6200d0a160ff6005620092a06200cf3a858c62005ab0565b6005620090026200cf3a838a62005ab0565b6020810151602281101562003d03576010036200d1f95760400151926200d0e360e060c086015195015162005a6a565b51916200d0f885518451146200046462012e52565b60005b85518110156200cf6b57806200d1166200d18c928862005ab0565b516200d1228162003db9565b6200d12e828762005ab0565b51906200d13b8162003db9565b6200d1526200d14962012f85565b82151562005a27565b6200d15d8162003db9565b600181036200d19257506200d1816200d17562012f85565b61271083111562005a27565b6202711e5562005a5a565b6200d0fb565b6200d19d8162003db9565b600281036200d1b257506202711f5562005a5a565b6200d1bd8162003db9565b600381036200d1d25750620271205562005a5a565b806200d1e060049262003db9565b146200d1ed575062005a5a565b6202712155386200941a565b602081949392940151602281101562003d0357601a036200d3b15760e060406200d227920151015162005a6a565b519060038251036200d36d576200d23e8262005a6a565b516200d2566200d24e8462005a8e565b519362005a9f565b51926200d331576200ac81926001036200941a576200d27e6200d2dd91620271205462006c06565b6202712055604051906200d2928262003c22565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262005a27565b6200046b6200d2f0620271215462006bf3565b6202712155604051906200d3048262003bea565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262005a27565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6020819392930151602281101562003d0357601b036200d9d657506202711e929192546200d3e2620094ce62012d29565b62027121546202711f5411156200d4036200d3fc62012d97565b8262005a27565b6202712054906200d4158383620069da565b50506200d42162012ded565b506000805b61271082106200d92a575b5050906200d4616200d46793926200d4576200d44c62012d29565b612710861062005a27565b6200046462012d97565b620069da565b90506200d47362012ded565b5060009060005b61271081106200d852575b50906127106200d496920462006c94565b90506200d4a76202712a5462006777565b906000946000905b6127108210156200d845578160031b9460ff6201389a87015416156200d60d5760009662013895870154156200d5fc57600098975b62005a7857620138978701548910156200d5e2576200d5098962013897890162006ac7565b600160a01b6001900391549060031b1c169788600052620138968801602052604098868a60002054906200d53d91620069da565b9a906200d54962012ded565b6200d5549162005a27565b60009a620138958b01546200d56991620069da565b906200d57462012ded565b6200d57f9162005a27565b826000526202711a6020528160002054906200d59b9162006c06565b9091600020556200d5ab62012ded565b6200d5b69162005a27565b6200d5c2828962005ab0565b526200d5ce9062005a5a565b986200d5da9062005a5a565b98976200d4e4565b929095506200d5f49196975062005a5a565b90946200d4af565b929095506200d5f491965062005a5a565b95969392509350505b6200d6218262006777565b9160009160005b8281106200d7af575050506202711b54916200d6496200811f8484620118f8565b926000906000905b8082106200d77457505060005b8381106200d6de5750508251929150506001600160401b03821162003b9b576020906200d68b8362005bce565b016202711b600052602060002060005b8381106200d6c057505050506200ac8190600062027120556000620271215562005a5a565b82516001600160a01b0316818301556020909201916001016200d69b565b6000805b8381106200d72c575b50156200d704575b6200d6fe9062005a5a565b6200d65e565b906200d6fe906200d723906001600160a01b03620082a2858762005ab0565b9190506200d6f3565b6001600160a01b03806200d741858862005ab0565b5116906200d750838a62005ab0565b5116146200d769576200d7639062005a5a565b6200d6e2565b50506001386200d6eb565b9091620082b06200d7a8916200d78a8562006a8d565b905460039190911b1c6001600160a01b031662000b13828a62005ab0565b906200d651565b6000805b8581106200d7fd575b50156200d7d5575b6200d7cf9062005a5a565b6200d628565b926200d7cf906200d7f4906001600160a01b03620082a2878662005ab0565b9390506200d7c4565b6001600160a01b03806200d812858762005ab0565b5116906200d821838a62005ab0565b5116146200d83a576200d8349062005a5a565b6200d7b3565b50506001386200d7bc565b939495929150506200d616565b90918160039695961b60ff6201389a82015416156200d91e5762013895810154620138978201546000928391825b8184106200d8bc5750505050620075a96200d8b3936200d8ab6200046b979694620035d894620069da565b9290620068ec565b9493946200d47a565b94929462005a78576200d917856200d90f6200d8e26200046b9862013897870162006ac7565b905460039190911b1c6001600160a01b031660009081526201389686016020526040812054909662006c06565b979062006ae0565b926200d880565b5091909493946200d485565b8160039897981b60ff6201389a82015416156200d9cc576201389581015490600062013897820154916000926000925b8184106200d9975750505050620075a96200d98d93620098f8846200d4616200350562009904966200046b9a98620069da565b909695966200d426565b93929362005a78576200d9c5846200d9bd6200d8e26200046b9762013897870162006ac7565b969062006ae0565b926200d95a565b509695966200d431565b6020819492940151602281101562003d03576014036200df2357604001906200da056101008351015162005a6a565b51936200da1c60e062007755818651015162005a6a565b51916200da2d865185511462011c60565b6200da3c865184511462011cc6565b60005b86518110156200db3a576200da55818562005ab0565b516200da62828762005ab0565b519061271082101562005a7857620138996200da849260031b01549062006c06565b906200da91838862005ab0565b519161271083101562005a7857620138996200dab29360031b015562011d80565b6200dabe818562005ab0565b516200dacb828762005ab0565b519061271082101562005a78576200daf69162013896906001600160a01b036200a811868d62005ab0565b91906200db04828862005ab0565b519061271082101562005a78576200db34936200046b9262013896906001600160a01b036200a868878f62005ab0565b6200da3f565b50926200db519192506200852c9095949562012c2b565b916040516200db608162003c06565b6000815260003681376000945b80518610156200ac6f576200db83868262005ab0565b51610220526200db94855162006777565b966000946200dba4845162006777565b6103605260009460005b88518110156200dc77578a896200dbde6001600160a01b036200dbd2858462005ab0565b51166102205162012a61565b15806200dc2e575b6200dbff575b50506200dbf99062005a5a565b6200dbae565b986200dc239162000b1382859c62007fee6200dbf99760018060a01b039262005ab0565b9790508a896200dbec565b50505061271061022051101562005a78576001600160a01b036200dc53828b62005ab0565b5116600052620138966102205160031b016020528a8960406000205415156200dbe6565b50909895979498969291939660005b88518110156200dd165761271061022051101562005a78576001600160a01b03806200dcb3838c62005ab0565b5116600052620138966102205160031b01602052604060002054156200dce6575b506200dce09062005a5a565b6200dc86565b819b6200dd0e916200dcfd6200dce0948d62005ab0565b511662000b13826103605162005ab0565b9a906200dcd4565b5098509695929190939661022051612710811015806103405262005a785760031b620138970154986200dd4e6200811f898c620118f8565b6104e0526000610500526000610160525b6103405162005a7857610160518a8110156200de2a576200dd966200ddb691600061034052620138976102205160031b0162006ac7565b9054610360516001600160a01b03939260031b9190911c83169062012aba565b156200ddd6575b506200ddcc6101605162005a5a565b610160526200dd5f565b6000610340526200ddf661016051620138976102205160031b0162006ac7565b90549060031b1c166200de10610500516104e05162005ab0565b526200de1f6105005162005a5a565b61050052386200ddbd565b50979294959093985095909560005b8281106200ded7575050506103405162005a78576104e051516001600160401b03811162003b9b576200de7881620138976102205160031b0162005b96565b60206104e05101620138976102205160031b01600052602060002060005b8381106200deb957505050506200dead9062005a5a565b9492959091956200db6d565b82516001600160a01b0316818301556020909201916001016200de96565b6200df1d906001600160a01b036200def0828562005ab0565b51166200df04610500516104e05162005ab0565b526200df136105005162005a5a565b6105005262005a5a565b6200de39565b926020840151602281101562003d035760150362009ae45760408401906200df516101008351015162005a6a565b51906200df6860e062007755818651015162005a6a565b51936200df7d83518551146200046462012e52565b6200df9083518651146200046462012e52565b60005b83518110156200dfef576200dfa9818662005ab0565b519061271082101562005a7857620138966200dfe99260018060a01b038b511660005260031b016020526200046b60406000205462007da0838a62005ab0565b6200df93565b509095919560005b87518110156200e125576200e00d818662005ab0565b5161271081101562005a7857620138969060018060a01b0386511660005260031b016020526200e04860406000205462007e0d838962005ab0565b906200e055838862005ab0565b519161271083101562005a7857620138966200e08f9360018060a01b0389511660005260031b016020526040600020556200046462012f56565b6200e09b818662005ab0565b5161271081101562005a785762013896906001600160a01b036200e0c0848c62005ab0565b511660005260031b016020526200e0e260406000205462006dd4838962005ab0565b91906200e0f0828862005ab0565b519061271082101562005a78576200e11f93620138966200046b938d6200b1148760018060a01b039262005ab0565b6200dff7565b50926200e13d919294506200b14e9096959662012c2b565b92604051906200e14d8262003bea565b6001825260203681840137516001600160a01b03166200e16d8262005a6a565b526000945b80518610156200ac6f576200e188868262005ab0565b516102a0526200e199855162006777565b966000946200e1a9845162006777565b60805260009460005b88518110156200e27b578a896200e1e26001600160a01b036200e1d6858462005ab0565b51166102a05162012a61565b15806200e232575b6200e203575b50506200e1fd9062005a5a565b6200e1b2565b986200e2279162000b1382859c62007fee6200e1fd9760018060a01b039262005ab0565b9790508a896200e1f0565b5050506127106102a051101562005a78576001600160a01b036200e257828b62005ab0565b5116600052620138966102a05160031b016020528a8960406000205415156200e1ea565b50909895979498969291939660005b88518110156200e320576127106102a051101562005a78576001600160a01b036200e2b6828b62005ab0565b5116600052620138966102a05160031b01602052604060002054156200e2e8575b6200e2e29062005a5a565b6200e28a565b996200e2e2906200e317906001600160a01b036200e3078e8d62005ab0565b511662000b138260805162005ab0565b9a90506200e2d7565b509850969592919093966102a051612710811015806106205262005a785760031b620138970154986200e3586200811f898c620118f8565b6101c05260006104c05260006103e0525b6106205162005a78576103e0518a8110156200e435576200e3a06200e3bc91600061062052620138976102a05160031b0162006ac7565b905460805160039290921b1c6001600160a01b03169062012aba565b156200e3db575b6200e3d16103e05162005a5a565b6103e0526200e369565b6000610620526200e3fb6103e051620138976102a05160031b0162006ac7565b60018060a01b0391549060031b1c166200e41c6104c0516101c05162005ab0565b526200e42b6104c05162005a5a565b6104c0526200e3c3565b50979294959093985095909560005b8281106200e4e2575050506106205162005a78576101c051516001600160401b03811162003b9b576200e48381620138976102a05160031b0162005b96565b60206101c05101620138976102a05160031b01600052602060002060005b8381106200e4c457505050506200e4b89062005a5a565b9492959091956200e172565b82516001600160a01b0316818301556020909201916001016200e4a1565b6200e528906001600160a01b036200e4fb828562005ab0565b51166200e50f6104c0516101c05162005ab0565b526200e51e6104c05162005a5a565b6104c05262005a5a565b6200e444565b509190506200e53d8162010df2565b90600681101562003d0357600281036200e56c5760405162461bcd60e51b81528062005a56600482016200761c565b600381036200e61f5750303b1562003b655790604051809263a2f7d10160e01b82526044820160406004840152815180915260206064840192019060005b8181106200e605575050506200e5d08291600094600319848303016024850152620045b5565b038183305af180156200e5f9576200e5e55750565b6001600160401b03811162003b9b57604052565b6040513d6000823e3d90fd5b82518452869450602093840193909201916001016200e5aa565b60059150146200e62c5750565b906000905b6020830151805183101562009b6557826200e64c9162005ab0565b516020810151602281101562003d03571562009b22576020810151602281101562003d03576001036200e89557604001906200e68e6101008351015162005a6a565b51936200e6a560e062007755818651015162005a6a565b51916200e6b6865185511462011c60565b6200e6c5865184511462011cc6565b60005b86518110156200e81c576200e6de818662005ab0565b5161271081101562005a7857600160ff60076200e7049360031b01541615151462011d28565b6200e710818562005ab0565b516200e71d828762005ab0565b519061271082101562005a785760066200e73d9260031b01549062006c06565b906200e74a838862005ab0565b519161271083101562005a785760066200e7699360031b015562011d80565b6200e775818562005ab0565b516200e782828762005ab0565b519061271082101562005a78576200e7c3916003906001600160a01b036200e7ab868d62005ab0565b5116600052811b016020526040600020549062006c06565b91906200e7d1828862005ab0565b519061271082101562005a78576200e816936200046b926003906001600160a01b036200e7ff878f62005ab0565b5116600052811b0160205260406000205562011ddf565b6200e6c8565b50949150916200e8306200e8379162012c2b565b9162012b0f565b93604051926200e8478462003c06565b60008452600036813760005b83518110156200e87857806200046b6200791c6200e872938762005ab0565b6200e853565b50945092602092506200e88c915062005a5a565b9190506200e631565b9091926020820151602281101562003d03576002036200eb035760408092019081519383850151916200e8d16200798460e08098015162005a6a565b5194835187510362007c8957835185510362007c3557835186510362007bde575060005b86518110156200eaed576200e90b818862005ab0565b5161271081101562005a785760ff60076200e92d9260031b0154161562011e38565b6200e939818862005ab0565b5161271081101562005a785760031b600701805460ff191660011790556200e962818562005ab0565b516200e96f828962005ab0565b519061271082101562005a78578051906001600160401b03821162003b9b576200e9a58262007a7360058660031b015462004249565b602090601f83116001146200ea725760059291600091836200ea66575b50508160011b916000199060031b1c1916179160031b01555b6200e9e7818662005ab0565b516200e9f4828962005ab0565b5161271081101562005a785760031b600101556200ea13818762005ab0565b516200ea20828962005ab0565b5161271081101562005a785760031b600201556200ea3f818862005ab0565b519061271082101562005a7857600060066200ea609360031b015562005a5a565b6200e8f5565b0151905038806200e9c2565b9060058460031b0160005260206000209160005b601f19851681106200ead45750918391600193600595601f198116106200eaba575b505050811b019160031b01556200e9db565b015160001960f88460031b161c191690553880806200eaa8565b919260206001819286850151815501940192016200ea86565b509591509350602092506200e88c915062005a5a565b9291906020810151602281101562003d03576003036200eb3057602091926200046b6200e88c9262011e84565b6020810151602281101562003d03576004036200edce576200eb5b6101006040830151015162005a6a565b51936200eb716101006040840151015162005a8e565b51906200eb8c60e060406200b5a18282880151015162005a6a565b51936200eba187518451146200046462012e52565b6200ebb487518551146200046462012e52565b6200ebc787518651146200046462012e52565b60005b87518110156200ec30576200ebe0818662005ab0565b519061271082101562005a78576200ec2a916003906001600160a01b036200ec09848d62005ab0565b5116600052811b016020526200046b60406000205462007da0838a62005ab0565b6200ebca565b509095919593929360005b83518110156200ed8b576200ec51818762005ab0565b5161271081101562005a78576003906001600160a01b036200ec74848862005ab0565b5116600052811b016020526200ec9560406000205462007e0d838862005ab0565b906200eca2838962005ab0565b519161271083101562005a78576200ece6926003906001600160a01b036200eccb878b62005ab0565b5116600052811b016020526040600020556200046462012f56565b6200ecf2818762005ab0565b5161271081101562005a78576003906001600160a01b036200ed15848c62005ab0565b5116600052811b016020526200ed3660406000205462006dd4838862005ab0565b9190506200ed45818862005ab0565b519161271083101562005a78576200ed85926003906001600160a01b036200ed6e858e62005ab0565b5116600052811b0160205260406000205562005a5a565b6200ec3b565b50936200eda591929693506200852c62007efe9162012c2b565b9260005b83518110156200e87857806200046b6200791c6200edc8938762005ab0565b6200eda9565b926020840151602281101562003d03576005036200ef8c5760408401906200ee0060e062008595818551015162005a6a565b519282518451036200c0f55760005b83518110156200ee68576200ee25818562005ab0565b519061271082101562005a785760036200ee629260018060a01b038a5116600052811b016020526200046b60406000205462007da0838962005ab0565b6200ee0f565b509060005b83518110156200ef0b576200ee83818562005ab0565b5161271081101562005a785760039060018060a01b03895116600052811b016020526200eebb60406000205462007e0d838862005ab0565b91906200eec9828762005ab0565b519061271082101562005a78576200ef059360036200046b9360018060a01b038d5116600052811b016020526040600020556200046462012f56565b6200ee6d565b50949250906200ef1b9062012c2b565b90604051926200ef2b8462003bea565b6001845260203681860137516001600160a01b03166200ef4b8462005a6a565b52604051946200ef5b8662003c06565b60008652600036813760005b83518110156200e87857806200046b6200791c6200ef86938762005ab0565b6200ef67565b926020810151602281101562003d03576006036200f145576040016200efb86101008251015162005a6a565b51936200efcf60e062008595818551015162005a6a565b519285518351036200c6de5785518451036200c6915760005b86518110156200f04e576200effe818562005ab0565b519061271082101562005a78576200f048916003906001600160a01b036200f027848c62005ab0565b5116600052811b016020526200046b60406000205462007da0838962005ab0565b6200efe8565b509060005b86518110156200f0ef576200f069818562005ab0565b5161271081101562005a78576003906001600160a01b036200f08c848b62005ab0565b5116600052811b016020526200f0ad60406000205462007e0d838862005ab0565b91906200f0bb828762005ab0565b519061271082101562005a78576200f0e9936200046b926003906001600160a01b036200eccb878f62005ab0565b6200f053565b5094916200f1049193506200e8309062012c2b565b91604051946200f1148662003c06565b60008652600036813760005b83518110156200e87857806200046b6200791c6200f13f938762005ab0565b6200f120565b90926020820151602281101562003d03576007036200f36c57926200f1736101006040840151015162005a6a565b51936040806200f18a60e082870151015162005a6a565b519401510151916200f1a486518551146200046462012e52565b6000915b86518310156200f357576001600160a01b036200f1c6848962005ab0565b51166000526201388092836020526200f1ec60ff60406000205416156200046462012f23565b6200f1f8818662005ab0565b516200f205828862005ab0565b5190604051956200f2168762003b7f565b600187526000602088019081526040880192835260608801939093526001600160a01b036200f246858d62005ab0565b51166000526020526200f26760406000209262008afe885115158562006070565b5180519095906001600160401b03811162003b9b576200f2908162008b31600186015462004249565b602096601f82116001146200f2f25791816060926200f2ea97989960029560009262008ba75750508160011b916000199060031b1c191617600185015501519101556200046b6001600160a01b0362008b97838b62005ab0565b91906200f1a8565b966001840160005260206000209760005b601f19841681106200f33e5750826200f2ea97989960029593600193606096601f1981161062008c0057505050811b01600185015562008b7a565b818301518a55600190990198602092830192016200f303565b9550939050602092506200e88c915062005a5a565b9192906020810151602281101562003d03576008036200f4055761010060406200f39a920151015162005a6a565b519160005b83518110156200f3f3576200f3ed906001600160a01b03806200f3c3838862005ab0565b51166000526201388090816020526200ca59600160ff604060002054161515146200046462012e82565b6200f39f565b509260209192506200e88c9062005a5a565b6020810151602281101562003d03576009036200f4895761010060406200f430920151015162005a6a565b519160005b83518110156200f3f3576200f483906001600160a01b03806200f459838862005ab0565b51166000526201388090816020526200cb49600160ff604060002054161515146200046462012e82565b6200f435565b906020820151602281101562003d0357600f036200f5d05760a0604083015101519260005b84518110156200f5bd5760e06200f4ce8260a06040880151015162005ab0565b510151156200f54d576200f4ef62008e7f8260a06040880151015162005ab0565b62013882548060001981011162003229576200f51160059160001901620067f1565b5001805461ff001916610100179055620138825490600019820182106200322957600562008ed46200f5479360001901620067f1565b6200f4ae565b6200f56562008f018260a06040880151015162005ab0565b62013882548060001981011162003229576200f58760059160001901620067af565b5001805461ff001916610100179055620138825490600019820182106200322957600562008ed46200f5479360001901620067af565b50936200e88c9193506020925062005a5a565b6020820151602281101562003d0357600c036200f7035760a0604083015101519260005b84518110156200f5bd5760e06200f6148260a06040880151015162005ab0565b510151156200f693576200f63562008e7f8260a06040880151015162005ab0565b62013882548060001981011162003229576200f65760059160001901620067f1565b5001805461ff0019166101001790556201388254906000198201821062003229576005620090026200f68d9360001901620067f1565b6200f5f4565b6200f6ab62008f018260a06040880151015162005ab0565b62013882548060001981011162003229576200f6cd60059160001901620067af565b5001805461ff0019166101001790556201388254906000198201821062003229576005620090026200f68d9360001901620067af565b9291906020810151602281101562003d0357600d036200f82a576040019260606200f73360e08651015162005a6a565b5194510151916200f74885518451146201199f565b60005b85518110156200f81757806200f7666200f7bf928662005ab0565b51156200f7c5576200f77d62009108828962005ab0565b6200f79560ff60056200cec86200912a858c62005ab0565b6200f7ad60ff6005620091436200912a858c62005ab0565b600562008ed46200912a838a62005ab0565b6200f74b565b6200f7d562009184828962005ab0565b6200f7ed60ff60056200cec8620091a6858c62005ab0565b6200f80560ff600562009143620091a6858c62005ab0565b600562008ed4620091a6838a62005ab0565b50935091602091506200e88c9062005a5a565b6020819492940151602281101562003d0357600e036200f8f1576040019060606200f85a60e08451015162005a6a565b5192510151936200f86f83518651146201199f565b60005b83518110156200f81757806200f88d6200f899928862005ab0565b516200f89f5762005a5a565b6200f872565b6200f8af62009258828762005ab0565b6200f8c760ff60056200d0176200912a858a62005ab0565b6200f8df60ff6005620092a06200912a858a62005ab0565b6005620090026200912a838862005ab0565b6020810151602281101562003d03576010036200f95e5760400151906200f92160e060c084015193015162005a6a565b51936200f93683518651146200046462012e52565b60005b83518110156200f81757806200046b620093266200f958938762005ab0565b6200f939565b6020819392930151602281101562003d0357601a036200fa0e5760e060406200f98b920151015162005a6a565b5160038151036200d36d576200f9a18162005a6a565b51916200f9b2620093b28362005a8e565b51916200d331576020926200e88c926001036200941a576200f9dd6200f9ec916201388d5462006c06565b6201388d556200046462012ded565b6200046b6200f9ff6201388e5462006bf3565b6201388e556200046462012e27565b6020819392930151602281101562003d0357601b036200fe4a57506200fa436201388b939293546200354d620094ce62012d29565b50506200fa4f62012ded565b506000805b61271081106200fdfe575b50506200fa6b62006c18565b6200fa7a6202712a5462006777565b906000946000905b6127108210156200fdf1578160031b9460ff600787015416156200fbd5576000966002870154156200fbc457600098975b62005a785760048701548910156200fbaa576200fad4896004890162006ac7565b9054600391821b1c6001600160a01b03166000818152918901602052604091829020549199916200fb07908890620069da565b9a906200fb1362012ded565b6200fb1e9162005a27565b60009a60028b01546200fb3191620069da565b906200fb3c62012ded565b6200fb479162005a27565b82600052620138876020528160002054906200fb639162006c06565b9091600020556200fb7362012ded565b6200fb7e9162005a27565b6200fb8a828962005ab0565b526200fb969062005a5a565b986200fba29062005a5a565b98976200fab3565b929095506200fbbc9196975062005a5a565b90946200fa82565b929095506200fbbc91965062005a5a565b95969392509350505b6200fbe98262006777565b9160009160005b8281106200fd5b575050506201388854916200fc116200811f8484620118f8565b926000906000905b8082106200fd3e57505060005b8381106200fca85750508251929150506001600160401b03821162003b9b576020906200fc538362005bf2565b0162013888600052602060002060005b8381106200fc8a57505050506200e88c60209160006201388d5560006201388e5562005a5a565b82516001600160a01b0316818301556020909201916001016200fc63565b6000805b8381106200fcf6575b50156200fcce575b6200fcc89062005a5a565b6200fc26565b906200fcc8906200fced906001600160a01b03620082a2858762005ab0565b9190506200fcbd565b6001600160a01b03806200fd0b858862005ab0565b5116906200fd1a838a62005ab0565b5116146200fd33576200fd2d9062005a5a565b6200fcac565b50506001386200fcb5565b9091620082b06200fd54916200d78a8562006aaa565b906200fc19565b6000805b8581106200fda9575b50156200fd81575b6200fd7b9062005a5a565b6200fbf0565b926200fd7b906200fda0906001600160a01b03620082a2878662005ab0565b9390506200fd70565b6001600160a01b03806200fdbe858762005ab0565b5116906200fdcd838a62005ab0565b5116146200fde6576200fde09062005a5a565b6200fd5f565b50506001386200fd68565b939495929150506200fbde565b8060039594951b9060ff600783015416156200fe405762009904620075a96200046b94620098f86200fe37956002620098ee8762006959565b9392936200fa54565b509392936200fa5f565b6020810151602281101562003d03576014036200fff857604001906200fe766101008351015162005a6a565b51936200fe8d60e062007755818651015162005a6a565b51916200fe9e865185511462011c60565b6200fead865184511462011cc6565b60005b86518110156200ffa3576200fec6818562005ab0565b516200fed3828762005ab0565b519061271082101562005a785760066200fef39260031b01549062006c06565b906200ff00838862005ab0565b519161271083101562005a785760066200ff1f9360031b015562011d80565b6200ff2b818562005ab0565b516200ff38828762005ab0565b519061271082101562005a78576200ff61916003906001600160a01b036200e7ab868d62005ab0565b91906200ff6f828862005ab0565b519061271082101562005a78576200ff9d936200046b926003906001600160a01b036200e7ff878f62005ab0565b6200feb0565b50949150916200e8306200ffb79162012c2b565b93604051926200ffc78462003c06565b60008452600036813760005b83518110156200e87857806200046b6200791c6200fff2938762005ab0565b6200ffd3565b6020819392930151602281101562003d035760150362009ae4576020916200046b6200e88c9262011e84565b82516001600160a01b0316818301556020909201916001016200a5c4565b82516001600160a01b0316818301556020909201916001016200a46f565b6201007c90620271196000528484600020918201910162005b56565b386200a45e565b600191820180546001600160a01b03909216848601559390910192906200a3a2565b62027124600052620100cd90600080516020620133fc83398151915290810190830162005b56565b386200a362565b60018082620100e582948662010592565b019201920191906200a321565b620271236000526000805160206201337c833981519152908282015b8183018110620101205750506200a2e5565b806201012e60019262005c16565b016201010e565b600191820180546001600160a01b03909216848601559390910192906200a2b3565b620271226000526201017f906000805160206201335c83398151915290810190830162005b56565b386200a273565b82516001600160a01b0316818301556020909201916001016200a135565b620101c0906202711d6000528484600020918201910162005b56565b386200a124565b82516001600160a01b03168183015560209092019160010162009f45565b6201020190620271146000528484600020918201910162005b56565b3862009f34565b806201022a9160031b600160ff60078301541615151462010230575062005a5a565b62009e84565b620102446004820162013897830162010523565b6201389a8101600160ff198254161790558054816201389301556001810154620138948201556002810154620138958201556201028a6005820162013898830162010592565b620138996006820154910155386200941a565b6006602082620102b16001945186620060b3565b0192019201919062009c71565b6006818102048103620032295760068381020483036200322957620271156000527f0f9b10e190177c3c56fc6ce7689c8130c567df57aa02c08e7a090a59992adf926006840281015b82600602820181106201031c57505062009c5d565b8060006006925560006001820155620103386002820162005e12565b600060038201556201034d6004820162005c16565b600060058201550162010307565b60066020826201036f6001945186620060b3565b0192019201919062009be1565b8060060290600682040362003229578260060260068104840362003229576000906202711682526020822092830192015b828110620103bd57505062009bcd565b808260069255826001820155620103d76002820162005e12565b826003820155620103eb6004820162005c16565b82600582015501620103ad565b608460405162461bcd60e51b815260206004820152604060248201526000805160206201341c83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206201341c83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b8181146201051f578154916001600160401b03831162003b9b57620104e1838362005b96565b60005260206000209060005260206000208154916000925b84841062010508575050505050565b6001809192019384549281850155019290620104f9565b5050565b8181146201051f578154916001600160401b03831162003b9b5762010549838362005b96565b60005260206000209060005260206000208154916000925b84841062010570575050505050565b600191820180546001600160a01b039092168486015593909101929062010561565b908082146201051f57620105a7815462004249565b906001600160401b03821162003b9b578190620105ca8262006663865462004249565b600090601f83116001146201060457600092620105f8575b50508160011b916000199060031b1c1916179055565b015490503880620105e2565b81526020808220858352818320935090601f1985169083905b8282106201065a57505090846001959493921062010640575b505050811b019055565b015460001960f88460031b161c1916905538808062010636565b84958192958501548155600180910196019401906201061d565b8181146201051f578154916201068b838362005ca7565b6000526020600020906000526020600020906000905b838210620106af5750505050565b80620106be6001928562010592565b928101929181019101620106a1565b8181146201051f57815491620106e4838362005d35565b6000526020600020906000526020600020906000905b838210620107085750505050565b806201071760019285620104bb565b928101929181019101620106fa565b8181146201051f578154916201073d838362005d35565b6000526020600020906000526020600020906000905b838210620107615750505050565b80620107706001928562010523565b92810192918101910162010753565b8181146201051f5781549162010796838362005dc3565b6000526020600020906000526020600020906000905b838210620107ba5750505050565b80620107c96001928562010674565b928101929181019101620107ac565b8181146201051f57815491620107ef838362005ed5565b6000526020600020906000526020600020906000905b838210620108135750505050565b80600191840362010830575b600980910193019101909162010805565b8054845581620108728186019183019160ff62010851818554168362005fc9565b8354936201086682600896871c168462005fe3565b5460101c169062006004565b620108846002808401908701620104bb565b6003828101919086018387036201089f575b5050506201081f565b6201090392620108af91620104bb565b620108c1600480850190880162010523565b620108d3600580850190880162010674565b620108e56006808501908801620106cd565b620108f7600780850190880162010726565b8083019086016201077f565b38808062010896565b91906200686a578082036201091f575050565b60ff600580620041d09462010938848654168262005fb0565b60018501546001820155620109546002860160028301620107d8565b6003850154600382015562010970600486016004830162010592565b01920162010982828254168462006070565b6201099482825460081c168462006081565b5460101c169062006099565b908082146201051f57908154906000915b60648310620109c05750505050565b6001809194019283549481840155019192620109b1565b9062013882546020600093019081515190620109f38262003c62565b9162010a03604051938462003c3e565b80835262010a14601f199162003c62565b0136602084013762010a2983515182620069da565b901562010d9a5762010a3b9062006777565b9085928451511562010d915762010a528262006777565b965b85515181101562010bda5760008080805b86811062010af15750905062010a878162010a81858762005ab0565b62004411565b600681101562003d035760031462010aac575b5062010aa69062005a5a565b62010a54565b6000905b80821062010abf575062010a9a565b909562010ae362010aea9162010ad6898d62005ab0565b5162000b13828a62005ab0565b9662005a5a565b9062010ab0565b62010b0a8162010b03878d5162005ab0565b51620111b3565b9390948083118062010bc6575b1562010b7d57505091838562010b73575b600681101562003d035760038e911462010b53575b505062010b4a9062005a5a565b91909162010a65565b9462010b6a9162000b138262010b4a959862005ab0565b93908c62010b3d565b6000955062010b28565b809492959195148062010bb2575b1562010b3d57600681101562003d035760038e911462010b5357505062010b4a9062005a5a565b50600681101562003d035780151562010b8b565b50600686101562003d035785151562010b17565b5093505090929350600093845b835186101562010d2c5762010c0762010c01878662005ab0565b62005fa2565b9060068083101562003d0357600292830362010c3257505062010c2b909562005a5a565b9462010be7565b62010c4262010c01898862005ab0565b928184101562003d035760018094148062010d18575b1562010c6d5750505062010c2b909562005a5a565b62010c8262010c018a899b9694959b62005ab0565b928084101562003d03576004809414928362010cec575b508262010cc1575b505062010cb5575b5062010c2b9062005a5a565b955062010c2b62010ca9565b90915088101562010cd757871415388062010ca1565b602182634e487b7160e01b6000525260246000fd5b908093508a101562010d0357891415913862010c99565b602184634e487b7160e01b6000525260246000fd5b508183101562003d03578083141562010c58565b925092909350600682101562003d03576003820362010d88575b62010d518162006777565b9360005b82811062010d64575050509190565b8062010d7562010d82928462005ab0565b5162000b13828962005ab0565b62010d55565b50600062010d46565b50909392505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b906201388354602060009301908151519062010e0e8262003c62565b9162010e1e604051938462003c3e565b80835262010e2f601f199162003c62565b0136602084013762010e4483515182620069da565b901562010d9a5762010e569062006777565b9085928451511562010d915762010e6d8262006777565b965b85515181101562010fdb5760008080805b86811062010ef25750905062010e9c8162010a81858762005ab0565b600681101562003d035760031462010ec1575b5062010ebb9062005a5a565b62010e6f565b6000905b80821062010ed4575062010eaf565b909562010ae362010eeb9162010ad6898d62005ab0565b9062010ec5565b62010f0b8162010f04878d5162005ab0565b516201124f565b9390948083118062010fc7575b1562010f7e57505091838562010f74575b600681101562003d035760038e911462010f54575b505062010f4b9062005a5a565b91909162010e80565b9462010f6b9162000b138262010f4b959862005ab0565b93908c62010f3e565b6000955062010f29565b809492959195148062010fb3575b1562010f3e57600681101562003d035760038e911462010f5457505062010f4b9062005a5a565b50600681101562003d035780151562010f8c565b50600686101562003d035785151562010f18565b5093505090929350600093845b8351861015620110fd576201100262010c01878662005ab0565b9060068083101562003d035760029283036201102d57505062011026909562005a5a565b9462010fe8565b6201103d62010c01898862005ab0565b928184101562003d0357600380941480620110e9575b15620110685750505062011026909562005a5a565b6201107d62010c018a899b9694959b62005ab0565b928084101562003d035760058094149283620110d2575b5082620110bc575b5050620110b0575b50620110269062005a5a565b955062011026620110a4565b90915088101562003d035787141538806201109c565b908093508a101562003d0357891415913862011094565b508183101562003d03578083141562011053565b925092909350600682101562003d0357600382036201114c575b620111228162006777565b9360005b82811062011135575050509190565b8062010d7562011146928462005ab0565b62011126565b50600062011117565b156201115d57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9091600080938193620111cc6201388254831062011155565b60ff6005620111db84620067f1565b50015460081c161562011243578282620111f7926001620113bb565b62011203575b50929190565b8094506001929350620112179150620067f1565b5001549060036201123860ff6201122e86620067f1565b50541694620067f1565b5001549138620111fd565b50509150915080918190565b9091600080938193620112686201388354831062011155565b60ff60056201127784620067af565b50015460081c161562011243578282620112929282620113bb565b6201129d5750929190565b8094506001929350620112b19150620067af565b5001549060036201123860ff620112c886620067af565b50541694620067af565b15620112da57565b60405162461bcd60e51b815260206004820152603160248201527f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e20696044820152706e646578206f7574206f662072616e676560781b6064820152608490fd5b156201134157565b60405162461bcd60e51b815260206004820152602f60248201527f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460448201526e6578206f7574206f662072616e676560881b6064820152608490fd5b805482101562005a78576000526009602060002091020190600090565b9092919080156201172a57620113d762013882548310620112d2565b620113f36002620113e884620067f1565b500154841062011339565b80156201170c576201142360016201141a8560026201141287620067f1565b50016201139e565b50015460ff1690565b6201142e8162003db9565b806201143e575050505050600090565b620114498162003db9565b600381036201145c575050505050600190565b620114678162003db9565b600481036201147a575050505050600090565b620114858162003db9565b6001908082036201149e57505092620069809362011752565b909293620114ac8262003db9565b6002809214620114c2575b505050505050600090565b8215620116ef57620114eb84620114df8385620114128a620067f1565b50015460081c60ff1690565b925b60009586865b6201167d575b50620115058762006777565b9760005b88811062011620575050505050620115218262003cf8565b8183036201158057505091906000915b8183106201153f5750505090565b909192806201155d575b62011555909362005a5a565b919062011531565b50620115556201157862011572858462005ab0565b51151590565b905062011549565b9091506201158e8262003cf8565b8103620115e757509060009182915b818310620115ab5750505090565b9091928015620115ca575b620115c2909362005a5a565b91906201159d565b50620115c2620115df62011572858462005ab0565b9050620115b6565b60039150620115f68162003cf8565b14620116095750388080808080620114b7565b6201161c62011572620069809262005a6a565b1590565b808a6201165c6201165362011649848b620116418c82620114128d620067af565b500162006ac7565b90549060031b1c90565b868689620113bb565b6201167062011677946200046b9362005ab0565b9015159052565b62011509565b846201168f85826201141286620067af565b500154811015620116e957620116b56201164982876201164188826201141289620067af565b620116ce575b620116c7879162005a5a565b90620114f3565b96620116c7620116df889262005a5a565b98915050620116bb565b620114f9565b6201170584620114df8385620114128a620067af565b92620114ed565b6201172460016201141a8560026201141287620067af565b62011423565b6201173b62013883548310620112d2565b6201174c6002620113e884620067af565b620113f3565b9092916003620117a49183600014620118265760ff60016201177b8760026201141286620067f1565b50015460101c16945b841562011815576002620114126201179c93620067f1565b5001620044e5565b91603d81101562003d0357602c8103620117e5575050620117c86020915162005a6a565b51910151602281101562003d0357620117e19062012fee565b1490565b90929060018103620117fa5750505050600090565b6003146201180a57505050600090565b620069809262011896565b6002620114126201179c93620067af565b60ff60016201183c8760026201141286620067af565b50015460101c169462011784565b156201185257565b606460405162461bcd60e51b815260206004820152602060248201527f4f70657261746f722061646472657373206973206e6f742070726f76696465646044820152fd5b9190608062006dcd9201620118b06001825151146201184a565b620118cb6001620118c2835162005a6a565b5151146201184a565b516001600160a01b03928391620118e3919062005a6a565b51169215620118f25751161490565b51161490565b919082018092116200322957565b620119118162003db9565b6201191f6200d14962012f85565b6201192a8162003db9565b60018103620119495750620119426200d17562012f85565b6201388b55565b620119548162003db9565b600281036201196557506201388c55565b620119708162003db9565b600381036201198157506201388d55565b806201198f60049262003db9565b14620119985750565b6201388e55565b15620119a757565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b1562011a3057565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b1562011a8857565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b1562011ae957565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b1562011b4a57565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b1562011ba357565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b1562011c0557565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b1562011c6857565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b1562011cce57565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b1562011d3057565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b1562011d8857565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b1562011de757565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b1562011e4057565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b604081019062011e9a6101008351015162005a6a565b519162011ebc60e062011eb1818451015162005a6a565b519251015162005a8e565b519362011ed184518351146200046462012e52565b62011ee484518651146200046462012e52565b60005b845181101562011f415762011efd818462005ab0565b519061271082101562005a785762011f3b9160018060a01b03865116600052600390811b016020526200046b60406000205462007da0838a62005ab0565b62011ee7565b5092919360005b83518110156201206c5762011f5e818462005ab0565b5190612710918281101562005a785760018060a01b03908189511660005260039081602091811b01815262011f9e60406000205462007e0d868962005ab0565b9062011fab868a62005ab0565b51918783101562005a78578462011fd893878f5116600052811b0184526040600020556200046462012f56565b62011fe4848862005ab0565b518581101562005a785782908462011ffd878c62005ab0565b5116600052811b0181526201201d60406000205462006dd4868962005ab0565b9190926201202c868a62005ab0565b519687101562005a785762012066966200046b956201204c888d62005ab0565b5116600052811b0190526040600020556200046462012fbb565b62011f48565b50506200e8306201207d9162012c2b565b90604051936201208d8562003bea565b60018552602036818701376001600160a01b036106e0819052905116620120b48562005a6a565b526000935b8151851015620123d757620120cf858362005ab0565b5194620120dd845162006777565b91600093620120ed825162006777565b6106a0528496855b875181101562012196576201211c6106e05162012113838b62005ab0565b51168b620129f8565b15806201215e575b6201213b575b620121359062005a5a565b620120f5565b956201215562012135916106e0516200977d8a8c62005ab0565b9690506201212a565b506127108a101562005a78576106e0516201217a828a62005ab0565b511660005260038a811b01602052604060002054151562012124565b509793929096949195976000986127108610159560031b9860038a019a5b895181101562012230578762005a78576106e051620121d4828c62005ab0565b51166000528b60205260406000205415620121fb575b620121f59062005a5a565b620121b4565b9762012227620121f5918b620122168c6106e0519262005ab0565b511662000b13826106a05162005ab0565b989050620121ea565b50949591939650985096909596806106805262005a785760040180610640525495620122616200811f8689620118f8565b61066052600097886106c0525b6106805162005a78576106c051888110156201230c576201229d620122b3916000610680526106405162006ac7565b6106e05191549060031b1c166106a05162012aba565b15620122d2575b620122c86106c05162005a5a565b6106c0526201226e565b976201230590620122ea6106c0516106405162006ac7565b6106e05191549060031b1c1662000b13826106605162005ab0565b97620122ba565b5095939096509690969391936000915b838310620123a657505050506106805162005a785761066051516001600160401b03811162003b9b5762012354816106405162005b96565b6020610660510161064051600052602060002060006106e051905b8481106201238f575050505050620123879062005a5a565b9392620120b9565b60019060208386511695019481850155016201236f565b620082b0620123d0916106e051620123bf868662005ab0565b511662000b13826106605162005ab0565b916201231c565b5050509050565b9080620123e9575050565b620041d091600052601f6020600020910160051c81019062005b56565b90600160401b811162003b9b5781548183558082106201242557505050565b620041d092600052601f6020600020918180850160051c840194168062012454575b500160051c019062005b56565b600019908186019182549160200360031b1c1690553862012447565b9060031b60ff811b9283911b169119161790565b62013884805482101562005a78576000526007602060002091020190600090565b600092620124bf620124b8859462012484565b5062004393565b9380935b855151851015620125ad575061271084101562005a785760039380851b9460018060a01b038516600052602090860181526201250c6040966001886000205491015490620069da565b93849115620125785790620125219162006c06565b9690156201253e575050620125369062005a5a565b9390620124c3565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b875162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b93505092505090565b15620125be57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b6001620126068262012484565b5001546202712e546000928184526202712b90816020526201262f816003604088200162006ac7565b90549060031b1c918386528060205262012650826004604089200162006ac7565b90549060031b1c93865260205260ff6006620126856201267784600560408b200162006ac7565b90549060031b1c9362012484565b50015416620126d35750620126c39262001767620126b59383620126ad620126bb95620069a4565b9690620125b6565b620118f8565b9290620125b6565b1115620126cd5790565b50600190565b6200d4619250620126c393620126ed620126bb93620069a4565b9490620125b6565b9092919262012705825162006777565b60009162012714815162006777565b8390845b8651811015620127af576001600160a01b036201273b8162012113848b62005ab0565b15806201277a575b6201275b575b50620127559062005a5a565b62012718565b81966201277291620082a262012755948b62005ab0565b959062012749565b506127108a101562005a78578062012793838a62005ab0565b511660005260038a811b01602052604060002054151562012743565b509295919694509260005b87518110156201283e5761271086101562005a78576001600160a01b0380620127e4838b62005ab0565b5116600052600387811b016020526040600020541562012811575b506201280b9062005a5a565b620127ba565b81956201283691620128286201280b948c62005ab0565b511662000b13828862005ab0565b9490620127ff565b509250945092612710831015938462005a785760049586600395861b01968754946201286f6200811f8288620118f8565b9460009689889a5b620129e357818b10156201291857506000998b620128b26201289a838362006ac7565b90546001600160a01b0392918e1b1c82168a62012aba565b15620128d5575b505090620128ca8b94939262005a5a565b9a9091929362012877565b91998c959493929091620128eb908c9062006ac7565b9054908d1b1c16620128fe828b62005ab0565b526201290a9062005a5a565b9890919293508b38620128b9565b9697949a98505091975092506000915b838310620129be5750505050620129a9578051926001600160401b03841162012994575062012958838362005b96565b602080910191600052806000209060005b84811062012978575050505050565b83516001600160a01b0316838201559281019260010162012969565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b620129dc90620082b0906001600160a01b036200977d868662005ab0565b9162012928565b603285634e487b7160e01b6000525260246000fd5b9060005b61271083101562005a78576003600484821b01805483101562012a57578262012a259162006ac7565b9054911b1c6001600160a01b039081169083161462012a4f5762012a499062005a5a565b620129fc565b505050600190565b5050505050600090565b9060005b61271083101562005a785760036201389784821b01805483101562012a57578262012a909162006ac7565b9054911b1c6001600160a01b039081169083161462012a4f5762012ab49062005a5a565b62012a65565b9060005b825181101562012af9576001600160a01b038062012add838662005ab0565b51169083161462012a4f5762012af39062005a5a565b62012abe565b505050600090565b801562003229576000190190565b9081519060005b600019838101848111620032295782101562012bdd576001820180831162003229575b84811062012b5457505062012b4e9062005a5a565b62012b16565b6001600160a01b038062012b69858962005ab0565b51168162012b78848a62005ab0565b51161462012b93575b5062012b8d9062005a5a565b62012b39565b8286929601828111620032295762012b8d9262012bd69262012bba62012bcf938b62005ab0565b511662012bc8898b62005ab0565b5262012b01565b9562012b01565b9062012b81565b50509062012beb8162006777565b9060005b81811062012bfe575090925050565b62012c25906001600160a01b0362012c17828862005ab0565b511662000b13828662005ab0565b62012bef565b80519160005b600019848101858111620032295782101562012ce3576001820180831162003229575b85811062012c6f57505062012c699062005a5a565b62012c31565b62012c7b838662005ab0565b5162012c88828762005ab0565b511462012ca1575b62012c9b9062005a5a565b62012c54565b9481810190808211620032295762012cd462012cdb9162012cc762012c9b948962005ab0565b5162012bc88a8a62005ab0565b9662012b01565b905062012c90565b5050909162012cf28162006777565b9060005b81811062012d05575090925050565b8062012d1662012d23928762005ab0565b5162000b13828662005ab0565b62012cf6565b60405162012d378162003b7f565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b60405162012da58162003c22565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b60405162012dfb8162003bea565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b60405162012e358162003bea565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b60405162012e608162003bea565b6012815271496e76616c696420506172616d657465727360701b602082015290565b60405162012e908162003bea565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b60405162012ec38162003bea565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b60405162012ef88162003bea565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b60405162012f318162003bea565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b60405162012f648162003bea565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b60405162012f938162003bea565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b60405162012fc98162003bea565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b602281101562003d03578015620131dc5760018114620126cd5760028114620131d65760038114620131d05760048114620131ca5760058114620131c45760068114620131be5760078114620131b85760088114620131b25760098114620131ac57600a8114620131a657600b8114620131a057600c81146201319a57600d81146201319457600e81146201318e57600f81146201318857601081146201318257601181146201317c57601281146201317657601381146201317057601481146201316a57601581146201316457601881146201315e57601781146201315857601981146201315257601a81146201314c57601b81146201314657601c81146201314057601d81146201313a57601e81146201313457601f81146201312e576020811462013128576021146201312357600090565b602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b50600090565b90815181101562005a78570160200190565b60405190620132038262003c22565b60288252604036602084013760005b601481106201322057505090565b6013908082039182116200322957600382901b916001600160fd1b03811603620032295760ff8083116200322957600192620132699084901b6001600160a01b03861662006983565b60f081168282160391821162003229576201328d9060f41b600f60f81b16620132f6565b82841b916001600160ff1b03841684036200322957620132ca9160001a620132b68489620131e2565b5360f81b6001600160f81b031916620132f6565b9281018091116200322957620132e9620132f09360001a9186620131e2565b5362005a5a565b62013212565b60f81c600a8110156201331f5760300160ff8111620032295760f81b6001600160f81b03191690565b60570160ff8111620032295760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b651f4fe3ad533e3985b88710ce05a205152f02825e155777f3bcb8b3bbfcfb03a24ad859a97f543436e70c22b09d31fb4c7b9e987d7a008c98817c9b50a97b1224546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b658e71c125ecfe4aeed61c8cf4b09183dd0bf2a3230d826486f04e5f6f0de58e2c18baa939e2e21be0e012ec26e9ec87e9e6faa065bd9f5835250457786300ece8546865206265666f7265206f7065726174696f6e20706c7567696e2073797374546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212205acddd0e839937cf85abeb6e0ca1497280e5aef0b9680f5ad71a86008aa58f3864736f6c63430008110033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/darc-js/dist/darcBinary/darcBinary.d.ts b/darc-js/dist/darcBinary/darcBinary.d.ts deleted file mode 100644 index 3cb97084..00000000 --- a/darc-js/dist/darcBinary/darcBinary.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export declare enum DARC_VERSION { - Test = 0 -} -export type DARCBinaryStruct = { - version: DARC_VERSION; - bytecode: any; - abi: any; -}; -export declare function darcBinary(version: DARC_VERSION): DARCBinaryStruct; -//# sourceMappingURL=darcBinary.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/darcBinary/darcBinary.d.ts.map b/darc-js/dist/darcBinary/darcBinary.d.ts.map deleted file mode 100644 index bfa255e1..00000000 --- a/darc-js/dist/darcBinary/darcBinary.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"darcBinary.d.ts","sourceRoot":"","sources":["../../src/darcBinary/darcBinary.ts"],"names":[],"mappings":"AAEA,oBAAY,YAAY;IACtB,IAAI,IAAA;CACL;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,GAAG,CAAC;CACV,CAAA;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CAUlE"} \ No newline at end of file diff --git a/darc-js/dist/darcBinary/darcBinary.js b/darc-js/dist/darcBinary/darcBinary.js deleted file mode 100644 index ed913bb7..00000000 --- a/darc-js/dist/darcBinary/darcBinary.js +++ /dev/null @@ -1,16 +0,0 @@ -import * as DARCTest from "./DARC-test.json"; -export var DARC_VERSION; -(function (DARC_VERSION) { - DARC_VERSION[DARC_VERSION["Test"] = 0] = "Test"; -})(DARC_VERSION || (DARC_VERSION = {})); -export function darcBinary(version) { - if (version === DARC_VERSION.Test) { - return { - version: DARC_VERSION.Test, - bytecode: DARCTest.bytecode, - abi: DARCTest.abi, - }; - } - throw new Error("DARC version not supported yet."); -} -//# sourceMappingURL=darcBinary.js.map \ No newline at end of file diff --git a/darc-js/dist/darcBinary/darcBinary.js.map b/darc-js/dist/darcBinary/darcBinary.js.map deleted file mode 100644 index 573fa0ef..00000000 --- a/darc-js/dist/darcBinary/darcBinary.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"darcBinary.js","sourceRoot":"","sources":["../../src/darcBinary/darcBinary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAE7C,MAAM,CAAN,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,+CAAI,CAAA;AACN,CAAC,EAFW,YAAY,KAAZ,YAAY,QAEvB;AAQD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,IAAI,OAAO,KAAK,YAAY,CAAC,IAAI,EAAC;QAChC,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,IAAI;YAC1B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB,CAAA;KACF;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/darcjs.d.ts b/darc-js/dist/darcjs.d.ts deleted file mode 100644 index 8846c192..00000000 --- a/darc-js/dist/darcjs.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { deployDARC } from './deployDARC/deployDARC'; -import { transpiler } from './SDK/transpiler'; -import { DARC, InitParam, TokenInfo, MemberInfo } from './DARC/DARC'; -import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; -import { ethers } from 'ethers'; -import { run } from './SDK/runtime'; -export { deployDARC, transpiler, DARC, InitParam, TokenInfo, MemberInfo, darcBinary, DARCBinaryStruct, DARC_VERSION, ethers, run }; -//# sourceMappingURL=darcjs.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/darcjs.d.ts.map b/darc-js/dist/darcjs.d.ts.map deleted file mode 100644 index 3b9e4647..00000000 --- a/darc-js/dist/darcjs.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"darcjs.d.ts","sourceRoot":"","sources":["../src/darcjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAC;AAElC,OAAO,EACL,UAAU,EACV,UAAU,EACV,IAAI,EACJ,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,GAAG,EACJ,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/darcjs.js b/darc-js/dist/darcjs.js deleted file mode 100644 index 47617037..00000000 --- a/darc-js/dist/darcjs.js +++ /dev/null @@ -1,8 +0,0 @@ -import { deployDARC } from './deployDARC/deployDARC'; -import { transpiler } from './SDK/transpiler'; -import { DARC } from './DARC/DARC'; -import { darcBinary, DARC_VERSION } from './darcBinary/darcBinary'; -import { ethers } from 'ethers'; -import { run } from './SDK/runtime'; -export { deployDARC, transpiler, DARC, darcBinary, DARC_VERSION, ethers, run }; -//# sourceMappingURL=darcjs.js.map \ No newline at end of file diff --git a/darc-js/dist/darcjs.js.map b/darc-js/dist/darcjs.js.map deleted file mode 100644 index 6b61d370..00000000 --- a/darc-js/dist/darcjs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"darcjs.js","sourceRoot":"","sources":["../src/darcjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAoC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,UAAU,EAAoB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAC;AAElC,OAAO,EACL,UAAU,EACV,UAAU,EACV,IAAI,EAIJ,UAAU,EAEV,YAAY,EACZ,MAAM,EACN,GAAG,EACJ,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/index.d.ts b/darc-js/dist/index.d.ts deleted file mode 100644 index 6e0f163b..00000000 --- a/darc-js/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as darcjs from './darcjs'; -export { darcjs }; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/index.d.ts.map b/darc-js/dist/index.d.ts.map deleted file mode 100644 index 0ebad036..00000000 --- a/darc-js/dist/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/index.js b/darc-js/dist/index.js deleted file mode 100644 index 61437046..00000000 --- a/darc-js/dist/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import * as darcjs from './darcjs'; -export { darcjs }; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/darc-js/dist/index.js.map b/darc-js/dist/index.js.map deleted file mode 100644 index 62576bef..00000000 --- a/darc-js/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/instructions.d.ts b/darc-js/dist/instructions.d.ts deleted file mode 100644 index 4698d20f..00000000 --- a/darc-js/dist/instructions.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { TokenOperations } from "./SDK/struct/token-operation-map"; -import { Plugin } from "./SDK/struct/Plugin"; -declare function transfer_tokens(targetAddress: string, amount: number, tokenID: number): void; -declare function mint_tokens(tokenID: number, amount: number, targetAddress: string): void; -declare function create_token_class(tokenName: string, tokenVotingWeight: number, tokenDividendWeight: number): void; -declare function withdraw_dividends(): void; -declare function withdraw_money(amount: number): void; -declare function withdraw_money_and_send_to_address(amount: number, targetAddress: string): void; -declare function pay_money(amount: number): void; -declare function enable_plugin_index(pluginIndex: number): void; -declare function disable_plugin_index(pluginIndex: number): void; -declare function add_plugin(currentRestrictionPlugin: Plugin): void; -declare function add_and_enable_plugin(currentRestrictionPlugin: Plugin): void; -declare function burn_tokens(tokenID: number, amount: number, targetAddress: string): void; -declare function batch_transfer_tokens(tokenOperations: TokenOperations): void; -declare function batch_mint_tokens(tokenOperations: TokenOperations): void; -declare function batch_burn_tokens(tokenOperations: TokenOperations): void; -declare function call_emergency(emergency_id: number): void; -declare function set_parameter(parameter: string, value: string): void; -declare function add_to_member_list(alias: string, role: string, address: string): void; -declare function modify_member_list(alias: string, role: string, address: string): void; -declare function suspend_member_list(address: string): void; -declare function reactivate_member_list(address: string): void; -export { transfer_tokens, mint_tokens, create_token_class, withdraw_dividends, withdraw_money, withdraw_money_and_send_to_address, pay_money, enable_plugin_index, disable_plugin_index, add_plugin, add_and_enable_plugin, burn_tokens, batch_transfer_tokens, batch_mint_tokens, batch_burn_tokens, call_emergency, set_parameter, add_to_member_list, modify_member_list, suspend_member_list, reactivate_member_list }; -//# sourceMappingURL=instructions.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/instructions.d.ts.map b/darc-js/dist/instructions.d.ts.map deleted file mode 100644 index fe77f1e0..00000000 --- a/darc-js/dist/instructions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,iBAAS,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAC9E;AAED,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAC1E;AAED,iBAAS,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,QAEpG;AAED,iBAAS,kBAAkB,SAE1B;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,QAErC;AAED,iBAAS,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAEhF;AAED,iBAAS,SAAS,CAAC,MAAM,EAAE,MAAM,QAEhC;AAED,iBAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,QAE/C;AAED,iBAAS,oBAAoB,CAAC,WAAW,EAAE,MAAM,QAEhD;AAED,iBAAS,UAAU,CAAC,wBAAwB,EAAE,MAAM,QAEnD;AAED,iBAAS,qBAAqB,CAAC,wBAAwB,EAAE,MAAM,QAE9D;AAED,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAE1E;AAED,iBAAS,qBAAqB,CAAC,eAAe,EAAE,eAAe,QAE9D;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,eAAe,QAE1D;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,eAAe,QAE1D;AAED,iBAAS,cAAc,CAAC,YAAY,EAAE,MAAM,QAE3C;AAED,iBAAS,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEtD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAEvE;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAEvE;AAED,iBAAS,mBAAmB,CAAC,OAAO,EAAE,MAAM,QAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,EAAE,MAAM,QAE9C;AAED,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kCAAkC,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAC,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/instructions.js b/darc-js/dist/instructions.js deleted file mode 100644 index 96899215..00000000 --- a/darc-js/dist/instructions.js +++ /dev/null @@ -1,46 +0,0 @@ -// all the included instructions are here, mostly instructions for operations -// todo: add backend support for current operations -function transfer_tokens(targetAddress, amount, tokenID) { -} -function mint_tokens(tokenID, amount, targetAddress) { -} -function create_token_class(tokenName, tokenVotingWeight, tokenDividendWeight) { -} -function withdraw_dividends() { -} -function withdraw_money(amount) { -} -function withdraw_money_and_send_to_address(amount, targetAddress) { -} -function pay_money(amount) { -} -function enable_plugin_index(pluginIndex) { -} -function disable_plugin_index(pluginIndex) { -} -function add_plugin(currentRestrictionPlugin) { -} -function add_and_enable_plugin(currentRestrictionPlugin) { -} -function burn_tokens(tokenID, amount, targetAddress) { -} -function batch_transfer_tokens(tokenOperations) { -} -function batch_mint_tokens(tokenOperations) { -} -function batch_burn_tokens(tokenOperations) { -} -function call_emergency(emergency_id) { -} -function set_parameter(parameter, value) { -} -function add_to_member_list(alias, role, address) { -} -function modify_member_list(alias, role, address) { -} -function suspend_member_list(address) { -} -function reactivate_member_list(address) { -} -export { transfer_tokens, mint_tokens, create_token_class, withdraw_dividends, withdraw_money, withdraw_money_and_send_to_address, pay_money, enable_plugin_index, disable_plugin_index, add_plugin, add_and_enable_plugin, burn_tokens, batch_transfer_tokens, batch_mint_tokens, batch_burn_tokens, call_emergency, set_parameter, add_to_member_list, modify_member_list, suspend_member_list, reactivate_member_list }; -//# sourceMappingURL=instructions.js.map \ No newline at end of file diff --git a/darc-js/dist/instructions.js.map b/darc-js/dist/instructions.js.map deleted file mode 100644 index 28d0684a..00000000 --- a/darc-js/dist/instructions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mDAAmD;AAKnD,SAAS,eAAe,CAAC,aAAqB,EAAE,MAAc,EAAE,OAAe;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB;AAC3E,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB,EAAE,iBAAyB,EAAE,mBAA2B;AAErG,CAAC;AAED,SAAS,kBAAkB;AAE3B,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;AAEtC,CAAC;AAED,SAAS,kCAAkC,CAAC,MAAc,EAAE,aAAqB;AAEjF,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;AAEjC,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB;AAEhD,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;AAEjD,CAAC;AAED,SAAS,UAAU,CAAC,wBAAgC;AAEpD,CAAC;AAED,SAAS,qBAAqB,CAAC,wBAAgC;AAE/D,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB;AAE3E,CAAC;AAED,SAAS,qBAAqB,CAAC,eAAgC;AAE/D,CAAC;AAED,SAAS,iBAAiB,CAAC,eAAgC;AAE3D,CAAC;AAED,SAAS,iBAAiB,CAAC,eAAgC;AAE3D,CAAC;AAED,SAAS,cAAc,CAAC,YAAoB;AAE5C,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,KAAa;AAEvD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe;AAExE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe;AAExE,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;AAE5C,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;AAE/C,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kCAAkC,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAC,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/plugin/ConditionNode.d.ts b/darc-js/dist/plugin/ConditionNode.d.ts deleted file mode 100644 index 280b3a11..00000000 --- a/darc-js/dist/plugin/ConditionNode.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Expression } from "./Expression"; -declare enum ConditionNodeType { - ExpressionNode = 0, - LogicalOperatorNode = 1, - BooleanValueNode = 2 -} -declare enum LogicalOperatorType { - AND = 0, - OR = 1, - NOT = 2 -} -declare class ConditionNode { - type: ConditionNodeType; - expression: Expression | null; - logicalOperator: LogicalOperatorType | null; - expressionParameters: (number | string | bigint)[] | null; - booleanValue: boolean | null; - childList: ConditionNode[]; - constructor(type: ConditionNodeType, expression: Expression | null, logicalOperator: LogicalOperatorType | null, expressionParameters: (number | string | bigint)[] | null, booleanValue?: boolean | null); - serializeToString(): string; - isValidLogicalOperatorNode(): void; - isValidExpressionNode(): void; - isValidBooleanValueNode(): void; -} -export { ConditionNode, Expression, ConditionNodeType, LogicalOperatorType }; -//# sourceMappingURL=ConditionNode.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/plugin/ConditionNode.d.ts.map b/darc-js/dist/plugin/ConditionNode.d.ts.map deleted file mode 100644 index fb54ebeb..00000000 --- a/darc-js/dist/plugin/ConditionNode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConditionNode.d.ts","sourceRoot":"","sources":["../../src/plugin/ConditionNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,aAAK,iBAAiB;IAAG,cAAc,IAAA;IAAE,mBAAmB,IAAA;IAAE,gBAAgB,IAAA;CAAC;AAC/E,aAAK,mBAAmB;IAAE,GAAG,IAAA;IAAE,EAAE,IAAA;IAAE,GAAG,IAAA;CAAC;AAEvC,cAAM,aAAa;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IACtD,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,aAAa,EAAE,CAAM;gBACpB,IAAI,EAAE,iBAAiB,EAC/B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,eAAe,EAAE,mBAAmB,GAAG,IAAI,EAC3C,oBAAoB,EAAG,CAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EACtD,YAAY,GAAE,OAAO,GAAG,IAAW;IAavC,iBAAiB,IAAI,MAAM;IAsL3B,0BAA0B;IA0B1B,qBAAqB;IAiBrB,uBAAuB;CA6B1B;AAGD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/plugin/ConditionNode.js b/darc-js/dist/plugin/ConditionNode.js deleted file mode 100644 index c700a0e4..00000000 --- a/darc-js/dist/plugin/ConditionNode.js +++ /dev/null @@ -1,258 +0,0 @@ -// The basic abstact syntax tree node of the expression tree -// representing the condition of a restriction plugin condition -import { Expression } from "./Expression"; -var ConditionNodeType; -(function (ConditionNodeType) { - ConditionNodeType[ConditionNodeType["ExpressionNode"] = 0] = "ExpressionNode"; - ConditionNodeType[ConditionNodeType["LogicalOperatorNode"] = 1] = "LogicalOperatorNode"; - ConditionNodeType[ConditionNodeType["BooleanValueNode"] = 2] = "BooleanValueNode"; -})(ConditionNodeType || (ConditionNodeType = {})); -var LogicalOperatorType; -(function (LogicalOperatorType) { - LogicalOperatorType[LogicalOperatorType["AND"] = 0] = "AND"; - LogicalOperatorType[LogicalOperatorType["OR"] = 1] = "OR"; - LogicalOperatorType[LogicalOperatorType["NOT"] = 2] = "NOT"; -})(LogicalOperatorType || (LogicalOperatorType = {})); -class ConditionNode { - constructor(type, expression, logicalOperator, expressionParameters, booleanValue = null) { - this.childList = []; - this.type = type; - this.expression = expression; - this.logicalOperator = logicalOperator; - this.expressionParameters = expressionParameters; - this.childList = []; - this.booleanValue = booleanValue; - // validate the node - this.isValidLogicalOperatorNode(); - this.isValidExpressionNode(); - } - serializeToString() { - const childListString = this.childList.length == 0 ? this.childList.map((child) => child.serializeToString()).join(" ") : null; - let returnString = ""; - if (this.type === ConditionNodeType.ExpressionNode) { - returnString += `Expression: ${this.expression}(${this.expressionParameters})`; - } - else if (this.type === ConditionNodeType.LogicalOperatorNode) { - returnString += `LogicalOperator: ${this.logicalOperator}`; - } - else if (this.type === ConditionNodeType.BooleanValueNode) { - returnString += `BooleanValue: ${this.booleanValue}`; - } - if (childListString) { - returnString += ` Child List: ${childListString}`; - } - return returnString; - } - // operator overloading for '&' operator - [Symbol.for('&')](rightOperand) { - // if the current node is an expression node - if (this.type === ConditionNodeType.ExpressionNode) { - // if the right operand is an expression node, create a new logical operator node of type OR - if (rightOperand.type == ConditionNodeType.BooleanValueNode || rightOperand.type == ConditionNodeType.ExpressionNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // if the right operand is a logical operator node, add the current node as the left child of the right operand - else if (rightOperand.type == ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an AND operator, add the current node as the child to the child list of the right operand - if (rightOperand.logicalOperator == LogicalOperatorType.AND) { - rightOperand.childList.push(this); - return rightOperand; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.OR) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // else throw an exception - else { - throw new Error("Invalid logical operator type"); - } - } - } - // if the current node is a logical operator node - else if (this.type === ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an expression node, add the right operand as the right child of the current node - if (this.logicalOperator === LogicalOperatorType.AND) { - this.childList.push(rightOperand); - return this; - } - // if the right operand is a logical operator node, add the right operand as the right child of the current node - else if (this.logicalOperator === LogicalOperatorType.OR) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (this.logicalOperator === LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - } - else if (this.type === ConditionNodeType.BooleanValueNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.AND, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - throw new Error("Invalid condition node type"); - } - // operator overloading for '|' operator - [Symbol.for('|')](rightOperand) { - // if the current node is an expression node - if (this.type === ConditionNodeType.ExpressionNode) { - // if the right operand is an expression node, create a new logical operator node of type OR - if (rightOperand.type == ConditionNodeType.BooleanValueNode || rightOperand.type == ConditionNodeType.ExpressionNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // if the right operand is a logical operator node, add the current node as the left child of the right operand - else if (rightOperand.type == ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an AND operator, add the current node as the child to the child list of the right operand - if (rightOperand.logicalOperator == LogicalOperatorType.OR) { - rightOperand.childList.push(this); - return rightOperand; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.AND) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (rightOperand.logicalOperator == LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - // else throw an exception - else { - throw new Error("Invalid logical operator type"); - } - } - } - // if the current node is a logical operator node - else if (this.type === ConditionNodeType.LogicalOperatorNode) { - // if the right operand is an expression node, add the right operand as the right child of the current node - if (this.logicalOperator === LogicalOperatorType.OR) { - this.childList.push(rightOperand); - return this; - } - // if the right operand is a logical operator node, add the right operand as the right child of the current node - else if (this.logicalOperator === LogicalOperatorType.AND) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - else if (this.logicalOperator === LogicalOperatorType.NOT) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - } - else if (this.type === ConditionNodeType.BooleanValueNode) { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.OR, null); - logicalOperatorNode.childList.push(this); - logicalOperatorNode.childList.push(rightOperand); - return logicalOperatorNode; - } - throw new Error("Invalid condition node type"); - } - // if an operator "!" is used, the expression will return a - // logical operator node with current node as left child, and - // a null object as right child, and the operator type is "!" - [Symbol.for('!')]() { - let logicalOperatorNode = new ConditionNode(ConditionNodeType.LogicalOperatorNode, null, LogicalOperatorType.NOT, null); - logicalOperatorNode.childList.push(this); - return logicalOperatorNode; - } - // check if the current node is a valid logical operator node, - // and throw an exception if it is not - isValidLogicalOperatorNode() { - if (this.type === ConditionNodeType.LogicalOperatorNode) { - // check if the logical operator type is null - if (this.logicalOperator === null) { - throw new Error("The logical operator type of the current node is null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // if operator is AND, OR, make sure that child list has at least 2 elements - if (this.logicalOperator === LogicalOperatorType.AND || this.logicalOperator === LogicalOperatorType.OR) { - if (this.childList.length < 2) { - throw new Error("The list of all child nodes has less than 2 elements, which is illegal.\n\ - Current node:\n " + JSON.stringify(this)); - } - } - // if operator is NOT, make sure that the child list has only 1 element - if (this.logicalOperator === LogicalOperatorType.NOT) { - if (this.childList.length !== 1) { - throw new Error("Invalid length of child node for NOT operator.\n\ - Current node:\n " + JSON.stringify(this)); - } - } - } - } - // check if the current node is a valid expression node, - // and throw an exception if it is not - isValidExpressionNode() { - if (this.type === ConditionNodeType.ExpressionNode) { - // check if the expression type is null - if (this.expression === null) { - throw new Error("The expression type of the current expression node is null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the child list is empty - if (this.childList.length !== 0) { - throw new Error("Illegal element in child node list of an expression node.\n\ - Current node:\n " + JSON.stringify(this)); - } - } - } - // check if the current node is a valid boolean value node, - // and throw an exception if it is not - isValidBooleanValueNode() { - if (this.type === ConditionNodeType.BooleanValueNode) { - // check if the boolean value is null - if (this.booleanValue === null) { - throw new Error("The boolean value of the current boolean value node is null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the left and right child are null - if (this.childList.length !== 0) { - throw new Error("The child list node of current node is not empty for a boolean value node.\n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the expression type is null - if (this.expression !== null) { - throw new Error("The expression type of the current boolean value node is not null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the logical operator type is null - if (this.logicalOperator !== null) { - throw new Error("The logical operator type of the current boolean value node is not null. \n\ - Current node:\n " + JSON.stringify(this)); - } - // make sure that the expression parameters is null - if (this.expressionParameters !== null) { - throw new Error("The expression parameters of the current boolean value node is not null. \n\ - Current node:\n " + JSON.stringify(this)); - } - } - } -} -export { ConditionNode, Expression, ConditionNodeType, LogicalOperatorType }; -//# sourceMappingURL=ConditionNode.js.map \ No newline at end of file diff --git a/darc-js/dist/plugin/ConditionNode.js.map b/darc-js/dist/plugin/ConditionNode.js.map deleted file mode 100644 index 1737406a..00000000 --- a/darc-js/dist/plugin/ConditionNode.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConditionNode.js","sourceRoot":"","sources":["../../src/plugin/ConditionNode.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+DAA+D;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,IAAK,iBAA0E;AAA/E,WAAK,iBAAiB;IAAG,6EAAc,CAAA;IAAE,uFAAmB,CAAA;IAAE,iFAAgB,CAAA;AAAA,CAAC,EAA1E,iBAAiB,KAAjB,iBAAiB,QAAyD;AAC/E,IAAK,mBAAkC;AAAvC,WAAK,mBAAmB;IAAE,2DAAG,CAAA;IAAE,yDAAE,CAAA;IAAE,2DAAG,CAAA;AAAA,CAAC,EAAlC,mBAAmB,KAAnB,mBAAmB,QAAe;AAEvC,MAAM,aAAa;IAOf,YAAY,IAAuB,EAC/B,UAA6B,EAC7B,eAA2C,EAC3C,oBAAsD,EACtD,eAA+B,IAAI;QALvC,cAAS,GAAoB,EAAE,CAAC;QAM5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,oBAAoB;QACpB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED,iBAAiB;QACb,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/H,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAE;YAChD,YAAY,IAAG,eAAe,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;SACjF;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAE;YAC1D,YAAY,IAAG,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC7D;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;YACvD,YAAY,IAAG,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvD;QACD,IAAI,eAAe,EAAE;YACjB,YAAY,IAAG,gBAAgB,eAAe,EAAE,CAAC;SACpD;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,wCAAwC;IACxC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,YAA2B;QAE1C,4CAA4C;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAE;YAEhD,4FAA4F;YAC5F,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,cAAc,EAAC;gBACjH,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;YAED,+GAA+G;iBAC1G,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,mBAAmB,EAAE;gBAEjE,oHAAoH;gBACpH,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBACzD,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,OAAO,YAAY,CAAC;iBACvB;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,EAAE,EAAE;oBAC7D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBAC9D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;gBAED,0BAA0B;qBACrB;oBACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBACpD;aACJ;SACJ;QAED,iDAAiD;aAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAE;YAE1D,2GAA2G;YAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;aACf;YAED,gHAAgH;iBAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBACtD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;iBACI,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;SACJ;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;YACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjD,OAAO,mBAAmB,CAAC;SAC9B;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEnD,CAAC;IAED,wCAAwC;IACxC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,YAA2B;QAE1C,4CAA4C;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAE;YAEhD,4FAA4F;YAC5F,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,cAAc,EAAC;gBACjH,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;YAED,+GAA+G;iBAC1G,IAAI,YAAY,CAAC,IAAI,IAAI,iBAAiB,CAAC,mBAAmB,EAAE;gBAEjE,oHAAoH;gBACpH,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,EAAE,EAAE;oBACxD,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,OAAO,YAAY,CAAC;iBACvB;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBAC9D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;qBAEI,IAAI,YAAY,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,EAAE;oBAC9D,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,OAAO,mBAAmB,CAAC;iBAC9B;gBAED,0BAA0B;qBACrB;oBACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBACpD;aACJ;SACJ;QAED,iDAAiD;aAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAE;YAE1D,2GAA2G;YAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;aACf;YAED,gHAAgH;iBAC3G,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;iBACI,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAE;gBACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC;aAC9B;SACJ;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;YACvD,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjD,OAAO,mBAAmB,CAAC;SAC9B;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED,2DAA2D;IAC3D,6DAA6D;IAC7D,6DAA6D;IAC7D,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,mBAAmB,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxH,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,8DAA8D;IAC9D,sCAAsC;IACtC,0BAA0B;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,EAAC;YACpD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,4EAA4E;YAC5E,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,EAAE,EAAC;gBACpG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC;qCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC7C;aACJ;YACD,uEAAuE;YACvE,IAAI,IAAI,CAAC,eAAe,KAAK,mBAAmB,CAAC,GAAG,EAAC;gBACjD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC;qCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC7C;aACJ;SACJ;IACL,CAAC;IAED,wDAAwD;IACxD,sCAAsC;IACtC,qBAAqB;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,cAAc,EAAC;YAC/C,uCAAuC;YACvC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAC;gBACzB,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,yCAAyC;YACzC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;IAED,2DAA2D;IAC3D,sCAAsC;IACtC,uBAAuB;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAC;YACjD,qCAAqC;YACrC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,mDAAmD;YACnD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAC;gBACzB,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,mDAAmD;YACnD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;YACD,mDAAmD;YACnD,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAC;gBACnC,MAAM,IAAI,KAAK,CAAC;iCACC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;CACJ;AAGD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/plugin/Expression.d.ts b/darc-js/dist/plugin/Expression.d.ts deleted file mode 100644 index 1fb38c6d..00000000 --- a/darc-js/dist/plugin/Expression.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export declare enum Expression { - Operator_Address_Equals = 1, - Operator_Alias_Equals = 2, - Operator_Role_Equals = 3, - Operator_Address_Not_Equals = 4, - Operator_Alias_Not_Equals = 5, - Operator_Role_Not_Equals = 6, - Operator_Address_In_List = 7, - Operator_Alias_In_List = 8, - Operator_Role_In_List = 9, - Operator_Address_Not_In_List = 10, - Operator_Alias_Not_In_List = 11, - Operator_Role_Not_In_List = 12, - Operation_Equals = 1000, - Operation_Not_Equals = 1001 -} -//# sourceMappingURL=Expression.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/plugin/Expression.d.ts.map b/darc-js/dist/plugin/Expression.d.ts.map deleted file mode 100644 index 07eeea8e..00000000 --- a/darc-js/dist/plugin/Expression.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Expression.d.ts","sourceRoot":"","sources":["../../src/plugin/Expression.ts"],"names":[],"mappings":"AAEA,oBAAY,UAAU;IAEpB,uBAAuB,IAAI;IAC3B,qBAAqB,IAAI;IACzB,oBAAoB,IAAI;IACxB,2BAA2B,IAAI;IAC/B,yBAAyB,IAAI;IAC7B,wBAAwB,IAAI;IAC5B,wBAAwB,IAAI;IAC5B,sBAAsB,IAAI;IAC1B,qBAAqB,IAAI;IACzB,4BAA4B,KAAK;IACjC,0BAA0B,KAAK;IAC/B,yBAAyB,KAAK;IAG9B,gBAAgB,OAAO;IACvB,oBAAoB,OAAO;CAI5B"} \ No newline at end of file diff --git a/darc-js/dist/plugin/Expression.js b/darc-js/dist/plugin/Expression.js deleted file mode 100644 index 3d3de73b..00000000 --- a/darc-js/dist/plugin/Expression.js +++ /dev/null @@ -1,22 +0,0 @@ -// All the expressions that can be used in the by-law script -export var Expression; -(function (Expression) { - // operator identifiers - Expression[Expression["Operator_Address_Equals"] = 1] = "Operator_Address_Equals"; - Expression[Expression["Operator_Alias_Equals"] = 2] = "Operator_Alias_Equals"; - Expression[Expression["Operator_Role_Equals"] = 3] = "Operator_Role_Equals"; - Expression[Expression["Operator_Address_Not_Equals"] = 4] = "Operator_Address_Not_Equals"; - Expression[Expression["Operator_Alias_Not_Equals"] = 5] = "Operator_Alias_Not_Equals"; - Expression[Expression["Operator_Role_Not_Equals"] = 6] = "Operator_Role_Not_Equals"; - Expression[Expression["Operator_Address_In_List"] = 7] = "Operator_Address_In_List"; - Expression[Expression["Operator_Alias_In_List"] = 8] = "Operator_Alias_In_List"; - Expression[Expression["Operator_Role_In_List"] = 9] = "Operator_Role_In_List"; - Expression[Expression["Operator_Address_Not_In_List"] = 10] = "Operator_Address_Not_In_List"; - Expression[Expression["Operator_Alias_Not_In_List"] = 11] = "Operator_Alias_Not_In_List"; - Expression[Expression["Operator_Role_Not_In_List"] = 12] = "Operator_Role_Not_In_List"; - // operations - Expression[Expression["Operation_Equals"] = 1000] = "Operation_Equals"; - Expression[Expression["Operation_Not_Equals"] = 1001] = "Operation_Not_Equals"; - // todo: add more operations -})(Expression || (Expression = {})); -//# sourceMappingURL=Expression.js.map \ No newline at end of file diff --git a/darc-js/dist/plugin/Expression.js.map b/darc-js/dist/plugin/Expression.js.map deleted file mode 100644 index dabdcf15..00000000 --- a/darc-js/dist/plugin/Expression.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../src/plugin/Expression.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,MAAM,CAAN,IAAY,UAqBX;AArBD,WAAY,UAAU;IACpB,uBAAuB;IACvB,iFAA2B,CAAA;IAC3B,6EAAyB,CAAA;IACzB,2EAAwB,CAAA;IACxB,yFAA+B,CAAA;IAC/B,qFAA6B,CAAA;IAC7B,mFAA4B,CAAA;IAC5B,mFAA4B,CAAA;IAC5B,+EAA0B,CAAA;IAC1B,6EAAyB,CAAA;IACzB,4FAAiC,CAAA;IACjC,wFAA+B,CAAA;IAC/B,sFAA8B,CAAA;IAE9B,aAAa;IACb,sEAAuB,CAAA;IACvB,8EAA2B,CAAA;IAE3B,4BAA4B;AAE9B,CAAC,EArBW,UAAU,KAAV,UAAU,QAqBrB"} \ No newline at end of file diff --git a/darc-js/dist/runtime/runtime.d.ts b/darc-js/dist/runtime/runtime.d.ts deleted file mode 100644 index 35bc618f..00000000 --- a/darc-js/dist/runtime/runtime.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ethers } from 'ethers'; -import { DARC_VERSION } from '../darcBinary/darcBinary'; -export declare function deployDARC(version: DARC_VERSION, signer: ethers.Wallet): Promise; -//# sourceMappingURL=runtime.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/runtime/runtime.d.ts.map b/darc-js/dist/runtime/runtime.d.ts.map deleted file mode 100644 index 70de7c40..00000000 --- a/darc-js/dist/runtime/runtime.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAC,YAAY,EAA+B,MAAM,0BAA0B,CAAC;AAapF,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS9F"} \ No newline at end of file diff --git a/darc-js/dist/runtime/runtime.js b/darc-js/dist/runtime/runtime.js deleted file mode 100644 index 4d8d377c..00000000 --- a/darc-js/dist/runtime/runtime.js +++ /dev/null @@ -1,24 +0,0 @@ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -import { ethers } from 'ethers'; -import { darcBinary } from '../darcBinary/darcBinary'; -export function deployDARC(version, signer) { - return __awaiter(this, void 0, void 0, function* () { - const darcBinaryStruct = darcBinary(version); - const bytecode = darcBinaryStruct.bytecode; - const abi = darcBinaryStruct.abi; - const contractFactory = new ethers.ContractFactory(abi, bytecode, signer); - const contract = yield contractFactory.deploy(); - yield contract.initialize(); - const deployed_address = contract.address; - return deployed_address; - }); -} -//# sourceMappingURL=runtime.js.map \ No newline at end of file diff --git a/darc-js/dist/runtime/runtime.js.map b/darc-js/dist/runtime/runtime.js.map deleted file mode 100644 index fea72ee0..00000000 --- a/darc-js/dist/runtime/runtime.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAiC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAapF,MAAM,UAAgB,UAAU,CAAC,OAAqB,EAAE,MAAqB;;QAC3E,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAC3C,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;QACjC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;QAC3B,MAAM,gBAAgB,GAAI,QAAQ,CAAC,OAAO,CAAC;QAC3C,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CAAA"} \ No newline at end of file diff --git a/darc-js/dist/struct/restriction-plugin.d.ts b/darc-js/dist/struct/restriction-plugin.d.ts deleted file mode 100644 index 0a047885..00000000 --- a/darc-js/dist/struct/restriction-plugin.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ConditionNode } from "../plugin/ConditionNode"; -import { VotingParameters } from "./voting-param"; -declare class RestrictionPlugin { - restrictionPluginDescription: string; - conditionExpressionTreeRootNode: ConditionNode; - restrictionPluginReturnType: RestrictionPluginReturnType; - votingParameters: VotingParameters | null; - restrictionPluginType: RestrictionPluginType; - constructor(restrictionPluginDescription: string, conditionExpressionTreeRootNode: ConditionNode, restrictionPluginReturnType: RestrictionPluginReturnType, votingParameters: VotingParameters | null, restrictionPluginType: RestrictionPluginType); -} -declare enum RestrictionPluginReturnType { - NO = 0, - ABSOLUTELY_YES = 1, - VOTING_NEEDED = 2 -} -declare enum RestrictionPluginType { - BEFORE_OPERATION = 0, - AFTER_OPERATION = 1 -} -export { RestrictionPlugin, RestrictionPluginReturnType, RestrictionPluginType }; -//# sourceMappingURL=restriction-plugin.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/struct/restriction-plugin.d.ts.map b/darc-js/dist/struct/restriction-plugin.d.ts.map deleted file mode 100644 index 73cc813d..00000000 --- a/darc-js/dist/struct/restriction-plugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"restriction-plugin.d.ts","sourceRoot":"","sources":["../../src/struct/restriction-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAM,iBAAiB;IACrB,4BAA4B,EAAE,MAAM,CAAC;IACrC,+BAA+B,EAAE,aAAa,CAAC;IAC/C,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,qBAAqB,CAAC;gBACjC,4BAA4B,EAAE,MAAM,EAAE,+BAA+B,EAAE,aAAa,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EAAE,qBAAqB,EAAE,qBAAqB;CAOpP;AAED,aAAK,2BAA2B;IAC9B,EAAE,IAAA;IACF,cAAc,IAAA;IACd,aAAa,IAAA;CACd;AAED,aAAK,qBAAqB;IACxB,gBAAgB,IAAA;IAChB,eAAe,IAAA;CAChB;AAED,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/struct/restriction-plugin.js b/darc-js/dist/struct/restriction-plugin.js deleted file mode 100644 index f18385b4..00000000 --- a/darc-js/dist/struct/restriction-plugin.js +++ /dev/null @@ -1,22 +0,0 @@ -class RestrictionPlugin { - constructor(restrictionPluginDescription, conditionExpressionTreeRootNode, restrictionPluginReturnType, votingParameters, restrictionPluginType) { - this.restrictionPluginDescription = restrictionPluginDescription; - this.conditionExpressionTreeRootNode = conditionExpressionTreeRootNode; - this.restrictionPluginReturnType = restrictionPluginReturnType; - this.votingParameters = votingParameters; - this.restrictionPluginType = restrictionPluginType; - } -} -var RestrictionPluginReturnType; -(function (RestrictionPluginReturnType) { - RestrictionPluginReturnType[RestrictionPluginReturnType["NO"] = 0] = "NO"; - RestrictionPluginReturnType[RestrictionPluginReturnType["ABSOLUTELY_YES"] = 1] = "ABSOLUTELY_YES"; - RestrictionPluginReturnType[RestrictionPluginReturnType["VOTING_NEEDED"] = 2] = "VOTING_NEEDED"; -})(RestrictionPluginReturnType || (RestrictionPluginReturnType = {})); -var RestrictionPluginType; -(function (RestrictionPluginType) { - RestrictionPluginType[RestrictionPluginType["BEFORE_OPERATION"] = 0] = "BEFORE_OPERATION"; - RestrictionPluginType[RestrictionPluginType["AFTER_OPERATION"] = 1] = "AFTER_OPERATION"; -})(RestrictionPluginType || (RestrictionPluginType = {})); -export { RestrictionPlugin, RestrictionPluginReturnType, RestrictionPluginType }; -//# sourceMappingURL=restriction-plugin.js.map \ No newline at end of file diff --git a/darc-js/dist/struct/restriction-plugin.js.map b/darc-js/dist/struct/restriction-plugin.js.map deleted file mode 100644 index 03509abf..00000000 --- a/darc-js/dist/struct/restriction-plugin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"restriction-plugin.js","sourceRoot":"","sources":["../../src/struct/restriction-plugin.ts"],"names":[],"mappings":"AAGA,MAAM,iBAAiB;IAMrB,YAAY,4BAAoC,EAAE,+BAA8C,EAAE,2BAAwD,EAAE,gBAAyC,EAAE,qBAA4C;QACjP,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACjE,IAAI,CAAC,+BAA+B,GAAG,+BAA+B,CAAC;QACvE,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;CACF;AAED,IAAK,2BAIJ;AAJD,WAAK,2BAA2B;IAC9B,yEAAE,CAAA;IACF,iGAAc,CAAA;IACd,+FAAa,CAAA;AACf,CAAC,EAJI,2BAA2B,KAA3B,2BAA2B,QAI/B;AAED,IAAK,qBAGJ;AAHD,WAAK,qBAAqB;IACxB,yFAAgB,CAAA;IAChB,uFAAe,CAAA;AACjB,CAAC,EAHI,qBAAqB,KAArB,qBAAqB,QAGzB;AAED,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/darc-js/dist/struct/token-operation-map.d.ts b/darc-js/dist/struct/token-operation-map.d.ts deleted file mode 100644 index 8273bd77..00000000 --- a/darc-js/dist/struct/token-operation-map.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare class TokenOperations { - arrayTokenOperations: Array<[number, string, number]>; - constructor(); - add_token_ownership_tuple(tokenID: number, ownerAddress: string, amount: number): void; -} -//# sourceMappingURL=token-operation-map.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/struct/token-operation-map.d.ts.map b/darc-js/dist/struct/token-operation-map.d.ts.map deleted file mode 100644 index fb94cc29..00000000 --- a/darc-js/dist/struct/token-operation-map.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"token-operation-map.d.ts","sourceRoot":"","sources":["../../src/struct/token-operation-map.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAEnB,oBAAoB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;;IAItD,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAGvF"} \ No newline at end of file diff --git a/darc-js/dist/struct/token-operation-map.js b/darc-js/dist/struct/token-operation-map.js deleted file mode 100644 index e85b525a..00000000 --- a/darc-js/dist/struct/token-operation-map.js +++ /dev/null @@ -1,10 +0,0 @@ -// TokenOwnershipMap is a map of tokenID to owner address and amount -export class TokenOperations { - constructor() { - this.arrayTokenOperations = new Array(); - } - add_token_ownership_tuple(tokenID, ownerAddress, amount) { - this.arrayTokenOperations.push([tokenID, ownerAddress, amount]); - } -} -//# sourceMappingURL=token-operation-map.js.map \ No newline at end of file diff --git a/darc-js/dist/struct/token-operation-map.js.map b/darc-js/dist/struct/token-operation-map.js.map deleted file mode 100644 index 6fac6142..00000000 --- a/darc-js/dist/struct/token-operation-map.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"token-operation-map.js","sourceRoot":"","sources":["../../src/struct/token-operation-map.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,MAAM,OAAO,eAAe;IAG1B;QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAA4B,CAAC;IACtE,CAAC;IACM,yBAAyB,CAAC,OAAe,EAAE,YAAoB,EAAE,MAAc;QAClF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"} \ No newline at end of file diff --git a/darc-js/dist/struct/voting-param.d.ts b/darc-js/dist/struct/voting-param.d.ts deleted file mode 100644 index b12389b4..00000000 --- a/darc-js/dist/struct/voting-param.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare class VotingParameters { - votingPeriodInSeconds: number; - votingThresholdInPercentage: number; - votingTokenIDList: Array; - constructor(votingPeriodInSeconds: number, votingThresholdInPercentage: number, votingTokenIDList: Array); -} -//# sourceMappingURL=voting-param.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/struct/voting-param.d.ts.map b/darc-js/dist/struct/voting-param.d.ts.map deleted file mode 100644 index 769e7296..00000000 --- a/darc-js/dist/struct/voting-param.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"voting-param.d.ts","sourceRoot":"","sources":["../../src/struct/voting-param.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAE3B,qBAAqB,EAAE,MAAM,CAAC;IAG9B,2BAA2B,EAAE,MAAM,CAAC;IAIpC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAErB,qBAAqB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC;CAKjH"} \ No newline at end of file diff --git a/darc-js/dist/struct/voting-param.js b/darc-js/dist/struct/voting-param.js deleted file mode 100644 index 100b186f..00000000 --- a/darc-js/dist/struct/voting-param.js +++ /dev/null @@ -1,8 +0,0 @@ -export class VotingParameters { - constructor(votingPeriodInSeconds, votingThresholdInPercentage, votingTokenIDList) { - this.votingPeriodInSeconds = votingPeriodInSeconds; - this.votingThresholdInPercentage = votingThresholdInPercentage; - this.votingTokenIDList = votingTokenIDList; - } -} -//# sourceMappingURL=voting-param.js.map \ No newline at end of file diff --git a/darc-js/dist/struct/voting-param.js.map b/darc-js/dist/struct/voting-param.js.map deleted file mode 100644 index 6cde96a9..00000000 --- a/darc-js/dist/struct/voting-param.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"voting-param.js","sourceRoot":"","sources":["../../src/struct/voting-param.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IAW3B,YAAY,qBAA6B,EAAE,2BAAmC,EAAE,iBAAgC;QAC9G,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;CACF"} \ No newline at end of file diff --git a/darc-js/dist/transpiler.d.ts b/darc-js/dist/transpiler.d.ts deleted file mode 100644 index e87314f0..00000000 --- a/darc-js/dist/transpiler.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function transpiler(sourceCode: string): string; -//# sourceMappingURL=transpiler.d.ts.map \ No newline at end of file diff --git a/darc-js/dist/transpiler.d.ts.map b/darc-js/dist/transpiler.d.ts.map deleted file mode 100644 index 4145edfc..00000000 --- a/darc-js/dist/transpiler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../src/transpiler.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAuDrD"} \ No newline at end of file diff --git a/darc-js/dist/transpiler.js b/darc-js/dist/transpiler.js deleted file mode 100644 index aa42f315..00000000 --- a/darc-js/dist/transpiler.js +++ /dev/null @@ -1,45 +0,0 @@ -export function transpiler(sourceCode) { - // compile the source code with babel standalone - const babel = require('@babel/standalone'); - // register the plugin - babel.registerPlugin('overload', require('@jetblack/operator-overloading')); //jetblack_operator_overload); - /* - babel.registerPlugin( - '@babel/plugin-proposal-class-properties', - require('@babel/plugin-proposal-class-properties') - ); - babel.registerPlugin( - '@babel/plugin-proposal-private-methods', - require('@babel/plugin-proposal-private-methods') - ); - - function lolizer() { - return { - visitor: { - Identifier(path:any) { - console.log(JSON.stringify( path.node)); - //path.node.name = "LOL"; - }, - }, - }; - } - - babel.registerPlugin("lolizer", lolizer); - */ - // register the preset - babel.registerPreset('@babel/preset-env', require('@babel/preset-env')); - // register the typescript preset - babel.registerPreset('@babel/preset-typescript', require('@babel/preset-typescript')); - // compile the code - const result = babel.transform(sourceCode, { - plugins: ['overload'], - //['@babel/plugin-proposal-class-properties', { "loose": true }], - //['@babel/plugin-proposal-private-methods', { loose: true }] - presets: ['@babel/preset-env', '@babel/preset-typescript'], - filename: 'source.ts', - sourceType: 'script' - }); - console.log(JSON.stringify(babel)); - return result.code; -} -//# sourceMappingURL=transpiler.js.map \ No newline at end of file diff --git a/darc-js/dist/transpiler.js.map b/darc-js/dist/transpiler.js.map deleted file mode 100644 index 603d4f74..00000000 --- a/darc-js/dist/transpiler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transpiler.js","sourceRoot":"","sources":["../src/transpiler.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,UAAkB;IAE3C,gDAAgD;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE3C,sBAAsB;IAEtB,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,8BAA8B;IAE3G;;;;;;;;;;;;;;;;;;;;;;MAsBE;IAGF,sBAAsB;IACtB,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAGxE,iCAAiC;IACjC,KAAK,CAAC,cAAc,CAAC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEtF,mBAAmB;IACnB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;QACzC,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,iEAAiE;QACjE,6DAA6D;QAE7D,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;QAC1D,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,OAAQ,MAAM,CAAC,IAAI,CAAC;AACtB,CAAC"} \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Node.ts b/darc-js/src/SDK/conditionNodes/Node.ts index bbbd10da..53cc667a 100644 --- a/darc-js/src/SDK/conditionNodes/Node.ts +++ b/darc-js/src/SDK/conditionNodes/Node.ts @@ -281,6 +281,36 @@ class FALSE extends Node { } } +// below are wrapper functions for all the nodes above +// so that user can initialize the nodes without using new keyword + +function and(... args:Node[]): Node { + return new AND(... args); +} + +function or(... args:Node[]): Node { + return new OR(... args); +} + +function not(node:Node): Node { + return new NOT(node); +} + +function expression(expressionId:number, nodeParam?:NodeParamStruct | undefined): Node { + return new EXPRESSION(expressionId, nodeParam); +} + +function boolean_true(): Node { + return new TRUE(); +} + +function boolean_false(): Node { + return new FALSE(); +} + +function node(): Node { + return new Node(); +} // export everything export { @@ -292,4 +322,11 @@ export { TRUE, FALSE, NodeType, + and, + or, + not, + expression, + boolean_true, + boolean_false, + node, }; \ No newline at end of file diff --git a/darc-js/src/codeGenerator/codeGenerator.ts b/darc-js/src/codeGenerator/codeGenerator.ts deleted file mode 100644 index 5980950e..00000000 --- a/darc-js/src/codeGenerator/codeGenerator.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function codeGenerator(){ - -} \ No newline at end of file diff --git a/darc-js/src/deployDARC/deployDARC.ts b/darc-js/src/deployDARC/deployDARC.ts index ac8f3334..988e4e96 100644 --- a/darc-js/src/deployDARC/deployDARC.ts +++ b/darc-js/src/deployDARC/deployDARC.ts @@ -1,4 +1,3 @@ -import * as prelude from '../codeGenerator/codeGenerator'; import {ethers} from 'ethers'; import {DARC_VERSION, DARCBinaryStruct, darcBinary} from '../darcBinary/darcBinary'; diff --git a/darc-js/tests/node-test/basic-node-test.ts b/darc-js/tests/node-test/basic-node-test.ts index bbaf3a15..438ae750 100644 --- a/darc-js/tests/node-test/basic-node-test.ts +++ b/darc-js/tests/node-test/basic-node-test.ts @@ -5,9 +5,9 @@ import 'mocha'; -describe.only('class DARC test', +describe('class DARC test', () => { - it('should return true', async () => { + it('should pass test case 1', async () => { // create a new AND node with 10 expression const andNode = new AND( @@ -26,11 +26,127 @@ describe.only('class DARC test', const AND_and_OR = new AND( andNode, orNode, - ); + ); // this node will merge the andNode. // serialize the AND_and_OR node const serialized_AND_and_OR = AND_and_OR.generateConditionNodeList(); - console.log(serialized_AND_and_OR); + // 8 nodes in total + expect(serialized_AND_and_OR.length).to.equal(8); + + // all the nodes should have the correct id sequentially + for (let i = 0; i < serialized_AND_and_OR.length; i++) { + expect(serialized_AND_and_OR[i].id).to.equal(BigInt(i)); + } + + // the first node should be AND node + expect(serialized_AND_and_OR[0].nodeType).to.equal(2); + expect(serialized_AND_and_OR[0].logicalOperator).to.equal(1); }); + + it ('should pass test case 2', async () => { + + const expressionNode = new EXPRESSION(7); + const result = expressionNode.generateConditionNodeList(); + expect(result.length).to.equal(1); + expect(result[0].id).to.equal(BigInt(0)); + }); + + it ('should pass test case 3', async () => { + const trueNode = new TRUE(); + const result = trueNode.generateConditionNodeList(); + expect(result.length).to.equal(1); + expect(result[0].id).to.equal(BigInt(0)); + expect (result[0].nodeType).to.equal(3); + + const falseNode = new FALSE(); + const result1 = falseNode.generateConditionNodeList(); + expect(result1.length).to.equal(1); + expect(result1[0].id).to.equal(BigInt(0)); + expect (result1[0].nodeType).to.equal(4); + + }); + + it ('should pass test case 4', async () => { + + const ORNode = new OR( + new OR( + new EXPRESSION(1), + new EXPRESSION(2), + new EXPRESSION(3), + ), + + new OR( + new EXPRESSION(4), + new EXPRESSION(5), + new EXPRESSION(6), + ), + + new OR( + new EXPRESSION(7), + new EXPRESSION(8), + new EXPRESSION(9), + ), + ); + + // should be a big OR node with 9 expression nodes + const result = ORNode.generateConditionNodeList(); + expect(result.length).to.equal(10); + expect(result[0].nodeType).to.equal(2); + expect(result[0].logicalOperator).to.equal(2); + for (let i = 1; i < result.length; i++) { + expect(result[i].nodeType).to.equal(1); + expect(result[i].conditionExpression).to.equal(i); + expect(result[i].logicalOperator).to.equal(0); + expect(result[i].childList.length).to.equal(0); + } + + // child list should be correct + expect(result[0].childList.length).to.equal(9); + for (let i = 1; i < result.length; i++) { + expect(result[0].childList[i - 1]).to.equal(BigInt(i)); + } + + }); + + it ('should pass test case 5', async () => { + const ANDNode = new AND( + new AND( + new EXPRESSION(1), + new EXPRESSION(2), + new EXPRESSION(3), + ), + + new AND( + new EXPRESSION(4), + new EXPRESSION(5), + new EXPRESSION(6), + ), + + new AND( + new EXPRESSION(7), + new EXPRESSION(8), + new EXPRESSION(9), + ), + ); + + // should be a big OR node with 9 expression nodes + const result = ANDNode.generateConditionNodeList(); + expect(result.length).to.equal(10); + expect(result[0].nodeType).to.equal(2); + expect(result[0].logicalOperator).to.equal(1); + for (let i = 1; i < result.length; i++) { + expect(result[i].nodeType).to.equal(1); + expect(result[i].conditionExpression).to.equal(i); + expect(result[i].logicalOperator).to.equal(0); + expect(result[i].childList.length).to.equal(0); + } + + // child list should be correct + expect(result[0].childList.length).to.equal(9); + for (let i = 1; i < result.length; i++) { + expect(result[0].childList[i - 1]).to.equal(BigInt(i)); + } + }); + }); \ No newline at end of file From 3e7f0d5bbcc88ebdce2e502ed371f78e2fb415cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 23 Jan 2024 23:43:32 -0600 Subject: [PATCH 06/62] Update basic-node-test.ts --- darc-js/tests/node-test/basic-node-test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darc-js/tests/node-test/basic-node-test.ts b/darc-js/tests/node-test/basic-node-test.ts index 438ae750..4a97d084 100644 --- a/darc-js/tests/node-test/basic-node-test.ts +++ b/darc-js/tests/node-test/basic-node-test.ts @@ -5,7 +5,7 @@ import 'mocha'; -describe('class DARC test', +describe('darc.js SDK Node test', () => { it('should pass test case 1', async () => { From 00665e7b6d67b34d8a381a9443fa1fd5f0696015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 24 Jan 2024 21:42:53 -0600 Subject: [PATCH 07/62] update --- darc-js/src/SDK/sdk.ts | 247 ++++++++++++++++++ .../tests/{node-test => }/basic-node-test.ts | 2 +- darc-js/tests/sdk-test.ts | 83 ++++++ 3 files changed, 331 insertions(+), 1 deletion(-) create mode 100644 darc-js/src/SDK/sdk.ts rename darc-js/tests/{node-test => }/basic-node-test.ts (99%) create mode 100644 darc-js/tests/sdk-test.ts diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts new file mode 100644 index 00000000..f057f333 --- /dev/null +++ b/darc-js/src/SDK/sdk.ts @@ -0,0 +1,247 @@ +// import everything from includes.ts +import * as instructions from "./includes"; +import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct } from "../types/basicTypes"; +import {ethers} from "ethers"; +import * as DARC from "../DARC/DARC"; + +import { + OPCODE_ID_1_BATCH_MINT_TOKENS, + OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, + OPCODE_ID_3_BATCH_TRANSFER_TOKENS, + OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO, + OPCODE_ID_5_BATCH_BURN_TOKENS, + OPCODE_ID_6_BATCH_BURN_TOKENS_FROM, + OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS, + OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS, + OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS, + OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES, + OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES, + OPCODE_ID_12_BATCH_ADD_PLUGINS, + OPCODE_ID_13_BATCH_ENABLE_PLUGINS, + OPCODE_ID_14_BATCH_DISABLE_PLUGINS, + OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS, + OPCODE_ID_16_BATCH_SET_PARAMETERS, + OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES, + OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES, + OPCODE_ID_19_BATCH_ADD_VOTING_RULES, + OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS, + OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS, + OPCODE_ID_22_ADD_EMERGENCY, + OPCODE_ID_24_CALL_EMERGENCY, + OPCODE_ID_25_CALL_CONTRACT_ABI, + OPCODE_ID_26_PAY_CASH, + OPCODE_ID_27_OFFER_DIVIDENDS, + OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS, + OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND, + OPCODE_ID_31_ADD_STORAGE_STRING, + OPCODE_ID_32_VOTE, + OPCODE_ID_33_EXECUTE_PENDING_PROGRAM, + OPCODE_ID_34_END_EMERGENCY, + OPCODE_ID_35_UPGRADE_TO_ADDRESS, + OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, + OPCODE_ID_37_UPGRADE_TO_THE_LATEST +} from "./opcodes/opcodeTable"; + +export async function interpret( + operationList: OperationStruct[], + wallet: ethers.Wallet, + targetDARCAddress: string, + notes?: string | undefined + ) { + + const operatorAddress = wallet.address; + for (let i = 0; i < operationList.length; i++) { + operationList[i].operatorAddress = operatorAddress; + } + const program:ProgramStruct = { + programOperatorAddress: operatorAddress, + operations: operationList, + notes: notes? notes : "" + }; + + const attachedDARC = new DARC.DARC({ + address: targetDARCAddress, + version: DARC.DARC_VERSION.Latest, + wallet: wallet, + }); + + await attachedDARC.entrance(program); +} + + + + +export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[], votingWeightArray: bigint[], dividendWeightArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); + return operation; +} + +export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_burn_tokens(tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); + return operation; +} + +export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_add_memberships(addressArray: string[], roleArray: bigint[], nameArray: string[]): OperationStruct { + let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); + return operation; +} + +export function batch_suspend_memberships(addressArray: string[]): OperationStruct { + let operation = OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS(addressArray); + return operation; +} + +export function batch_resume_memberships(addressArray: string[]): OperationStruct { + let operation = OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS(addressArray); + return operation; +} + +export function batch_change_member_roles(addressArray: string[], roleArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); + return operation; +} + +export function batch_change_member_names(addressArray: string[], nameArray: string[]): OperationStruct { + let operation = OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES(addressArray, nameArray); + return operation; +} + +export function batch_add_plugins(pluginArray: PluginStruct[]): OperationStruct { + let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); + return operation; +} + +export function batch_enable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]): OperationStruct { + let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); + return operation; +} + +export function batch_disable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]): OperationStruct { + let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); + return operation; +} + +export function batch_add_and_enable_plugins(pluginArray: PluginStruct[]): OperationStruct { + let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); + return operation; +} + +export function batch_set_parameters(parameterIndexArray: bigint[], parameterValueArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); + return operation; +} + +export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); + return operation; +} + +export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); + return operation; +} + +export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]): OperationStruct { + let operation = OPCODE_ID_19_BATCH_ADD_VOTING_RULES(ruleArray); + return operation; +} + +export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint): OperationStruct { + let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); + return operation; +} + +export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint): OperationStruct { + let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); + return operation; +} + +export function add_emergency(emergencyAddressArray: string[]): OperationStruct { + let operation = OPCODE_ID_22_ADD_EMERGENCY(emergencyAddressArray); + return operation; +} + +export function call_emergency(emergencyAddressArrayIndex: bigint[]): OperationStruct { + let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); + return operation; +} + +export function call_contract_abi(contractAddress: string, abi: string | Uint8Array, value: bigint): OperationStruct { + let operation = OPCODE_ID_25_CALL_CONTRACT_ABI(contractAddress, abi, value); + return operation; +} + +export function pay_cash(amount: bigint, paymentType: bigint, dividendable: bigint): OperationStruct { + let operation = OPCODE_ID_26_PAY_CASH(amount, paymentType, dividendable); + return operation; +} + +export function offer_dividends(): OperationStruct { + let operation = OPCODE_ID_27_OFFER_DIVIDENDS(); + return operation; +} + +export function set_approval_for_all_operations(address: string): OperationStruct { + let operation = OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS(address); + return operation; +} + +export function batch_burn_tokens_and_refund(tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[]): OperationStruct { + let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); + return operation; +} + +export function add_storage_string(value: string): OperationStruct { + let operation = OPCODE_ID_31_ADD_STORAGE_STRING(value); + return operation; +} + +export function vote(voteArray: boolean[]): OperationStruct { + let operation = OPCODE_ID_32_VOTE(voteArray); + return operation; +} + +export function execute_pending_program(): OperationStruct { + let operation = OPCODE_ID_33_EXECUTE_PENDING_PROGRAM(); + return operation; +} + +export function end_emergency(): OperationStruct { + let operation = OPCODE_ID_34_END_EMERGENCY(); + return operation; +} + +export function upgrade_to_address(newAddress: string): OperationStruct { + let operation = OPCODE_ID_35_UPGRADE_TO_ADDRESS(newAddress); + return operation; +} + +export function confirm_upgrade_from_address(newAddress: string): OperationStruct { + let operation = OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS(newAddress); + return operation; +} + +export function upgrade_to_the_latest(): OperationStruct { + let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); + return operation; +} \ No newline at end of file diff --git a/darc-js/tests/node-test/basic-node-test.ts b/darc-js/tests/basic-node-test.ts similarity index 99% rename from darc-js/tests/node-test/basic-node-test.ts rename to darc-js/tests/basic-node-test.ts index 4a97d084..1fb8bdbb 100644 --- a/darc-js/tests/node-test/basic-node-test.ts +++ b/darc-js/tests/basic-node-test.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../../src/SDK/conditionNodes/Node'; +import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../src/SDK/conditionNodes/Node'; import 'mocha'; diff --git a/darc-js/tests/sdk-test.ts b/darc-js/tests/sdk-test.ts new file mode 100644 index 00000000..e3dcf76d --- /dev/null +++ b/darc-js/tests/sdk-test.ts @@ -0,0 +1,83 @@ +import {interpret} from "../src/SDK/sdk"; +import {run, deployDARC, DARC_VERSION} from '../src/darcjs'; +import { ethers } from 'ethers'; +import * as DARC from '../src/DARC/DARC'; +import 'mocha'; +import { expect } from 'chai'; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../src/SDK/includes"; + + + + +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); +const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + +/** + * Here is the code: + * 1. create a token class 0 with token info "token_0", voting weight 10, dividend weight 20 + * create a token class 1 with token info "token_1", voting weight 20, dividend weight 30 + * 2. mint 100 token_0 and 200 token_1 to address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 + */ +const code = ` +batch_create_token_classes(['token_0', 'token_1'], +[0,1], +[10,20], +[20,30]); +batch_mint_tokens([ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", +"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], +[0, 1], [100,200]); +`; + +describe('Runtime execution test', () => { + it('should run the program', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + + + await interpret( + + [ + batch_create_token_classes, + batch_mint_tokens, + ], + [ + ["0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + [BigInt(0), BigInt(1)], + [BigInt(100), BigInt(200)], + ], + signer, + darc_contract_address, + "test program" + ); + + await run(code, signer, darc_contract_address, DARC_VERSION.Latest).then(async ()=>{ + + const attached_local_darc2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer, + version: DARC_VERSION.Latest, + }); + + // read the token info and make sure that address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 has 100 token_0 and 200 token_1 + const token_info = await attached_local_darc2.getTokenInfo(BigInt(0)); + const token_info1 = await attached_local_darc2.getTokenInfo(BigInt(1)); + // check the token info + expect(token_info.votingWeight.toString()).to.equal("10"); + expect(token_info.dividendWeight.toString()).to.equal("20"); + expect(token_info.tokenInfo).to.equal("token_0"); + expect(token_info.totalSupply.toString()).to.equal("100"); + // check the token info 1 + expect(token_info1.votingWeight.toString()).to.equal("20"); + expect(token_info1.dividendWeight.toString()).to.equal("30"); + expect(token_info1.tokenInfo).to.equal("token_1"); + expect(token_info1.totalSupply.toString()).to.equal("200"); + + // check the token owner balance + const token_owner_balance = await attached_local_darc2.getTokenOwnerBalance(BigInt(0),my_wallet_address); + expect(token_owner_balance.toString()).to.equal("100"); + const token_owner_balance1 = await attached_local_darc2.getTokenOwnerBalance(BigInt(1),my_wallet_address); + expect(token_owner_balance1.toString()).to.equal("200"); + }); + + }); +}); \ No newline at end of file From a1a24c13971667dc3b2351a1d07b1eeea9fb5eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 24 Jan 2024 22:19:03 -0600 Subject: [PATCH 08/62] Update sdk-test.ts --- darc-js/tests/sdk-test.ts | 53 ++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/darc-js/tests/sdk-test.ts b/darc-js/tests/sdk-test.ts index e3dcf76d..359cb237 100644 --- a/darc-js/tests/sdk-test.ts +++ b/darc-js/tests/sdk-test.ts @@ -4,7 +4,7 @@ import { ethers } from 'ethers'; import * as DARC from '../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../src/SDK/includes"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../src/SDK/sdk"; @@ -13,44 +13,38 @@ const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; -/** - * Here is the code: - * 1. create a token class 0 with token info "token_0", voting weight 10, dividend weight 20 - * create a token class 1 with token info "token_1", voting weight 20, dividend weight 30 - * 2. mint 100 token_0 and 200 token_1 to address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 - */ -const code = ` -batch_create_token_classes(['token_0', 'token_1'], -[0,1], -[10,20], -[20,30]); -batch_mint_tokens([ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", -"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], -[0, 1], [100,200]); -`; -describe('Runtime execution test', () => { - it('should run the program', async () => { +function toBigIntArray(array: number[]): bigint[] { + let bigIntArray: bigint[] = []; + for (let i = 0; i < array.length; i++) { + bigIntArray.push(BigInt(array[i])); + } + return bigIntArray; +} + +describe.only('SDK execution test', () => { + it('should run the program in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); await interpret( - [ - batch_create_token_classes, - batch_mint_tokens, - ], - [ - ["0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], - [BigInt(0), BigInt(1)], - [BigInt(100), BigInt(200)], + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), ], signer, darc_contract_address, "test program" - ); - - await run(code, signer, darc_contract_address, DARC_VERSION.Latest).then(async ()=>{ + ).then(async ()=>{ const attached_local_darc2 = new DARC.DARC({ address: darc_contract_address, @@ -58,6 +52,7 @@ describe('Runtime execution test', () => { version: DARC_VERSION.Latest, }); + // read the token info and make sure that address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 has 100 token_0 and 200 token_1 const token_info = await attached_local_darc2.getTokenInfo(BigInt(0)); const token_info1 = await attached_local_darc2.getTokenInfo(BigInt(1)); From 20f74411ae0d853c41b5cec8f6e646d74b9ec090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Thu, 25 Jan 2024 02:10:42 -0600 Subject: [PATCH 09/62] update --- darc-js/src/DARC/DARC.ts | 7 +- darc-js/src/SDK/sdk.ts | 17 +- darc-js/tests/sdk-test.ts | 78 ----- .../tests/{ => sdk-test}/basic-node-test.ts | 2 +- darc-js/tests/{ => sdk-test}/operator-test.ts | 3 +- darc-js/tests/sdk-test/sdk-test.ts | 275 ++++++++++++++++++ 6 files changed, 293 insertions(+), 89 deletions(-) delete mode 100644 darc-js/tests/sdk-test.ts rename darc-js/tests/{ => sdk-test}/basic-node-test.ts (99%) rename darc-js/tests/{ => sdk-test}/operator-test.ts (87%) create mode 100644 darc-js/tests/sdk-test/sdk-test.ts diff --git a/darc-js/src/DARC/DARC.ts b/darc-js/src/DARC/DARC.ts index cd5a574d..91f2caf1 100644 --- a/darc-js/src/DARC/DARC.ts +++ b/darc-js/src/DARC/DARC.ts @@ -61,12 +61,7 @@ export class DARC { if (this.wallet === undefined){ throw new Error("Wallet is not provided for this DARC instance."); } - try{ - await this.darcContract.entrance(program); - } - catch(e){ - console.log("Error when running the program: " + e); - } + await this.darcContract.entrance(program); } /** diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts index f057f333..df1af001 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/SDK/sdk.ts @@ -42,14 +42,23 @@ import { OPCODE_ID_37_UPGRADE_TO_THE_LATEST } from "./opcodes/opcodeTable"; +/** + * The core function of the SDK. It takes in a list of operations and a wallet, and then sends the operations to the DARC contract. This is different from the By-law Script, which compile and run the code directly. + * @param operationList The list of operations to be sent to the DARC contract + * @param wallet The wallet to be used to sign the transaction (provider must be set) + * @param targetDARCAddress The address of the DARC contract to be used + * @param notes The notes to be attached to the program + * @param delegateToAddress If the signer is not the operator, but the operator has approved the signer to sign on its behalf, then the signer can set this parameter to the operator's address. Otherwise, leave it undefined. + */ export async function interpret( operationList: OperationStruct[], wallet: ethers.Wallet, targetDARCAddress: string, - notes?: string | undefined + notes?: string, + delegateToAddress?: string ) { - const operatorAddress = wallet.address; + const operatorAddress = delegateToAddress? delegateToAddress : wallet.address; for (let i = 0; i < operationList.length; i++) { operationList[i].operatorAddress = operatorAddress; } @@ -127,6 +136,10 @@ export function batch_change_member_names(addressArray: string[], nameArray: str } export function batch_add_plugins(pluginArray: PluginStruct[]): OperationStruct { + if (pluginArray instanceof Array && typeof pluginArray[0] !== "object") { + let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); + return operation; + } let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); return operation; } diff --git a/darc-js/tests/sdk-test.ts b/darc-js/tests/sdk-test.ts deleted file mode 100644 index 359cb237..00000000 --- a/darc-js/tests/sdk-test.ts +++ /dev/null @@ -1,78 +0,0 @@ -import {interpret} from "../src/SDK/sdk"; -import {run, deployDARC, DARC_VERSION} from '../src/darcjs'; -import { ethers } from 'ethers'; -import * as DARC from '../src/DARC/DARC'; -import 'mocha'; -import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../src/SDK/sdk"; - - - - -const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); -const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); -const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; - - -function toBigIntArray(array: number[]): bigint[] { - let bigIntArray: bigint[] = []; - for (let i = 0; i < array.length; i++) { - bigIntArray.push(BigInt(array[i])); - } - return bigIntArray; -} - -describe.only('SDK execution test', () => { - it('should run the program in SDK', async () => { - const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); - - - await interpret( - [ - batch_create_token_classes( - ['token_0', 'token_1'], - toBigIntArray([0,1]), - toBigIntArray([10,20]), - toBigIntArray([20,30]) - ), - batch_mint_tokens( - [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], - toBigIntArray([0, 1]), - toBigIntArray([100,200]) - ), - ], - signer, - darc_contract_address, - "test program" - ).then(async ()=>{ - - const attached_local_darc2 = new DARC.DARC({ - address: darc_contract_address, - wallet: signer, - version: DARC_VERSION.Latest, - }); - - - // read the token info and make sure that address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 has 100 token_0 and 200 token_1 - const token_info = await attached_local_darc2.getTokenInfo(BigInt(0)); - const token_info1 = await attached_local_darc2.getTokenInfo(BigInt(1)); - // check the token info - expect(token_info.votingWeight.toString()).to.equal("10"); - expect(token_info.dividendWeight.toString()).to.equal("20"); - expect(token_info.tokenInfo).to.equal("token_0"); - expect(token_info.totalSupply.toString()).to.equal("100"); - // check the token info 1 - expect(token_info1.votingWeight.toString()).to.equal("20"); - expect(token_info1.dividendWeight.toString()).to.equal("30"); - expect(token_info1.tokenInfo).to.equal("token_1"); - expect(token_info1.totalSupply.toString()).to.equal("200"); - - // check the token owner balance - const token_owner_balance = await attached_local_darc2.getTokenOwnerBalance(BigInt(0),my_wallet_address); - expect(token_owner_balance.toString()).to.equal("100"); - const token_owner_balance1 = await attached_local_darc2.getTokenOwnerBalance(BigInt(1),my_wallet_address); - expect(token_owner_balance1.toString()).to.equal("200"); - }); - - }); -}); \ No newline at end of file diff --git a/darc-js/tests/basic-node-test.ts b/darc-js/tests/sdk-test/basic-node-test.ts similarity index 99% rename from darc-js/tests/basic-node-test.ts rename to darc-js/tests/sdk-test/basic-node-test.ts index 1fb8bdbb..4a97d084 100644 --- a/darc-js/tests/basic-node-test.ts +++ b/darc-js/tests/sdk-test/basic-node-test.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../src/SDK/conditionNodes/Node'; +import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../../src/SDK/conditionNodes/Node'; import 'mocha'; diff --git a/darc-js/tests/operator-test.ts b/darc-js/tests/sdk-test/operator-test.ts similarity index 87% rename from darc-js/tests/operator-test.ts rename to darc-js/tests/sdk-test/operator-test.ts index 6d029ce0..9a4c5fe1 100644 --- a/darc-js/tests/operator-test.ts +++ b/darc-js/tests/sdk-test/operator-test.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import 'mocha'; -import { transpiler } from '../src/SDK/transpiler'; +import { transpiler } from '../../src/SDK/transpiler'; describe('Operator Test', () => { @@ -18,7 +18,6 @@ describe('Operator Test', const transpiled_result = transpiler(code); - console.log(transpiled_result); expect(true).to.equal(true); }); }); \ No newline at end of file diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts new file mode 100644 index 00000000..e6f0cf47 --- /dev/null +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -0,0 +1,275 @@ +import {interpret} from "../../src/SDK/sdk"; +import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; +import { ethers, BigNumber } from 'ethers'; +import * as DARC from '../../src/DARC/DARC'; +import 'mocha'; +import { expect } from 'chai'; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; + + +const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + +const target1 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; + + +const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// initialize signer 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 with private key + + +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + +const signer1 = new ethers.Wallet('0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a', provider); +const signer2 = new ethers.Wallet('0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6', provider); + +const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + + +function toBigIntArray(array: number[]): bigint[] { + let bigIntArray: bigint[] = []; + for (let i = 0; i < array.length; i++) { + bigIntArray.push(BigInt(array[i])); + } + return bigIntArray; +} + +describe('SDK execution test', () => { + it('should run the program in SDK', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + await interpret( + [ + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + ], + signer, + darc_contract_address, + "test program" + ).then(async ()=>{ + + const attached_local_darc2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer, + version: DARC_VERSION.Latest, + }); + + + // read the token info and make sure that address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 has 100 token_0 and 200 token_1 + const token_info = await attached_local_darc2.getTokenInfo(BigInt(0)); + const token_info1 = await attached_local_darc2.getTokenInfo(BigInt(1)); + // check the token info + expect(token_info.votingWeight.toString()).to.equal("10"); + expect(token_info.dividendWeight.toString()).to.equal("20"); + expect(token_info.tokenInfo).to.equal("token_0"); + expect(token_info.totalSupply.toString()).to.equal("100"); + // check the token info 1 + expect(token_info1.votingWeight.toString()).to.equal("20"); + expect(token_info1.dividendWeight.toString()).to.equal("30"); + expect(token_info1.tokenInfo).to.equal("token_1"); + expect(token_info1.totalSupply.toString()).to.equal("200"); + + // check the token owner balance + const token_owner_balance = await attached_local_darc2.getTokenOwnerBalance(BigInt(0),my_wallet_address); + expect(token_owner_balance.toString()).to.equal("100"); + const token_owner_balance1 = await attached_local_darc2.getTokenOwnerBalance(BigInt(1),my_wallet_address); + expect(token_owner_balance1.toString()).to.equal("200"); + }); + + }); + + + it('should run the program "add and enable plugin" in SDK', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + await interpret( + [ + + // operation 0 + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + + // operation 1 + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + + // operation 2 + batch_add_and_enable_plugins( + [ + // plugin 0: disable all operations + { + returnType: BigNumber.from(2), // no + level: BigNumber.from(3), // level 3 + votingRuleIndex: BigNumber.from(0), + notes: "disable all program", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[{ + id: BigNumber.from(0), + nodeType: BigNumber.from(3), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(0), // always true + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }] + }, + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[ + // node 0: boolean operator OR + { + id: BigNumber.from(0), + nodeType: BigNumber.from(2), // logical operator + logicalOperator: BigNumber.from(2), // OR + conditionExpression: 0, // no expression + childList: [BigNumber.from(1), BigNumber.from(2)], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }, + + // node 1: operatorAddress == target1 + { + id : BigNumber.from(1), + nodeType: BigNumber.from(1), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(3), // OPERATOR_ADDRESS_EQUALS + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target1]], + BYTES: [] + } + }, + + // node 2: operatorAddress == target2 + { + id : BigNumber.from(2), + nodeType: BigNumber.from(1), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(3), // OPERATOR_ADDRESS_EQUALS + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target2]], + BYTES: [] + } + } + ] + } + ] + ) + ], + signer, + darc_contract_address, + "test program" + ).then(async ()=>{ + + const attached_local_darc_signer1 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer1, + version: DARC_VERSION.Latest, + }); + + const attached_local_darc_signer2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer2, + version: DARC_VERSION.Latest, + }); + + // signer 1 and signer 2 should be able to run the program + let isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer1, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer2, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + // and signer0 and programOperatorAddress should not be able to run the program + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer, + darc_contract_address, + "test program" + ); + } + catch(e){ + console.log("Exception here") + isSuccess = false; + } + expect (isSuccess).to.equal(false); + }); + }); +}); \ No newline at end of file From 4b101b974cb19b6f7eb117433e745e9f7d1e09f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Thu, 25 Jan 2024 04:03:06 -0600 Subject: [PATCH 10/62] update --- darc-js/src/SDK/conditionNodes/Node.ts | 9 +- .../sdk-test/sdk-node-generation-test.ts | 193 ++++++++++++++++++ darc-js/tests/sdk-test/sdk-test.ts | 2 +- 3 files changed, 199 insertions(+), 5 deletions(-) create mode 100644 darc-js/tests/sdk-test/sdk-node-generation-test.ts diff --git a/darc-js/src/SDK/conditionNodes/Node.ts b/darc-js/src/SDK/conditionNodes/Node.ts index 53cc667a..16621cb0 100644 --- a/darc-js/src/SDK/conditionNodes/Node.ts +++ b/darc-js/src/SDK/conditionNodes/Node.ts @@ -1,4 +1,5 @@ import { ConditionNodeStruct, NodeParamStruct } from "../../types/basicTypes"; +import { BigNumberish } from "ethers"; /** * The node type: AND, OR, NOT, EXPRESSION, TRUE, FALSE, UNDEFINED @@ -21,7 +22,7 @@ class Node { STRING_ARRAY: [], ADDRESS_2DARRAY: [], UINT256_2DARRAY: [], - BYTES: "", + BYTES: [], } } @@ -157,9 +158,9 @@ class Node { else if (this.type === "UNDEFINED") { return [{ id: BigInt(0), - nodeType: 0, - logicalOperator: 0, - conditionExpression: 0, + nodeType: BigInt(0), + logicalOperator: BigInt(0), + conditionExpression: BigInt(0), childList: [], param: this.nodeParam, }]; diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts new file mode 100644 index 00000000..5bc683fd --- /dev/null +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -0,0 +1,193 @@ +import {interpret} from "../../src/SDK/sdk"; +import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; +import { ethers, BigNumber } from 'ethers'; +import * as DARC from '../../src/DARC/DARC'; +import 'mocha'; +import { expect } from 'chai'; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import {or, node, and, expression} from "../../src/SDK/conditionNodes/Node"; + + +const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + +const target1 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; + + +const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// initialize signer 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 with private key + + +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + +const signer1 = new ethers.Wallet('0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a', provider); +const signer2 = new ethers.Wallet('0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6', provider); + +const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + + +function toBigIntArray(array: number[]): bigint[] { + let bigIntArray: bigint[] = []; + for (let i = 0; i < array.length; i++) { + bigIntArray.push(BigInt(array[i])); + } + return bigIntArray; +} + +describe('SDK node generation test', () => { + it ('should run the program "add and enable plugin" with generated condition node list in SDK', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + await interpret( + [ + + // operation 0 + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + + // operation 1 + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + + // operation 2 + batch_add_and_enable_plugins( + [ + // plugin 0: disable all operations + { + returnType: BigNumber.from(2), // no + level: BigNumber.from(3), // level 3 + votingRuleIndex: BigNumber.from(0), + notes: "disable all program", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[{ + id: BigNumber.from(0), + nodeType: BigNumber.from(3), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(0), // always true + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }] + }, + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: + or( + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target1]], + BYTES: [] + }), + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target2]], + BYTES: [] + }) + ).generateConditionNodeList() + } + ] + ) + ], + signer, + darc_contract_address, + "test program" + ).then(async ()=>{ + + const attached_local_darc_signer1 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer1, + version: DARC_VERSION.Latest, + }); + + const attached_local_darc_signer2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer2, + version: DARC_VERSION.Latest, + }); + + // signer 1 and signer 2 should be able to run the program + let isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer1, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer2, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + // and signer0 and programOperatorAddress should not be able to run the program + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer, + darc_contract_address, + "test program" + ); + } + catch(e){ + + isSuccess = false; + } + expect (isSuccess).to.equal(false); + }); + }); +}); \ No newline at end of file diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts index e6f0cf47..e5b1da2f 100644 --- a/darc-js/tests/sdk-test/sdk-test.ts +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -5,6 +5,7 @@ import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import {or, node, and, expression} from "../../src/SDK/conditionNodes/Node"; const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; @@ -266,7 +267,6 @@ describe('SDK execution test', () => { ); } catch(e){ - console.log("Exception here") isSuccess = false; } expect (isSuccess).to.equal(false); From caed824f9318b3e2ec2d6004aa8e5ddec0f6ab15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 26 Jan 2024 03:09:34 -0600 Subject: [PATCH 11/62] update --- darc-js/src/SDK/includes.ts | 34 +++++++------- darc-js/src/SDK/opcodes/opcodeTable.ts | 62 +++++++++++++------------- darc-js/src/SDK/sdk.ts | 34 +++++++------- 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 8847c384..46e28cf3 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -54,37 +54,37 @@ export function setNote(note:string) { programNotes = note; } -export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { +export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); operationList.push(operation); } -export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[], votingWeightArray: bigint[], dividendWeightArray: bigint[]) { +export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[] | number[], votingWeightArray: bigint[] | number[], dividendWeightArray: bigint[] | number[]) { let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); operationList.push(operation); } -export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { +export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); operationList.push(operation); } -export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { +export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); operationList.push(operation); } -export function batch_burn_tokens(tokenClassArray: bigint[], amountArray: bigint[]) { +export function batch_burn_tokens(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); operationList.push(operation); } -export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]) { +export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); operationList.push(operation); } -export function batch_add_memberships(addressArray: string[], roleArray: bigint[], nameArray: string[]) { +export function batch_add_memberships(addressArray: string[], roleArray: bigint[] | number[], nameArray: string[]) { let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); operationList.push(operation); } @@ -99,7 +99,7 @@ export function batch_resume_memberships(addressArray: string[]) { operationList.push(operation); } -export function batch_change_member_roles(addressArray: string[], roleArray: bigint[]) { +export function batch_change_member_roles(addressArray: string[], roleArray: bigint[] | number[]) { let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); operationList.push(operation); } @@ -114,12 +114,12 @@ export function batch_add_plugins(pluginArray: PluginStruct[]) { operationList.push(operation); } -export function batch_enable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]) { +export function batch_enable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]) { let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); operationList.push(operation); } -export function batch_disable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]) { +export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]) { let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); operationList.push(operation); } @@ -129,17 +129,17 @@ export function batch_add_and_enable_plugins(pluginArray: PluginStruct[]) { operationList.push(operation); } -export function batch_set_parameters(parameterIndexArray: bigint[], parameterValueArray: bigint[]) { +export function batch_set_parameters(parameterIndexArray: bigint[] | number[], parameterValueArray: bigint[] | number[]) { let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); operationList.push(operation); } -export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[]) { +export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); operationList.push(operation); } -export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[]) { +export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); operationList.push(operation); } @@ -149,12 +149,12 @@ export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]) { operationList.push(operation); } -export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint) { +export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint) { let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); operationList.push(operation); } -export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint) { +export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint) { let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); operationList.push(operation); } @@ -164,7 +164,7 @@ export function add_emergency(emergencyAddressArray: string[]) { operationList.push(operation); } -export function call_emergency(emergencyAddressArrayIndex: bigint[]) { +export function call_emergency(emergencyAddressArrayIndex: bigint[] | number[]) { let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); operationList.push(operation); } @@ -189,7 +189,7 @@ export function set_approval_for_all_operations(address: string) { operationList.push(operation); } -export function batch_burn_tokens_and_refund(tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[]) { +export function batch_burn_tokens_and_refund(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[]) { let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); operationList.push(operation); } diff --git a/darc-js/src/SDK/opcodes/opcodeTable.ts b/darc-js/src/SDK/opcodes/opcodeTable.ts index 260f634b..0b1a77fb 100644 --- a/darc-js/src/SDK/opcodes/opcodeTable.ts +++ b/darc-js/src/SDK/opcodes/opcodeTable.ts @@ -329,8 +329,8 @@ enum EnumOpcode { function OPCODE_ID_1_BATCH_MINT_TOKENS( addressArray: string[], - tokenClassArray: bigint[], - amountArray: bigint[] + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[] ): OperationStruct { // make sure the length of addressArray, tokenClassArray, amountArray are the same and not empty if (addressArray.length != tokenClassArray.length || addressArray.length != amountArray.length) { @@ -366,9 +366,9 @@ function OPCODE_ID_1_BATCH_MINT_TOKENS( function OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES( nameArray: string[], - tokenIndexArray: bigint[], - votingWeightArray: bigint[], - dividendWeightArray: bigint[] + tokenIndexArray: bigint[] | number[], + votingWeightArray: bigint[] | number[], + dividendWeightArray: bigint[] | number[] ): OperationStruct { // make sure the length of all arrays are the same and not empty if (nameArray.length != tokenIndexArray.length || nameArray.length != votingWeightArray.length || nameArray.length != dividendWeightArray.length) { @@ -417,8 +417,8 @@ function OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES( function OPCODE_ID_3_BATCH_TRANSFER_TOKENS( toAddressArray: string[], - tokenClassArray: bigint[], - amountArray: bigint[] + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[] ): OperationStruct { // make sure the length of the array is the same and not empty if (toAddressArray.length != tokenClassArray.length || toAddressArray.length != amountArray.length) { @@ -459,8 +459,8 @@ function OPCODE_ID_3_BATCH_TRANSFER_TOKENS( function OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO( fromAddressArray: string[], toAddressArray: string[], - tokenClassArray: bigint[], - amountArray: bigint[] + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (fromAddressArray.length != toAddressArray.length || fromAddressArray.length != tokenClassArray.length || fromAddressArray.length != amountArray.length) { @@ -499,8 +499,8 @@ function OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO( } function OPCODE_ID_5_BATCH_BURN_TOKENS( - tokenClassArray: bigint[], - amountArray: bigint[] + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (tokenClassArray.length != amountArray.length) { @@ -538,8 +538,8 @@ function OPCODE_ID_5_BATCH_BURN_TOKENS( function OPCODE_ID_6_BATCH_BURN_TOKENS_FROM( fromAddressArray: string[], - tokenClassArray: bigint[], - amountArray: bigint[] + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (fromAddressArray.length != tokenClassArray.length || fromAddressArray.length != amountArray.length) { @@ -579,7 +579,7 @@ function OPCODE_ID_6_BATCH_BURN_TOKENS_FROM( function OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS( memberAddressArray: string[], - memberRoleArray: bigint[], + memberRoleArray: bigint[] | number[], memberNameArray: string[] ): OperationStruct { // make sure that the length of the array is the same and not empty @@ -678,7 +678,7 @@ function OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS( function OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES( memberAddressArray: string[], - memberRoleArray: bigint[] + memberRoleArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (memberAddressArray.length != memberRoleArray.length) { @@ -774,7 +774,7 @@ function OPCODE_ID_12_BATCH_ADD_PLUGINS( } function OPCODE_ID_13_BATCH_ENABLE_PLUGINS( - pluginIndexArray: bigint[], + pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[] ): OperationStruct { // make sure that the length of the array is the same and not empty @@ -808,7 +808,7 @@ function OPCODE_ID_13_BATCH_ENABLE_PLUGINS( } function OPCODE_ID_14_BATCH_DISABLE_PLUGINS( - pluginIndexArray: bigint[], + pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[] ): OperationStruct { // make sure that the length of the array is the same and not empty @@ -869,8 +869,8 @@ function OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS( } function OPCODE_ID_16_BATCH_SET_PARAMETERS( - parameterNameArray: bigint[], - parameterValueArray: bigint[] + parameterNameArray: bigint[] | number[], + parameterValueArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (parameterNameArray.length != parameterValueArray.length) { @@ -902,7 +902,7 @@ function OPCODE_ID_16_BATCH_SET_PARAMETERS( function OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES( addressArray: string[], - amountArray: bigint[] + amountArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (addressArray.length != amountArray.length) { @@ -938,7 +938,7 @@ function OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES( function OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES( addressArray: string[], - amountArray: bigint[] + amountArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (addressArray.length != amountArray.length) { @@ -1001,9 +1001,9 @@ function OPCODE_ID_19_BATCH_ADD_VOTING_RULES( function OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS( addressArray: string[], - tokenClassArray: bigint[], - amountArray: bigint[], - priceArray: bigint[], + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[], + priceArray: bigint[] | number[], dividendableFlag: bigint ): OperationStruct { // make sure that the length of the array is the same and not empty @@ -1052,9 +1052,9 @@ function OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS( function OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS( toAddressArray: string[], - tokenClassArray: bigint[], - amountArray: bigint[], - priceArray: bigint[], + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[], + priceArray: bigint[] | number[], dividendableFlag: bigint ): OperationStruct { // make sure that the length of the array is the same and not empty @@ -1131,7 +1131,7 @@ function OPCODE_ID_22_ADD_EMERGENCY( } function OPCODE_ID_24_CALL_EMERGENCY( - emergencyIndexArray: bigint[] + emergencyIndexArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is not empty if (emergencyIndexArray.length == 0) { @@ -1282,9 +1282,9 @@ function OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS( } function OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND( - tokenClassArray: bigint[], - amountArray: bigint[], - priceArray: bigint[] + tokenClassArray: bigint[] | number[], + amountArray: bigint[] | number[], + priceArray: bigint[] | number[] ): OperationStruct { // make sure that the length of the array is the same and not empty if (tokenClassArray.length != amountArray.length) { diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts index df1af001..7e7554f8 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/SDK/sdk.ts @@ -80,37 +80,37 @@ export async function interpret( -export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { +export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); return operation; } -export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[], votingWeightArray: bigint[], dividendWeightArray: bigint[]): OperationStruct { +export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[] | number[], votingWeightArray: bigint[] | number[], dividendWeightArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); return operation; } -export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { +export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); return operation; } -export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { +export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); return operation; } -export function batch_burn_tokens(tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { +export function batch_burn_tokens(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); return operation; } -export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[]): OperationStruct { +export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); return operation; } -export function batch_add_memberships(addressArray: string[], roleArray: bigint[], nameArray: string[]): OperationStruct { +export function batch_add_memberships(addressArray: string[], roleArray: bigint[] | number[], nameArray: string[]): OperationStruct { let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); return operation; } @@ -125,7 +125,7 @@ export function batch_resume_memberships(addressArray: string[]): OperationStruc return operation; } -export function batch_change_member_roles(addressArray: string[], roleArray: bigint[]): OperationStruct { +export function batch_change_member_roles(addressArray: string[], roleArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); return operation; } @@ -144,12 +144,12 @@ export function batch_add_plugins(pluginArray: PluginStruct[]): OperationStruct return operation; } -export function batch_enable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]): OperationStruct { +export function batch_enable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); return operation; } -export function batch_disable_plugins(pluginIndexArray: bigint[], isBeforeOperationArray: boolean[]): OperationStruct { +export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); return operation; } @@ -159,17 +159,17 @@ export function batch_add_and_enable_plugins(pluginArray: PluginStruct[]): Opera return operation; } -export function batch_set_parameters(parameterIndexArray: bigint[], parameterValueArray: bigint[]): OperationStruct { +export function batch_set_parameters(parameterIndexArray: bigint[] | number[], parameterValueArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); return operation; } -export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[]): OperationStruct { +export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); return operation; } -export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[]): OperationStruct { +export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); return operation; } @@ -179,12 +179,12 @@ export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]): Operation return operation; } -export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint): OperationStruct { +export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); return operation; } -export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[], dividendable: bigint): OperationStruct { +export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); return operation; } @@ -194,7 +194,7 @@ export function add_emergency(emergencyAddressArray: string[]): OperationStruct return operation; } -export function call_emergency(emergencyAddressArrayIndex: bigint[]): OperationStruct { +export function call_emergency(emergencyAddressArrayIndex: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); return operation; } @@ -219,7 +219,7 @@ export function set_approval_for_all_operations(address: string): OperationStruc return operation; } -export function batch_burn_tokens_and_refund(tokenClassArray: bigint[], amountArray: bigint[], priceArray: bigint[]): OperationStruct { +export function batch_burn_tokens_and_refund(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[]): OperationStruct { let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); return operation; } From 306c383e81c3321d2f3fbf245d4e0f854721e67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 26 Jan 2024 07:38:00 -0600 Subject: [PATCH 12/62] update --- darc-js/src/SDK/conditionNodes/Node.ts | 24 ++++++++++++++ darc-js/src/SDK/includes.ts | 10 +++--- darc-js/src/SDK/opcodes/opcodeTable.ts | 16 ++++++--- darc-js/src/SDK/opcodes/pluginProcessor.ts | 33 +++++++++++++++++++ darc-js/src/SDK/sdk.ts | 6 ++-- darc-js/src/SDK/struct/Plugin.ts | 30 ----------------- darc-js/src/SDK/struct/Program.ts | 0 darc-js/src/SDK/struct/token-operation-map.ts | 12 ------- darc-js/src/SDK/struct/voting-param.ts | 17 ---------- darc-js/src/types/basicTypes.ts | 13 ++++++++ 10 files changed, 88 insertions(+), 73 deletions(-) create mode 100644 darc-js/src/SDK/opcodes/pluginProcessor.ts delete mode 100644 darc-js/src/SDK/struct/Plugin.ts delete mode 100644 darc-js/src/SDK/struct/Program.ts delete mode 100644 darc-js/src/SDK/struct/token-operation-map.ts delete mode 100644 darc-js/src/SDK/struct/voting-param.ts diff --git a/darc-js/src/SDK/conditionNodes/Node.ts b/darc-js/src/SDK/conditionNodes/Node.ts index 16621cb0..6982c3f4 100644 --- a/darc-js/src/SDK/conditionNodes/Node.ts +++ b/darc-js/src/SDK/conditionNodes/Node.ts @@ -170,6 +170,30 @@ class Node { } return []; } + + /** + * Operator overloading for AND node + * @param other The other node + * @returns The AND node + */ + [Symbol.for('&')](other: Node): Node { + if (this.type === "UNDEFINED" || other.type === "UNDEFINED") { + throw new Error("Undefined node is not allowed"); + } + return new AND(this, other); + } + + /** + * The operator overloading for OR node + * @param other The other node + * @returns The OR node + */ + [Symbol.for('|')](other: Node): Node { + if (this.type === "UNDEFINED" || other.type === "UNDEFINED") { + throw new Error("Undefined node is not allowed"); + } + return new OR(this, other); + } } class AND extends Node { diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 46e28cf3..f5224d46 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -1,9 +1,7 @@ // all the included instructions are here, mostly instructions for operations // todo: add backend support for current operations - -import { TokenOperations } from "./struct/token-operation-map"; -import { Plugin } from "./struct/Plugin"; -import { OperationStruct, PluginStruct, VotingRuleStruct } from "../types/basicTypes"; +import { OperationStruct, PluginStruct, PluginStructWithNode, VotingRuleStruct } from "../types/basicTypes"; +import { Node } from "./conditionNodes/Node"; import { objectMethod } from "@babel/types"; @@ -109,7 +107,7 @@ export function batch_change_member_names(addressArray: string[], nameArray: str operationList.push(operation); } -export function batch_add_plugins(pluginArray: PluginStruct[]) { +export function batch_add_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]) { let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); operationList.push(operation); } @@ -124,7 +122,7 @@ export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isB operationList.push(operation); } -export function batch_add_and_enable_plugins(pluginArray: PluginStruct[]) { +export function batch_add_and_enable_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]) { let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); operationList.push(operation); } diff --git a/darc-js/src/SDK/opcodes/opcodeTable.ts b/darc-js/src/SDK/opcodes/opcodeTable.ts index 0b1a77fb..d5159f9e 100644 --- a/darc-js/src/SDK/opcodes/opcodeTable.ts +++ b/darc-js/src/SDK/opcodes/opcodeTable.ts @@ -1,7 +1,9 @@ import { ethers } from "ethers"; -import {OperationStruct, PluginStruct, VotingRuleStruct} from "../../types/basicTypes"; +import {OperationStruct, PluginStruct, VotingRuleStruct, PluginStructWithNode} from "../../types/basicTypes"; import { toBigIntArray, isValidAddressArray, isValidBigIntOrNumberArray, isValidStringArray, areArriesWithSameLength, isValidBigIntOrNumber } from "./utils"; +import { pluginProcessor } from "./pluginProcessor"; + enum EnumOpcode { /** @@ -747,13 +749,15 @@ function OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES( } function OPCODE_ID_12_BATCH_ADD_PLUGINS( - pluginList: PluginStruct[] + pluginList: PluginStruct[] | PluginStructWithNode[] ): OperationStruct { // make sure that the length of the array is not empty if (pluginList.length == 0) { throw new Error("Invalid array length"); } + const processedPluginArray = pluginProcessor(pluginList); + //create the operation const operation = { operatorAddress: "", @@ -763,7 +767,7 @@ function OPCODE_ID_12_BATCH_ADD_PLUGINS( BOOL_ARRAY: [], VOTING_RULE_ARRAY: [], - PLUGIN_ARRAY: pluginList, + PLUGIN_ARRAY: processedPluginArray, PARAMETER_ARRAY: [], UINT256_2DARRAY: [], ADDRESS_2DARRAY: [], @@ -842,13 +846,15 @@ function OPCODE_ID_14_BATCH_DISABLE_PLUGINS( } function OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS( - pluginList: PluginStruct[] + pluginList: PluginStruct[] | PluginStructWithNode[] ): OperationStruct { // make sure that the length of the array is not empty if (pluginList.length == 0) { throw new Error("Invalid array length"); } + const processedPluginArray = pluginProcessor(pluginList); + //create the operation const operation = { operatorAddress: "", @@ -858,7 +864,7 @@ function OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS( BOOL_ARRAY: [], VOTING_RULE_ARRAY: [], - PLUGIN_ARRAY: pluginList, + PLUGIN_ARRAY: processedPluginArray, PARAMETER_ARRAY: [], UINT256_2DARRAY: [], ADDRESS_2DARRAY: [], diff --git a/darc-js/src/SDK/opcodes/pluginProcessor.ts b/darc-js/src/SDK/opcodes/pluginProcessor.ts new file mode 100644 index 00000000..37b3df5b --- /dev/null +++ b/darc-js/src/SDK/opcodes/pluginProcessor.ts @@ -0,0 +1,33 @@ +import { ConditionNodeStruct, PluginStruct, PluginStructWithNode } from "../../types/basicTypes"; +import { Node} from "../conditionNodes/Node"; + +/** + * This is a helper function to convert a plugin array with Node to a plugin array with ConditionNodeStruct + * This will make sure that if user passes in a Node-type condition node, it will be converted to a ConditionNodeStruct, + * which is the type that the smart contract of DARC entrance interface accepts + */ +export function pluginProcessor(pluginArray: PluginStruct[] | PluginStructWithNode[]) : PluginStruct[] { + let returnArray: PluginStruct[] = []; + for (let i = 0; i < pluginArray.length; i++) { + + if (pluginArray[i].conditionNodes instanceof Node) { + const node = (pluginArray[i].conditionNodes) as Node; + const serializedNode = node.generateConditionNodeList(); + returnArray.push({ + returnType: pluginArray[i].returnType, + level: pluginArray[i].level, + conditionNodes: serializedNode, + votingRuleIndex: pluginArray[i].votingRuleIndex, + notes: pluginArray[i].notes, + bIsEnabled: pluginArray[i].bIsEnabled, + bIsInitialized: pluginArray[i].bIsInitialized, + bIsBeforeOperation: pluginArray[i].bIsBeforeOperation, + }); + } + else { + returnArray.push( (pluginArray[i]) as PluginStruct); + } + } + + return returnArray; +} diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts index 7e7554f8..f5f1637a 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/SDK/sdk.ts @@ -1,6 +1,6 @@ // import everything from includes.ts import * as instructions from "./includes"; -import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct } from "../types/basicTypes"; +import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "../types/basicTypes"; import {ethers} from "ethers"; import * as DARC from "../DARC/DARC"; @@ -135,7 +135,7 @@ export function batch_change_member_names(addressArray: string[], nameArray: str return operation; } -export function batch_add_plugins(pluginArray: PluginStruct[]): OperationStruct { +export function batch_add_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { if (pluginArray instanceof Array && typeof pluginArray[0] !== "object") { let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); return operation; @@ -154,7 +154,7 @@ export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isB return operation; } -export function batch_add_and_enable_plugins(pluginArray: PluginStruct[]): OperationStruct { +export function batch_add_and_enable_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); return operation; } diff --git a/darc-js/src/SDK/struct/Plugin.ts b/darc-js/src/SDK/struct/Plugin.ts deleted file mode 100644 index 3d200311..00000000 --- a/darc-js/src/SDK/struct/Plugin.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ConditionNode } from "../plugins/ConditionNode"; -import { VotingParameters } from "./voting-param"; - -class Plugin { - notes: string; - conditionExpressionTreeRootNode: ConditionNode; - restrictionPluginReturnType: RestrictionPluginReturnType; - votingParameters: VotingParameters | null; - restrictionPluginType: RestrictionPluginType; - constructor(inputNotes: string, conditionExpressionTreeRootNode: ConditionNode, restrictionPluginReturnType: RestrictionPluginReturnType, votingParameters: VotingParameters | null, restrictionPluginType: RestrictionPluginType) { - this.notes = inputNotes; - this.conditionExpressionTreeRootNode = conditionExpressionTreeRootNode; - this.restrictionPluginReturnType = restrictionPluginReturnType; - this.votingParameters = votingParameters; - this.restrictionPluginType = restrictionPluginType; - } -} - -enum RestrictionPluginReturnType { - NO, - ABSOLUTELY_YES, - VOTING_NEEDED -} - -enum RestrictionPluginType { - BEFORE_OPERATION, - AFTER_OPERATION -} - -export { Plugin, RestrictionPluginReturnType, RestrictionPluginType }; \ No newline at end of file diff --git a/darc-js/src/SDK/struct/Program.ts b/darc-js/src/SDK/struct/Program.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/darc-js/src/SDK/struct/token-operation-map.ts b/darc-js/src/SDK/struct/token-operation-map.ts deleted file mode 100644 index dfbe86f6..00000000 --- a/darc-js/src/SDK/struct/token-operation-map.ts +++ /dev/null @@ -1,12 +0,0 @@ -// TokenOwnershipMap is a map of tokenID to owner address and amount - -export class TokenOperations { - // each tuple is (tokenID, owner_address, amount) - public arrayTokenOperations: Array<[number, string, number]>; - public constructor() { - this.arrayTokenOperations = new Array<[number, string, number]>(); - } - public add_token_ownership_tuple(tokenID: number, ownerAddress: string, amount: number) { - this.arrayTokenOperations.push([tokenID, ownerAddress, amount]); - } -} \ No newline at end of file diff --git a/darc-js/src/SDK/struct/voting-param.ts b/darc-js/src/SDK/struct/voting-param.ts deleted file mode 100644 index 593be1f7..00000000 --- a/darc-js/src/SDK/struct/voting-param.ts +++ /dev/null @@ -1,17 +0,0 @@ -export class VotingParameters{ - // how long the voting period is in seconds - votingPeriodInSeconds: number; - - // how many percent of the voting tokens are needed to pass the voting - votingThresholdInPercentage: number; - - // the valid voting token ID list for voting - // if the voting token ID list is empty, then all tokens are valid - votingTokenIDList: Array; - - constructor(votingPeriodInSeconds: number, votingThresholdInPercentage: number, votingTokenIDList: Array){ - this.votingPeriodInSeconds = votingPeriodInSeconds; - this.votingThresholdInPercentage = votingThresholdInPercentage; - this.votingTokenIDList = votingTokenIDList; - } -} \ No newline at end of file diff --git a/darc-js/src/types/basicTypes.ts b/darc-js/src/types/basicTypes.ts index 6747afbe..8b903957 100644 --- a/darc-js/src/types/basicTypes.ts +++ b/darc-js/src/types/basicTypes.ts @@ -12,6 +12,8 @@ import type { utils, } from "ethers"; +import {Node} from "../SDK/conditionNodes/Node"; + type PromiseOrValue = T | Promise; @@ -99,6 +101,17 @@ export type PluginStruct = { bIsBeforeOperation: PromiseOrValue; }; +export type PluginStructWithNode = { + returnType: PromiseOrValue; + level: PromiseOrValue; + conditionNodes: Node; + votingRuleIndex: PromiseOrValue; + notes: PromiseOrValue; + bIsEnabled: PromiseOrValue; + bIsInitialized: PromiseOrValue; + bIsBeforeOperation: PromiseOrValue; +}; + export type PluginStructOutput = [ number, BigNumber, From f00292bdb9b10e893d4466b98857dcc7a5d1b0bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 26 Jan 2024 07:45:07 -0600 Subject: [PATCH 13/62] Update sdk-node-generation-test.ts --- .../sdk-test/sdk-node-generation-test.ts | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 5bc683fd..96fcbfdd 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -36,7 +36,7 @@ function toBigIntArray(array: number[]): bigint[] { return bigIntArray; } -describe('SDK node generation test', () => { +describe.only('SDK node generation test', () => { it ('should run the program "add and enable plugin" with generated condition node list in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); await interpret( @@ -190,4 +190,60 @@ describe('SDK node generation test', () => { expect (isSuccess).to.equal(false); }); }); + + it ('should also generate condition node automatically, without manually calling the function generateConditionNodeList', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + await interpret( + [ + + // operation 0 + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + + // operation 1 + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + + // operation 2 + batch_add_and_enable_plugins( + [ + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: + or( + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target1]], + BYTES: [] + }), + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target2]], + BYTES: [] + }) + ) + } + ] + ) + ], + signer, + darc_contract_address, + "test program" + ); + }); }); \ No newline at end of file From e2335996c7cbc2b14c6675fafd332027fd1de096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 26 Jan 2024 21:01:42 -0600 Subject: [PATCH 14/62] comit --- darc-js/src/SDK/runtime.ts | 26 ++++++++++++++-- darc-js/src/SDK/transpiler.ts | 30 ++----------------- .../sdk-test/sdk-node-generation-test.ts | 5 ++-- ...or-test.ts => transpiler-operator-test.ts} | 5 ++-- 4 files changed, 32 insertions(+), 34 deletions(-) rename darc-js/tests/sdk-test/{operator-test.ts => transpiler-operator-test.ts} (84%) diff --git a/darc-js/src/SDK/runtime.ts b/darc-js/src/SDK/runtime.ts index 0a0b5f50..00faf6e2 100644 --- a/darc-js/src/SDK/runtime.ts +++ b/darc-js/src/SDK/runtime.ts @@ -2,16 +2,17 @@ import * as instructions from "./includes"; import { ethers, Contract } from 'ethers'; import { OperationStruct, OperationStructOutput, ProgramStruct } from "../types/basicTypes"; import * as DARC from "../DARC/DARC"; +import { transpiler } from "./transpiler"; /** * This function takes in a string of code and returns a program struct * @param code The code to be run * @param wallet The wallet to be used to sign the transaction (provider must be set) - * @param targetDARCAddress The address of the DARC contract to be used + * @param targetDARCAddress The address of the DARC contract to be used, if any. Leave blank if not needed. * @returns nothing */ -export async function run(code:string, wallet:ethers.Wallet, targetDARCAddress:string, darcVersion: DARC.DARC_VERSION = DARC.DARC_VERSION.Latest) { +export async function run(code:string, wallet:ethers.Wallet, targetDARCAddress:string, darcVersion: DARC.DARC_VERSION = DARC.DARC_VERSION.Latest, delegateToAddress?:string) { let include = ''; for (const key in instructions) { include += `let ${key} = instructions.${key};\n`; @@ -20,7 +21,7 @@ export async function run(code:string, wallet:ethers.Wallet, targetDARCAddress:s const fn = new Function('instructions', 'ethers', 'wallet', 'address', include + code + '\n return operationList;'); const results = fn(instructions, ethers, wallet, targetDARCAddress); - const operatorAddress = wallet.address; + const operatorAddress = delegateToAddress? delegateToAddress: wallet.address; const resultList:OperationStruct[] = [...results]; // add operator address to each operation @@ -47,4 +48,23 @@ export async function run(code:string, wallet:ethers.Wallet, targetDARCAddress:s // after execution, clear the operation list instructions.operationList.length = 0; instructions.programNotes.replace(instructions.programNotes, ''); +} + +/** + * The core function for transpiling and running a by-law script snippet + * @param code The code to be run + * @param wallet The wallet to be used to sign the transaction (provider must be set) + * @param targetDARCAddress The address of the DARC contract to be used + * @param darcVersion The version of the DARC contract to be used + * @param delegateToAddress The address of the delegate to be used, if any. Leave blank if not needed. + */ +export async function transpileAndRun( + code:string, + wallet:ethers.Wallet, + targetDARCAddress:string, + darcVersion: DARC.DARC_VERSION = DARC.DARC_VERSION.Latest, + delegateToAddress?:string +) { + const compiledCode = transpiler(code); + await run(compiledCode, wallet, targetDARCAddress, darcVersion, delegateToAddress); } \ No newline at end of file diff --git a/darc-js/src/SDK/transpiler.ts b/darc-js/src/SDK/transpiler.ts index ea4c248f..51bdd496 100644 --- a/darc-js/src/SDK/transpiler.ts +++ b/darc-js/src/SDK/transpiler.ts @@ -6,30 +6,6 @@ export function transpiler(sourceCode: string): string { // register the plugin babel.registerPlugin('overload', require('@jetblack/operator-overloading')); //jetblack_operator_overload); - - /* - babel.registerPlugin( - '@babel/plugin-proposal-class-properties', - require('@babel/plugin-proposal-class-properties') - ); - babel.registerPlugin( - '@babel/plugin-proposal-private-methods', - require('@babel/plugin-proposal-private-methods') - ); - - function lolizer() { - return { - visitor: { - Identifier(path:any) { - console.log(JSON.stringify( path.node)); - //path.node.name = "LOL"; - }, - }, - }; - } - - babel.registerPlugin("lolizer", lolizer); - */ // register the preset @@ -40,7 +16,7 @@ export function transpiler(sourceCode: string): string { babel.registerPreset('@babel/preset-typescript', require('@babel/preset-typescript')); // compile the code - const result = babel.transform(sourceCode, { + const result = babel.transform( `'operator-overloading enabled';` + sourceCode, { plugins: ['overload'], //, '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-private-methods'], //['@babel/plugin-proposal-class-properties', { "loose": true }], //['@babel/plugin-proposal-private-methods', { loose: true }] @@ -50,7 +26,7 @@ export function transpiler(sourceCode: string): string { sourceType: 'script' }); - console.log(JSON.stringify(babel)); + - return result.code; + return result.code; } \ No newline at end of file diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 96fcbfdd..1345f770 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -36,7 +36,7 @@ function toBigIntArray(array: number[]): bigint[] { return bigIntArray; } -describe.only('SDK node generation test', () => { +describe('SDK node generation test', () => { it ('should run the program "add and enable plugin" with generated condition node list in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); await interpret( @@ -206,7 +206,8 @@ describe.only('SDK node generation test', () => { // operation 1 batch_mint_tokens( - [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), toBigIntArray([100,200]) ), diff --git a/darc-js/tests/sdk-test/operator-test.ts b/darc-js/tests/sdk-test/transpiler-operator-test.ts similarity index 84% rename from darc-js/tests/sdk-test/operator-test.ts rename to darc-js/tests/sdk-test/transpiler-operator-test.ts index 9a4c5fe1..6cc13bc1 100644 --- a/darc-js/tests/sdk-test/operator-test.ts +++ b/darc-js/tests/sdk-test/transpiler-operator-test.ts @@ -2,13 +2,13 @@ import { expect } from 'chai'; import 'mocha'; import { transpiler } from '../../src/SDK/transpiler'; +import { Node } from '@babel/types'; -describe('Operator Test', +describe.only('Operator Test', () => { it('should return true', () => { const code = ` - 'operator-overloading enabled'; let ConditionNode1 = new ConditionNode(ConditionNodeType.ExpressionNode, Expression.Operation_Equals, null, [1, 2]); let ConditionNode2 = new ConditionNode(ConditionNodeType.ExpressionNode, Expression.Operation_Equals, null, [1, 2]); @@ -18,6 +18,7 @@ describe('Operator Test', const transpiled_result = transpiler(code); + console.log(transpiled_result); expect(true).to.equal(true); }); }); \ No newline at end of file From ef311f5ba3230eb26d11856ea8b399ca199c666f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 27 Jan 2024 00:49:22 -0600 Subject: [PATCH 15/62] update --- darc-js/src/SDK/includes.ts | 5 +- darc-js/src/SDK/runtime.ts | 7 +- darc-js/tests/runtime-test/transpileAndRun.ts | 303 ++++++++++++++++++ .../transpiler-operator-test.ts | 2 +- 4 files changed, 313 insertions(+), 4 deletions(-) create mode 100644 darc-js/tests/runtime-test/transpileAndRun.ts rename darc-js/tests/{sdk-test => runtime-test}/transpiler-operator-test.ts (95%) diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index f5224d46..af0d8261 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -2,7 +2,7 @@ // todo: add backend support for current operations import { OperationStruct, PluginStruct, PluginStructWithNode, VotingRuleStruct } from "../types/basicTypes"; import { Node } from "./conditionNodes/Node"; - +import { BigNumber } from "ethers"; import { objectMethod } from "@babel/types"; import { @@ -47,6 +47,7 @@ export let operationList: OperationStruct[] = []; export let programNotes: string = ""; +export { BigNumber }; export function setNote(note:string) { programNotes = note; @@ -61,7 +62,7 @@ export function batch_create_token_classes(nameArray: string[], tokenIndexArray: let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); operationList.push(operation); } - + export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]) { let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); operationList.push(operation); diff --git a/darc-js/src/SDK/runtime.ts b/darc-js/src/SDK/runtime.ts index 00faf6e2..863c8985 100644 --- a/darc-js/src/SDK/runtime.ts +++ b/darc-js/src/SDK/runtime.ts @@ -66,5 +66,10 @@ export async function transpileAndRun( delegateToAddress?:string ) { const compiledCode = transpiler(code); - await run(compiledCode, wallet, targetDARCAddress, darcVersion, delegateToAddress); + if (delegateToAddress) { + await run(compiledCode, wallet, targetDARCAddress, darcVersion, delegateToAddress); + } + else { + await run(compiledCode, wallet, targetDARCAddress, darcVersion); + } } \ No newline at end of file diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts new file mode 100644 index 00000000..858d457d --- /dev/null +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -0,0 +1,303 @@ +import {interpret} from "../../src/SDK/sdk"; +import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; +import { ethers, BigNumber } from 'ethers'; +import * as DARC from '../../src/DARC/DARC'; +import 'mocha'; +import { expect } from 'chai'; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import {or, node, and, expression} from "../../src/SDK/conditionNodes/Node"; +import { transpileAndRun } from "../../src/SDK/runtime"; +import { transpiler } from "../../src/darcjs"; + + +const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + +const target1 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; + + +const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// initialize signer 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 with private key +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + +const signer1 = new ethers.Wallet('0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a', provider); +const signer2 = new ethers.Wallet('0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6', provider); + +const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + + +function toBigIntArray(array: number[]): bigint[] { + let bigIntArray: bigint[] = []; + for (let i = 0; i < array.length; i++) { + bigIntArray.push(BigInt(array[i])); + } + return bigIntArray; +} + +describe.only('transpiler and execution test', () => { + it ('should run the by-law script with expression', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + + const code = ` + + const target1 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; + + + const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + + + batch_create_token_classes(['token_0', 'token_1'], + [0,1], + [10,20], + [20,30]); + + + batch_mint_tokens([ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + [0, 1], [100,200]); + + batch_add_and_enable_plugins( + [ + // plugin 0: disable all operations + { + returnType: BigNumber.from(2), // no + level: BigNumber.from(3), // level 3 + votingRuleIndex: BigNumber.from(0), + notes: "disable all program", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[{ + id: BigNumber.from(0), + nodeType: BigNumber.from(3), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(0), // always true + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }] + }, + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[ + // node 0: boolean operator OR + { + id: BigNumber.from(0), + nodeType: BigNumber.from(2), // logical operator + logicalOperator: BigNumber.from(2), // OR + conditionExpression: 0, // no expression + childList: [BigNumber.from(1), BigNumber.from(2)], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }, + + // node 1: operatorAddress == target1 + { + id : BigNumber.from(1), + nodeType: BigNumber.from(1), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(3), // OPERATOR_ADDRESS_EQUALS + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target1]], + BYTES: [] + } + }, + + // node 2: operatorAddress == target2 + { + id : BigNumber.from(2), + nodeType: BigNumber.from(1), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(3), // OPERATOR_ADDRESS_EQUALS + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target2]], + BYTES: [] + } + } + ] + } + ] + ) + `; + const transpiledCode = transpiler(code); + console.log(transpiledCode); + //await run(transpiledCode, signer, darc_contract_address, DARC_VERSION.Latest) + await transpileAndRun(code, signer, darc_contract_address, DARC_VERSION.Latest); + // it should + + return; + + await interpret( + [ + + // operation 0 + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + + // operation 1 + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + + // operation 2 + batch_add_and_enable_plugins( + [ + // plugin 0: disable all operations + { + returnType: BigNumber.from(2), // no + level: BigNumber.from(3), // level 3 + votingRuleIndex: BigNumber.from(0), + notes: "disable all program", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[{ + id: BigNumber.from(0), + nodeType: BigNumber.from(3), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(0), // always true + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }] + }, + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: + or( + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target1]], + BYTES: [] + }), + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target2]], + BYTES: [] + }) + ).generateConditionNodeList() + } + ] + ) + ], + signer, + darc_contract_address, + "test program" + ).then(async ()=>{ + + const attached_local_darc_signer1 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer1, + version: DARC_VERSION.Latest, + }); + + const attached_local_darc_signer2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer2, + version: DARC_VERSION.Latest, + }); + + // signer 1 and signer 2 should be able to run the program + let isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer1, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer2, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + // and signer0 and programOperatorAddress should not be able to run the program + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer, + darc_contract_address, + "test program" + ); + } + catch(e){ + + isSuccess = false; + } + expect (isSuccess).to.equal(false); + }); + }); +}); \ No newline at end of file diff --git a/darc-js/tests/sdk-test/transpiler-operator-test.ts b/darc-js/tests/runtime-test/transpiler-operator-test.ts similarity index 95% rename from darc-js/tests/sdk-test/transpiler-operator-test.ts rename to darc-js/tests/runtime-test/transpiler-operator-test.ts index 6cc13bc1..0d0e4f6b 100644 --- a/darc-js/tests/sdk-test/transpiler-operator-test.ts +++ b/darc-js/tests/runtime-test/transpiler-operator-test.ts @@ -4,7 +4,7 @@ import 'mocha'; import { transpiler } from '../../src/SDK/transpiler'; import { Node } from '@babel/types'; -describe.only('Operator Test', +describe('Operator Test', () => { it('should return true', () => { From 2e5edbe9f3446f2545716646e0d0494e4d57f0c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 27 Jan 2024 02:29:34 -0600 Subject: [PATCH 16/62] update --- darc-js/src/SDK/includes.ts | 4 +- darc-js/tests/runtime-test/transpileAndRun.ts | 280 +++++------------- 2 files changed, 81 insertions(+), 203 deletions(-) diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index af0d8261..4c378c41 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -1,7 +1,7 @@ // all the included instructions are here, mostly instructions for operations // todo: add backend support for current operations import { OperationStruct, PluginStruct, PluginStructWithNode, VotingRuleStruct } from "../types/basicTypes"; -import { Node } from "./conditionNodes/Node"; +import { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT } from "./conditionNodes/Node"; import { BigNumber } from "ethers"; import { objectMethod } from "@babel/types"; @@ -49,6 +49,8 @@ export let programNotes: string = ""; export { BigNumber }; +export { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT }; + export function setNote(note:string) { programNotes = note; } diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index 858d457d..3372878f 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -36,8 +36,8 @@ function toBigIntArray(array: number[]): bigint[] { return bigIntArray; } -describe.only('transpiler and execution test', () => { - it ('should run the by-law script with expression', async () => { +describe('transpiler and execution test', () => { + it ('should run the by-law script with expression node, logical operation node generated successfully', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); const code = ` @@ -69,19 +69,7 @@ describe.only('transpiler and execution test', () => { bIsEnabled: true, bIsInitialized: true, bIsBeforeOperation: true, - conditionNodes:[{ - id: BigNumber.from(0), - nodeType: BigNumber.from(3), // expression - logicalOperator: BigNumber.from(0), // no operator - conditionExpression: BigNumber.from(0), // always true - childList: [], - param: { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [], - BYTES: [] - } - }] + conditionNodes: new TRUE() // always true }, { returnType: BigInt(4), // yes and skip sandbox @@ -91,213 +79,101 @@ describe.only('transpiler and execution test', () => { bIsEnabled: true, bIsInitialized: true, bIsBeforeOperation: true, - conditionNodes:[ - // node 0: boolean operator OR - { - id: BigNumber.from(0), - nodeType: BigNumber.from(2), // logical operator - logicalOperator: BigNumber.from(2), // OR - conditionExpression: 0, // no expression - childList: [BigNumber.from(1), BigNumber.from(2)], - param: { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [], - BYTES: [] - } - }, - - // node 1: operatorAddress == target1 - { - id : BigNumber.from(1), - nodeType: BigNumber.from(1), // expression - logicalOperator: BigNumber.from(0), // no operator - conditionExpression: BigNumber.from(3), // OPERATOR_ADDRESS_EQUALS - childList: [], - param: { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [[target1]], - BYTES: [] - } - }, - - // node 2: operatorAddress == target2 - { - id : BigNumber.from(2), - nodeType: BigNumber.from(1), // expression - logicalOperator: BigNumber.from(0), // no operator - conditionExpression: BigNumber.from(3), // OPERATOR_ADDRESS_EQUALS - childList: [], - param: { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [[target2]], - BYTES: [] - } - } - ] + conditionNodes: + or( + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target1]], + BYTES: [] + }), + expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[target2]], + BYTES: [] + }) + ) } ] ) `; - const transpiledCode = transpiler(code); - console.log(transpiledCode); - //await run(transpiledCode, signer, darc_contract_address, DARC_VERSION.Latest) await transpileAndRun(code, signer, darc_contract_address, DARC_VERSION.Latest); // it should - return; - await interpret( - [ + const attached_local_darc_signer1 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer1, + version: DARC_VERSION.Latest, + }); - // operation 0 - batch_create_token_classes( - ['token_0', 'token_1'], - toBigIntArray([0,1]), - toBigIntArray([10,20]), - toBigIntArray([20,30]) - ), + const attached_local_darc_signer2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer2, + version: DARC_VERSION.Latest, + }); - // operation 1 + // signer 1 and signer 2 should be able to run the program + let isSuccess = true; + try{ + await interpret([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), toBigIntArray([100,200]) - ), - - // operation 2 - batch_add_and_enable_plugins( - [ - // plugin 0: disable all operations - { - returnType: BigNumber.from(2), // no - level: BigNumber.from(3), // level 3 - votingRuleIndex: BigNumber.from(0), - notes: "disable all program", - bIsEnabled: true, - bIsInitialized: true, - bIsBeforeOperation: true, - conditionNodes:[{ - id: BigNumber.from(0), - nodeType: BigNumber.from(3), // expression - logicalOperator: BigNumber.from(0), // no operator - conditionExpression: BigNumber.from(0), // always true - childList: [], - param: { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [], - BYTES: [] - } - }] - }, - { - returnType: BigInt(4), // yes and skip sandbox - level: BigInt(103), - votingRuleIndex: BigInt(0), - notes: "allow operatorAddress == target1 | operatorAddress == target2", - bIsEnabled: true, - bIsInitialized: true, - bIsBeforeOperation: true, - conditionNodes: - or( - expression(3, { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [[target1]], - BYTES: [] - }), - expression(3, { - STRING_ARRAY: [], - UINT256_2DARRAY: [], - ADDRESS_2DARRAY: [[target2]], - BYTES: [] - }) - ).generateConditionNodeList() - } - ] ) ], - signer, + signer1, darc_contract_address, "test program" - ).then(async ()=>{ - - const attached_local_darc_signer1 = new DARC.DARC({ - address: darc_contract_address, - wallet: signer1, - version: DARC_VERSION.Latest, - }); - - const attached_local_darc_signer2 = new DARC.DARC({ - address: darc_contract_address, - wallet: signer2, - version: DARC_VERSION.Latest, - }); + ); + } + catch(e){ + isSuccess = false; + } - // signer 1 and signer 2 should be able to run the program - let isSuccess = true; - try{ - await interpret([ - batch_mint_tokens( - [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], - toBigIntArray([0, 1]), - toBigIntArray([100,200]) - ) - ], - signer1, - darc_contract_address, - "test program" - ); - } - catch(e){ - isSuccess = false; - } + expect (isSuccess).to.equal(true); - expect (isSuccess).to.equal(true); - - isSuccess = true; - try{ - await interpret([ - batch_mint_tokens( - [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], - toBigIntArray([0, 1]), - toBigIntArray([100,200]) - ) - ], - signer2, - darc_contract_address, - "test program" - ); - } - catch(e){ - isSuccess = false; - } - - expect (isSuccess).to.equal(true); - - // and signer0 and programOperatorAddress should not be able to run the program - isSuccess = true; - try{ - await interpret([ - batch_mint_tokens( - [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], - toBigIntArray([0, 1]), - toBigIntArray([100,200]) - ) - ], - signer, - darc_contract_address, - "test program" - ); - } - catch(e){ + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer2, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + // and signer0 and programOperatorAddress should not be able to run the program + isSuccess = true; + try{ + await interpret([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer, + darc_contract_address, + "test program" + ); + } + catch(e){ - isSuccess = false; - } - expect (isSuccess).to.equal(false); - }); + isSuccess = false; + } + expect (isSuccess).to.equal(false); }); }); \ No newline at end of file From 5e952e352d2c69ab66310463ae9bbc4de896effc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 29 Jan 2024 23:18:55 -0600 Subject: [PATCH 17/62] update --- darc-js/src/SDK/sdk.ts | 2 +- darc-js/tests/runtime-test/transpileAndRun.ts | 8 ++++---- darc-js/tests/sdk-test/sdk-node-generation-test.ts | 12 ++++++------ darc-js/tests/sdk-test/sdk-test.ts | 12 ++++++------ 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts index f5f1637a..3eb05c72 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/SDK/sdk.ts @@ -50,7 +50,7 @@ import { * @param notes The notes to be attached to the program * @param delegateToAddress If the signer is not the operator, but the operator has approved the signer to sign on its behalf, then the signer can set this parameter to the operator's address. Otherwise, leave it undefined. */ -export async function interpret( +export async function executeOperationList( operationList: OperationStruct[], wallet: ethers.Wallet, targetDARCAddress: string, diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index 3372878f..aaca0999 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -1,4 +1,4 @@ -import {interpret} from "../../src/SDK/sdk"; +import {executeOperationList} from "../../src/SDK/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; @@ -117,7 +117,7 @@ describe('transpiler and execution test', () => { // signer 1 and signer 2 should be able to run the program let isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -137,7 +137,7 @@ describe('transpiler and execution test', () => { isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -158,7 +158,7 @@ describe('transpiler and execution test', () => { // and signer0 and programOperatorAddress should not be able to run the program isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 1345f770..0d65c6ba 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -1,4 +1,4 @@ -import {interpret} from "../../src/SDK/sdk"; +import {executeOperationList} from "../../src/SDK/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; @@ -39,7 +39,7 @@ function toBigIntArray(array: number[]): bigint[] { describe('SDK node generation test', () => { it ('should run the program "add and enable plugin" with generated condition node list in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); - await interpret( + await executeOperationList( [ // operation 0 @@ -130,7 +130,7 @@ describe('SDK node generation test', () => { // signer 1 and signer 2 should be able to run the program let isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -150,7 +150,7 @@ describe('SDK node generation test', () => { isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -171,7 +171,7 @@ describe('SDK node generation test', () => { // and signer0 and programOperatorAddress should not be able to run the program isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -193,7 +193,7 @@ describe('SDK node generation test', () => { it ('should also generate condition node automatically, without manually calling the function generateConditionNodeList', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); - await interpret( + await executeOperationList( [ // operation 0 diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts index e5b1da2f..3e7a31ec 100644 --- a/darc-js/tests/sdk-test/sdk-test.ts +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -1,4 +1,4 @@ -import {interpret} from "../../src/SDK/sdk"; +import {executeOperationList} from "../../src/SDK/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; @@ -39,7 +39,7 @@ function toBigIntArray(array: number[]): bigint[] { describe('SDK execution test', () => { it('should run the program in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); - await interpret( + await executeOperationList( [ batch_create_token_classes( ['token_0', 'token_1'], @@ -91,7 +91,7 @@ describe('SDK execution test', () => { it('should run the program "add and enable plugin" in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); - await interpret( + await executeOperationList( [ // operation 0 @@ -213,7 +213,7 @@ describe('SDK execution test', () => { // signer 1 and signer 2 should be able to run the program let isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -233,7 +233,7 @@ describe('SDK execution test', () => { isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), @@ -254,7 +254,7 @@ describe('SDK execution test', () => { // and signer0 and programOperatorAddress should not be able to run the program isSuccess = true; try{ - await interpret([ + await executeOperationList([ batch_mint_tokens( [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], toBigIntArray([0, 1]), From 926f8d71f1e7cb278b4f52b2d78382a884443bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 30 Jan 2024 22:20:27 -0600 Subject: [PATCH 18/62] update --- darc-js/src/SDK/{conditionNodes => }/Node.ts | 2 +- darc-js/src/SDK/conditionNodes/nodeTable.ts | 18 ++++++++++++++++++ darc-js/src/SDK/includes.ts | 2 +- darc-js/src/SDK/opcodes/pluginProcessor.ts | 2 +- darc-js/src/types/basicTypes.ts | 2 +- darc-js/tests/runtime-test/transpileAndRun.ts | 2 +- darc-js/tests/sdk-test/basic-node-test.ts | 2 +- .../tests/sdk-test/sdk-node-generation-test.ts | 2 +- darc-js/tests/sdk-test/sdk-test.ts | 2 +- 9 files changed, 26 insertions(+), 8 deletions(-) rename darc-js/src/SDK/{conditionNodes => }/Node.ts (99%) create mode 100644 darc-js/src/SDK/conditionNodes/nodeTable.ts diff --git a/darc-js/src/SDK/conditionNodes/Node.ts b/darc-js/src/SDK/Node.ts similarity index 99% rename from darc-js/src/SDK/conditionNodes/Node.ts rename to darc-js/src/SDK/Node.ts index 6982c3f4..1abfa8dd 100644 --- a/darc-js/src/SDK/conditionNodes/Node.ts +++ b/darc-js/src/SDK/Node.ts @@ -1,4 +1,4 @@ -import { ConditionNodeStruct, NodeParamStruct } from "../../types/basicTypes"; +import { ConditionNodeStruct, NodeParamStruct } from "../types/basicTypes"; import { BigNumberish } from "ethers"; /** diff --git a/darc-js/src/SDK/conditionNodes/nodeTable.ts b/darc-js/src/SDK/conditionNodes/nodeTable.ts new file mode 100644 index 00000000..de7e75b7 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/nodeTable.ts @@ -0,0 +1,18 @@ +import { + Node, + AND, + OR, + NOT, + EXPRESSION, + TRUE, + FALSE, + NodeType, + and, + or, + not, + expression, + boolean_true, + boolean_false, + node, +} from '../Node'; + diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 4c378c41..f05225ca 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -1,7 +1,7 @@ // all the included instructions are here, mostly instructions for operations // todo: add backend support for current operations import { OperationStruct, PluginStruct, PluginStructWithNode, VotingRuleStruct } from "../types/basicTypes"; -import { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT } from "./conditionNodes/Node"; +import { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT } from "./Node"; import { BigNumber } from "ethers"; import { objectMethod } from "@babel/types"; diff --git a/darc-js/src/SDK/opcodes/pluginProcessor.ts b/darc-js/src/SDK/opcodes/pluginProcessor.ts index 37b3df5b..63c7c49e 100644 --- a/darc-js/src/SDK/opcodes/pluginProcessor.ts +++ b/darc-js/src/SDK/opcodes/pluginProcessor.ts @@ -1,5 +1,5 @@ import { ConditionNodeStruct, PluginStruct, PluginStructWithNode } from "../../types/basicTypes"; -import { Node} from "../conditionNodes/Node"; +import { Node} from "../Node"; /** * This is a helper function to convert a plugin array with Node to a plugin array with ConditionNodeStruct diff --git a/darc-js/src/types/basicTypes.ts b/darc-js/src/types/basicTypes.ts index 8b903957..f2724fe6 100644 --- a/darc-js/src/types/basicTypes.ts +++ b/darc-js/src/types/basicTypes.ts @@ -12,7 +12,7 @@ import type { utils, } from "ethers"; -import {Node} from "../SDK/conditionNodes/Node"; +import {Node} from "../SDK/Node"; type PromiseOrValue = T | Promise; diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index aaca0999..ef7a611f 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -5,7 +5,7 @@ import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; -import {or, node, and, expression} from "../../src/SDK/conditionNodes/Node"; +import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; import { transpiler } from "../../src/darcjs"; diff --git a/darc-js/tests/sdk-test/basic-node-test.ts b/darc-js/tests/sdk-test/basic-node-test.ts index 4a97d084..897f017f 100644 --- a/darc-js/tests/sdk-test/basic-node-test.ts +++ b/darc-js/tests/sdk-test/basic-node-test.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../../src/SDK/conditionNodes/Node'; +import {Node, AND, OR, NOT, EXPRESSION, TRUE, FALSE, NodeType} from '../../src/SDK/Node'; import 'mocha'; diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 0d65c6ba..3f37fb94 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -5,7 +5,7 @@ import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; -import {or, node, and, expression} from "../../src/SDK/conditionNodes/Node"; +import {or, node, and, expression} from "../../src/SDK/Node"; const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts index 3e7a31ec..8900ff56 100644 --- a/darc-js/tests/sdk-test/sdk-test.ts +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -5,7 +5,7 @@ import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; -import {or, node, and, expression} from "../../src/SDK/conditionNodes/Node"; +import {or, node, and, expression} from "../../src/SDK/Node"; const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; From 01501deb103a9cb59db243a52a2bac8034b00a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 2 Feb 2024 02:39:21 -0600 Subject: [PATCH 19/62] update --- .../Instructions/MoneyInstructions.sol | 6 +- .../Instructions/TokenInstructions.sol | 110 +++++++++++++++++- 2 files changed, 112 insertions(+), 4 deletions(-) diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol index d62b7ba3..39093b2d 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol @@ -289,8 +289,8 @@ contract MoneyInstructions is MachineStateManager { } - function op_BATCH_BURN_TOKENS_AND_REFUND(Operation memory operation, bool bIsSandbox) internal { - // todo - } + // function op_BATCH_BURN_TOKENS_AND_REFUND(Operation memory operation, bool bIsSandbox) internal { + // // todo + // } } \ No newline at end of file diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/TokenInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/TokenInstructions.sol index f01195e0..3038818b 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/TokenInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/TokenInstructions.sol @@ -513,6 +513,114 @@ contract TokenInstructions is MachineStateManager, TokenOwnerListManager{ } } - + /** + * @notice The function that executes the BATCH_BURN_TOKENS_AND_REFUND operation + * @param operation The operation to be executed + * @param bIsSandbox The flag to indicate if the operation is being executed in sandbox + */ + function op_BATCH_BURN_TOKENS_AND_REFUND(Operation memory operation, bool bIsSandbox) internal { + /** + * @notice Batch Burn tokens and Refund + * @param UINT256_2DARRAY[0] uint256[] tokenClassArray: the array of the token class index to burn tokens from + * @param UINT256_2DARRAY[1] uint256[] amountArray: the array of the amount of the token to burn + * @param UINT256_2DARRAY[2] uint256[] priceArray: the price of each token class to burn + * ID:30 + */ + require(operation.param.UINT256_2DARRAY[0].length == operation.param.UINT256_2DARRAY[1].length, "The length of tokenClassArray and amountArray is not equal at BATCH_BURN_TOKENS_AND_REFUND"); + require(operation.param.UINT256_2DARRAY[0].length == operation.param.UINT256_2DARRAY[2].length, "The length of tokenClassArray and priceArray is not equal at BATCH_BURN_TOKENS_AND_REFUND"); + + uint256[] memory tokenClass = operation.param.UINT256_2DARRAY[0]; + uint256[] memory amount = operation.param.UINT256_2DARRAY[1]; + uint256[] memory price = operation.param.UINT256_2DARRAY[2]; + + // just call the op_BATCH_BURN_TOKENS function to burn the tokens first + // make sure that the burning operation is executed successfully before refunding the operator + op_BATCH_BURN_TOKENS(operation, bIsSandbox); + + // then refund the operator with the price + + if (bIsSandbox) { + // initialize the total refund amount + uint256 totalRefundAmount = 0; + for (uint256 i=0;i 0) { + + (bIsValid, totalRefundAmount) = SafeMathUpgradeable.tryAdd(refundAmount, totalRefundAmount); + require(bIsValid, "The total refund amount is overflow"); + } + } + + // if the total refund amount is greater than 0, add it to the withdrawable cash map + // and update the withdrawable cash owner list if the operator is not in the list + if (totalRefundAmount > 0) { + uint256 totalWithdrawableAmount = 0; + bool bIsValid = false; + (bIsValid, totalWithdrawableAmount) = SafeMathUpgradeable.tryAdd(totalRefundAmount, sandboxMachineState.withdrawableCashMap[operation.operatorAddress]); + require(bIsValid, "The total withdrawable amount is overflow"); + sandboxMachineState.withdrawableCashMap[operation.operatorAddress] = totalWithdrawableAmount; + + // if the operator is not in the withdrawable cash owner list, add it to the list + bool bIsInList = false; + for (uint256 i=0;i 0) { + + (bIsValid, totalRefundAmount) = SafeMathUpgradeable.tryAdd(refundAmount, totalRefundAmount); + require(bIsValid, "The total refund amount is overflow"); + + } + } + + // if the total refund amount is greater than 0, add it to the withdrawable cash map + // and update the withdrawable cash owner list if the operator is not in the list + if (totalRefundAmount > 0) { + uint256 totalWithdrawableAmount = 0; + bool bIsValid = false; + (bIsValid, totalWithdrawableAmount) = SafeMathUpgradeable.tryAdd(totalRefundAmount, currentMachineState.withdrawableCashMap[operation.operatorAddress]); + require(bIsValid, "The total withdrawable amount is overflow"); + currentMachineState.withdrawableCashMap[operation.operatorAddress] = totalWithdrawableAmount; + + // if the operator is not in the withdrawable cash owner list, add it to the list + bool bIsInList = false; + for (uint256 i=0;i Date: Fri, 2 Feb 2024 21:49:28 -0600 Subject: [PATCH 20/62] update --- darc-js/src/SDK/includes.ts | 1 - .../contracts/protocol/MachineState.sol | 2 +- .../Plugin/Condition_MachineState.sol | 35 +++++++++++-------- .../Instructions/MoneyInstructions.sol | 5 --- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index f05225ca..90d6926b 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -1,5 +1,4 @@ // all the included instructions are here, mostly instructions for operations -// todo: add backend support for current operations import { OperationStruct, PluginStruct, PluginStructWithNode, VotingRuleStruct } from "../types/basicTypes"; import { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT } from "./Node"; import { BigNumber } from "ethers"; diff --git a/darc-protocol/contracts/protocol/MachineState.sol b/darc-protocol/contracts/protocol/MachineState.sol index d730ba3e..989e2086 100644 --- a/darc-protocol/contracts/protocol/MachineState.sol +++ b/darc-protocol/contracts/protocol/MachineState.sol @@ -102,7 +102,7 @@ struct MachineState { * The balance sheet and information of each token class * TODO: make the length of the tokenList dynamic (not fixed to 10000) */ - Token[100] tokenList; + Token[1000] tokenList; /** * The member list and internal role index number of each token owner, diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol b/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol index 2a163f76..916e3853 100644 --- a/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol +++ b/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol @@ -53,11 +53,11 @@ contract Condition_MachineState is MachineStateManager { else if (id==79) return ID_79_TOTAL_DIVIDEND_WEIGHT_LESS_THAN(bIsBeforeOperation, param); else if (id==80) return ID_80_TOTAL_DIVIDEND_WEIGHT_IN_RANGE(bIsBeforeOperation, param); - //todo: implement and uncomment the following functions - // else if (id==81) return ID_81_TOTAL_CASH_GREATER_THAN(bIsBeforeOperation, param); - // else if (id==82) return ID_82_TOTAL_CASH_LESS_THAN(bIsBeforeOperation, param); - // else if (id==83) return ID_83_TOTAL_CASH_IN_RANGE(bIsBeforeOperation, param); - // else if (id==84) return ID_84_TOTAL_CASH_EQUALS(bIsBeforeOperation, param); + + else if (id==81) return ID_81_TOTAL_CASH_GREATER_THAN(param); + else if (id==82) return ID_82_TOTAL_CASH_LESS_THAN(param); + else if (id==83) return ID_83_TOTAL_CASH_IN_RANGE(param); + else if (id==84) return ID_84_TOTAL_CASH_EQUALS(param); else if (id==85) return ID_85_TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN(bIsBeforeOperation, param); else if (id==86) return ID_86_TOKEN_IN_LIST_VOTING_WEIGHT_LESS_THAN(bIsBeforeOperation, param); @@ -349,21 +349,28 @@ contract Condition_MachineState is MachineStateManager { } - function ID_81_TOTAL_CASH_GREATER_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { - // todo: need to implement - return false; + function ID_81_TOTAL_CASH_GREATER_THAN(NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_81: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_81: UINT256_2DARRAY[0] must have 1 element"); + return address(this).balance > param.UINT256_2DARRAY[0][0]; } - function ID_82_TOTAL_CASH_LESS_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { - // todo: need to implement + function ID_82_TOTAL_CASH_LESS_THAN(NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_82: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_82: UINT256_2DARRAY[0] must have 1 element"); + return address(this).balance < param.UINT256_2DARRAY[0][0]; } - function ID_83_TOTAL_CASH_IN_RANGE(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { - // todo: need to implement + function ID_83_TOTAL_CASH_IN_RANGE( NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_83: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_83: UINT256_2DARRAY[0] must have 2 elements"); + return address(this).balance >= param.UINT256_2DARRAY[0][0] && address(this).balance <= param.UINT256_2DARRAY[0][1]; } - function ID_84_TOTAL_CASH_EQUALS(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { - // todo: need to implement + function ID_84_TOTAL_CASH_EQUALS(NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_84: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_84: UINT256_2DARRAY[0] must have 1 element"); + return address(this).balance == param.UINT256_2DARRAY[0][0]; } function ID_85_TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol index 39093b2d..01002777 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol @@ -288,9 +288,4 @@ contract MoneyInstructions is MachineStateManager { } } - - // function op_BATCH_BURN_TOKENS_AND_REFUND(Operation memory operation, bool bIsSandbox) internal { - // // todo - // } - } \ No newline at end of file From 3dba70199e34262d226b3f4dddc3680c33ba0860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 3 Feb 2024 20:38:21 -0600 Subject: [PATCH 21/62] update --- .../conditionNodes/Condition_MachineState.ts | 494 ++++++++++++++++++ .../SDK/conditionNodes/Condition_Operation.ts | 28 + .../SDK/conditionNodes/Condition_Operator.ts | 324 ++++++++++++ darc-js/src/SDK/conditionNodes/nodeTable.ts | 18 - darc-js/src/SDK/opcodes/opcodeTable.ts | 77 +-- darc-js/src/SDK/runtime.ts | 82 ++- darc-js/src/SDK/sdk.ts | 82 ++- 7 files changed, 1047 insertions(+), 58 deletions(-) create mode 100644 darc-js/src/SDK/conditionNodes/Condition_MachineState.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_Operation.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_Operator.ts delete mode 100644 darc-js/src/SDK/conditionNodes/nodeTable.ts diff --git a/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts b/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts new file mode 100644 index 00000000..48c703b1 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts @@ -0,0 +1,494 @@ +import { + expression + } from '../Node'; + +/** + * Machine-state-related related expressions +| 51 | TIMESTAMP_GREATER_THAN | UINT256_2DARRAY[0][0] timestamp | The current timestamp is greater than timestamp| +| 52 | TIMESTAMP_LESS_THAN | UINT256_2DARRAY[0][0] timestamp | The current timestamp is less than timestamp| +| 53 | TIMESTAMP_IN_RANGE | UINT256_2DARRAY[0][0] startTimestamp, UINT256_2DARRAY[0][0] endTimestamp | The current timestamp is in the range of [startTimestamp, endTimestamp]| +| 54 | DATE_YEAR_GREATER_THAN | UINT256_2DARRAY[0][0] year | The current year is greater than year| +| 55 | DATE_YEAR_LESS_THAN | UINT256_2DARRAY[0][0] year | The current year is less than year| +| 56 | DATE_YEAR_IN_RANGE | UINT256_2DARRAY[0][0] startYear, UINT256_2DARRAY[0][0] endYear | The current year is in the range of [startYear, endYear]| +| 57 | DATE_MONTH_GREATER_THAN | UINT256_2DARRAY[0][0] month | The current month is greater than month| +| 58 | DATE_MONTH_LESS_THAN | UINT256_2DARRAY[0][0] month | The current month is less than month| +| 59 | DATE_MONTH_IN_RANGE | UINT256_2DARRAY[0][0] startMonth, UINT256_2DARRAY[0][0] endMonth | The current month is in the range of [startMonth, endMonth]| +| 60 | DATE_DAY_GREATER_THAN | UINT256[0][0] day | The current day is greater than day| +| 61 | DATE_DAY_LESS_THAN | UINT256[0][0] day | The current day is less than day| +| 62 | DATE_DAY_IN_RANGE | UINT256[0][0] startDay, UINT256[0][0] endDay | The current day is in the range of [startDay, endDay]| +| 63 | DATE_HOUR_GREATER_THAN | uint256 hour | The current hour is greater than hour| +| 64 | DATE_HOUR_LESS_THAN | uint256 hour | The current hour is less than hour| +| 65 | DATE_HOUR_IN_RANGE | uint256 startHour, uint256 endHour | The current hour is in the range of [startHour, endHour]| +| 66 | ADDRESS_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has more than amount of voting weight| +| 67 | ADDRESS_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has less than amount of voting weight| +| 68 | ADDRESS_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has voting weight in the range of [startingAmount, endingAmount]| +| 69 | ADDRESS_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has more than amount of dividend weight| +| 70 | ADDRESS_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has less than amount of dividend weight| +| 71 | ADDRESS_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount , ADDRESS_2DARRAY[0][0] address || +| 72 | ADDRESS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || +| 73 | ADDRESS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || +| 74 | ADDRESS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || +| 75 | TOTAL_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 76 | TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 77 | TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 78 | TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 79 | TOTAL_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 80 | TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 81 | TOTAL_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 82 | TOTAL_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 83 | TOTAL_CASH_IN_RANGE| UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 84 | TOTAL_CASH_EQUALS| UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 85 | TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 86 | TOKEN_IN_LIST_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 87 | TOKEN_IN_LIST_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] startAmount, UINT256_2DARRAY[1][1] endAmount || +| 88 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 89 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 90 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 91 | TOKEN_IN_LIST_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 92 | TOKEN_IN_LIST_AMOUNT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 93 | TOKEN_IN_LIST_AMOUNT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 94 | TOKEN_IN_LIST_AMOUNT_EQUALS| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || + * */ + +function timestamp_greater_than(timestamp: number) { + return expression(51, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[timestamp]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function timestamp_less_than(timestamp: number) { + return expression(52, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[timestamp]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function timestamp_in_range(startTimestamp: number, endTimestamp: number) { + return expression(53, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startTimestamp, endTimestamp]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_year_greater_than(year: number) { + return expression(54, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[year]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_year_less_than(year: number) { + return expression(55, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[year]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_year_in_range(startYear: number, endYear: number) { + return expression(56, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startYear, endYear]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_month_greater_than(month: number) { + return expression(57, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[month]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_month_less_than(month: number) { + return expression(58, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[month]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_month_in_range(startMonth: number, endMonth: number) { + return expression(59, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startMonth, endMonth]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_day_greater_than(day: number) { + return expression(60, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[day]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_day_less_than(day: number) { + return expression(61, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[day]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_day_in_range(startDay: number, endDay: number) { + return expression(62, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startDay, endDay]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_hour_greater_than(hour: number) { + return expression(63, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[hour]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_hour_less_than(hour: number) { + return expression(64, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[hour]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function date_hour_in_range(startHour: number, endHour: number) { + return expression(65, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startHour, endHour]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function address_voting_weight_greater_than(amount: number, address: string) { + return expression(66, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_voting_weight_less_than(amount: number, address: string) { + return expression(67, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_voting_weight_in_range(amount: number, address: string) { + return expression(68, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_dividend_weight_greater_than(amount: number, address: string) { + return expression(69, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_dividend_weight_less_than(amount: number, address: string) { + return expression(70, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_dividend_weight_in_range(amount: number, address: string) { + return expression(71, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_token_x_greater_than(tokenClass: number, amount: number, address: string) { + return expression(72, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_token_x_less_than(tokenClass: number, amount: number, address: string) { + return expression(73, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_token_x_in_range(tokenClass: number, amount: number, address: string) { + return expression(74, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function total_voting_weight_greater_than(amount: number) { + return expression(75, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_voting_weight_less_than(amount: number) { + return expression(76, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_voting_weight_in_range(amount: number) { + return expression(77, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_dividend_weight_greater_than(amount: number) { + return expression(78, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_dividend_weight_less_than(amount: number) { + return expression(79, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_dividend_weight_in_range(amount: number) { + return expression(80, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_cash_greater_than(amount: number) { + return expression(81, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_cash_less_than(amount: number) { + return expression(82, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_cash_in_range(amount: number) { + return expression(83, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function total_cash_equals(amount: number) { + return expression(84, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_voting_weight_greater_than(tokenClassList: number[], amount: number) { + return expression(85, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_voting_weight_less_than(tokenClassList: number[], amount: number) { + return expression(86, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_voting_weight_in_range(tokenClassList: number[], startAmount: number, endAmount: number) { + return expression(87, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [startAmount, endAmount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_dividend_weight_greater_than(tokenClassList: number[], amount: number) { + return expression(88, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_dividend_weight_less_than(tokenClassList: number[], amount: number) { + return expression(89, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_dividend_weight_in_range(tokenClassList: number[], amount: number) { + return expression(90, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_amount_greater_than(tokenClassList: number[], amount: number) { + return expression(91, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_amount_less_than(tokenClassList: number[], amount: number) { + return expression(92, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_amount_in_range(tokenClassList: number[], amount: number) { + return expression(93, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_in_list_amount_equals(tokenClassList: number[], amount: number) { + return expression(94, { + STRING_ARRAY: [], + UINT256_2DARRAY: [tokenClassList, [amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { + timestamp_greater_than, + timestamp_less_than, + timestamp_in_range, + date_year_greater_than, + date_year_less_than, + date_year_in_range, + date_month_greater_than, + date_month_less_than, + date_month_in_range, + date_day_greater_than, + date_day_less_than, + date_day_in_range, + date_hour_greater_than, + date_hour_less_than, + date_hour_in_range, + address_voting_weight_greater_than, + address_voting_weight_less_than, + address_voting_weight_in_range, + address_dividend_weight_greater_than, + address_dividend_weight_less_than, + address_dividend_weight_in_range, + address_token_x_greater_than, + address_token_x_less_than, + address_token_x_in_range, + total_voting_weight_greater_than, + total_voting_weight_less_than, + total_voting_weight_in_range, + total_dividend_weight_greater_than, + total_dividend_weight_less_than, + total_dividend_weight_in_range, + total_cash_greater_than, + total_cash_less_than, + total_cash_in_range, + total_cash_equals, + token_in_list_voting_weight_greater_than, + token_in_list_voting_weight_less_than, + token_in_list_voting_weight_in_range, + token_in_list_dividend_weight_greater_than, + token_in_list_dividend_weight_less_than, + token_in_list_dividend_weight_in_range, + token_in_list_amount_greater_than, + token_in_list_amount_less_than, + token_in_list_amount_in_range, + token_in_list_amount_equals +}; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_Operation.ts b/darc-js/src/SDK/conditionNodes/Condition_Operation.ts new file mode 100644 index 00000000..f5d91c02 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_Operation.ts @@ -0,0 +1,28 @@ +import { expression } from '../Node'; +import { EnumOpcode } from '../opcodes/opcodeTable'; +/** + * Operation-related condition nodes +| 151 | OPERATION_EQUALS | uint256 value || +| 152 | OPERATION_IN_LIST | uint256[] values || + */ + + +function operation_equals(opcode: EnumOpcode) { + return expression(151, { + UINT256_2DARRAY: [[opcode]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_in_list(opcodes: EnumOpcode[]) { + return expression(152, { + UINT256_2DARRAY: [opcodes], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { operation_equals, operation_in_list }; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_Operator.ts b/darc-js/src/SDK/conditionNodes/Condition_Operator.ts new file mode 100644 index 00000000..c9a20daa --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_Operator.ts @@ -0,0 +1,324 @@ +import { + expression +} from '../Node'; + + +/** + * Operator related expressions + +| 0 | UNDEFINED | | Invalid Operation | +| 1 | OPERATOR_NAME_EQUALS| STRING_ARRAY[0] operatorName | The operator name is exactly the same as the given string | +| 2 | OPERATOR_ROLE_EQUALS| UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is exactly the same as operatorRoleIndex | +| 3 | OPERATOR_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] operatorAddress | The operator address equals operatorAddress| +| 4 | OPERATOR_ROLE_GREATER_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is greater than operatorRoleIndex| +| 5 | OPERATOR_ROLE_LESS_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is less than operatorRoleIndex| +| 6 | OPERATOR_ROLE_IN_RANGE| UINT256_2DARRAY[0][0] startingOperatorRoleIndex, UINT256_2DARRAY[0][1] endingOperatorRoleIndex | The operator role index is in the range of [startingOperatorRoleIndex, endingOperatorRoleIndex]| +| 7 | OPERATOR_ROLE_IN_LIST | UINT256_2DARRAY[0] operatorRoleIndexArray| The operator role index is in the list of operatorRoleIndexArray| +| 8 | OPERATOR_TOKEN_X_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | The operator has more than amount of token at tokenClass| +| 9 | OPERATOR_TOKEN_X_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || +| 10 | OPERATOR_TOKEN_X_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startingAmount, UINT256_2DARRAY[0][2] endingAmount | The operator has token amount in the range of [startingAmount, endingAmount] at tokenClass| +| 11 | OPERATOR_TOKEN_X_AMOUNT_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | The operator has exactly amount of token at tokenClass| +| 12 | OPERATOR_TOKEN_X_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has more than percentage of token at tokenClass| +| 13 | OPERATOR_TOKEN_X_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has less than percentage of token at tokenClass| +| 14 | OPERATOR_TOKEN_X_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentageStartingValue, UINT256_2DARRAY[0][2] percentageEndingValue | The operator has token percentage in the range of [percentageStartingValue, percentageEndingValue] at tokenClass| +| 15 | OPERATOR_TOKEN_X_PERCENTAGE_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has exactly percentage of token at tokenClass| +| 16 | OPERATOR_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount | The operator has more than amount of voting weight| +| 17 | OPERATOR_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of voting weight| +| 18 | OPERATOR_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has voting weight in the range of [startingAmount, endingAmount]| +| 19 | OPERATOR_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount | The operator has more than amount of dividend weight| +| 20 | OPERATOR_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount | The operator has less than amount of dividend weight| +| 21 | OPERATOR_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has dividend weight in the range of [startingAmount, endingAmount]| +| 22 | Placeholder22 | | | +| 23 | Placeholder23 | | | +| 24 | Placeholder24 | | | +| 25 | OPERATOR_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount | The operator has more than amount of withdrawable cash| +| 26 | OPERATOR_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of withdrawable cash| +| 27 | OPERATOR_WITHDRAWABLE_CASH_IN_RANGE| UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has withdrawable cash in the range of [startingAmount, endingAmount]| +| 28 | OPERATOR_WITHDRAWABLE_DIVIDENDS_GREATER_THAN| UINT256_2DARRAY[0][0] amount | The operator has more than amount of withdrawable dividends| +| 29 | OPERATOR_WITHDRAWABLE_DIVIDENDS_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of withdrawable dividends| +| 30 | OPERATOR_WITHDRAWABLE_DIVIDENDS_IN_RANGE | UINT256_2DARRAY[0][0] amount | The operator has withdrawable dividends in the range of [startingAmount, endingAmount]| +| 31 | OPERATOR_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] addressArray | The operator address is in the list of addressArray| + */ + +function operator_name_equals(operatorName: string) { + return expression(1, { + STRING_ARRAY: [operatorName], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_role_equals(operatorRoleIndex: number) { + return expression(2, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[operatorRoleIndex]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_address_equals(operatorAddress: string) { + return expression(3, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [[operatorAddress]], + BYTES: [] + }); +} + +function operator_role_greater_than(operatorRoleIndex: number) { + return expression(4, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[operatorRoleIndex]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_role_less_than(operatorRoleIndex: number) { + return expression(5, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[operatorRoleIndex]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_role_in_range(startingOperatorRoleIndex: number, endingOperatorRoleIndex: number) { + return expression(6, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startingOperatorRoleIndex, endingOperatorRoleIndex]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_role_in_list(operatorRoleIndexArray: number[]) { + return expression(7, { + STRING_ARRAY: [], + UINT256_2DARRAY: [operatorRoleIndexArray], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_amount_greater_than(tokenClass: number, amount: number) { + return expression(8, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_amount_less_than(tokenClass: number, amount: number) { + return expression(9, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_amount_in_range(tokenClass: number, startingAmount: number, endingAmount: number) { + return expression(10, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, startingAmount, endingAmount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_amount_equals(tokenClass: number, amount: number) { + return expression(11, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_percentage_greater_than(tokenClass: number, percentage: number) { + return expression(12, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, percentage]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_percentage_less_than(tokenClass: number, percentage: number) { + return expression(13, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, percentage]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_percentage_in_range(tokenClass: number, percentageStartingValue: number, percentageEndingValue: number) { + return expression(14, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, percentageStartingValue, percentageEndingValue]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_token_x_percentage_equals(tokenClass: number, percentage: number) { + return expression(15, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[tokenClass, percentage]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_voting_weight_greater_than(amount: number) { + return expression(16, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_voting_weight_less_than(amount: number) { + return expression(17, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_voting_weight_in_range(startingAmount: number, endingAmount: number) { + return expression(18, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startingAmount, endingAmount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_dividend_weight_greater_than(amount: number) { + return expression(19, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_dividend_weight_less_than(amount: number) { + return expression(20, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_dividend_weight_in_range(startingAmount: number, endingAmount: number) { + return expression(21, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startingAmount, endingAmount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_withdrawable_cash_greater_than(amount: number) { + return expression(25, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_withdrawable_cash_less_than(amount: number) { + return expression(26, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_withdrawable_cash_in_range(startingAmount: number, endingAmount: number) { + return expression(27, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startingAmount, endingAmount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_withdrawable_dividends_greater_than(amount: number) { + return expression(28, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_withdrawable_dividends_less_than(amount: number) { + return expression(29, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_withdrawable_dividends_in_range(startingAmount: number, endingAmount: number) { + return expression(30, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[startingAmount, endingAmount]], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operator_address_in_list(addressArray: string[]) { + return expression(31, { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [addressArray], + BYTES: [] + }); +} + +export { + operator_name_equals, + operator_role_equals, + operator_address_equals, + operator_role_greater_than, + operator_role_less_than, + operator_role_in_range, + operator_role_in_list, + operator_token_x_amount_greater_than, + operator_token_x_amount_less_than, + operator_token_x_amount_in_range, + operator_token_x_amount_equals, + operator_token_x_percentage_greater_than, + operator_token_x_percentage_less_than, + operator_token_x_percentage_in_range, + operator_token_x_percentage_equals, + operator_voting_weight_greater_than, + operator_voting_weight_less_than, + operator_voting_weight_in_range, + operator_dividend_weight_greater_than, + operator_dividend_weight_less_than, + operator_dividend_weight_in_range, + operator_withdrawable_cash_greater_than, + operator_withdrawable_cash_less_than, + operator_withdrawable_cash_in_range, + operator_withdrawable_dividends_greater_than, + operator_withdrawable_dividends_less_than, + operator_withdrawable_dividends_in_range, + operator_address_in_list +} \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/nodeTable.ts b/darc-js/src/SDK/conditionNodes/nodeTable.ts deleted file mode 100644 index de7e75b7..00000000 --- a/darc-js/src/SDK/conditionNodes/nodeTable.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { - Node, - AND, - OR, - NOT, - EXPRESSION, - TRUE, - FALSE, - NodeType, - and, - or, - not, - expression, - boolean_true, - boolean_false, - node, -} from '../Node'; - diff --git a/darc-js/src/SDK/opcodes/opcodeTable.ts b/darc-js/src/SDK/opcodes/opcodeTable.ts index d5159f9e..91b0ae91 100644 --- a/darc-js/src/SDK/opcodes/opcodeTable.ts +++ b/darc-js/src/SDK/opcodes/opcodeTable.ts @@ -10,7 +10,7 @@ enum EnumOpcode { * @notice Invalid Operation * ID: 0 */ - UNDEFINED, + UNDEFINED = 0, /** * @notice Batch Mint Token Operation @@ -20,7 +20,7 @@ enum EnumOpcode { * * ID: 1 */ - BATCH_MINT_TOKENS, + BATCH_MINT_TOKENS = 1, /** * @notice Batch Create Token Class Operation @@ -31,7 +31,7 @@ enum EnumOpcode { * * ID:2 */ - BATCH_CREATE_TOKEN_CLASSES, + BATCH_CREATE_TOKEN_CLASSES = 2, /** * @notice Batch Transfer Token Operation @@ -41,7 +41,7 @@ enum EnumOpcode { * * ID:3 */ - BATCH_TRANSFER_TOKENS, + BATCH_TRANSFER_TOKENS = 3, /** * @notice Batch Transfer Token From Addr A to Addr B Operation @@ -52,7 +52,7 @@ enum EnumOpcode { * * ID:4 */ - BATCH_TRANSFER_TOKENS_FROM_TO, + BATCH_TRANSFER_TOKENS_FROM_TO = 4, /** * @notice Batch Burn Token Operation @@ -61,7 +61,7 @@ enum EnumOpcode { * * ID:5 */ - BATCH_BURN_TOKENS, + BATCH_BURN_TOKENS = 5, /** * @notice Batch Burn Token From Addr A Operation @@ -71,7 +71,7 @@ enum EnumOpcode { * * ID:6 */ - BATCH_BURN_TOKENS_FROM, + BATCH_BURN_TOKENS_FROM = 6, /** * @notice Batch Add Member Operation @@ -81,7 +81,7 @@ enum EnumOpcode { * * ID:7 */ - BATCH_ADD_MEMBERSHIPS, + BATCH_ADD_MEMBERSHIPS = 7, /** * @notice Batch Suspend Member Operation @@ -89,7 +89,7 @@ enum EnumOpcode { * * ID:8 */ - BATCH_SUSPEND_MEMBERSHIPS, + BATCH_SUSPEND_MEMBERSHIPS = 8, /** * @notice Batch Resume Member Operation @@ -97,7 +97,7 @@ enum EnumOpcode { * * ID:9 */ - BATCH_RESUME_MEMBERSHIPS, + BATCH_RESUME_MEMBERSHIPS = 9, /** * @notice Batch Change Member Role Operation @@ -106,7 +106,7 @@ enum EnumOpcode { * * ID:10 */ - BATCH_CHANGE_MEMBER_ROLES, + BATCH_CHANGE_MEMBER_ROLES = 10, /** * @notice Batch Change Member Name Operation @@ -115,14 +115,14 @@ enum EnumOpcode { * * ID:11 */ - BATCH_CHANGE_MEMBER_NAMES, + BATCH_CHANGE_MEMBER_NAMES = 11, /** * @notice Batch Add Emergency Agent Operation * @param Plugin[] pluginList: the array of the plugins * ID:12 */ - BATCH_ADD_PLUGINS, + BATCH_ADD_PLUGINS = 12, /** * @notice Batch Enable Plugin Operation @@ -130,7 +130,7 @@ enum EnumOpcode { * @param BOOL_ARRAY bool[] isBeforeOperationArray: the array of the flag to indicate if the plugin is before operation * ID:13 */ - BATCH_ENABLE_PLUGINS, + BATCH_ENABLE_PLUGINS = 13, /** * @notice Batch Disable Plugin Operation @@ -138,14 +138,14 @@ enum EnumOpcode { * @param BOOL_ARRAY bool[] isBeforeOperationArray: the array of the flag to indicate if the plugin is before operation * ID:14 */ - BATCH_DISABLE_PLUGINS, + BATCH_DISABLE_PLUGINS = 14, /** * @notice Batch Add and Enable Plugin Operation * @param Plugin[] pluginList: the array of the plugins * ID:15 */ - BATCH_ADD_AND_ENABLE_PLUGINS, + BATCH_ADD_AND_ENABLE_PLUGINS = 15, /** * @notice Batch Set Parameter Operation @@ -153,7 +153,7 @@ enum EnumOpcode { * @param UINT256_2DARRAY[0] uint256[] parameterValueArray: the array of the parameter value * ID:16 */ - BATCH_SET_PARAMETERS, + BATCH_SET_PARAMETERS = 16, /** * @notice Batch Add Withdrawable Balance Operation @@ -161,7 +161,7 @@ enum EnumOpcode { * @param UINT256_2DARRAY[0] amountArray: the array of the amount to add withdrawable balance * ID:17 */ - BATCH_ADD_WITHDRAWABLE_BALANCES, + BATCH_ADD_WITHDRAWABLE_BALANCES = 17, /** * @notice Batch Reduce Withdrawable Balance Operation @@ -169,14 +169,14 @@ enum EnumOpcode { * @param UINT256_2DARRAY[0] amountArray: the array of the amount to substract withdrawable balance * ID:18 */ - BATCH_REDUCE_WITHDRAWABLE_BALANCES, + BATCH_REDUCE_WITHDRAWABLE_BALANCES = 18, /** * @notice Batch Add Voting Rules * @param VotingRule[] votingRuleList: the array of the voting rules * ID:19 */ - BATCH_ADD_VOTING_RULES, + BATCH_ADD_VOTING_RULES = 19, /** @@ -188,7 +188,7 @@ enum EnumOpcode { * @param UINT256_2DARRAY[3] uint256[1] dividendableFlag: the flag to indicate if the payment is dividendable. 1 for yes (pay for purchase), 0 for no (pay for investment) * ID:20 */ - BATCH_PAY_TO_MINT_TOKENS, + BATCH_PAY_TO_MINT_TOKENS = 20, /** * @notice Pay some cash to transfer tokens (can be used as product coins) @@ -199,7 +199,7 @@ enum EnumOpcode { * @ param UINT256_2DARRAY[3] uint256[1] dividendableFlag: the flag to indicate if the payment is dividendable. 1 for yes (pay for purchase), 0 for no (pay for investment) * ID:21 */ - BATCH_PAY_TO_TRANSFER_TOKENS, + BATCH_PAY_TO_TRANSFER_TOKENS = 21, /** * @notice Add an array of address as emergency agents @@ -207,20 +207,20 @@ enum EnumOpcode { * @param ADDRESS_2DARRAY[0] address[] The array of the address to add as emergency agents * ID:22 */ - ADD_EMERGENCY, + ADD_EMERGENCY = 22, /** * @notice Reserved ID 23 DO NOT USE * ID:23 */ - RESERVED_ID_23, + RESERVED_ID_23 = 23, /** * @notice Call emergency agents to handle emergency situations * @param UINT256_2DARRAY[0] address[] addressArray: the array of the emergency agents index to call * ID:24 */ - CALL_EMERGENCY, + CALL_EMERGENCY = 24, /** @@ -230,7 +230,7 @@ enum EnumOpcode { * @param UINT256_2DARRAY[0][0] uint256 the value to send to the contract * ID:25 */ - CALL_CONTRACT_ABI, + CALL_CONTRACT_ABI = 25, /** * @notice Pay some cash @@ -241,7 +241,7 @@ enum EnumOpcode { * 0 for no (pay for investment), 1 for yes (pay for purchase) * ID:26 */ - PAY_CASH, + PAY_CASH = 26, /** * @notice Calculate the dividends and offer to token holders @@ -249,13 +249,13 @@ enum EnumOpcode { * * ID:27 */ - OFFER_DIVIDENDS, + OFFER_DIVIDENDS = 27, /** * @notice Reserved ID 28 DO NOT USE * ID:28 */ - RESERVED_ID_28, + RESERVED_ID_28 = 28, /** * @notice Set the approval for all transfer operations by address @@ -263,7 +263,7 @@ enum EnumOpcode { * ADDRESS_2DARRAY[0][0] targetAddress * ID:29 */ - SET_APPROVAL_FOR_ALL_OPERATIONS, + SET_APPROVAL_FOR_ALL_OPERATIONS = 29, /** @@ -273,14 +273,14 @@ enum EnumOpcode { * @param UINT256_2DARRAY[2] uint256[] priceArray: the price of each token class to burn * ID:30 */ - BATCH_BURN_TOKENS_AND_REFUND, + BATCH_BURN_TOKENS_AND_REFUND = 30, /** * @notice Add storage IPFS hash to the storage list permanently * @paran STRING_ARRAY[0][0] text: the string text to add to the storage list * ID:31 */ - ADD_STORAGE_STRING, + ADD_STORAGE_STRING = 31, /** @@ -292,39 +292,39 @@ enum EnumOpcode { * @param bool[] voteArray: the array of the vote for each program * ID:32 */ - VOTE, + VOTE = 32, /** * @notice Execute a program that has been voted and approved * ID:33 */ - EXECUTE_PENDING_PROGRAM, + EXECUTE_PENDING_PROGRAM = 33, /** * @notice Emergency mode termination. Emergency agents cannot do anything after this operation * ID:34 */ - END_EMERGENCY, + END_EMERGENCY = 34, /** * @notice Upgrade the contract to a new contract address * @param ADDRESS_2DARRAY[0][0] The address of the new contract * ID:35 */ - UPGRADE_TO_ADDRESS, + UPGRADE_TO_ADDRESS = 35, /** * @notice Accepting current DARCs to be upgraded from the old contract address * @param ADDRESS_2DARRAY[0][0] The address of the old contract * ID:36 */ - CONFIRM_UPGRAED_FROM_ADDRESS, + CONFIRM_UPGRAED_FROM_ADDRESS = 36, /** * @notice Upgrade the contract to the latest version * ID:37 */ - UPGRADE_TO_THE_LATEST + UPGRADE_TO_THE_LATEST = 37, } @@ -1496,6 +1496,7 @@ function OPCODE_ID_37_UPGRADE_TO_THE_LATEST(): OperationStruct { // export all functions export { + EnumOpcode, OPCODE_ID_1_BATCH_MINT_TOKENS, OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, OPCODE_ID_3_BATCH_TRANSFER_TOKENS, diff --git a/darc-js/src/SDK/runtime.ts b/darc-js/src/SDK/runtime.ts index 863c8985..8ac35eb6 100644 --- a/darc-js/src/SDK/runtime.ts +++ b/darc-js/src/SDK/runtime.ts @@ -72,4 +72,84 @@ export async function transpileAndRun( else { await run(compiledCode, wallet, targetDARCAddress, darcVersion); } -} \ No newline at end of file +} + +export { operation_equals, operation_in_list } from "./conditionNodes/Condition_Operation"; + +export { + timestamp_greater_than, + timestamp_less_than, + timestamp_in_range, + date_year_greater_than, + date_year_less_than, + date_year_in_range, + date_month_greater_than, + date_month_less_than, + date_month_in_range, + date_day_greater_than, + date_day_less_than, + date_day_in_range, + date_hour_greater_than, + date_hour_less_than, + date_hour_in_range, + address_voting_weight_greater_than, + address_voting_weight_less_than, + address_voting_weight_in_range, + address_dividend_weight_greater_than, + address_dividend_weight_less_than, + address_dividend_weight_in_range, + address_token_x_greater_than, + address_token_x_less_than, + address_token_x_in_range, + total_voting_weight_greater_than, + total_voting_weight_less_than, + total_voting_weight_in_range, + total_dividend_weight_greater_than, + total_dividend_weight_less_than, + total_dividend_weight_in_range, + total_cash_greater_than, + total_cash_less_than, + total_cash_in_range, + total_cash_equals, + token_in_list_voting_weight_greater_than, + token_in_list_voting_weight_less_than, + token_in_list_voting_weight_in_range, + token_in_list_dividend_weight_greater_than, + token_in_list_dividend_weight_less_than, + token_in_list_dividend_weight_in_range, + token_in_list_amount_greater_than, + token_in_list_amount_less_than, + token_in_list_amount_in_range, + token_in_list_amount_equals +} from "./conditionNodes/Condition_MachineState"; + +export { + operator_name_equals, + operator_role_equals, + operator_address_equals, + operator_role_greater_than, + operator_role_less_than, + operator_role_in_range, + operator_role_in_list, + operator_token_x_amount_greater_than, + operator_token_x_amount_less_than, + operator_token_x_amount_in_range, + operator_token_x_amount_equals, + operator_token_x_percentage_greater_than, + operator_token_x_percentage_less_than, + operator_token_x_percentage_in_range, + operator_token_x_percentage_equals, + operator_voting_weight_greater_than, + operator_voting_weight_less_than, + operator_voting_weight_in_range, + operator_dividend_weight_greater_than, + operator_dividend_weight_less_than, + operator_dividend_weight_in_range, + operator_withdrawable_cash_greater_than, + operator_withdrawable_cash_less_than, + operator_withdrawable_cash_in_range, + operator_withdrawable_dividends_greater_than, + operator_withdrawable_dividends_less_than, + operator_withdrawable_dividends_in_range, + operator_address_in_list +} from "./conditionNodes/Condition_Operator"; \ No newline at end of file diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts index 3eb05c72..dfb2068c 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/SDK/sdk.ts @@ -257,4 +257,84 @@ export function confirm_upgrade_from_address(newAddress: string): OperationStruc export function upgrade_to_the_latest(): OperationStruct { let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); return operation; -} \ No newline at end of file +} + +export { operation_equals, operation_in_list } from "./conditionNodes/Condition_Operation"; + +export { + timestamp_greater_than, + timestamp_less_than, + timestamp_in_range, + date_year_greater_than, + date_year_less_than, + date_year_in_range, + date_month_greater_than, + date_month_less_than, + date_month_in_range, + date_day_greater_than, + date_day_less_than, + date_day_in_range, + date_hour_greater_than, + date_hour_less_than, + date_hour_in_range, + address_voting_weight_greater_than, + address_voting_weight_less_than, + address_voting_weight_in_range, + address_dividend_weight_greater_than, + address_dividend_weight_less_than, + address_dividend_weight_in_range, + address_token_x_greater_than, + address_token_x_less_than, + address_token_x_in_range, + total_voting_weight_greater_than, + total_voting_weight_less_than, + total_voting_weight_in_range, + total_dividend_weight_greater_than, + total_dividend_weight_less_than, + total_dividend_weight_in_range, + total_cash_greater_than, + total_cash_less_than, + total_cash_in_range, + total_cash_equals, + token_in_list_voting_weight_greater_than, + token_in_list_voting_weight_less_than, + token_in_list_voting_weight_in_range, + token_in_list_dividend_weight_greater_than, + token_in_list_dividend_weight_less_than, + token_in_list_dividend_weight_in_range, + token_in_list_amount_greater_than, + token_in_list_amount_less_than, + token_in_list_amount_in_range, + token_in_list_amount_equals +} from "./conditionNodes/Condition_MachineState"; + +export { + operator_name_equals, + operator_role_equals, + operator_address_equals, + operator_role_greater_than, + operator_role_less_than, + operator_role_in_range, + operator_role_in_list, + operator_token_x_amount_greater_than, + operator_token_x_amount_less_than, + operator_token_x_amount_in_range, + operator_token_x_amount_equals, + operator_token_x_percentage_greater_than, + operator_token_x_percentage_less_than, + operator_token_x_percentage_in_range, + operator_token_x_percentage_equals, + operator_voting_weight_greater_than, + operator_voting_weight_less_than, + operator_voting_weight_in_range, + operator_dividend_weight_greater_than, + operator_dividend_weight_less_than, + operator_dividend_weight_in_range, + operator_withdrawable_cash_greater_than, + operator_withdrawable_cash_less_than, + operator_withdrawable_cash_in_range, + operator_withdrawable_dividends_greater_than, + operator_withdrawable_dividends_less_than, + operator_withdrawable_dividends_in_range, + operator_address_in_list +} from "./conditionNodes/Condition_Operator"; \ No newline at end of file From 8830eca963df2a62122bf87b90c3ccf04151b75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sun, 4 Feb 2024 00:49:30 -0600 Subject: [PATCH 22/62] update --- .../SDK/conditionNodes/Condition_BatchOp.ts | 757 ++++++++++++++++++ .../Condition_CreateTokenClass.ts | 96 +++ .../conditionNodes/Condition_MembershipOp.ts | 59 ++ .../conditionNodes/Condition_OperationLog.ts | 140 ++++ .../Condition_PluginAndVoting.ts | 389 +++++++++ .../SDK/conditionNodes/Condition_Program.ts | 88 ++ .../conditionNodes/Condition_TokenAndCash.ts | 48 ++ .../conditionNodes/Condition_Withdrawable.ts | 96 +++ darc-js/src/SDK/conditionNodes/nodeList.ts | 0 .../tests/expression-test/expression-test.ts | 230 ++++++ darc-specs/condition_expression.md | 20 +- 11 files changed, 1913 insertions(+), 10 deletions(-) create mode 100644 darc-js/src/SDK/conditionNodes/Condition_BatchOp.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_CreateTokenClass.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_MembershipOp.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_OperationLog.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_PluginAndVoting.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_Program.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_TokenAndCash.ts create mode 100644 darc-js/src/SDK/conditionNodes/Condition_Withdrawable.ts create mode 100644 darc-js/src/SDK/conditionNodes/nodeList.ts create mode 100644 darc-js/tests/expression-test/expression-test.ts diff --git a/darc-js/src/SDK/conditionNodes/Condition_BatchOp.ts b/darc-js/src/SDK/conditionNodes/Condition_BatchOp.ts new file mode 100644 index 00000000..81fc62f5 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_BatchOp.ts @@ -0,0 +1,757 @@ +import { expression } from '../Node'; + +/** + * Batch operation-related condition nodes +| 211 | BATCH_OP_SIZE_GREATER_THAN | UINT256_2DARRAY[0][0] batchSize || +| 212 | BATCH_OP_SIZE_LESS_THAN | UINT256_2DARRAY[0][0] batchSize || +| 213 | BATCH_OP_SIZE_IN_RANGE | UINT256_2DARRAY[0][0] startBatchSize, UINT256_2DARRAY[0][0] endBatchSize || +| 214 | BATCH_OP_SIZE_EQUALS | UINT256_2DARRAY[0][0] batchSize || +| 215 | BATCH_OP_EACH_TARGET_ADDRESSES_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || +| 216 | BATCH_OP_EACH_TARGET_ADDRESSES_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || +| 217 | BATCH_OP_EACH_TARGET_ADDRESSES_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 218 | BATCH_OP_ANY_TARGET_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || +| 219 | BATCH_OP_ANY_TARGET_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || +| 220 | BATCH_OP_ANY_TARGET_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 221 | BATCH_OP_EACH_TARGET_ADDRESS_TO_ITSELF | || +| 222 | BATCH_OP_ANY_TARGET_ADDRESS_TO_ITSELF | || +| 223 | BATCH_OP_EACH_SOURCE_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] sourceAddress || +| 224 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] sourceAddressArray || +| 225 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 226 | BATCH_OP_ANY_SOURCE_ADDRESS_EQUAL | ADDRESS_2DARRAY[0][0] sourceAddress || +| 227 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] sourceAddressArray || +| 228 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 229 | BATCH_OP_EACH_SOURCE_ADDRESS_FROM_ITSELF | || +| 230 | BATCH_OP_ANY_SOURCE_ADDRESS_FROM_ITSELF | | +| 231 | BATCH_OP_EACH_TOKEN_CLASS_EQUALS | UINT256_2DARRAY[0][0] tokenClass || +| 232 | BATCH_OP_EACH_TOKEN_CLASS_IN_LIST | UINT256_2DARRAY[0] tokenClassArray || +| 233 | BATCH_OP_EACH_TOKEN_CLASS_IN_RANGE | UINT256_2DARRAY[0][0] startTokenClass, UINT256_2DARRAY[0][0] endTokenClass || +| 234 | BATCH_OP_EACH_TOKEN_CLASS_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 235 | BATCH_OP_EACH_TOKEN_CLASS_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 236 | BATCH_OP_TOTAL_TOKEN_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 237 | BATCH_OP_TOTAL_TOKEN_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 238 | BATCH_OP_TOTAL_TOKEN_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 239 | BATCH_OP_TOTAL_TOKEN_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 240 | BATCH_OP_ANY_TOKEN_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 241 | BATCH_OP_ANY_TOKEN_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 242 | BATCH_OP_ANY_TOKEN_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 243 | BATCH_OP_ANY_TOKEN_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 244 | BATCH_OP_ANY_TOKEN_CLASS_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 245 | BATCH_OP_ANY_TOKEN_CLASS_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 246 | BATCH_OP_ANY_TOKEN_CLASS_IN_RANGE | UINT256_2DARRAY[0][0] startTokenClass, UINT256_2DARRAY[0][0] endTokenClass || +| 247 | BATCH_OP_ANY_TOKEN_CLASS_EQUALS | UINT256_2DARRAY[0][0] tokenClass || +| 248 | BATCH_OP_ANY_TOKEN_CLASS_IN_LIST | UINT256_2DARRAY[0] tokenClassArray || +| 249 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 250 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 251 | BATCH_OP_EACH_TARGET_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 252 | BATCH_OP_ANY_TARGET_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 253 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 254 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 255 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 256 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_EQUALS | UINT256_2DARRAY[0][0] amount || +| 257 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 258 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 259 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 260 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 261 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 262 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 263 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 264 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 265 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 266 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || +| 267 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 268 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 269 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || +| 270 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 271 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 272 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || +| 273 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || +| 274 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || +| 275 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startAmount, UINT256_2DARRAY[0][2] endAmount || +| 276 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | +| 277 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | +| 278 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startAmount, UINT256_2DARRAY[0][2] endAmount | + */ + +function batch_op_size_greater_than(batchSize: number) { + return expression(211, { + UINT256_2DARRAY: [[batchSize]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_size_less_than(batchSize: number) { + return expression(212, { + UINT256_2DARRAY: [[batchSize]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_size_in_range(startBatchSize: number, endBatchSize: number) { + return expression(213, { + UINT256_2DARRAY: [[startBatchSize, endBatchSize]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_size_equals(batchSize: number) { + return expression(214, { + UINT256_2DARRAY: [[batchSize]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_addresses_equals(targetAddress: string) { + return expression(215, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [[targetAddress]], + BYTES: [] + }); +} + +function batch_op_each_target_addresses_in_list(targetAddressArray: string[]) { + return expression(216, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [targetAddressArray], + BYTES: [] + }); +} + +function batch_op_each_target_addresses_in_member_role(memberRole: number) { + return expression(217, { + UINT256_2DARRAY: [[memberRole]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_equals(targetAddress: string) { + return expression(218, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [[targetAddress]], + BYTES: [] + }); +} + +function batch_op_any_target_address_in_list(targetAddressArray: string[]) { + return expression(219, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [targetAddressArray], + BYTES: [] + }); +} + +function batch_op_any_target_address_in_member_role(memberRole: number) { + return expression(220, { + UINT256_2DARRAY: [[memberRole]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_to_itself() { + return expression(221, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_to_itself() { + return expression(222, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_source_address_equals(sourceAddress: string) { + return expression(223, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [[sourceAddress]], + BYTES: [] + }); +} + +function batch_op_each_source_address_in_list(sourceAddressArray: string[]) { + return expression(224, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [sourceAddressArray], + BYTES: [] + }); +} + +function batch_op_each_source_address_in_member_role(memberRole: number) { + return expression(225, { + UINT256_2DARRAY: [[memberRole]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_source_address_equal(sourceAddress: string) { + return expression(226, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [[sourceAddress]], + BYTES: [] + }); +} + +function batch_op_any_source_address_in_list(sourceAddressArray: string[]) { + return expression(227, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [sourceAddressArray], + BYTES: [] + }); +} + +function batch_op_any_source_address_in_member_role(memberRole: number) { + return expression(228, { + UINT256_2DARRAY: [[memberRole]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_source_address_from_itself() { + return expression(229, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_source_address_from_itself() { + return expression(230, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_token_class_equals(tokenClass: number) { + return expression(231, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_token_class_in_list(tokenClassArray: number[]) { + return expression(232, { + UINT256_2DARRAY: [tokenClassArray], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_token_class_in_range(startTokenClass: number, endTokenClass: number) { + return expression(233, { + UINT256_2DARRAY: [[startTokenClass, endTokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_token_class_greater_than(tokenClass: number) { + return expression(234, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_token_class_less_than(tokenClass: number) { + return expression(235, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_total_token_amount_greater_than(amount: number) { + return expression(236, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_total_token_amount_less_than(amount: number) { + return expression(237, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_total_token_amount_in_range(startAmount: number, endAmount: number) { + return expression(238, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_total_token_amount_equals(amount: number) { + return expression(239, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_amount_greater_than(amount: number) { + return expression(240, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_amount_less_than(amount: number) { + return expression(241, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_amount_in_range(startAmount: number, endAmount: number) { + return expression(242, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_amount_equals(amount: number) { + return expression(243, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_class_greater_than(tokenClass: number) { + return expression(244, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_class_less_than(tokenClass: number) { + return expression(245, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_class_in_range(startTokenClass: number, endTokenClass: number) { + return expression(246, { + UINT256_2DARRAY: [[startTokenClass, endTokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_class_equals(tokenClass: number) { + return expression(247, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_token_class_in_list(tokenClassArray: number[]) { + return expression(248, { + UINT256_2DARRAY: [tokenClassArray], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_source_address_in_member_role_list(memberRoleArray: number[]) { + return expression(249, { + UINT256_2DARRAY: [memberRoleArray], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_source_address_in_member_role_list(memberRoleArray: number[]) { + return expression(250, { + UINT256_2DARRAY: [memberRoleArray], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_in_member_role_list(memberRoleArray: number[]) { + return expression(251, { + UINT256_2DARRAY: [memberRoleArray], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_in_member_role_list(memberRoleArray: number[]) { + return expression(252, { + UINT256_2DARRAY: [memberRoleArray], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_withdrawable_cash_greater_than(amount: number) { + return expression(253, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_withdrawable_cash_less_than(amount: number) { + return expression(254, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_withdrawable_cash_in_range(startAmount: number, endAmount: number) { + return expression(255, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_withdrawable_cash_equals(amount: number) { + return expression(256, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_withdrawable_cash_greater_than(amount: number) { + return expression(257, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_withdrawable_cash_less_than(amount: number) { + return expression(258, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_withdrawable_cash_in_range(startAmount: number, endAmount: number) { + return expression(259, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_voting_weight_greater_than(amount: number) { + return expression(260, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_voting_weight_less_than(amount: number) { + return expression(261, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_voting_weight_in_range(startAmount: number, endAmount: number) { + return expression(262, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_voting_weight_equals(amount: number) { + return expression(263, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_total_voting_weight_greater_than(amount: number) { + return expression(264, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_total_voting_weight_less_than(amount: number) { + return expression(265, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_total_voting_weight_in_range(startAmount: number, endAmount: number) { + return expression(266, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_dividend_weight_greater_than(amount: number) { + return expression(267, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_dividend_weight_less_than(amount: number) { + return expression(268, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_total_dividend_weight_in_range(startAmount: number, endAmount: number) { + return expression(269, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_total_dividend_weight_greater_than(amount: number) { + return expression(270, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_total_dividend_weight_less_than(amount: number) { + return expression(271, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_total_dividend_weight_in_range(startAmount: number, endAmount: number) { + return expression(272, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_owns_token_x_greater_than(tokenClass: number, amount: number) { + return expression(273, { + UINT256_2DARRAY: [[tokenClass, amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_owns_token_x_less_than(tokenClass: number, amount: number) { + return expression(274, { + UINT256_2DARRAY: [[tokenClass, amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_each_target_address_owns_token_x_in_range(tokenClass: number, startAmount: number, endAmount: number) { + return expression(275, { + UINT256_2DARRAY: [[tokenClass, startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_owns_token_x_greater_than(tokenClass: number, amount: number) { + return expression(276, { + UINT256_2DARRAY: [[tokenClass, amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_owns_token_x_less_than(tokenClass: number, amount: number) { + return expression(277, { + UINT256_2DARRAY: [[tokenClass, amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function batch_op_any_target_address_owns_token_x_in_range(tokenClass: number, startAmount: number, endAmount: number) { + return expression(278, { + UINT256_2DARRAY: [[tokenClass, startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { + batch_op_size_greater_than, + batch_op_size_less_than, + batch_op_size_in_range, + batch_op_size_equals, + batch_op_each_target_addresses_equals, + batch_op_each_target_addresses_in_list, + batch_op_each_target_addresses_in_member_role, + batch_op_any_target_address_equals, + batch_op_any_target_address_in_list, + batch_op_any_target_address_in_member_role, + batch_op_each_target_address_to_itself, + batch_op_any_target_address_to_itself, + batch_op_each_source_address_equals, + batch_op_each_source_address_in_list, + batch_op_each_source_address_in_member_role, + batch_op_any_source_address_equal, + batch_op_any_source_address_in_list, + batch_op_any_source_address_in_member_role, + batch_op_each_source_address_from_itself, + batch_op_any_source_address_from_itself, + batch_op_each_token_class_equals, + batch_op_each_token_class_in_list, + batch_op_each_token_class_in_range, + batch_op_each_token_class_greater_than, + batch_op_each_token_class_less_than, + batch_op_total_token_amount_greater_than, + batch_op_total_token_amount_less_than, + batch_op_total_token_amount_in_range, + batch_op_total_token_amount_equals, + batch_op_any_token_amount_greater_than, + batch_op_any_token_amount_less_than, + batch_op_any_token_amount_in_range, + batch_op_any_token_amount_equals, + batch_op_any_token_class_greater_than, + batch_op_any_token_class_less_than, + batch_op_any_token_class_in_range, + batch_op_any_token_class_equals, + batch_op_any_token_class_in_list, + batch_op_each_source_address_in_member_role_list, + batch_op_any_source_address_in_member_role_list, + batch_op_each_target_address_in_member_role_list, + batch_op_any_target_address_in_member_role_list, + batch_op_each_target_address_withdrawable_cash_greater_than, + batch_op_each_target_address_withdrawable_cash_less_than, + batch_op_each_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_withdrawable_cash_equals, + batch_op_any_target_address_withdrawable_cash_greater_than, + batch_op_any_target_address_withdrawable_cash_less_than, + batch_op_any_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_total_voting_weight_greater_than, + batch_op_each_target_address_total_voting_weight_less_than, + batch_op_each_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_voting_weight_equals, + batch_op_any_target_address_total_voting_weight_greater_than, + batch_op_any_target_address_total_voting_weight_less_than, + batch_op_any_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_dividend_weight_greater_than, + batch_op_each_target_address_total_dividend_weight_less_than, + batch_op_each_target_address_total_dividend_weight_in_range, + batch_op_any_target_address_total_dividend_weight_greater_than, + batch_op_any_target_address_total_dividend_weight_less_than, + batch_op_any_target_address_total_dividend_weight_in_range, + batch_op_each_target_address_owns_token_x_greater_than, + batch_op_each_target_address_owns_token_x_less_than, + batch_op_each_target_address_owns_token_x_in_range, + batch_op_any_target_address_owns_token_x_greater_than, + batch_op_any_target_address_owns_token_x_less_than, + batch_op_any_target_address_owns_token_x_in_range +}; + diff --git a/darc-js/src/SDK/conditionNodes/Condition_CreateTokenClass.ts b/darc-js/src/SDK/conditionNodes/Condition_CreateTokenClass.ts new file mode 100644 index 00000000..4025448f --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_CreateTokenClass.ts @@ -0,0 +1,96 @@ +import {expression} from "../Node"; + +/** + * CreateTokenClass-related condition nodes +| 501 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 502 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 503 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0]startWeight, UINT256_2DARRAY[0][1] endWeight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 504 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 505 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 506 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 507 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startWeight, UINT256_2DARRAY[0][1] endWeight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 508 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. + */ + +function create_token_classes_any_token_dividend_weight_greater_than(weight: bigint) { + return expression(501, { + UINT256_2DARRAY: [[weight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_token_dividend_weight_less_than(weight: bigint) { + return expression(502, { + UINT256_2DARRAY: [[weight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_token_dividend_weight_in_range(startWeight: bigint, endWeight: bigint) { + return expression(503, { + UINT256_2DARRAY: [[startWeight, endWeight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_token_dividend_weight_equals(weight: bigint) { + return expression(504, { + UINT256_2DARRAY: [[weight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_voting_weight_greater_than(weight: bigint) { + return expression(505, { + UINT256_2DARRAY: [[weight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_voting_weight_less_than(weight: bigint) { + return expression(506, { + UINT256_2DARRAY: [[weight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_voting_weight_in_range(startWeight: bigint, endWeight: bigint) { + return expression(507, { + UINT256_2DARRAY: [[startWeight, endWeight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function create_token_classes_any_voting_weight_equals(weight: bigint) { + return expression(508, { + UINT256_2DARRAY: [[weight]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { + create_token_classes_any_token_dividend_weight_greater_than, + create_token_classes_any_token_dividend_weight_less_than, + create_token_classes_any_token_dividend_weight_in_range, + create_token_classes_any_token_dividend_weight_equals, + create_token_classes_any_voting_weight_greater_than, + create_token_classes_any_voting_weight_less_than, + create_token_classes_any_voting_weight_in_range, + create_token_classes_any_voting_weight_equals +}; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_MembershipOp.ts b/darc-js/src/SDK/conditionNodes/Condition_MembershipOp.ts new file mode 100644 index 00000000..5b15034e --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_MembershipOp.ts @@ -0,0 +1,59 @@ +import {expression } from '../Node'; + +/** + * Membership-related condition nodes +| 401 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || +| 402 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || +| 403 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_IN_RANGE | ADDRESS_2DARRAY[0][0] startTargetAddress, ADDRESS_2DARRAY[0][1] endTargetAddress || +| 404 | Placeholder404 | | | +| 405 | Placeholder405 | | | +| 406 | CHANGE_MEMBER_NAME_TO_ANY_STRING_IN_LIST | STRING_ARRAY nameList || +| 407 | CHANGE_MEMBER_NAME_TO_ANY_STRING_CONTAINS | STRING_ARRAY[0] subString || + */ + +function change_member_role_to_any_role_equals(targetAddress: string) { + return expression(401, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [[targetAddress]], + BYTES: [] + }); +} + +function change_member_role_to_any_role_in_list(targetAddressArray: string[]) { + return expression(402, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [targetAddressArray], + BYTES: [] + }); +} + +function change_member_role_to_any_role_in_range(startTargetAddress: string, endTargetAddress: string) { + return expression(403, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [[startTargetAddress, endTargetAddress]], + BYTES: [] + }); +} + +function change_member_name_to_any_string_in_list(nameList: string[]) { + return expression(406, { + UINT256_2DARRAY: [], + STRING_ARRAY: nameList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function change_member_name_to_any_string_contains(subString: string) { + return expression(407, { + UINT256_2DARRAY: [], + STRING_ARRAY: [subString], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains }; diff --git a/darc-js/src/SDK/conditionNodes/Condition_OperationLog.ts b/darc-js/src/SDK/conditionNodes/Condition_OperationLog.ts new file mode 100644 index 00000000..d7d030e8 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_OperationLog.ts @@ -0,0 +1,140 @@ +import {expression} from "../Node"; + +/** + * Operation log related condition nodes +| 701 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_GREATER_THAN | uint256 timestamp || +| 702 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_LESS_THAN | uint256 timestamp || +| 703 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_IN_RANGE | uint256 startTimestamp, uint256 endTimestamp || +| 704 | OPERATION_GLOBAL_SINCE_LAST_TIME_GREATER_THAN | uint256 timestamp || +| 705 | OPERATION_GLOBAL_SINCE_LAST_TIME_LESS_THAN | uint256 timestamp || +| 706 | OPERATION_GLOBAL_SINCE_LAST_TIME_IN_RANGE | uint256 startTimestamp, uint256 endTimestamp || +| 707 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_GREATER_THAN | address[] addressList, uint256 timestamp || +| 708 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_LESS_THAN | address[] addressList, uint256 timestamp || +| 709 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_IN_RANGE | address[] addressList, uint256 startTimestamp, uint256 endTimestamp || +| 710 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_GREATER_THAN | address[] addressList, uint256 timestamp || +| 711 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_LESS_THAN | address[] addressList, uint256 timestamp || +| 712 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_IN_RANGE | address[] addressList, uint256 startTimestamp, uint256 endTimestamp || + */ + +function operation_by_operator_since_last_time_greater_than(timestamp: bigint) { + return expression(701, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_operator_since_last_time_less_than(timestamp: bigint) { + return expression(702, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_operator_since_last_time_in_range(startTimestamp: bigint, endTimestamp: bigint) { + return expression(703, { + UINT256_2DARRAY: [[startTimestamp, endTimestamp]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_global_since_last_time_greater_than(timestamp: bigint) { + return expression(704, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_global_since_last_time_less_than(timestamp: bigint) { + return expression(705, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_global_since_last_time_in_range(startTimestamp: bigint, endTimestamp: bigint) { + return expression(706, { + UINT256_2DARRAY: [[startTimestamp, endTimestamp]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_any_address_in_list_since_last_time_greater_than(addressList: string[], timestamp: bigint) { + return expression(707, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: addressList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_any_address_in_list_since_last_time_less_than(addressList: string[], timestamp: bigint) { + return expression(708, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: addressList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_any_address_in_list_since_last_time_in_range(addressList: string[], startTimestamp: bigint, endTimestamp: bigint) { + return expression(709, { + UINT256_2DARRAY: [[startTimestamp, endTimestamp]], + STRING_ARRAY: addressList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_each_address_in_list_since_last_time_greater_than(addressList: string[], timestamp: bigint) { + return expression(710, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: addressList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_each_address_in_list_since_last_time_less_than(addressList: string[], timestamp: bigint) { + return expression(711, { + UINT256_2DARRAY: [[timestamp]], + STRING_ARRAY: addressList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function operation_by_each_address_in_list_since_last_time_in_range(addressList: string[], startTimestamp: bigint, endTimestamp: bigint) { + return expression(712, { + UINT256_2DARRAY: [[startTimestamp, endTimestamp]], + STRING_ARRAY: addressList, + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { + operation_by_operator_since_last_time_greater_than, + operation_by_operator_since_last_time_less_than, + operation_by_operator_since_last_time_in_range, + operation_global_since_last_time_greater_than, + operation_global_since_last_time_less_than, + operation_global_since_last_time_in_range, + operation_by_any_address_in_list_since_last_time_greater_than, + operation_by_any_address_in_list_since_last_time_less_than, + operation_by_any_address_in_list_since_last_time_in_range, + operation_by_each_address_in_list_since_last_time_greater_than, + operation_by_each_address_in_list_since_last_time_less_than, + operation_by_each_address_in_list_since_last_time_in_range +}; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_PluginAndVoting.ts b/darc-js/src/SDK/conditionNodes/Condition_PluginAndVoting.ts new file mode 100644 index 00000000..65693a80 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_PluginAndVoting.ts @@ -0,0 +1,389 @@ +import {expression} from '../Node'; + +/** + * Plugin and voting related condition nodes +| 301 | ENABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 302 | ENABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 303 | ENABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0][0] startPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 304 | ENABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 305 | DISABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 306 | DISABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 307 | DISABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 308 | DISABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 309 | ENABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 310 | ENABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 311 | ENABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 312 | ENABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 313 | DISABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 314 | DISABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 315 | DISABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 316 | DISABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 317 | ARE_ALL_PLUGINS_BEFORE_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 318 | ARE_ALL_PLUGINS_AFTER_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 319 | IS_ANY_PLUGIN_BEFORE_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 320 | IS_ANY_PLUGIN_AFTER_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 321 | ADD_PLUGIN_ANY_LEVEL_EQUALS | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || +| 322 | ADD_PLUGIN_ANY_LEVEL_IN_LIST | UINT256_2DARRAY[0] pluginIndexList || +| 323 | ADD_PLUGIN_ANY_LEVEL_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][0] endPluginIndex, UINT256_2DARRAY[0][0] level || +| 324 | ADD_PLUGIN_ANY_LEVEL_GREATER_THAN | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || +| 325 | ADD_PLUGIN_ANY_LEVEL_LESS_THAN | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || +| 326 | ADD_PLUGIN_ANY_RETURN_TYPE_EQUALS | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] returnType || +| 327 | ADD_PLUGIN_ANY_VOTING_RULE_INDEX_IN_LIST | UINT256_2DARRAY[0] votingRuleIndexList || +| 328 | Placeholder320 | | | +| 321 | Placeholder321 | | | +| 322 | Placeholder322 | | | +| 323 | Placeholder323 | | | +| 324 | Placeholder324 | | | +| 325 | Placeholder325 | | | +| 326 | Placeholder326 | | | +| 327 | Placeholder327 | | | +| 328 | Placeholder328 | | | +| 329 | Placeholder329 | | | +| 330 | Placeholder330 | | | +| 331 | Placeholder331 | | | +| 332 | Placeholder332 | | | +| 333 | Placeholder333 | | | +| 334 | Placeholder334 | | | +| 335 | Placeholder335 | | | +| 336 | Placeholder336 | | | +| 337 | Placeholder337 | | | +| 338 | Placeholder338 | | | +| 339 | Placeholder339 | | | +| 340 | Placeholder340 | | | +| 341 | Placeholder341 | | | +| 342 | Placeholder342 | | | +| 343 | Placeholder343 | | | +| 344 | Placeholder344 | | | +| 345 | Placeholder345 | | | +| 346 | Placeholder346 | | | +| 347 | Placeholder347 | | | +| 348 | Placeholder348 | | | +| 349 | Placeholder349 | | | +| 350 | Placeholder350 | | | +| 351 | Placeholder351 | | | +| 352 | Placeholder352 | | | +| 353 | Placeholder353 | | | +| 354 | Placeholder354 | | | +| 355 | Placeholder355 | | | +| 356 | Placeholder356 | | | +| 357 | Placeholder357 | | | +| 358 | Placeholder358 | | | +| 359 | Placeholder359 | | | +| 360 | Placeholder360 | | | +| 361 | Placeholder361 | | | +| 362 | Placeholder362 | | | +| 363 | Placeholder363 | | | +| 364 | Placeholder364 | | | +| 365 | Placeholder365 | | | +| 366 | Placeholder366 | | | +| 367 | Placeholder367 | | | +| 368 | Placeholder368 | | | +| 369 | Placeholder369 | | | +| 370 | Placeholder370 | | | +| 371 | ADD_ANY_VOTING_RULE_IS_ABSOLUTE_MAJORITY | || +| 372 | ADD_ANY_VOTING_RULE_APPROVAL_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] startPercentage, UINT256_2DARRAY[0][1] endPercentage || +| 373 | ADD_ANY_VOTING_RULE_TOKEN_CLASS_CONTAINS | UINT256_2DARRAY[0][0] tokenClass || + */ + +function enable_any_before_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(301, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_any_after_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(302, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_each_before_op_plugin_index_in_list(startPluginIndex: number) { + return expression(303, { + UINT256_2DARRAY: [[startPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_each_after_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(304, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_any_before_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(305, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_any_after_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(306, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_each_before_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(307, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_each_after_op_plugin_index_in_list(pluginIndexList: number[]) { + return expression(308, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_any_before_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(309, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_any_after_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(310, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_each_before_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(311, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function enable_each_after_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(312, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_any_before_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(313, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_any_after_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(314, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_each_before_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(315, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function disable_each_after_op_plugin_index_in_range(startPluginIndex: number, endPluginIndex: number) { + return expression(316, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function are_all_plugins_before_operation() { + return expression(317, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function are_all_plugins_after_operation() { + return expression(318, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function is_any_plugin_before_operation() { + return expression(319, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function is_any_plugin_after_operation() { + return expression(320, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_level_equals(pluginIndex: number, level: number) { + return expression(321, { + UINT256_2DARRAY: [[pluginIndex, level]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_level_in_list(pluginIndexList: number[]) { + return expression(322, { + UINT256_2DARRAY: [pluginIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_level_in_range(startPluginIndex: number, endPluginIndex: number, level: number) { + return expression(323, { + UINT256_2DARRAY: [[startPluginIndex, endPluginIndex, level]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_level_greater_than(pluginIndex: number, level: number) { + return expression(324, { + UINT256_2DARRAY: [[pluginIndex, level]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_level_less_than(pluginIndex: number, level: number) { + return expression(325, { + UINT256_2DARRAY: [[pluginIndex, level]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_return_type_equals(pluginIndex: number, returnType: number) { + return expression(326, { + UINT256_2DARRAY: [[pluginIndex, returnType]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_plugin_any_voting_rule_index_in_list(votingRuleIndexList: number[]) { + return expression(327, { + UINT256_2DARRAY: [votingRuleIndexList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_any_voting_rule_is_absolute_majority() { + return expression(371, { + UINT256_2DARRAY: [], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_any_voting_rule_approval_percentage_in_range(startPercentage: number, endPercentage: number) { + return expression(372, { + UINT256_2DARRAY: [[startPercentage, endPercentage]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_any_voting_rule_token_class_contains(tokenClass: number) { + return expression(373, { + UINT256_2DARRAY: [[tokenClass]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { + enable_any_before_op_plugin_index_in_list, + enable_any_after_op_plugin_index_in_list, + enable_each_before_op_plugin_index_in_list, + enable_each_after_op_plugin_index_in_list, + disable_any_before_op_plugin_index_in_list, + disable_any_after_op_plugin_index_in_list, + disable_each_before_op_plugin_index_in_list, + disable_each_after_op_plugin_index_in_list, + enable_any_before_op_plugin_index_in_range, + enable_any_after_op_plugin_index_in_range, + enable_each_before_op_plugin_index_in_range, + enable_each_after_op_plugin_index_in_range, + disable_any_before_op_plugin_index_in_range, + disable_any_after_op_plugin_index_in_range, + disable_each_before_op_plugin_index_in_range, + disable_each_after_op_plugin_index_in_range, + are_all_plugins_before_operation, + are_all_plugins_after_operation, + is_any_plugin_before_operation, + is_any_plugin_after_operation, + add_plugin_any_level_equals, + add_plugin_any_level_in_list, + add_plugin_any_level_in_range, + add_plugin_any_level_greater_than, + add_plugin_any_level_less_than, + add_plugin_any_return_type_equals, + add_plugin_any_voting_rule_index_in_list, + add_any_voting_rule_is_absolute_majority, + add_any_voting_rule_approval_percentage_in_range, + add_any_voting_rule_token_class_contains +}; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_Program.ts b/darc-js/src/SDK/conditionNodes/Condition_Program.ts new file mode 100644 index 00000000..7d07b113 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_Program.ts @@ -0,0 +1,88 @@ +import {expression} from "../Node"; +import { EnumOpcode } from '../opcodes/opcodeTable'; + +/** + * Program-related condition nodes +| 601 | PROGRAM_OP_LENGTH_GREATER_THAN | UINT256_2DARRAY[0][0] length || +| 602 | PROGRAM_OP_LENGTH_LESS_THAN | UINT256_2DARRAY[0][0] length || +| 603 | PROGRAM_OP_LENGTH_IN_RANGE | UINT256_2DARRAY[0][0] startLength, UINT256_2DARRAY[0][1] endLength || +| 604 | PROGRAM_OP_LENGTH_EQUALS | UINT256_2DARRAY[0][0] length || +| 605 | PROGRAM_CONTAINS_OP | UINT256_2DARRAY[0][0] opCode || +| 606 | PROGRAM_CONTAINS_OP_IN_LIST | UINT256_2DARRAY[0] opCodeList || +| 607 | PROGRAM_EVERY_OP_EQUALS | UINT256_2DARRAY[0][0] opCode || +| 608 | PROGRAM_EVERY_OP_IN_LIST | UINT256_2DARRAY[0] opCodeList || + */ + +function program_op_length_greater_than(length: bigint) { + return expression(601, { + UINT256_2DARRAY: [[length]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_op_length_less_than(length: bigint) { + return expression(602, { + UINT256_2DARRAY: [[length]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_op_length_in_range(startLength: bigint, endLength: bigint) { + return expression(603, { + UINT256_2DARRAY: [[startLength, endLength]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_op_length_equals(length: bigint) { + return expression(604, { + UINT256_2DARRAY: [[length]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_contains_op(opCode: EnumOpcode) { + return expression(605, { + UINT256_2DARRAY: [[opCode]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_contains_op_in_list(opCodeList: EnumOpcode[]) { + return expression(606, { + UINT256_2DARRAY: [opCodeList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_every_op_equals(opCode: EnumOpcode) { + return expression(607, { + UINT256_2DARRAY: [[opCode]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function program_every_op_in_list(opCodeList: EnumOpcode[]) { + return expression(608, { + UINT256_2DARRAY: [opCodeList], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list }; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_TokenAndCash.ts b/darc-js/src/SDK/conditionNodes/Condition_TokenAndCash.ts new file mode 100644 index 00000000..ce69df31 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_TokenAndCash.ts @@ -0,0 +1,48 @@ +import {expression} from '../Node'; + +/** + * Token and cash-related condition nodes +| 461 | TOKEN_X_OP_ANY_PRICE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 462 | TOKEN_X_OP_ANY_PRICE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 463 | TOKEN_X_OP_ANY_PRICE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startPrice, UINT256_2DARRAY[0][2] endPrice | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 464 | TOKEN_X_OP_ANY_PRICE_EQUALS | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". + */ + +function token_x_op_any_price_greater_than(tokenClass: bigint, price: bigint) { + return expression(461, { + UINT256_2DARRAY: [[tokenClass, price]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_x_op_any_price_less_than(tokenClass: bigint, price: bigint) { + return expression(462, { + UINT256_2DARRAY: [[tokenClass, price]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_x_op_any_price_in_range(tokenClass: bigint, startPrice: bigint, endPrice: bigint) { + return expression(463, { + UINT256_2DARRAY: [[tokenClass, startPrice, endPrice]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function token_x_op_any_price_equals(tokenClass: bigint, price: bigint) { + return expression(464, { + UINT256_2DARRAY: [[tokenClass, price]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals }; + diff --git a/darc-js/src/SDK/conditionNodes/Condition_Withdrawable.ts b/darc-js/src/SDK/conditionNodes/Condition_Withdrawable.ts new file mode 100644 index 00000000..c1d23f01 --- /dev/null +++ b/darc-js/src/SDK/conditionNodes/Condition_Withdrawable.ts @@ -0,0 +1,96 @@ +import {expression} from "../Node"; + +/** + * Withdrawable-related condition nodes +| 431 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 432 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 433 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 434 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 435 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 436 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 437 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 438 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || + */ + +function add_withdrawable_balance_any_amount_greater_than(amount: bigint) { + return expression(431, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_withdrawable_balance_any_amount_less_than(amount: bigint) { + return expression(432, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_withdrawable_balance_any_amount_in_range(startAmount: bigint, endAmount: bigint) { + return expression(433, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function add_withdrawable_balance_any_amount_equals(amount: bigint) { + return expression(434, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function reduce_withdrawable_balance_any_amount_greater_than(amount: bigint) { + return expression(435, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function reduce_withdrawable_balance_any_amount_less_than(amount: bigint) { + return expression(436, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function reduce_withdrawable_balance_any_amount_in_range(startAmount: bigint, endAmount: bigint) { + return expression(437, { + UINT256_2DARRAY: [[startAmount, endAmount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +function reduce_withdrawable_balance_any_amount_equals(amount: bigint) { + return expression(438, { + UINT256_2DARRAY: [[amount]], + STRING_ARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + }); +} + +export { + add_withdrawable_balance_any_amount_greater_than, + add_withdrawable_balance_any_amount_less_than, + add_withdrawable_balance_any_amount_in_range, + add_withdrawable_balance_any_amount_equals, + reduce_withdrawable_balance_any_amount_greater_than, + reduce_withdrawable_balance_any_amount_less_than, + reduce_withdrawable_balance_any_amount_in_range, + reduce_withdrawable_balance_any_amount_equals +}; diff --git a/darc-js/src/SDK/conditionNodes/nodeList.ts b/darc-js/src/SDK/conditionNodes/nodeList.ts new file mode 100644 index 00000000..e69de29b diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts new file mode 100644 index 00000000..29ee1460 --- /dev/null +++ b/darc-js/tests/expression-test/expression-test.ts @@ -0,0 +1,230 @@ +import {executeOperationList, operator_address_equals} from "../../src/SDK/sdk"; +import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; +import { ethers, BigNumber } from 'ethers'; +import * as DARC from '../../src/DARC/DARC'; +import 'mocha'; +import { expect } from 'chai'; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import {or, node, and, expression} from "../../src/SDK/Node"; + + +const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + +const target1 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; + + +const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// initialize signer 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 with private key + + +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + +const signer1 = new ethers.Wallet('0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a', provider); +const signer2 = new ethers.Wallet('0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6', provider); + +const my_wallet_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + + +function toBigIntArray(array: number[]): bigint[] { + let bigIntArray: bigint[] = []; + for (let i = 0; i < array.length; i++) { + bigIntArray.push(BigInt(array[i])); + } + return bigIntArray; +} + +describe.only('expression node basic test', () => { + it ('should run the program "add and enable plugin" with generated condition node list in SDK', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + await executeOperationList( + [ + + // operation 0 + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + + // operation 1 + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + + // operation 2 + batch_add_and_enable_plugins( + [ + // plugin 0: disable all operations + { + returnType: BigNumber.from(2), // no + level: BigNumber.from(3), // level 3 + votingRuleIndex: BigNumber.from(0), + notes: "disable all program", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes:[{ + id: BigNumber.from(0), + nodeType: BigNumber.from(3), // expression + logicalOperator: BigNumber.from(0), // no operator + conditionExpression: BigNumber.from(0), // always true + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [] + } + }] + }, + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: + or( + operator_address_equals(target1), + operator_address_equals(target2) + ).generateConditionNodeList() + } + ] + ) + ], + signer, + darc_contract_address, + "test program" + ).then(async ()=>{ + + const attached_local_darc_signer1 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer1, + version: DARC_VERSION.Latest, + }); + + const attached_local_darc_signer2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer2, + version: DARC_VERSION.Latest, + }); + + // signer 1 and signer 2 should be able to run the program + let isSuccess = true; + try{ + await executeOperationList([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer1, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + isSuccess = true; + try{ + await executeOperationList([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer2, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + // and signer0 and programOperatorAddress should not be able to run the program + isSuccess = true; + try{ + await executeOperationList([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer, + darc_contract_address, + "test program" + ); + } + catch(e){ + + isSuccess = false; + } + expect (isSuccess).to.equal(false); + }); + }); + + it ('should also generate condition node automatically, without manually calling the function generateConditionNodeList', async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + await executeOperationList( + [ + + // operation 0 + batch_create_token_classes( + ['token_0', 'token_1'], + toBigIntArray([0,1]), + toBigIntArray([10,20]), + toBigIntArray([20,30]) + ), + + // operation 1 + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ), + + // operation 2 + batch_add_and_enable_plugins( + [ + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: + or( + operator_address_equals(target1), + operator_address_equals(target2) + ) + } + ] + ) + ], + signer, + darc_contract_address, + "test program" + ); + }); +}); \ No newline at end of file diff --git a/darc-specs/condition_expression.md b/darc-specs/condition_expression.md index de5f3125..84daa24f 100644 --- a/darc-specs/condition_expression.md +++ b/darc-specs/condition_expression.md @@ -214,16 +214,16 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] | 178 | Placeholder178 | | | | 179 | Placeholder179 | | | | 180 | Placeholder180 | | | -| 181 | ORACLE_CALL_UINT256_RESULT_EQUALS | string oracle, string method, uint256[] args, uint256 expectedValue || -| 182 | ORACLE_CALL_UINT256_RESULT_GREATER_THAN | string oracle, string method, uint256[] args, uint256 minValue || -| 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || -| 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || -| 185 | ORACLE_CALL_UINT256_1_LESS_THAN_2 | string oracle, string method, uint256[] args || -| 186 | ORACLE_CALL_UINT256_1_GREATER_THAN_2 | string oracle, string method, uint256[] args || -| 187 | ORACLE_CALL_UINT256_1_EQUALS_2 | string oracle, string method, uint256[] args || -| 188 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || -| 189 | ORACLE_CALL_STRING_1_EQUALS_2 | string oracle, string method, string[] args || -| 190 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || +| 181 | ORACLE_CALL_UINT256_RESULT_EQUALS | string oracle, string method, uint256[] args, uint256 expectedValue || NOT READY, DO NOT USE +| 182 | ORACLE_CALL_UINT256_RESULT_GREATER_THAN | string oracle, string method, uint256[] args, uint256 minValue || NOT READY, DO NOT USE +| 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || NOT READY, DO NOT USE +| 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || NOT READY, DO NOT USE +| 185 | ORACLE_CALL_UINT256_1_LESS_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE +| 186 | ORACLE_CALL_UINT256_1_GREATER_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE +| 187 | ORACLE_CALL_UINT256_1_EQUALS_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE +| 188 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || NOT READY, DO NOT USE +| 189 | ORACLE_CALL_STRING_1_EQUALS_2 | string oracle, string method, string[] args || NOT READY, DO NOT USE +| 190 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || NOT READY, DO NOT USE | 191 | Placeholder191 | | | | 192 | Placeholder192 | | | | 193 | Placeholder193 | | | From 3e92cb4d26cee0b278b72ae9799efa5c392e9817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 5 Feb 2024 03:31:02 -0600 Subject: [PATCH 23/62] update --- .../SDK/conditionNodes/Condition_Operation.ts | 2 +- darc-js/src/SDK/conditionNodes/nodeList.ts | 0 darc-js/src/SDK/includes.ts | 245 +++++++++++++++++- darc-js/src/SDK/runtime.ts | 82 +----- darc-js/src/SDK/sdk.ts | 151 ++++++++++- 5 files changed, 395 insertions(+), 85 deletions(-) delete mode 100644 darc-js/src/SDK/conditionNodes/nodeList.ts diff --git a/darc-js/src/SDK/conditionNodes/Condition_Operation.ts b/darc-js/src/SDK/conditionNodes/Condition_Operation.ts index f5d91c02..b439f5f0 100644 --- a/darc-js/src/SDK/conditionNodes/Condition_Operation.ts +++ b/darc-js/src/SDK/conditionNodes/Condition_Operation.ts @@ -25,4 +25,4 @@ function operation_in_list(opcodes: EnumOpcode[]) { }); } -export { operation_equals, operation_in_list }; \ No newline at end of file +export { operation_equals, operation_in_list, EnumOpcode }; \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/nodeList.ts b/darc-js/src/SDK/conditionNodes/nodeList.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 90d6926b..d03bc1f6 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -42,14 +42,28 @@ import { OPCODE_ID_37_UPGRADE_TO_THE_LATEST } from "./opcodes/opcodeTable"; +/** + * The list of operations to be executed + * When an operation function is called, it will add an operation to this list + */ export let operationList: OperationStruct[] = []; +/** + * The notes for the program + */ export let programNotes: string = ""; export { BigNumber }; +/** + * The basic node for the program + */ export { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT }; +/** + * The setter for the program notes + * @param note The notes for the program + */ export function setNote(note:string) { programNotes = note; } @@ -227,4 +241,233 @@ export function confirm_upgrade_from_address(newAddress: string) { export function upgrade_to_the_latest() { let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); operationList.push(operation); -} \ No newline at end of file +} + +// below are the condition nodes + +export { + batch_op_size_greater_than, + batch_op_size_less_than, + batch_op_size_in_range, + batch_op_size_equals, + batch_op_each_target_addresses_equals, + batch_op_each_target_addresses_in_list, + batch_op_each_target_addresses_in_member_role, + batch_op_any_target_address_equals, + batch_op_any_target_address_in_list, + batch_op_any_target_address_in_member_role, + batch_op_each_target_address_to_itself, + batch_op_any_target_address_to_itself, + batch_op_each_source_address_equals, + batch_op_each_source_address_in_list, + batch_op_each_source_address_in_member_role, + batch_op_any_source_address_equal, + batch_op_any_source_address_in_list, + batch_op_any_source_address_in_member_role, + batch_op_each_source_address_from_itself, + batch_op_any_source_address_from_itself, + batch_op_each_token_class_equals, + batch_op_each_token_class_in_list, + batch_op_each_token_class_in_range, + batch_op_each_token_class_greater_than, + batch_op_each_token_class_less_than, + batch_op_total_token_amount_greater_than, + batch_op_total_token_amount_less_than, + batch_op_total_token_amount_in_range, + batch_op_total_token_amount_equals, + batch_op_any_token_amount_greater_than, + batch_op_any_token_amount_less_than, + batch_op_any_token_amount_in_range, + batch_op_any_token_amount_equals, + batch_op_any_token_class_greater_than, + batch_op_any_token_class_less_than, + batch_op_any_token_class_in_range, + batch_op_any_token_class_equals, + batch_op_any_token_class_in_list, + batch_op_each_source_address_in_member_role_list, + batch_op_any_source_address_in_member_role_list, + batch_op_each_target_address_in_member_role_list, + batch_op_any_target_address_in_member_role_list, + batch_op_each_target_address_withdrawable_cash_greater_than, + batch_op_each_target_address_withdrawable_cash_less_than, + batch_op_each_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_withdrawable_cash_equals, + batch_op_any_target_address_withdrawable_cash_greater_than, + batch_op_any_target_address_withdrawable_cash_less_than, + batch_op_any_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_total_voting_weight_greater_than, + batch_op_each_target_address_total_voting_weight_less_than, + batch_op_each_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_voting_weight_equals, + batch_op_any_target_address_total_voting_weight_greater_than, + batch_op_any_target_address_total_voting_weight_less_than, + batch_op_any_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_dividend_weight_greater_than, + batch_op_each_target_address_total_dividend_weight_less_than, + batch_op_each_target_address_total_dividend_weight_in_range, + batch_op_any_target_address_total_dividend_weight_greater_than, + batch_op_any_target_address_total_dividend_weight_less_than, + batch_op_any_target_address_total_dividend_weight_in_range, + batch_op_each_target_address_owns_token_x_greater_than, + batch_op_each_target_address_owns_token_x_less_than, + batch_op_each_target_address_owns_token_x_in_range, + batch_op_any_target_address_owns_token_x_greater_than, + batch_op_any_target_address_owns_token_x_less_than, + batch_op_any_target_address_owns_token_x_in_range +} from "./conditionNodes/Condition_BatchOp"; + +export { + create_token_classes_any_token_dividend_weight_greater_than, + create_token_classes_any_token_dividend_weight_less_than, + create_token_classes_any_token_dividend_weight_in_range, + create_token_classes_any_token_dividend_weight_equals, + create_token_classes_any_voting_weight_greater_than, + create_token_classes_any_voting_weight_less_than, + create_token_classes_any_voting_weight_in_range, + create_token_classes_any_voting_weight_equals +} from "./conditionNodes/Condition_CreateTokenClass"; + +export { + timestamp_greater_than, + timestamp_less_than, + timestamp_in_range, + date_year_greater_than, + date_year_less_than, + date_year_in_range, + date_month_greater_than, + date_month_less_than, + date_month_in_range, + date_day_greater_than, + date_day_less_than, + date_day_in_range, + date_hour_greater_than, + date_hour_less_than, + date_hour_in_range, + address_voting_weight_greater_than, + address_voting_weight_less_than, + address_voting_weight_in_range, + address_dividend_weight_greater_than, + address_dividend_weight_less_than, + address_dividend_weight_in_range, + address_token_x_greater_than, + address_token_x_less_than, + address_token_x_in_range, + total_voting_weight_greater_than, + total_voting_weight_less_than, + total_voting_weight_in_range, + total_dividend_weight_greater_than, + total_dividend_weight_less_than, + total_dividend_weight_in_range, + total_cash_greater_than, + total_cash_less_than, + total_cash_in_range, + total_cash_equals, + token_in_list_voting_weight_greater_than, + token_in_list_voting_weight_less_than, + token_in_list_voting_weight_in_range, + token_in_list_dividend_weight_greater_than, + token_in_list_dividend_weight_less_than, + token_in_list_dividend_weight_in_range, + token_in_list_amount_greater_than, + token_in_list_amount_less_than, + token_in_list_amount_in_range, + token_in_list_amount_equals +} from "./conditionNodes/Condition_MachineState"; + +export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./conditionNodes/Condition_MembershipOp"; + +export { operation_equals, operation_in_list, EnumOpcode } from "./conditionNodes/Condition_Operation"; + +export { + operation_by_operator_since_last_time_greater_than, + operation_by_operator_since_last_time_less_than, + operation_by_operator_since_last_time_in_range, + operation_global_since_last_time_greater_than, + operation_global_since_last_time_less_than, + operation_global_since_last_time_in_range, + operation_by_any_address_in_list_since_last_time_greater_than, + operation_by_any_address_in_list_since_last_time_less_than, + operation_by_any_address_in_list_since_last_time_in_range, + operation_by_each_address_in_list_since_last_time_greater_than, + operation_by_each_address_in_list_since_last_time_less_than, + operation_by_each_address_in_list_since_last_time_in_range +} from "./conditionNodes/Condition_OperationLog"; + +export { + operator_name_equals, + operator_role_equals, + operator_address_equals, + operator_role_greater_than, + operator_role_less_than, + operator_role_in_range, + operator_role_in_list, + operator_token_x_amount_greater_than, + operator_token_x_amount_less_than, + operator_token_x_amount_in_range, + operator_token_x_amount_equals, + operator_token_x_percentage_greater_than, + operator_token_x_percentage_less_than, + operator_token_x_percentage_in_range, + operator_token_x_percentage_equals, + operator_voting_weight_greater_than, + operator_voting_weight_less_than, + operator_voting_weight_in_range, + operator_dividend_weight_greater_than, + operator_dividend_weight_less_than, + operator_dividend_weight_in_range, + operator_withdrawable_cash_greater_than, + operator_withdrawable_cash_less_than, + operator_withdrawable_cash_in_range, + operator_withdrawable_dividends_greater_than, + operator_withdrawable_dividends_less_than, + operator_withdrawable_dividends_in_range, + operator_address_in_list +} from "./conditionNodes/Condition_Operator"; + +export { + enable_any_before_op_plugin_index_in_list, + enable_any_after_op_plugin_index_in_list, + enable_each_before_op_plugin_index_in_list, + enable_each_after_op_plugin_index_in_list, + disable_any_before_op_plugin_index_in_list, + disable_any_after_op_plugin_index_in_list, + disable_each_before_op_plugin_index_in_list, + disable_each_after_op_plugin_index_in_list, + enable_any_before_op_plugin_index_in_range, + enable_any_after_op_plugin_index_in_range, + enable_each_before_op_plugin_index_in_range, + enable_each_after_op_plugin_index_in_range, + disable_any_before_op_plugin_index_in_range, + disable_any_after_op_plugin_index_in_range, + disable_each_before_op_plugin_index_in_range, + disable_each_after_op_plugin_index_in_range, + are_all_plugins_before_operation, + are_all_plugins_after_operation, + is_any_plugin_before_operation, + is_any_plugin_after_operation, + add_plugin_any_level_equals, + add_plugin_any_level_in_list, + add_plugin_any_level_in_range, + add_plugin_any_level_greater_than, + add_plugin_any_level_less_than, + add_plugin_any_return_type_equals, + add_plugin_any_voting_rule_index_in_list, + add_any_voting_rule_is_absolute_majority, + add_any_voting_rule_approval_percentage_in_range, + add_any_voting_rule_token_class_contains +} from "./conditionNodes/Condition_PluginAndVoting"; + +export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./conditionNodes/Condition_Program"; + +export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./conditionNodes/Condition_TokenAndCash"; + +export { + add_withdrawable_balance_any_amount_greater_than, + add_withdrawable_balance_any_amount_less_than, + add_withdrawable_balance_any_amount_in_range, + add_withdrawable_balance_any_amount_equals, + reduce_withdrawable_balance_any_amount_greater_than, + reduce_withdrawable_balance_any_amount_less_than, + reduce_withdrawable_balance_any_amount_in_range, + reduce_withdrawable_balance_any_amount_equals +} from "./conditionNodes/Condition_Withdrawable"; \ No newline at end of file diff --git a/darc-js/src/SDK/runtime.ts b/darc-js/src/SDK/runtime.ts index 8ac35eb6..863c8985 100644 --- a/darc-js/src/SDK/runtime.ts +++ b/darc-js/src/SDK/runtime.ts @@ -72,84 +72,4 @@ export async function transpileAndRun( else { await run(compiledCode, wallet, targetDARCAddress, darcVersion); } -} - -export { operation_equals, operation_in_list } from "./conditionNodes/Condition_Operation"; - -export { - timestamp_greater_than, - timestamp_less_than, - timestamp_in_range, - date_year_greater_than, - date_year_less_than, - date_year_in_range, - date_month_greater_than, - date_month_less_than, - date_month_in_range, - date_day_greater_than, - date_day_less_than, - date_day_in_range, - date_hour_greater_than, - date_hour_less_than, - date_hour_in_range, - address_voting_weight_greater_than, - address_voting_weight_less_than, - address_voting_weight_in_range, - address_dividend_weight_greater_than, - address_dividend_weight_less_than, - address_dividend_weight_in_range, - address_token_x_greater_than, - address_token_x_less_than, - address_token_x_in_range, - total_voting_weight_greater_than, - total_voting_weight_less_than, - total_voting_weight_in_range, - total_dividend_weight_greater_than, - total_dividend_weight_less_than, - total_dividend_weight_in_range, - total_cash_greater_than, - total_cash_less_than, - total_cash_in_range, - total_cash_equals, - token_in_list_voting_weight_greater_than, - token_in_list_voting_weight_less_than, - token_in_list_voting_weight_in_range, - token_in_list_dividend_weight_greater_than, - token_in_list_dividend_weight_less_than, - token_in_list_dividend_weight_in_range, - token_in_list_amount_greater_than, - token_in_list_amount_less_than, - token_in_list_amount_in_range, - token_in_list_amount_equals -} from "./conditionNodes/Condition_MachineState"; - -export { - operator_name_equals, - operator_role_equals, - operator_address_equals, - operator_role_greater_than, - operator_role_less_than, - operator_role_in_range, - operator_role_in_list, - operator_token_x_amount_greater_than, - operator_token_x_amount_less_than, - operator_token_x_amount_in_range, - operator_token_x_amount_equals, - operator_token_x_percentage_greater_than, - operator_token_x_percentage_less_than, - operator_token_x_percentage_in_range, - operator_token_x_percentage_equals, - operator_voting_weight_greater_than, - operator_voting_weight_less_than, - operator_voting_weight_in_range, - operator_dividend_weight_greater_than, - operator_dividend_weight_less_than, - operator_dividend_weight_in_range, - operator_withdrawable_cash_greater_than, - operator_withdrawable_cash_less_than, - operator_withdrawable_cash_in_range, - operator_withdrawable_dividends_greater_than, - operator_withdrawable_dividends_less_than, - operator_withdrawable_dividends_in_range, - operator_address_in_list -} from "./conditionNodes/Condition_Operator"; \ No newline at end of file +} \ No newline at end of file diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/SDK/sdk.ts index dfb2068c..68522dfc 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/SDK/sdk.ts @@ -259,7 +259,87 @@ export function upgrade_to_the_latest(): OperationStruct { return operation; } -export { operation_equals, operation_in_list } from "./conditionNodes/Condition_Operation"; +export { + batch_op_size_greater_than, + batch_op_size_less_than, + batch_op_size_in_range, + batch_op_size_equals, + batch_op_each_target_addresses_equals, + batch_op_each_target_addresses_in_list, + batch_op_each_target_addresses_in_member_role, + batch_op_any_target_address_equals, + batch_op_any_target_address_in_list, + batch_op_any_target_address_in_member_role, + batch_op_each_target_address_to_itself, + batch_op_any_target_address_to_itself, + batch_op_each_source_address_equals, + batch_op_each_source_address_in_list, + batch_op_each_source_address_in_member_role, + batch_op_any_source_address_equal, + batch_op_any_source_address_in_list, + batch_op_any_source_address_in_member_role, + batch_op_each_source_address_from_itself, + batch_op_any_source_address_from_itself, + batch_op_each_token_class_equals, + batch_op_each_token_class_in_list, + batch_op_each_token_class_in_range, + batch_op_each_token_class_greater_than, + batch_op_each_token_class_less_than, + batch_op_total_token_amount_greater_than, + batch_op_total_token_amount_less_than, + batch_op_total_token_amount_in_range, + batch_op_total_token_amount_equals, + batch_op_any_token_amount_greater_than, + batch_op_any_token_amount_less_than, + batch_op_any_token_amount_in_range, + batch_op_any_token_amount_equals, + batch_op_any_token_class_greater_than, + batch_op_any_token_class_less_than, + batch_op_any_token_class_in_range, + batch_op_any_token_class_equals, + batch_op_any_token_class_in_list, + batch_op_each_source_address_in_member_role_list, + batch_op_any_source_address_in_member_role_list, + batch_op_each_target_address_in_member_role_list, + batch_op_any_target_address_in_member_role_list, + batch_op_each_target_address_withdrawable_cash_greater_than, + batch_op_each_target_address_withdrawable_cash_less_than, + batch_op_each_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_withdrawable_cash_equals, + batch_op_any_target_address_withdrawable_cash_greater_than, + batch_op_any_target_address_withdrawable_cash_less_than, + batch_op_any_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_total_voting_weight_greater_than, + batch_op_each_target_address_total_voting_weight_less_than, + batch_op_each_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_voting_weight_equals, + batch_op_any_target_address_total_voting_weight_greater_than, + batch_op_any_target_address_total_voting_weight_less_than, + batch_op_any_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_dividend_weight_greater_than, + batch_op_each_target_address_total_dividend_weight_less_than, + batch_op_each_target_address_total_dividend_weight_in_range, + batch_op_any_target_address_total_dividend_weight_greater_than, + batch_op_any_target_address_total_dividend_weight_less_than, + batch_op_any_target_address_total_dividend_weight_in_range, + batch_op_each_target_address_owns_token_x_greater_than, + batch_op_each_target_address_owns_token_x_less_than, + batch_op_each_target_address_owns_token_x_in_range, + batch_op_any_target_address_owns_token_x_greater_than, + batch_op_any_target_address_owns_token_x_less_than, + batch_op_any_target_address_owns_token_x_in_range +} from "./conditionNodes/Condition_BatchOp"; + +export { + create_token_classes_any_token_dividend_weight_greater_than, + create_token_classes_any_token_dividend_weight_less_than, + create_token_classes_any_token_dividend_weight_in_range, + create_token_classes_any_token_dividend_weight_equals, + create_token_classes_any_voting_weight_greater_than, + create_token_classes_any_voting_weight_less_than, + create_token_classes_any_voting_weight_in_range, + create_token_classes_any_voting_weight_equals +} from "./conditionNodes/Condition_CreateTokenClass"; export { timestamp_greater_than, @@ -308,6 +388,25 @@ export { token_in_list_amount_equals } from "./conditionNodes/Condition_MachineState"; +export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./conditionNodes/Condition_MembershipOp"; + +export { operation_equals, operation_in_list, EnumOpcode } from "./conditionNodes/Condition_Operation"; + +export { + operation_by_operator_since_last_time_greater_than, + operation_by_operator_since_last_time_less_than, + operation_by_operator_since_last_time_in_range, + operation_global_since_last_time_greater_than, + operation_global_since_last_time_less_than, + operation_global_since_last_time_in_range, + operation_by_any_address_in_list_since_last_time_greater_than, + operation_by_any_address_in_list_since_last_time_less_than, + operation_by_any_address_in_list_since_last_time_in_range, + operation_by_each_address_in_list_since_last_time_greater_than, + operation_by_each_address_in_list_since_last_time_less_than, + operation_by_each_address_in_list_since_last_time_in_range +} from "./conditionNodes/Condition_OperationLog"; + export { operator_name_equals, operator_role_equals, @@ -337,4 +436,52 @@ export { operator_withdrawable_dividends_less_than, operator_withdrawable_dividends_in_range, operator_address_in_list -} from "./conditionNodes/Condition_Operator"; \ No newline at end of file +} from "./conditionNodes/Condition_Operator"; + +export { + enable_any_before_op_plugin_index_in_list, + enable_any_after_op_plugin_index_in_list, + enable_each_before_op_plugin_index_in_list, + enable_each_after_op_plugin_index_in_list, + disable_any_before_op_plugin_index_in_list, + disable_any_after_op_plugin_index_in_list, + disable_each_before_op_plugin_index_in_list, + disable_each_after_op_plugin_index_in_list, + enable_any_before_op_plugin_index_in_range, + enable_any_after_op_plugin_index_in_range, + enable_each_before_op_plugin_index_in_range, + enable_each_after_op_plugin_index_in_range, + disable_any_before_op_plugin_index_in_range, + disable_any_after_op_plugin_index_in_range, + disable_each_before_op_plugin_index_in_range, + disable_each_after_op_plugin_index_in_range, + are_all_plugins_before_operation, + are_all_plugins_after_operation, + is_any_plugin_before_operation, + is_any_plugin_after_operation, + add_plugin_any_level_equals, + add_plugin_any_level_in_list, + add_plugin_any_level_in_range, + add_plugin_any_level_greater_than, + add_plugin_any_level_less_than, + add_plugin_any_return_type_equals, + add_plugin_any_voting_rule_index_in_list, + add_any_voting_rule_is_absolute_majority, + add_any_voting_rule_approval_percentage_in_range, + add_any_voting_rule_token_class_contains +} from "./conditionNodes/Condition_PluginAndVoting"; + +export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./conditionNodes/Condition_Program"; + +export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./conditionNodes/Condition_TokenAndCash"; + +export { + add_withdrawable_balance_any_amount_greater_than, + add_withdrawable_balance_any_amount_less_than, + add_withdrawable_balance_any_amount_in_range, + add_withdrawable_balance_any_amount_equals, + reduce_withdrawable_balance_any_amount_greater_than, + reduce_withdrawable_balance_any_amount_less_than, + reduce_withdrawable_balance_any_amount_in_range, + reduce_withdrawable_balance_any_amount_equals +} from "./conditionNodes/Condition_Withdrawable"; \ No newline at end of file From 189aeeb1a232bdce7e9c8f48067d5ca372c78aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 5 Feb 2024 14:46:16 -0600 Subject: [PATCH 24/62] Update expression-test.ts --- .../tests/expression-test/expression-test.ts | 143 +++++++++++++++++- 1 file changed, 142 insertions(+), 1 deletion(-) diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index 29ee1460..8811f32a 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -6,7 +6,7 @@ import 'mocha'; import { expect } from 'chai'; import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; import {or, node, and, expression} from "../../src/SDK/Node"; - +import { transpileAndRun } from "../../src/SDK/runtime"; const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; @@ -227,4 +227,145 @@ describe.only('expression node basic test', () => { "test program" ); }); + + it ("should generate condition node successfully in bylaw script runtime", async () => { + const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); + + const code = ` + + const target1 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; + + + const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + + + batch_create_token_classes(['token_0', 'token_1'], + [0,1], + [10,20], + [20,30]); + + + batch_mint_tokens([ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + [0, 1], [100,200]); + + batch_add_and_enable_plugins( + [ + // plugin 0: disable all operations + { + returnType: BigNumber.from(2), // no + level: BigNumber.from(3), // level 3 + votingRuleIndex: BigNumber.from(0), + notes: "disable all program", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: new TRUE() // always true + }, + { + returnType: BigInt(4), // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsInitialized: true, + bIsBeforeOperation: true, + conditionNodes: + operator_address_equals(target1) | operator_address_equals(target2) + // or( + // expression(3, { + // STRING_ARRAY: [], + // UINT256_2DARRAY: [], + // ADDRESS_2DARRAY: [[target1]], + // BYTES: [] + // }), + // expression(3, { + // STRING_ARRAY: [], + // UINT256_2DARRAY: [], + // ADDRESS_2DARRAY: [[target2]], + // BYTES: [] + // }) + // ) + } + ] + ) + `; + await transpileAndRun(code, signer, darc_contract_address, DARC_VERSION.Latest); + // it should + + + const attached_local_darc_signer1 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer1, + version: DARC_VERSION.Latest, + }); + + const attached_local_darc_signer2 = new DARC.DARC({ + address: darc_contract_address, + wallet: signer2, + version: DARC_VERSION.Latest, + }); + + // signer 1 and signer 2 should be able to run the program + let isSuccess = true; + try{ + await executeOperationList([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer1, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + isSuccess = true; + try{ + await executeOperationList([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer2, + darc_contract_address, + "test program" + ); + } + catch(e){ + isSuccess = false; + } + + expect (isSuccess).to.equal(true); + + // and signer0 and programOperatorAddress should not be able to run the program + isSuccess = true; + try{ + await executeOperationList([ + batch_mint_tokens( + [ "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + toBigIntArray([0, 1]), + toBigIntArray([100,200]) + ) + ], + signer, + darc_contract_address, + "test program" + ); + } + catch(e){ + + isSuccess = false; + } + expect (isSuccess).to.equal(false); + }); }); \ No newline at end of file From cea8cd6746eb6810b1cd5666666fd9132cdfec9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 6 Feb 2024 23:41:11 -0600 Subject: [PATCH 25/62] Update DARC-latest.json --- darc-js/src/darcBinary/DARC-latest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/darc-js/src/darcBinary/DARC-latest.json b/darc-js/src/darcBinary/DARC-latest.json index d2e7268c..dc17b104 100644 --- a/darc-js/src/darcBinary/DARC-latest.json +++ b/darc-js/src/darcBinary/DARC-latest.json @@ -1643,8 +1643,8 @@ "type": "function" } ], - "bytecode": "0x60808060405234620000195762031ebd90816200001f8239f35b600080fdfe6109c08060405260043610156200001557600080fd5b600090813560e01c908163036ee85014620028bc575080630fda3e1e146200282457806310ade3ea14620027f55780631797631d146200276e5780631c75255a146200270957806323b65c7814620026825780632514a6b4146200245c5780632eeb063b146200228c5780633fb18aec146200222257806356424cf414620022035780635c00d98714620021e05780635d0b184914620002055780635f1231ea14620020f65780635f5d5f00146200206f578063681ece9d146200202b5780636c0d4fa41462001e985780637daa10ce1462001e7b5780638129fc1c1462001aac57806383e4cccf1462001843578063864f9f7a146200180557806386ad77e214620014a45780638c7a63ae1462001414578063942d59fa14620012315780639f36145f14620011ab578063a064c4f11462001180578063acf80bc41462001142578063aec266871462001058578063aefca42a1462001037578063c41f94821462000fef578063c591aa981462000fa1578063d5a172f21462000f75578063d6a93c511462000f24578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e36200521b565b50610c80620001f162002ad7565b6200020060405180926200290c565bf35b80fd5b50346200020257806003193601126200020257602061073854604051908152f35b5060031960203682011262000df7576001600160401b036004351162000df757606090600435360301126200020257604051620002638162002a26565b62000273600435600401620028f7565b8152600435602401356101608190526001600160401b03811162000dff57600435013660238201121562000dff576004620002b5910135806101805262002b80565b90620002c5604051928362002ab3565b6101805182526020820161012052610180516101605160043501906024369160051b8301011162000c125760240160a052825b6101805160051b6101605160043501602460a0519282010182101562000e0357813560808190526001600160401b031062000dff57606091350136036023190112620002025762000350604051806101005262002a26565b62000369602460805161016051600435010101620028f7565b610100515260446080516101605160043501010135602681101562000df7576020610100510152608051610160516004350101606481013560c05260018060401b0360648201351162000df7576101006064820135909101360360231901126200020257620003df604051806101a052620029ec565b60c051608051610160516004350101016001600160401b0360248201351162000df75762000417906024369181810135010162004858565b6101a0515260c0516080516101605160043501010160448101359060018060401b03821162000dff5736604383830101121562000dff570160240135916200045f8362002b80565b906200046f604051928362002ab3565b838252602082019060c051608051610160516004350101013660448760051b81840135840101011162000c1657806044809201350101915b604460c051608051610160516004350101018760051b9082810135010101831015620004e85760208091620004dc85620048e3565b815201920191620004a7565b506101a051602001929092525060c051608051610160519395600435909401010192506001600160401b0360648401351162000c12573660436064850135850101121562000c1257602460648401358401013590620005478262002b80565b9062000557604051928362002ab3565b82825260208201606486013560c05160805161016051600435010101013660448660051b8301011162000dfb57604401905b606487013560c051608051610160516004350101010160448660051b820101831015620006a9576001600160401b03833511620006a55760e08335820136036043190112620006a55760405191620005e18362002a42565b6001600160401b03843583016044013511620006a1576200060e36604486358501818101350101620048f1565b835283358201606481013560208501526084810135604085015260a48101356060850152620006409060c401620048e3565b60808401526001600160401b038435830160e4013511620006a157602092839262000690906101049062000681368935830160e48101350160440162002e8f565b60a085015287350101620048e3565b60c082015281520191019062000589565b8980fd5b8880fd5b505050929350905060406101a051015260c051608051610160516004350101019260018060401b03608485013511620002025736604360848601358601011215620002025760246084850135850101359362000716620007098662002b80565b6040518060e05262002ab3565b8460e05152602060e0510192608482013560c05160805161016051600435010101013660448860051b8301011162000c12576044016101405293925b608482013560c0516080516101605160043501010101610140519060448860051b82010182101562000c1a576001600160401b0382351162000c165761010082359091013603604319011262000c125760405190620007b182620029ec565b60448135608486013560c0516080516101605160043501010101010135600681101562000c0e57825260648135608486013560c051608051610160516004350101010101013560208301528035608485013560c0516080516101605160043501010101019560018060401b0360848801351162000c0e573660636084890135890101121562000c0e576200084f604460848901358901013562002b80565b976200085f604051998a62002ab3565b60446084890135890101358952602089019060848901358435608489013560c05160805161016051600435010101010101366064604460848d01358d01013560051b83010111620006a557606401915b60848a0135853560848a013560c051608051610160516004350101010101016064604460848d01358d01013560051b82010184101562000afd576001600160401b03843511620006a15760c08435820136036063190112620006a157604051906200091a82620029d0565b84358101606481013583526005608490910135101562000af9578435810160848101356020840152600460a490910135101562000af9578435810160a4810135604084015260c481013560608401526001600160401b0360e4909101351162000af95762000995368635830160e481013501606401620048f1565b60808301526001600160401b038535820161010401351162000af957608085358201610104810135013603606319011262000af95760405190620009d9826200299e565b6001600160401b038635820161010481013501606401351162000af55762000a1536606461010489358501908101350181810135010162004858565b82526001600160401b038635820161010481013501608401351162000af55762000a5336873583016101048101350160848101350160640162004957565b60208301526001600160401b03863582016101048101350160a401351162000af55762000a9436873583016101048101350160a481013501606401620049e2565b60408301526001600160401b03863582016101048101350160c401351162000af55760209384939092909162000adf9036908935016101048101350160c48101350160640162002e8f565b606082015260a0820152815201920191620008af565b8b80fd5b8a80fd5b505097505096604083015260a48135608486013560c051608051610160516004350101010101013560608301528035608485013560c05160805161016051600435010101010160018060401b0360c48201351162000c0e57610124602094939262000b7762000bf2936044369160c4810135010162002e8f565b608085015262000ba260e4823560848a013560c05160805161016051600435010101010101620048e3565b60a085015262000bce610104823560848a013560c05160805161016051600435010101010101620048e3565b60c085015235608487013560c05160805161016051600435010101010101620048e3565b60e0820152815201926020610140510161014052939262000752565b8580fd5b8380fd5b8480fd5b505050509091925060e05160606101a051015260c051608051610160516004350101019160018060401b0360a48401351162000df75736604360a4850135850101121562000df757602460a4840135840101359262000c798462002b80565b9162000c89604051938462002ab3565b848352602083019060a483013560c05160805161016051600435010101013660448860051b8301011162000c0e57604401915b60448760051b60a486013560c0516080516101605160043501010101010183101562000cfe5760058335101562000c0e57823581526020928301920162000cbc565b509450505092909260806101a051015260c0516080516101605160043501010160c48101359060018060401b03821162000c1657602462000d43923692010162004957565b60a06101a051015260c0516080516101605160043501010160e48101359060018060401b03821162000c1657602462000d809236920101620049e2565b60c06101a051015260c051608051610160516004350101016101048101359060018060401b03821162000c1657602462000dbe923692010162002e8f565b60e06101a05101526101a05160406101005101526101005161012051526020610120510161012052602060a0510160a0529091620002f8565b5080fd5b8780fd5b8280fd5b60208401858152849084600435604401356001600160401b03811162000df75762000e3690600436918135010162002e8f565b604084015282516001600160a01b03919062000e8f90831662000e8662000e6762000e613362031960565b62004adb565b62000e7f62000e79878a511662031960565b62004b41565b9062004b98565b90331462004bdf565b8251805182101562000efc579062000ef062000ef6928462000eb384339362004c79565b5151161462000ee962000eca62000e613362031960565b62000e7f62000e798862000ee0888c5162004c79565b51511662031960565b9062004bdf565b62004c12565b62000e8f565b62000f2062000f0b86620067c5565b60405191829160208352602083019062002d45565b0390f35b503462000202578060031936011262000202575b6064811062000f4d575b602090604051908152f35b60ff60078260031b0154161562000f6f5762000f699062004c12565b62000f38565b62000f42565b50346200020257806003193601126200020257610730546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b0362000fd0620028db565b1681526107378452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c0620010126004356200628d565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b50346200020257806003193601126200020257602061073254604051908152f35b50346200020257806003193601126200020257610735908154916200107d8362002b80565b916200108d604051938462002ab3565b8383526020938484018093835285832083915b8383106200110a5750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620010db5785850386f35b909192938280620010f9600193603f198a8203018652885162002d45565b9601920196019592919092620010cd565b600188819260409a99979a516200112f8162001127818962002bd5565b038262002ab3565b81520192019201919096939596620010a0565b50346200020257602036600319011262000202576020906040906001600160a01b036200116e620028db565b16815261032783522054604051908152f35b50346200020257602036600319011262000202576020620011a3600435620060e5565b604051908152f35b503462000202576020366003190112620002025760406200120691600435815261073660205220620011dd8162003634565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003199565b9360208601526040850152620012226060850183831662003434565b60081c16151560808301520390f35b5034620002025760208060031936011262000df757604051620012548162002a09565b60405192620012638462002a26565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e0830152806101008093015260043581526107368352604090209160405192620012c48462002a09565b620012cf8162003634565b8452620012df6003820162003442565b84830190815292620012f46004830162003442565b60408601908152956200130a6005840162003442565b868201908152926200131f6006820162003442565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff88166200135b90876200520e565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d016200138c9162003199565b9451601f198d8703810160408f015295620013a79162002ee7565b905191858d830301908d0152620013be9162002ee7565b905190838b82030160808c0152620013d69162002ee7565b9051918982030160a08a0152620013ed9162002ee7565b955160c08801525160e087015251908501620014099162003434565b511515908301520390f35b503462000202576020366003190112620002025760043590606482101562001490575060031b60018101546002820154916200148660056200146760068401549362001127604051809481930162002bd5565b6040519485948552602085015260806040850152608084019062002d45565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b503462000202578060031936011262000202576103228054620014c78162002b80565b91620014d7604051938462002ab3565b81835283526020808420849184015b838310620016b1578585610323805490620015018262002b80565b9362001511604051958662002ab3565b82855260208501918152602081209080925b84841062001559576200154a8662000f208960405193849360408552604085019062002fcf565b90838203602085015262002fcf565b6040516200156781620029ec565b6200157760ff855416826200350b565b600184015460208201526002840154620015918162002b80565b90620015a1604051928362002ab3565b80825260208201600287018652602086209086905b8382106200162e5750505050600192826020926040600695015260038701546060820152604051620015f181620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520193019301929162001523565b600860206001926040516200164381620029d0565b8654815260ff858801548181166200165b8162002edc565b85840152851c166200166d8162002937565b6040820152600287015460608201526200168a6003880162003442565b60808201526200169d60048801620035d2565b60a0820152815201930191019091620015b6565b604051620016bf81620029ec565b620016cf60ff845416826200350b565b60018301546020820152600283018054620016ea8162002b80565b91620016fa604051938462002ab3565b81835289526020808a20908a9084015b8382106200178257505050506001928260209260406006950152600386015460608201526040516200174581620011278160048b0162002bd5565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201920192019190620014e6565b600860206001926040516200179781620029d0565b8654815260ff85880154818116620017af8162002edc565b85840152851c16620017c18162002937565b604082015260028701546060820152620017de6003880162003442565b6080820152620017f160048801620035d2565b60a08201528152019301910190916200170a565b50346200020257602036600319011262000202576020906040906001600160a01b0362001831620028db565b16815261032583522054604051908152f35b5034620002025760208060031936011262000df7578160043591620018864784111562000ee9620018748662005028565b6200187f4762005028565b9062004cc1565b338252620018f1610325808352620018ca604085205486111562000ee9620018ae8862005028565b338852848752620018c3604089205462005028565b9062004d2d565b338452808352620018e085604086205462004fed565b929062000ee9620018ae8862005028565b33845282528060408420551562001933575b508080809381811562001929575b3390f1156200191d5780f35b604051903d90823e3d90fd5b506108fc62001911565b9050610326805491620019468362004d95565b918593865b81811062001a39575050620019608462004d95565b805192906001600160401b03841162001a25579080849392620019868a98979662004f2a565b0191865280862090865b84811062001a06575050505050825b828110620019af57505062001903565b91925090620019fc9062000ef06001600160a01b03620019d0838662004c79565b5116620019dd8362004de9565b90919082549060031b9160018060a01b03809116831b921b1916179055565b908492916200199f565b83516001600160a01b0316818401558997509281019260010162001990565b634e487b7160e01b88526041600452602488fd5b62001a448162004de9565b90546001600160a01b03916003913391831b1c83160362001a73575b505062001a6d9062004c12565b6200194b565b9662001aa391839862001a8a62001a6d9562004de9565b9054911b1c1662001a9c828962004c79565b5262004c12565b95903862001a60565b5034620002025780600319360112620002025761073080546001600160a01b03191633179055610733805460ff19166001908117909155604051909190819062001af68162002a5e565b52906103228054600082558062001e12575b508252818060405162001b1b8162002a5e565b5262001dfe576103238054600082558062001d7f575b5082526127106107345562001d7162001b4962005b54565b836040519162001b598362002a5e565b81835262001c616040519162001b6f8362002a5e565b8383526040519462001b818662002a5e565b8486526040519362001b938562002a5e565b8585526040519462001ba58662002a5e565b8686526040519162001bb7836200299e565b8252602097888301526040820152606094858201526040519162001bdb83620029d0565b8683526003888401528660408401528686840152608083015260a082015262001c048262004c22565b5262001c108162004c22565b506040519062001c2082620029ec565b6004825287868301526040820152838382015260405162001c418162002a5e565b84815260808201528660a08201528660c08201528660e082015262005c60565b62001c6b62005b54565b60405162001c798162002a5e565b83815260405162001c8a8162002a5e565b84815260405162001c9b8162002a5e565b85815260405162001cac8162002a5e565b8681526040519162001cbe8362002a5e565b8783526040519362001cd0856200299e565b8452888401526040830152848201526040519162001cee83620029d0565b8583526003878401528560408401528585840152608083015260a082015262001d178262004c22565b5262001d238162004c22565b50856040519462001d3486620029ec565b60058652850152604084015282015260405162001d518162002a5e565b84815260808201528260a08201528260c08201528360e082015262005cac565b61138861038f556103905580f35b92506006838102938185040362001de85760009382855260208520908101905b81811062001daf57505062001b31565b8086849255868682015562001dc7600282016200543e565b86600382015562001ddb60048201620052d3565b8660058201550162001d9f565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001de85760009382855260208520908101905b81811062001e4257505062001b08565b8086849255868682015562001e5a600282016200543e565b86600382015562001e6e60048201620052d3565b8660058201550162001e32565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001eb562002ad7565b6040519162001ec483620029ec565b61038f5483526103905490602091828501526103915460408501526103925460608501526040518061039390848254918281520191845284842090845b8181106200200d575050508162001f1a91038262002ab3565b6080850152610394805462001f2f8162002b80565b9162001f3f604051938462002ab3565b818352835283832083908584015b83831062001fdf575050505060a08501526040518092839161039591808354928381520192855280852094905b82821062001fbb5750505062001f939250038262002ab3565b60c083015260ff6103965416151560e083015262000f20610397546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062001f7a565b600187819260409998995162001ffb8162001127818962002bd5565b81520192019201919095949562001f4d565b82546001600160a01b03168452928601926001928301920162001f01565b5034620002025760203660031901126200020257600435906064821015620014905762000f206200206260048460031b0162002b22565b6040519182918262002958565b5034620002025780600319360112620002025760405161032180548083529083526020808301937f375af38c615bc3b651d74d7d59974b82de2cfc350734166de4356711f3dca12992915b828210620020d55762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620020ba565b5034620002025760209081600319360112620002025760409062002119620028db565b816060845162002129816200299e565b82815286810183905285810182905201526001600160a01b03168152610320835220604051906200215a826200299e565b620021d581549160ff83161515845260ff8585019360081c1615158352600260405191620021998362002191816001850162002bd5565b038462002ab3565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002d45565b905160808301520390f35b50346200020257602036600319011262000202576020620011a360043562005d82565b503462000202578060031936011262000202576020620011a36200618c565b50346200020257604036600319011262000202576001600160401b0360043581811162000dff576200225990369060040162002e8f565b916024359182116200020257602062002282846200227b366004870162002e8f565b9062006589565b6040519015158152f35b50346200020257806003193601126200020257604051620022ad8162002a5e565b6040516106c383825b606482106200244557505050620022cd8162002a7a565b815260405191620022de83620029ec565b61072754835261072854906020918285015261072954604085015261072a5460608501526040518061072b90848254918281520191845284842090845b8181106200242757505050816200233491038262002ab3565b608085015261072c8054620023498162002b80565b9162002359604051938462002ab3565b818352835283832083908584015b838310620023f9575050505060a08501526040518092839161072d91808354928381520192855280852094905b828210620023d557505050620023ad9250038262002ab3565b60c083015260ff61072e5416151560e083015262000f2061072f546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062002394565b6001878192604099989951620024158162001127818962002bd5565b81520192019201919095949562002367565b82546001600160a01b0316845292860192600192830192016200231b565b6001602081928554815201930191019091620022b6565b5034620002025760208060031936011262000df7576004356200248b4782111562000ee9620018748462005028565b3383528280808061032794858752620024d0604083205482111562000ee9620024b48462005028565b338652898b52620024c9604087205462005028565b90620051a2565b33825285875262002510620024ea82604085205462004fed565b919062000ee9620024fb8562005028565b3387528a8c52620024c9604088205462005028565b338352868852604083205581811562002678575b3390f1156200266d57338352815260408220541562002541575080f35b610328805491620025528362004d95565b918493855b818110620026135750506200256c8462004d95565b805192906001600160401b038411620025ff5781906200258c8562004eef565b0191865280862090865b848110620025e3575050505050825b828110620025b35750505080f35b620025dd9062000ef06001600160a01b03620025d0838662004c79565b5116620019dd8362004dcd565b620025a5565b83516001600160a01b0316838201559281019260010162002596565b634e487b7160e01b87526041600452602487fd5b6200261e8162004dcd565b90546001600160a01b03916003913391831b1c8316036200264d575b5050620026479062004c12565b62002557565b966200266491839862001a8a620026479562004dcd565b9590386200263a565b6040513d84823e3d90fd5b506108fc62002524565b5034620002025780600319360112620002025760405161032680548083529083526020808301937f953a1f58387b28901d66ca469c0f2f10840990fe6eba2d456bb60fb027f000d992915b828210620026e85762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620026cd565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000dff5760648210156200275a579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b5034620002025780600319360112620002025760405161032880548083529083526020808301937fe1b7123756d5187477d16898f0ed5b46851d48ab984ff1401c7617fb3825ab6e92915b828210620027d45762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620027b9565b50346200020257806003193601126200020257602060ff610733541660405190620028208162002937565b8152f35b5034620002025760209081600319360112620002025762002844620028db565b6200284e6200521b565b506001600160a01b031681526103298252604080822090519190620028738362002a5e565b60405193849192915b60648310620028a657610c808587620028958162002a7a565b81526200020060405180926200290c565b600182819286548152019401920191926200287c565b90503462000df7578160031936011262000df757602090610731548152f35b600435906001600160a01b0382168203620028f257565b600080fd5b35906001600160a01b0382168203620028f257565b516000915b606483106200291f57505050565b60019082518152602080910192019201919062002911565b600411156200294257565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062002980575050505090565b83516001600160a01b03168552938101939281019260010162002971565b608081019081106001600160401b03821117620029ba57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b03821117620029ba57604052565b61010081019081106001600160401b03821117620029ba57604052565b61012081019081106001600160401b03821117620029ba57604052565b606081019081106001600160401b03821117620029ba57604052565b60e081019081106001600160401b03821117620029ba57604052565b602081019081106001600160401b03821117620029ba57604052565b610c8081019081106001600160401b03821117620029ba57604052565b604081019081106001600160401b03821117620029ba57604052565b601f909101601f19168101906001600160401b03821190821017620029ba57604052565b6040519062002ae68262002a5e565b6040518261032b6000835b6064821062002b0b5750505062002b088262002a7a565b52565b600160208192855481520193019101909162002af1565b9060405191828154918282526020928383019160005283600020936000905b82821062002b5c5750505062002b5a9250038362002ab3565b565b85546001600160a01b03168452600195860195889550938101939091019062002b41565b6001600160401b038111620029ba5760051b60200190565b90600182811c9216801562002bca575b602083101462002bb457565b634e487b7160e01b600052602260045260246000fd5b91607f169162002ba8565b906000929180549162002be88362002b98565b91828252600193848116908160001462002c4f575060011462002c0c575b50505050565b90919394506000526020928360002092846000945b83861062002c3a57505050500101903880808062002c06565b80548587018301529401938590820162002c21565b9294505050602093945060ff191683830152151560051b0101903880808062002c06565b90815462002c818162002b80565b9260409362002c938551918262002ab3565b828152809460208092019260005281600020906000935b85851062002cba57505050505050565b6001848192845162002cd28162001127818a62002bd5565b81520193019401939162002caa565b90815180825260208080930193019160005b82811062002d02575050505090565b83516001600160a01b03168552938101939281019260010162002cf3565b60005b83811062002d345750506000910152565b818101518382015260200162002d23565b9060209162002d608151809281855285808601910162002d20565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002d985750505050505090565b909192939495848062002db483856001950387528a5162002d45565b980193019301919493929062002d87565b93929162002dd785610ca0936200290c565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002e6362002e2c6080840151610100610d408a0152610dc089019062002ce1565b62002e4c60a085015191610cbf1992838b830301610d608c015262002d6c565b9060c08501519089830301610d808a015262002ce1565b9101511515610da0860152930152565b6001600160401b038111620029ba57601f01601f191660200190565b81601f82011215620028f25780359062002ea98262002e73565b9262002eb9604051948562002ab3565b82845260208383010111620028f257816000926020809301838601378301015290565b600511156200294257565b90815180825260208080930193019160005b82811062002f08575050505090565b83518552938101939281019260010162002ef9565b90815180825260208092019182818360051b82019501936000915b84831062002f495750505050505090565b909192939495848062002f6583856001950387528a5162002ee7565b980193019301919493929062002f38565b90815180825260208092019182818360051b82019501936000915b84831062002fa25750505050505090565b909192939495848062002fbe83856001950387528a5162002ce1565b980193019301919493929062002f91565b90815180825260208092019081926005928183851b82019601946000915b84831062002fff575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029425783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b828110620030bf5750505050509282916200308960019560608085015190840152608080850151908483039085015262002d45565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062002fed565b919395968062003185600193959761011f198b82030189528951908151815283820151620030ed8162002edc565b8482015287820151620031008162002937565b888201526060908183015182820152816200317562003164620031536080620031368189015160c080848a015288019062002ee7565b9560a0809901519881880391015287519080875286019062002d6c565b888701518582038a87015262002f1d565b8b8601518482038d86015262002f76565b9301519181840391015262002d45565b970195019101918b96959493919262003054565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620031fb5750505050906040620031f89392015190604081840391015262002d45565b90565b858703607f19018352835180516001600160a01b03168852602081015194979394929391929060268210156200294257604091602084015201519060606040820152620032578251610100606084015261016083019062002d6c565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003419575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b8281106200339457505050506060840151838203605f190160c0850152620032d8925062002fcf565b608083015190605f198382030160e0840152602080835192838152019201906000905b8082106200337057505050620033638360209360e06200334c62003334879660a060019a0151605f198683030161010087015262002f1d565b60c0850151848203605f190161012086015262002f76565b92015190610140605f198285030191015262002d45565b98019401929101620031d2565b9091926020806001928651620033868162002edc565b8152019401920190620032fb565b90919293602080600192601f19868203018852885190620033fd620033c2835160e080855284019062002ee7565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002d45565b60c09283015115159190920152970196950193929101620032af565b90919260208060019286511515815201940192019062003279565b906003821015620029425752565b9060405191828154918282526020928383019160005283600020936000905b8282106200347a5750505062002b5a9250038362002ab3565b85548452600195860195889550938101939091019062003461565b90604051620034a48162002a42565b60c060ff60068395620034b78162003442565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152604051620034fc8162001127816005860162002bd5565b60a08601520154161515910152565b6006821015620029425752565b908154620035268162002b80565b9262003536604051948562002ab3565b818452600090815260208082208186015b84841062003556575050505050565b6001838192620035668562003442565b81520192019301929062003547565b908154620035838162002b80565b9262003593604051948562002ab3565b818452600090815260208082208186015b848410620035b3575050505050565b6001838192620035c38562002b22565b815201920193019290620035a4565b9060036060604051620035e5816200299e565b620036308195620035f68162002c73565b8352620036066001820162003518565b6020840152620036196002820162003575565b604084015262002191604051809681930162002bd5565b0152565b90604051620036438162002a26565b82546001600160a01b03168152600183018054919384929091620036678262002b80565b9162003677604051938462002ab3565b80835260208301916000526020600020916000905b828210620036b9575050505091620036306040926002946020840152620021918451809681930162002bd5565b604051620036c78162002a26565b84546001600160a01b038116825260a01c60ff16602681101562002942576020820152604051620036f881620029ec565b620037066001870162002c73565b815260028601604051808260208294549384815201906000526020600020926000905b80601f8301106200468657620038629454918181106200466f575b81811062004655575b8181106200463b575b81811062004621575b81811062004608575b818110620045ee575b818110620045d4575b818110620045ba575b818110620045a0575b81811062004586575b8181106200456c575b81811062004552575b81811062004538575b8181106200451e575b81811062004504575b818110620044ea575b818110620044d0575b818110620044b6575b8181106200449c575b81811062004482575b81811062004468575b8181106200444e575b81811062004434575b8181106200441a575b81811062004400575b818110620043e6575b818110620043cc575b818110620043b2575b81811062004398575b8181106200437e575b81811062004364575b1062004353575b50038262002ab3565b6020820152600386018054620038788162002b80565b9162003888604051938462002ab3565b81835260208301906000526020600020906000905b8382106200433257505050506040820152600486018054620038bf8162002b80565b91620038cf604051938462002ab3565b81835260208301906000526020600020906000905b838210620041d557505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003ecc5784600997946020979460019a979462003a5b94549181811062003eae575b81811062003e8d575b81811062003e6c575b81811062003e4b575b81811062003e2b575b81811062003e0a575b81811062003de9575b81811062003dc8575b81811062003da7575b81811062003d86575b81811062003d65575b81811062003d44575b81811062003d23575b81811062003d02575b81811062003ce1575b81811062003cc0575b81811062003c9f575b81811062003c7e575b81811062003c5d575b81811062003c3c575b81811062003c1b575b81811062003bfa575b81811062003bd9575b81811062003bb8575b81811062003b97575b81811062003b76575b81811062003b55575b81811062003b34575b81811062003b13575b81811062003af2575b81811062003ad1575b1062003ab65750038262002ab3565b608082015262003a6e60068a0162003518565b60a082015262003a8160078a0162003575565b60c082015260405162003a9d81620011278160088e0162002bd5565b60e082015260408201528152019401910190926200368c565b90889160f81c62003ac78162002edc565b8152013862003859565b928a8d9160ff8560f01c1662003ae78162002edc565b815201930162003a4c565b928a8d9160ff8560e81c1662003b088162002edc565b815201930162003a43565b928a8d9160ff8560e01c1662003b298162002edc565b815201930162003a3a565b928a8d9160ff8560d81c1662003b4a8162002edc565b815201930162003a31565b928a8d9160ff8560d01c1662003b6b8162002edc565b815201930162003a28565b928a8d9160ff8560c81c1662003b8c8162002edc565b815201930162003a1f565b928a8d9160ff8560c01c1662003bad8162002edc565b815201930162003a16565b928a8d9160ff8560b81c1662003bce8162002edc565b815201930162003a0d565b928a8d9160ff8560b01c1662003bef8162002edc565b815201930162003a04565b928a8d9160ff8560a81c1662003c108162002edc565b8152019301620039fb565b928a8d9160ff8560a01c1662003c318162002edc565b8152019301620039f2565b928a8d9160ff8560981c1662003c528162002edc565b8152019301620039e9565b928a8d9160ff8560901c1662003c738162002edc565b8152019301620039e0565b928a8d9160ff8560881c1662003c948162002edc565b8152019301620039d7565b928a8d9160ff8560801c1662003cb58162002edc565b8152019301620039ce565b928a8d9160ff8560781c1662003cd68162002edc565b8152019301620039c5565b928a8d9160ff8560701c1662003cf78162002edc565b8152019301620039bc565b928a8d9160ff8560681c1662003d188162002edc565b8152019301620039b3565b928a8d9160ff8560601c1662003d398162002edc565b8152019301620039aa565b928a8d9160ff8560581c1662003d5a8162002edc565b8152019301620039a1565b928a8d9160ff8560501c1662003d7b8162002edc565b815201930162003998565b928a8d9160ff8560481c1662003d9c8162002edc565b81520193016200398f565b928a8d9160ff8560401c1662003dbd8162002edc565b815201930162003986565b928a8d9160ff8560381c1662003dde8162002edc565b81520193016200397d565b928a8d9160ff8560301c1662003dff8162002edc565b815201930162003974565b928a8d9160ff8560281c1662003e208162002edc565b81520193016200396b565b928a8d9160ff85831c1662003e408162002edc565b815201930162003962565b928a8d9160ff8560181c1662003e618162002edc565b815201930162003959565b928a8d9160ff8560101c1662003e828162002edc565b815201930162003950565b928a8d9160ff8560081c1662003ea38162002edc565b815201930162003947565b928a8d9160ff851662003ec18162002edc565b81520193016200393e565b926001610400602092865460ff811662003ee68162002edc565b825260ff8160081c1662003efa8162002edc565b8583015260ff8160101c1662003f108162002edc565b604083015260ff8160181c1662003f278162002edc565b606083015260ff81861c1662003f3d8162002edc565b608083015260ff8160281c1662003f548162002edc565b60a083015260ff8160301c1662003f6b8162002edc565b60c083015262003f8160ff8260381c1662002edc565b60ff8160381c1660e083015260ff8160401c1662003f9f8162002edc565b61010083015260ff8160481c1662003fb78162002edc565b61012083015260ff8160501c1662003fcf8162002edc565b61014083015260ff8160581c1662003fe78162002edc565b61016083015260ff8160601c1662003fff8162002edc565b61018083015260ff8160681c16620040178162002edc565b6101a083015260ff8160701c166200402f8162002edc565b6101c083015260ff8160781c16620040478162002edc565b6101e083015260ff8160801c166200405f8162002edc565b61020083015260ff8160881c16620040778162002edc565b61022083015260ff8160901c166200408f8162002edc565b61024083015260ff8160981c16620040a78162002edc565b61026083015260ff8160a01c16620040bf8162002edc565b61028083015260ff8160a81c16620040d78162002edc565b6102a083015260ff8160b01c16620040ef8162002edc565b6102c083015260ff8160b81c16620041078162002edc565b6102e083015260ff8160c01c166200411f8162002edc565b61030083015260ff8160c81c16620041378162002edc565b61032083015260ff8160d01c166200414f8162002edc565b61034083015260ff8160d81c16620041678162002edc565b61036083015260ff8160e01c166200417f8162002edc565b61038083015260ff8160e81c16620041978162002edc565b6103a083015260ff8160f01c16620041af8162002edc565b6103c083015260f81c620041c38162002edc565b6103e082015201940192019162003915565b604051620041e381620029ec565b620041f360ff855416826200350b565b600184015460208201526002840180546200420e8162002b80565b916200421e604051938462002ab3565b81835260208301906000526020600020906000905b838210620042ab57505050506001928260209260406006950152600387015460608201526040516200426e81620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201930191019091620038e4565b600190602060405191620042bf83620029d0565b85548352838601549260ff8416620042d78162002edc565b8382015260ff600894851c16620042ee8162002937565b6040820152600287015460608201526200430b6003880162003442565b60808201526200431e60048801620035d2565b60a082015281520193019101909162004233565b60076020600192620043448662003495565b8152019301910190916200389d565b60f81c151581526020013862003859565b92602060019160ff8560f01c161515815201930162003852565b92602060019160ff8560e81c161515815201930162003849565b92602060019160ff8560e01c161515815201930162003840565b92602060019160ff8560d81c161515815201930162003837565b92602060019160ff8560d01c16151581520193016200382e565b92602060019160ff8560c81c161515815201930162003825565b92602060019160ff8560c01c16151581520193016200381c565b92602060019160ff8560b81c161515815201930162003813565b92602060019160ff8560b01c16151581520193016200380a565b92602060019160ff8560a81c161515815201930162003801565b92602060019160ff8560a01c1615158152019301620037f8565b92602060019160ff8560981c1615158152019301620037ef565b92602060019160ff8560901c1615158152019301620037e6565b92602060019160ff8560881c1615158152019301620037dd565b92602060019160ff8560801c1615158152019301620037d4565b92602060019160ff8560781c1615158152019301620037cb565b92602060019160ff8560701c1615158152019301620037c2565b92602060019160ff8560681c1615158152019301620037b9565b92602060019160ff8560601c1615158152019301620037b0565b92602060019160ff8560581c1615158152019301620037a7565b92602060019160ff8560501c16151581520193016200379e565b92602060019160ff8560481c161515815201930162003795565b92602060019160ff8560401c16151581520193016200378c565b92602060019160ff8560381c161515815201930162003783565b92602060019160ff8560301c16151581520193016200377a565b92602060019160ff8560281c161515815201930162003771565b92602060019160ff85831c161515815201930162003768565b92602060019160ff8560181c16151581520193016200375f565b92602060019160ff8560101c161515815201930162003756565b92602060019160ff8560081c16151581520193016200374d565b92602060019160ff85161515815201930162003744565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003729565b9080601f83011215620028f257813590620048738262002b80565b9262004883604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620048b35750505050505090565b82356001600160401b038111620028f2578691620048d78484809489010162002e8f565b815201920191620048a2565b35908115158203620028f257565b81601f82011215620028f2578035916200490b8362002b80565b926200491b604051948562002ab3565b808452602092838086019260051b820101928311620028f2578301905b82821062004947575050505090565b8135815290830190830162004938565b9080601f83011215620028f257813590620049728262002b80565b9262004982604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620049b25750505050505090565b82356001600160401b038111620028f2578691620049d684848094890101620048f1565b815201920191620049a1565b9080601f83011215620028f257813591620049fd8362002b80565b9260409262004a0f8451958662002ab3565b8185526020938486019185600594851b86010194818611620028f257868101935b86851062004a4357505050505050505090565b84356001600160401b038111620028f257820183603f82011215620028f257888101359062004a728262002b80565b9162004a818751938462002ab3565b808352868b8401918a1b83010191868311620028f25791878c94929593015b81811062004ab957505082935081520194019362004a30565b91938091939562004aca84620028f7565b8152019101918b9391949262004aa0565b9062002b5a604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b30815180926020868601910162002d20565b810103602581018552018362002ab3565b9062002b5a6040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004b87815180926020868601910162002d20565b810103602081018552018362002ab3565b602062002b5a91939293604051948162004bbc879351809286808701910162002d20565b820162004bd28251809386808501910162002d20565b0103808552018362002ab3565b1562004be85750565b60405162461bcd60e51b81526020600482015290819062004c0e90602483019062002d45565b0390fd5b600019811462001de85760010190565b80511562004c305760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c305760400190565b80516002101562004c305760600190565b80516003101562004c305760800190565b805182101562004c305760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002b5a916020949360405195869262004cf162004ce383860162004c8e565b918281519485920162002d20565b016e0161030b732103130b630b731b29d1608d1b815262004d1c825180936020878501910162002d20565b010360101981018552018362002ab3565b601962002b5a916020949360405195869262004d4f62004ce383860162004c8e565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004d84825180936020878501910162002d20565b010360061981018552018362002ab3565b9062004da18262002b80565b62004db0604051918262002ab3565b828152809262004dc3601f199162002b80565b0190602036910137565b610328805482101562004c305760005260206000200190600090565b610326805482101562004c305760005260206000200190600090565b610321805482101562004c305760005260206000200190600090565b6106c2805482101562004c305760005260206000200190600090565b61032a805482101562004c305760005260206000200190600090565b6106be805482101562004c305760005260206000200190600090565b6106c0805482101562004c305760005260206000200190600090565b805482101562004c305760005260206000200190600090565b8181029291811591840414171562001de857565b919082549060031b91821b91600019901b1916179055565b81811062004ee2575050565b6000815560010162004ed6565b600160401b8111620029ba576103289081549080835581811062004f1257505050565b62002b5a926000526020600020918201910162004ed6565b600160401b8111620029ba576103269081549080835581811062004f1257505050565b8054600082558062004f5d575050565b62002b5a9160005260206000209081019062004ed6565b600160401b8111620029ba576106be9081549080835581811062004f1257505050565b600160401b8111620029ba576106c09081549080835581811062004f1257505050565b6103958054600082558062004f5d575050565b90600160401b8111620029ba5781549080835581811062004f1257505050565b919082811162004ffe576001920390565b50600091508190565b811562005012570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101562005193575b506904ee2d6d415b85acef8160201b8083101562005183575b50662386f26fc100008083101562005173575b506305f5e1008083101562005163575b506127108083101562005153575b50606482101562005142575b600a8092101562005137575b60019081602181860195620050c48762002e73565b96620050d4604051988962002ab3565b808852620050e5601f199162002e73565b01366020890137860101905b620050fe575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200513157919082620050f1565b620050f7565b9160010191620050af565b9190606460029104910191620050a3565b6004919392049101913862005097565b6008919392049101913862005089565b6010919392049101913862005079565b6020919392049101913862005066565b6040935081049150386200504d565b601e62002b5a9160209493604051958692620051c462004ce383860162004c8e565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620051fd825180936020878501910162002d20565b010360011981018552018362002ab3565b6003821015620029425752565b604051906200522a8262002a5e565b60405182620052398262002a7a565b610c8036833752565b906200524e8262002b80565b6040906200525f8251918262002ab3565b838152809362005272601f199162002b80565b019160005b838110620052855750505050565b60209082516200529581620029ec565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e083015282860101520162005277565b620052df815462002b98565b9081620052ea575050565b81601f60009311600114620052fd575055565b9080839182526200531e601f60208420940160051c84016001850162004ed6565b5555565b805490600081558162005333575050565b6000526020600020908101905b8181106200534c575050565b806200535a600192620052d3565b0162005340565b90600160401b8111620029ba578154918181558282106200538157505050565b600052602060002091820191015b8181106200539b575050565b80620053a9600192620052d3565b016200538f565b8054906000815581620053c1575050565b6000526020600020908101905b818110620053da575050565b80620053e860019262004f4d565b01620053ce565b90600160401b8111620029ba578154918181558282106200540f57505050565b600052602060002091820191015b81811062005429575050565b806200543760019262004f4d565b016200541d565b8054600091828155816200545157505050565b6001600160fd1b0382168203620054de5782526020822091600391821b8301925b838110620054805750505050565b8082600892558260018201558260028201556200549f84820162004f4d565b620054ad6004820162005322565b620054bb60058201620053b0565b620054c960068201620053b0565b620054d760078201620052d3565b0162005472565b634e487b7160e01b83526011600452602483fd5b600160401b8211620029ba578054908281558183106200551157505050565b6001600160fd1b03828116830362001de8578316830362001de857600090815260208120600392831b810193831b015b8381106200554f5750505050565b8082600892558260018201558260028201556200556e84820162004f4d565b6200557c6004820162005322565b6200558a60058201620053b0565b6200559860068201620053b0565b620055a660078201620052d3565b0162005541565b516006811015620029425790565b906006811015620029425760ff80198354169116179055565b90620055e08162002edc565b60ff80198354169116179055565b90620055fa8162002937565b61ff0082549160081b169061ff001916179055565b9190601f81116200561f57505050565b62002b5a926000526020600020906020601f840160051c830193106200564e575b601f0160051c019062004ed6565b909150819062005640565b81519192916001600160401b038111620029ba5762005685816200567e845462002b98565b846200560f565b602080601f8311600114620056c4575081929394600092620056b8575b50508160011b916000199060031b1c1916179055565b015190503880620056a2565b90601f198316958460005282600020926000905b8882106200571357505083600195969710620056f9575b505050811b019055565b015160001960f88460031b161c19169055388080620056ef565b80600185968294968601518155019501930190620056d8565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b815160068110156200294257620057879082620055bb565b602082015160018201556002810160408301516020815191620057ab8385620054f2565b01916000526020600020916000905b8282106200581e57505050509060e0600562002b5a9360608401516003820155620057ed60808501516004830162005659565b01916200580160a08201511515846200572c565b6200581360c08201511515846200573d565b015115159062005755565b8051805185556200585e60018601620058476020840151620058408162002edc565b82620055d4565b604083015190620058588262002937565b620055ee565b60608101516002860155608081015180519060038701906001600160401b038311620029ba5760209062005893848462004fcd565b0190600052602060002060005b83811062005b3f575050505060a0015180518051906004870190602090620058c9848462005361565b01906000526020600020906000905b83821062005b1f57505050506005850160208201516020815191620058fe8385620053ef565b019160005260206000206000925b82841062005abb57505050506006850160408201516020815191620059328385620053ef565b019160005260206000206000925b82841062005a4e5750505050606001518051906001600160401b038211620029ba57620059808262005976600789015462002b98565b600789016200560f565b602090601f8311600114620059d3579282600893602093600196600092620059c7575b5050600019600383901b1c191690851b1760078801555b01940191019092620057ba565b015190503880620059a3565b906007870160005260206000209160005b601f198516811062005a35575083602093600196938793600897601f1981161062005a1b575b505050811b016007880155620059ba565b015160001960f88460031b161c1916905538808062005a0a565b91926020600181928685015181550194019201620059e4565b80518051906001600160401b038211620029ba5760209062005a71838662004fcd565b0183600052602060002060005b83811062005a9d57505050506001602081920192019301929062005940565b82516001600160a01b03168183015560209092019160010162005a7e565b80518051906001600160401b038211620029ba5760209062005ade838662004fcd565b0183600052602060002060005b83811062005b0a5750505050600160208192019201930192906200590c565b60019060208451940193818401550162005aeb565b600160208262005b328394518762005659565b01930191019091620058d8565b600190602084519401938184015501620058a0565b60409081519162005b658362002a97565b60018352829160005b60208082101562005bd85783516020929162005b8a82620029d0565b60008252600081830152600086830152606060008184015280608084015286519062005bb6826200299e565b808252808383015280888301528082015260a083015282880101520162005b6e565b505091925050565b610323805482101562004c30576000526006602060002091020190600090565b6106bb805482101562004c30576000526006602060002091020190600090565b610322805482101562004c30576000526006602060002091020190600090565b6106ba805482101562004c30576000526006602060002091020190600090565b6103228054600160401b811015620029ba5762005c839160018201905562005c20565b91909162005c965762002b5a916200576f565b634e487b7160e01b600052600060045260246000fd5b6103238054600160401b811015620029ba5762005c839160018201905562005be0565b6106bb8054600160401b811015620029ba5762005c839160018201905562005c00565b6106ba8054600160401b811015620029ba5762005c839160018201905562005c40565b1562005d1d57565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b606481101562004c305762005daf8162005da86002620031f89460031b01549162005f41565b9062005ebb565b919062005d15565b606481101562004c3057600390811b61039a81015490600061039c820190815490809561039b829501915b83861062005e0057505050505050620031f89162005daf9162005ebb565b9690919293949662004c305762005e538762005e4b62005e2562000ef09a8962004e91565b905490861b1c6001600160a01b031660009081526020879052604081205490946200606a565b999062005edd565b949392919062005de2565b606481101562004c305762005daf8162005da861039a620031f89460031b01549162005fe7565b90811562005eb257606462005e9e818402938462005007565b0362005eaa5760019190565b600091508190565b60019150600090565b9190821562005ed35762005e9e818402938462005007565b5060019150600090565b1562005ee557565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6064811015908162004c3057600390811b906004928383019182549260009582879601935b85871062005f78575050505050505090565b97969091929394959762005fd25762005fc68862005e4b62005fa062000ef09a9b8762004e91565b905490881b1c6001600160a01b031660009081526020899052604081205490946200606a565b95949392919062005f66565b603282634e487b7160e01b6000525260246000fd5b6064811015908162004c305790600391821b9061039c82019081549060009461039b869501915b8386106200601f5750505050505090565b9590919293949562004c30576200604c866200604462005e2562000ef0998962004e91565b989062005edd565b94939291906200600e565b906001820191821062005eaa5760019190565b9190820191821062005eaa5760019190565b156200608457565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b606481101562004c30576200610b8162005da86001620031f89460031b01549162005f41565b91906200607c565b606481101562004c3057600390811b61039981015490600061039c820190815490809561039b829501915b8386106200615c57505050505050620031f8916200610b9162005ebb565b9690919293949662004c3057620061818762005e4b62005e2562000ef09a8962004e91565b94939291906200613e565b61038f54620061d26200619e620313c0565b91620061b06127109384831062004bdf565b620061c86103925461039054111562000ee96203142e565b6103915462005ebb565b919050620061df62031484565b5060009081925b6064841062006202575b620061fd9350046200624f565b905090565b9160ff60078560031b015416156200624857836200623562006241926200622e62000ef0969762005d82565b906200606a565b949062000ee962031484565b92620061e6565b91620061f0565b9080156200626757620062629162005007565b600191565b5050600090600090565b9190820180921162001de857565b9190820391821162001de857565b906107b2906301e1853e80840483810180821162001de8576001820181811162001de857604583019082821162001de8576064620062d092049060021c6200627f565b9561017183019682881162001de857620062f1906101908099049062006271565b9084840294848604148415171562001de85762015180948583029280840487149015171562001de85762006331926200632a9162006271565b906200627f565b9160049586910815958662006550575b506040516101a081016001600160401b038111828210176200653b57604052600c9687825261018080366020850137601f91826200637f8562004c22565b5215620065315760ff601d5b16620063978462004c46565b5281620063a48462004c57565b52601e620063b28462004c68565b5282518810156200651c578160a08401528251600510156200651c57601e60c08401528251600610156200651c578160e08401528251600710156200651c57816101008401528251600810156200651c57601e6101208401528251600910156200651c57816101408401528251600a10156200651c57601e6101608401528251600b10156200651c57820152600096905b81881062006497575b50508282049460018601809611620064825760018701809711620064825750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b909692620064a6848362004c79565b5185810290808204871490151715620064ff5781106200651457620064cc848362004c79565b519085820291808304871490151715620064ff57620064f791620064f0916200627f565b9362004c12565b969062006443565b601188634e487b7160e01b6000525260246000fd5b92966200644c565b603288634e487b7160e01b6000525260246000fd5b60ff601c6200638b565b604187634e487b7160e01b6000525260246000fd5b9095506064860615908115916200656b575b50943862006341565b90508506153862006562565b90815181101562004c30570160200190565b90815181511162006640576000905b620065a783518251906200627f565b8211620066385760019260005b82518110156200662d576001600160f81b031980620065df620065d8848862006271565b8562006577565b511690620065ee838662006577565b5116036200660757620066019062004c12565b620065b4565b5092509060005b62006625576200661e9062004c12565b9062006598565b505050600190565b50929190916200660e565b505050600090565b5050600090565b61032a80549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e3d565b610395805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b610393805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b61032180549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e05565b60405190620067408262002a97565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067768262002a26565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200695c5781620067ee88620067f69362004c79565b5101620073dc565b602692838210156200294257601a918203620068b4578762006819915162004c79565b5192828401519081101562002942570362006872575093620068636200686b926200685b6200685460a0604062000ef09a0151015162004c22565b5162004c22565b51906200606a565b9590620073ea565b92620067cb565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068cd81620067ee89869a979a5162004c79565b82811015620029425760140362006906575050906200686362000ef0956200622e620068ff846200686b965162004c79565b5162007437565b6200691890620067ee85855162004c79565b90811015620029425760151462006936575b506200686b9062004c12565b906200686362006955956200622e620068ff846200686b965162004c79565b906200692a565b505050909250803410600014620069d25760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007253575b506107339182549260ff841693620069f38562002937565b60019480860362006a2d5750505062006a2391925062006a1d62006a1782620074ce565b620075a5565b6200762f565b620031f862006731565b62006a388162002937565b60028114808062007246575b1562006e6f5750505062006a5882620074e3565b1562006e305762006a6982620074e3565b1562006df45762006aa290602080930190600260ff8560018060a01b0362006a92865162004c22565b5151169460409687915162004c22565b510151015192541662006ab58162002937565b0362006db45781600052610737808552836000209261073880549485600052875260ff86600020541662006d76578351948060005261073693848952600396878960002001540362006d105783600052885286600020906000528752856000208960ff19825416179055886000905b62006b6e575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b57620308b4565b519162006b648362002a97565b6015835282015290565b845181101562006d0a5786825480600052858a5262006b938389846000200162004e91565b905490891b1c908a84888b62006baa838d62004c79565b511562006c6857505050505062006c0d62006bed85549283600052888d526200622e62006bdf87600480986000200162004e91565b9054908d1b1c91896203079f565b9092600052878c5262006c0685858d6000200162004e91565b9062004ebe565b1562006c26575062006c1f9062004c12565b8962006b24565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006ca562006cb7966200622e87999462006c06979860005284895262006c9887600580986000200162004e91565b9054911b1c918d6203079f565b959097600052528c6000200162004e91565b1562006cc85762006c1f9062004c12565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b2a565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e7f82979495969762002937565b6003821491828062007239575b1562006f0e5750505050505062006ea3816200754a565b1562006ebe5762006eb4906202df85565b620031f862006767565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f198162002937565b81806200722b575b806200721e575b156200714857505050509060ff9062006f4062030ac6565b54169062006f4e8262002937565b81036200700c575062006f6181620074ce565b1562006f7b578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200701a60039262002937565b146200705357505b604051620070308162002a97565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200705e816200754a565b156200706f5762006eb4906202df85565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b620071538162002937565b821562007209575b505080620071fb575b62007173575050505062007022565b60ff19161790556200718581620074ce565b156200719f578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b506107325442101562007164565b6200721691925062002937565b38806200715b565b5061073254421062006f28565b506107315442101562006f21565b5061073254421062006e8c565b5061073154421062006a44565b60018060a01b03908184511660005261032590816020526040600020541562007349575b62007283903462004fed565b90156200730557620072a69083865116600052826020526040600020546200606a565b929015620072c45784511660005260205260406000205538620069db565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b60009081610326928354915b828110620073a1575b50156200736f575b50905062007277565b86518516600160401b821015620029ba57620019dd82620072839560016200739a9501905562004de9565b3862007366565b86620073ad8262004de9565b919054818c51169260031b1c1614620073d157620073cb9062004c12565b62007355565b50506001386200735e565b516026811015620029425790565b15620073f257565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007451818351015162004c46565b5151841015620074c6579262006863620074b6604094620074ae85620074a686620074948b6200749b8362000ef09f9e6200749490620074bc9e51015162004c46565b5162004c79565b519451015162004c57565b519062005ebb565b9290620073ea565b6200606a565b919290506200743c565b509093505050565b602001515115620074de57600190565b600090565b602001516001815103620075075762007500620031f89162004c22565b516200750d565b50600090565b60208101516026811015620029425760200362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b602001516001815103620075075762007567620031f89162004c22565b5160208101516026811015620029425760210362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b15620075ad57565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763a81620141ae565b5162013cb157600681101562002942576003811462013c585780620076975760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200a5fb575060008061032a54905b8181106200a5b4575b5050156200a598575b60005b6020908183015191825182101562007724576200771681610329620076fc620076f662000ef095620067ee886200771e9a62004c79565b620316cf565b9160018060a01b0388511660005252604060002062022f40565b429162004ebe565b620076bf565b50505060005b602080830151805183101562007772576200774f91620067ee84620076f69362004c79565b90606482101562004c30576200776c91429061032b015562004c12565b6200772a565b505050906000905b602083015180518310156200a5925782620077959162004c79565b51602081018051602690818110156200294257156200a54f578151818110156200294257600103620079e2575050604080910190620077d960c08351015162004c22565b5192620077fb60a0620077f0818651015162004c22565b519451015162004c46565b51956200780c85518551146202cca5565b6200781b85518851146202cd0b565b60005b8551811015620079605762007834818662004c79565b516064908181101562004c3057600160ff60076200785b9360031b0154161515146202cd6d565b62007867828a62004c79565b5162007874838862004c79565b51908282101562004c30576006620078929260031b0154906200606a565b906200789f848962004c79565b51918383101562004c30576006620078bc9360031b01556202cdc5565b620078c8828a62004c79565b5190620078d6838862004c79565b518181101562004c30576001600160a01b039392620079169160039086620078ff878e62004c79565b5116600052811b016020528760002054906200606a565b62007922848a62004c79565b519283101562004c3057600362000ef0936200795a9662007944878e62004c79565b5116600052811b0160205287600020556202ce24565b6200781e565b5093926200797d919296506200797690620312cf565b92620311b3565b9451926200798b8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b6620079bf938762004c79565b51878a62030dc7565b62007997565b5094509260209250620079d9915062004c12565b9190506200777a565b815181811015620029425760020362007c78575050604080910180519283519562007a2762007a1660a08097015162004c22565b51956200749b818651015162004c46565b5193875186510362007c2557875184510362007bd157875185510362007b7a575060005b855181101562007b645762007a61818762004c79565b51906064918281101562004c305762007a8660ff6007809360031b015416156202ce7d565b62007a92828962004c79565b518381101562004c305760031b01805460ff1916600117905562007ab7818a62004c79565b5162007ac4828962004c79565b51908382101562004c3057600562007ae09260031b0162005659565b62007aec818662004c79565b5162007af9828962004c79565b518381101562004c305760031b6001015562007b16818762004c79565b5162007b23828962004c79565b518381101562004c305760031b6002015562007b40818862004c79565b519182101562004c30576000600662007b5e9360031b015562004c12565b62007a4b565b50955093905060209250620079d9915062004c12565b5162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b819593949295518181101562002942576003036200826f575050604084019062007ca760c08351015162004c22565b519362007cbe60a0620077f0818651015162004c22565b519362007cd3865185511462000ee962031533565b62007ce6865186511462000ee962031533565b60005b865181101562007d4e5762007cff818662004c79565b5190606482101562004c3057600362007d489260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b51111562000ee962031637565b62007ce9565b50909493919460005b855181101562007e815762007d6d818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b0160205262007daf60406000205462007da7848962004c79565b519062004fed565b9062007dbc848a62004c79565b51918383101562004c3057600362007deb93878f5116600052811b0160205260406000205562000ee962031637565b62007df7828862004c79565b518181101562004c30576003908462007e11858c62004c79565b5116600052811b0160205262007e326040600020546200685b848962004c79565b62007e3e848a62004c79565b519283101562004c3057600362000ef09362007e7b9662007e60878e62004c79565b5116600052811b0160205260406000205562000ee96203169c565b62007d57565b5091509162007e9862007e9f9196959496620312cf565b95620311b3565b926040519462007eaf8662002a97565b6001865260203681880137516001600160a01b031662007ecf8662004c22565b526000905b86518210156200825a5762007eea828862004c79565b516108c05262007efb855162004d95565b9660009462007f0b885162004d95565b6108a0528594865b885181101562007fe1578a8962007f436001600160a01b0362007f37858462004c79565b51166108c051620310b9565b158062007f9c575b62007f64575b505062007f5e9062004c12565b62007f13565b9862007f919162001a9c82859c62007f8862007f5e9760018060a01b039262004c79565b51169262004c79565b9790508a8962007f51565b50505060646108c051101562004c30576001600160a01b0362007fc0828b62004c79565b511660005260036108c051811b016020528a89604060002054151562007f4b565b509098949897969291939760005b8851811015620080825760646108c051101562004c30576001600160a01b036200801a828b62004c79565b511660005260036108c051811b016020526040600020541562008049575b620080439062004c12565b62007fef565b99620080439062008079906001600160a01b03620080688e8d62004c79565b511662001a9c826108a05162004c79565b9a905062008038565b5098509694939291956108c0516064811015806107205262004c305760031b6004015496620080bc620080b6878a62006271565b62004d95565b996000998a6104c0525b6107205162004c30576104c0518a8110156200817b57620080fb620081189160006107205260046108c05160031b0162004e91565b90546108a05160039290921b1c6001600160a01b03169062031166565b1562008137575b6200812d6104c05162004c12565b6104c052620080c6565b99808c62001a9c62008174936200815b6104c05160046108c05160031b0162004e91565b905460039190911b1c6001600160a01b03169262004c79565b996200811f565b509a939794969299919850946000915b8383106200822057505050506107205162004c30578051906001600160401b038211620029ba57602090620081ca8360046108c05160031b0162004fcd565b0160046108c05160031b01600052602060002060005b838110620082025750505050620081f79062004c12565b909295919562007ed4565b82516001600160a01b031681830155602090920191600101620081e0565b62008253906200824c906001600160a01b036200823e868662004c79565b511662001a9c828962004c79565b9262004c12565b916200818b565b91945050620079d99194506020925062004c12565b81959394929551818110156200294257600403620084f5575050604080920160c094620082b0620082a4878451015162004c22565b51968351015162004c46565b5194620082c760a0620077f0818651015162004c22565b5193620082dc885188511462000ee962031533565b620082ef885185511462000ee962031533565b62008302885186511462000ee962031533565b60005b885181101562008369576200831b818662004c79565b5190606482101562004c305762008363916003906001600160a01b0362008343848e62004c79565b5116600052811b0160205262000ef0886000205462007d3b838a62004c79565b62008305565b50909691959294939660005b8351811015620084a9576200838b818862004c79565b51906064918281101562004c30576001600160a01b039060039082620083b2858a62004c79565b5116600052811b01602052620083d38b62007da7848b600020549262004c79565b90620083e0848c62004c79565b51918583101562004c30576003620084199385620083ff888d62004c79565b5116600052811b016020528a6000205562000ee962031637565b62008425828a62004c79565b518381101562004c3057600390826200843f858b62004c79565b5116600052811b01602052620084608b6200685b848b600020549262004c79565b9190506200846f838b62004c79565b519384101562004c3057620084a3936003916200848d858b62004c79565b5116600052811b01602052876000205562004c12565b62008375565b5094620084cc92975062007e9891939450620084c590620312cf565b93620311b3565b9260005b8351811015620079c5578062000ef0620079b6620084ef938762004c79565b620084d0565b8195949395519080821015620029425760059182036200870957505050604091828501906200853960a06200852e818551015162004c22565b519351015162004c46565b51928251845103620086b85760005b83518110156200859f576200855e818562004c79565b5190606482101562004c30576003620085999260018060a01b038b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008548565b509092919260005b84518110156200863957620085bd818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b01602052620085f6886000205462007da7848962004c79565b62008602848a62004c79565b519283101562004c3057600362000ef09362008633968e5116600052811b01602052896000205562000ee962031637565b620085a7565b509593926200864a919250620312cf565b91805193620086598562002a97565b6001855260203681870137516001600160a01b0316620086798562004c22565b525194620086878662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620086b2938762004c79565b62008693565b845162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029425760060362008971575050509060408092016200873960c08251015162004c22565b51946200875060a06200852e818551015162004c22565b5192865183510362008920578651845103620088d45760005b8751811015620087cd576200877f818562004c79565b5190606482101562004c3057620087c7916003906001600160a01b03620087a7848d62004c79565b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008769565b509092919260005b87518110156200888057620087eb818662004c79565b5160648082101562004c30576001600160a01b0392916003908462008811858e62004c79565b5116600052811b0160205262008831886000205462007da7848962004c79565b6200883d848a62004c79565b519283101562004c3057600362000ef0936200887a96620088608f889062004c79565b5116600052811b01602052896000205562000ee962031637565b620087d5565b509592620088959192506200797690620312cf565b925194620088a38662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620088ce938762004c79565b620088af565b845162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029425760070362008ac0575050506040809101936200899d60c08651015162004c22565b5192620089af60a08751015162004c22565b5195515191620089c7855188511462000ee962031533565b60005b855181101562007b645762008aba9062000ef06001600160a01b038260028862008aa28e62008a978e62008a8d8f8962008a058a8562004c79565b511660005262008a418962008a39816103209a8b60205262008a3360ff8760002054161562000ee962031604565b62004c79565b519662004c79565b51968a62008a7783519b8c9662008a58886200299e565b600188526060602089019860008a528781019b8c52019b8c5262004c79565b511660005260205260002097511515886200572c565b511515866200573d565b516001850162005659565b5191015562008ab2838a62004c79565b511662006707565b620089ca565b8251959695939492818510156200294257600894850362008bb75750505062008af260c0604080950151015162004c22565b519360005b855181101562008ba25762008b9c906001600160a01b038062008b1b838a62004c79565b5116600052610320908160205262008b7160ff62008b486001828c600020541615151462000ee962031563565b8262008b55868d62004c79565b5116600052836020528960002054891c161562000ee9620315cb565b62008b7d838a62004c79565b51166000526020528560002061010061ff001982541617905562004c12565b62008af7565b509490935060209250620079d9915062004c12565b805182811015620029425760090362008c8b5750505062008be160c0604080950151015162004c22565b519360005b855181101562008ba25762008c8590866001600160a01b038062008c0b848462004c79565b511660005262008c5e6001898362008c4087610320978860205262008a338660ff8097600020541615151462000ee962031563565b5116600052846020528a600020548a1c1615151462000ee962031596565b62008c6a838a62004c79565b51166000526020528560002061ff0019815416905562004c12565b62008be6565b809796949293959751828110156200294257600a0362008d69575050505060408094019162008cd060a062008cc560c08651015162004c22565b519451015162004c22565b519162008ce5845184511462000ee962031533565b60005b8451811015620079c55762008d63906001600160a01b038062008d0c838962004c79565b51166000526103208060205262008d33600160ff8c600020541615151462000ee962031563565b62008d3f838862004c79565b519162008d4d848a62004c79565b5116600052602052600289600020015562004c12565b62008ce8565b8097959751828110156200294257600b0362008e38575050505060408092019362008d9960c08651015162004c22565b519451519162008db1865184511462000ee962031533565b60005b8651811015620079c55762008e329062000ef06001600160a01b038062008ddc848c62004c79565b51166000526103208060205262008e03600160ff8b600020541615151462000ee962031563565b62008e0f848962004c79565b519162008e1d858d62004c79565b51166000526020526001886000200162005659565b62008db4565b8097949593969751828110156200294257600c0362008f8f5750505060400160609182825101519362008e6b856202c2eb565b60005b855181101562008f795760e062008e8a82878751015162004c79565b5101511562008f115762008eae62008ea782878751015162004c79565b5162005c60565b610322805460001992919083810190811162001de85762008ed08a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005c20565b5001805460ff1916905562004c12565b62008e6e565b62008f2c62008f2582878751015162004c79565b5162005cac565b610322805460001992919083810190811162001de85762008f4e8a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005be0565b50959150935060209250620079d9915062004c12565b809796959392949751828110156200294257600d03620090e457505060400194602062008fc160a08851015162004c22565b51965101519162008fd687518451146202c9e4565b60005b875181101562007b64578080878a62008ff762009086958962004c79565b51156200908c57620090576200903e8483620090296200901d6200906298889762004c79565b5161032254116202ca6d565b62008a338d620090456200903e858562004c79565b5162005c20565b509060ff9889920154901c166202cac5565b50015416156202cb26565b86620090736200903e838c62004c79565b5001805460ff1916600117905562004c12565b62008fd9565b62009057620090cc8483620090b7620090ab620090d398889762004c79565b5161032354116202ca6d565b62008a338d62009045620090cc858562004c79565b5162005be0565b8662009073620090cc838c62004c79565b809794939751828110156200294257600e03620091ca5750506040019160206200911360a08551015162004c22565b5193510151956200912884518851146202c9e4565b60005b845181101562007b6457806200914662009152928a62004c79565b51620091585762004c12565b6200912b565b6200917462009168828862004c79565b5161032254116202cb87565b620091b9876200919e6200918d6200903e858b62004c79565b5060ff9283910154891c166202cbe0565b88620091af6200903e858b62004c79565b500154166202cc42565b8662008efb6200903e838962004c79565b80919293509694959651828110156200294257600f03620092ee575050604001606091828251015193620091fe856202c2eb565b60005b855181101562008f795760e06200921d82878751015162004c79565b510151156200928d576200923a62008ea782878751015162004c79565b610322805460001992919083810190811162001de8576200925c8a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005c20565b62009201565b620092a162008f2582878751015162004c79565b610322805460001992919083810190811162001de857620092c38a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005be0565b8091929394969550518281101562002942576010036200939357505060400151906200932360a0608084015193015162004c22565b519362009338835186511462000ee962031533565b60005b835181101562009380578062000ef06200935a6200937a938762004c79565b51620093668162002edc565b62009372838a62004c79565b51906202c1af565b6200933b565b5093509160209150620079d99062004c12565b80959295518281101562002942576011036200961c57505090604080940191620093c860a062008cc560c08651015162004c22565b5191620093d984518451146202c163565b60005b845181101562009451576200944b9062000ef06001600160a01b038062009404848a62004c79565b511660005261032580602052620094258b600020546200685b868b62004c79565b91909262009434868c62004c79565b51166000526020528a6000205562000ee9620314e9565b620093dc565b5093945091620094629150620311b3565b90610326928354946200947b620080b685518862006271565b91600093845b888110620095dc575060005b865181101562009534576000805b8a8110620094e5575b5015620094bd575b620094b79062004c12565b6200948d565b94620094b790620094dc906001600160a01b036200823e898b62004c79565b959050620094ac565b620094f08162004de9565b90546001600160a01b0360039290921b1c81169062009510858c62004c79565b5116146200952957620095239062004c12565b6200949b565b5050600138620094a4565b50965094909350620095468362004d95565b805191906001600160401b038311620029ba57602090620095678462004f2a565b0190600052602060002060005b838110620095be575050505060005b8281106200959b57505050620079d960209162004c12565b620095b89062000ef06001600160a01b03620019d0838662004c79565b62009583565b82516001600160a01b03168183015560209092019160010162009574565b946200960f6200961691620095f18862004de9565b905460039190911b1c6001600160a01b031662001a9c828962004c79565b9562004c12565b62009481565b80518281101562002942576012036200988b5750506040809401916200964d60a062008cc560c08651015162004c22565b51916200965e84518451146202c163565b60005b8451811015620096b057620096aa9062000ef06001600160a01b038062009689848a62004c79565b511660005261032580602052620094258b6000205462007da7868b62004c79565b62009661565b509491509291620096c190620311b3565b906103268054620096d28162004d95565b9260009485925b808410620097865750505050620096f08362004d95565b805191906001600160401b038311620029ba57602090620097118462004f2a565b0190600052602060002060005b83811062009768575050505060005b8281106200974557505050620079d960209162004c12565b620097629062000ef06001600160a01b03620019d0838662004c79565b6200972d565b82516001600160a01b0316818301556020909201916001016200971e565b9297600097929597949194998a5b86518110156200987957620097a98b62004de9565b90546001600160a01b0360039290921b1c811690620097c9838a62004c79565b511614620097e257620097dc9062004c12565b62009794565b509950976001979592979491945b8062009849575b156200980f57620098089062004c12565b92620096d9565b95620098426200980891620098248962004de9565b905460039190911b1c6001600160a01b031662001a9c828a62004c79565b9662004c12565b50620098558162004de9565b60018060a01b0391549060031b1c16600052610325602052826000205415620097f7565b509998909897959297949194620097f0565b8095929551828110156200294257601303620098ec57505060408091015101519260005b8451811015620098db578062000ef0620098ce620098d5938862004c79565b516202df19565b620098af565b50925090620079d960209162004c12565b805191808310156200294257601492830362009a8e575050506040809101906200991b60c08351015162004c22565b51926200993260a0620077f0818651015162004c22565b51956200994385518551146202cca5565b6200995285518851146202cd0b565b60005b855181101562009a39576200996b818962004c79565b5162009978828762004c79565b516064918282101562004c30576006620099989260031b0154906200606a565b90620099a5848962004c79565b51918383101562004c30576006620099c29360031b01556202cdc5565b620099ce828a62004c79565b5190620099dc838862004c79565b518181101562004c30576001600160a01b03939262009a059160039086620078ff878e62004c79565b62009a11848a62004c79565b519283101562004c3057600362000ef09362009a339662007944878e62004c79565b62009955565b50939262009a4f919296506200797690620312cf565b94519262009a5d8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b662009a88938762004c79565b62009a69565b8151818110156200294257601590810362009aba57505050506020919262000ef0620079d9926202d41e565b825191808310156200294257601692830362009b2257505050505060c0604062009ae8920151015162004c22565b519260005b8451811015620098db5762009b1c9062000ef06001600160a01b0362009b14838962004c79565b5116620066bc565b62009aed565b835181811015620029425760170362009b7b5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029425760180362009bee57505050505060c0604062009ba6920151015162004c22565b51610396805460ff191660011790559260005b8451811015620098db5762009be89062000ef06001600160a01b0362009be0838962004c79565b511662006671565b62009bb9565b839796975181811015620029425760190362009d6257505050505060008080604080940160a08082510151805162009d29575b5050519060e08201519162009c456200685460c060018060a01b0393015162004c22565b511690602083519301915af1903d1562009d20573d9162009c668362002e73565b9262009c758351948562002ab3565b83523d6000602085013e5b1562009c95575050620079d960209162004c12565b62004c0e925062009d0181519260008051602062031c88833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b8385015283815162009cf0816059946020868601910162002d20565b810103603981018552018362002ab3565b5162461bcd60e51b815260206004820152918291602483019062002d45565b60609162009c80565b62009d349062004c22565b515162009d43575b8062009c21565b819250620068549062009d599251015162004c22565b51903862009d3c565b8351818110156200294257601a0362009e62575050505062009d8d60a0604080940151015162004c22565b519062009d9e60038351146202c163565b62009da98262004c22565b519262009dc262009dba8462004c46565b519362004c57565b519262009e2857505091620079d99160016020941460001462009e215762009e019062009df46103919182546200606a565b90915562000ee962031484565b62000ef061039262009e14815462006057565b90915562000ee9620314be565b5062004c12565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b90919280945051818110156200294257601b036200a2f5575050505050919062009ea261038f54620061b062009e97620313c0565b612710831062004bdf565b505062009eae62031484565b506000805b606481106200a284575b505062009ec96200618c565b62009ed76107345462004d95565b9060009485935b60648510156200a2775760ff60078660031b015416156200a0365760009560028660031b0154156200a02757869796975b62004c305760048660031b01548810156200a00e5762009f37886004600389901b0162004e91565b600160a01b6001900391549060031b1c1696876000528660031b6003016020526040978589600020549062009f6c9162005ebb565b999062009f7862031484565b62009f839162004bdf565b6000998960031b6002015462009f999162005ebb565b919062009fa562031484565b62009fb09162004bdf565b828b526103276020528a209081549062009fca916200606a565b90915562009fd762031484565b62009fe29162004bdf565b62009fee828862004c79565b5262009ffa9062004c12565b976200a0069062004c12565b979662009f0f565b91946200a01e9196975062004c12565b93909462009ede565b91946200a01e91965062004c12565b949592915092505b6200a0498262004d95565b91600091825b8281106200a1e157505050610328908154926200a071620080b6858462006271565b9360009081905b8082106200a1a657505060005b8381106200a1025750508351939150506001600160401b038311620029ba576020906200a0b28462004eef565b0190600052602060002060005b8381106200a0e45750505050620079d960209160006103915560006103925562004c12565b82516001600160a01b0316818301556020909201916001016200a0bf565b6000805b8381106200a15e575b50156200a128575b6200a1229062004c12565b6200a085565b906200a122906200a155906001600160a01b036200a147858762004c79565b511662001a9c828a62004c79565b9190506200a117565b6001600160a01b03806200a173858862004c79565b5116906200a182838b62004c79565b5116146200a19b576200a1959062004c12565b6200a106565b50506001386200a10f565b90916200824c6200a1da916200a1bc8562004dcd565b905460039190911b1c6001600160a01b031662001a9c828b62004c79565b906200a078565b6000805b8581106200a22f575b50156200a207575b6200a2019062004c12565b6200a04f565b926200a201906200a226906001600160a01b036200823e878662004c79565b9390506200a1f6565b6001600160a01b03806200a244858762004c79565b5116906200a253838a62004c79565b5116146200a26c576200a2669062004c12565b6200a1e5565b50506001386200a1ee565b949592915092506200a03e565b806003959394951b9060ff600783015416156200a2ea576200a2d4620074b662000ef0946200a2c86200a2e09560026200a2be8762005d82565b9101549062005ebb565b929062000ee962031484565b939062000ee962031484565b9392919362009eb3565b509392919362009ebd565b8351818110156200294257601c036200a34e5760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b8351818110156200294257601d036200a374575b5050505050620079d960209162004c12565b8351818110156200294257601e146200a362578351818110156200294257601f036200a3ca57505050506020916200a3c06200a3b96040620079d99401515162004c22565b516202df4f565b913880806200a362565b83518181101562002942576020036200a3f0575b5050505050620079d96020916200a3c0565b835181811015620029425760218091036200a40d575b506200a3de565b8451828110156200a53a576022036200a44d57505050505050620079d960209161039660ff1981541690556200a44262004fba565b91388080806200a406565b8451828110156200a53a576023036200a474575b505050505050620079d96020916200a442565b845194828610156200a53a5760248096036200a492575b506200a461565b8051838110156200a526576025146200a48b5751918210156200a5125750036200a4d65750506020916200a4ca620079d9926202d41e565b9138808080806200a48b565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200a5ae906001600160a01b031662006647565b620076bc565b6200a5bf8162004e3d565b9054855160039290921b1c6001600160a01b039081169116146200a5ee576200a5e89062004c12565b620076aa565b50505060013880620076b3565b600281036200a61f5760405162461bcd60e51b81528062004c0e60048201620075e4565b6001146200a62a5750565b6200a6386103235462005242565b805190600160401b8211620029ba576106bb54826106bb5580831062013bdd575b506020016106bb60005260206000206000915b83831062013bbc575050505060005b610323548110156200a6b4578062000ef06200a69b6200a6ae9362005be0565b506200a6a78362005c00565b90620140e3565b6200a67b565b506200a6c36103225462005242565b805190600160401b8211620029ba576106ba54826106ba5580831062013b20575b506020016106ba60005260206000206000915b83831062013aff575050505060005b610322548110156200a738578062000ef06200a7266200a7329362005c20565b506200a6a78362005c40565b6200a706565b5060005b6064811015806200a8f557600160ff61039f8460031b0154161515146200a770575b506200a76a9062004c12565b6200a73c565b916000835b62004c305761039c8360031b01548110156200a7df576200a7d6929350600092816200a7aa859361039c8860031b0162004e91565b9054600391821b1c6001600160a01b031660009081529087901b61039b01602052604081205562004c12565b9093926200a775565b5091604051906200a7f08262002a5e565b6000825262004c30578051906001600160401b038211620029ba576020906200a8218361039c8660031b0162004fcd565b0161039c8360031b01600052602060002060005b8381106200a8d75750505050600381901b61039f8101805460ff1916905560006103988201819055610399820181905561039a82015561039d01546200a76a91906200a8819062002b98565b601f908181116200a8ac575b5050600061039d8260031b0155600061039e8260031b0155906200a75e565b6200a8cf9161039d8460031b016000526020600020910160051c81019062004ed6565b38806200a88d565b82516001600160a01b0316818301556020909201916001016200a835565b505060005b6064811062013a71575060005b610321548110156200a96257806200a9236200a95c9262004e05565b60018060a01b0391549060031b1c166000526106b860205260006002604082208281556200a95460018201620052d3565b015562004c12565b6200a907565b506200a9716103215462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106b954836106b95580841062013a4f575b50016106b9600052602060002060005b83811062013a31575050505060005b610321548110156200aa35576200a9da8162004e05565b90546106b95460039290921b1c6001600160a01b0316919081101562004c30576106b960005260008051602062031ca8833981519152810180546001600160a01b0319169092179091556200aa2f9062004c12565b6200a9c3565b509060005b610321548110156200aaf457806200aa566200aaa99262004e05565b9060018060a01b03918291549060031b1c16600052610320602052604080600020916200aa838462004e05565b90549060031b1c166000526106b8602052600020908082036200aaaf575b505062004c12565b6200aa3a565b600280916200aad560ff6200aac881845416876200572c565b825460081c16856200573d565b6200aae7600182016001860162013d7f565b015491015538806200aaa1565b5060005b6106c2548110156200ab4657806200ab146200ab409262004e21565b60018060a01b0391549060031b1c166000526106c160205262000ef06040600020606481019062004ed6565b6200aaf8565b506200ab5561032a5462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106c254836106c25580841062013a0f575b50016106c2600052602060002060005b838110620139f1575050505060005b61032a548110156200abea578062000ef06200abc76200abe49362004e3d565b905460039190911b1c6001600160a01b0316620019dd8362004e21565b6200aba7565b5060005b61032a548110156200ac7557806200ac0a6200ac5c9262004e3d565b9060018060a01b03918291549060031b1c16600052610329602052604080600020916200ac378462004e3d565b90549060031b1c166000526106c1602052600020908082036200ac6257505062004c12565b6200abee565b6200ac6d9162014177565b38806200aaa1565b5061032b80546000905b60648210620139d857505061038f546107275550610390546107285561039154610729556103925461072a55610393546001600160401b038111620029ba57600160401b8111620029ba5761072b548161072b55808210620139aa575b5061072b60009081527f5633a4c6d9b97531e399e3f8ca4246ad061775375fff6b4bcce16d5826063f97805460008051602062031b6883398151915291905b8484106201398857505050505061039454600160401b8111620029ba5761072c548161072c5580821062013946575b5061072c600090815260008051602062031c088339815191527faa8d8c5069de1a96df104a74e1e1a7598fabc0d586553b00a0e002f860df95975b83831062013928575050610395549150506001600160401b038111620029ba57600160401b8111620029ba5761072d548161072d55808210620138fa575b5061072d60009081527f9b9d7759e89c320201cfa750871914a6fc9f76735934f3be5ccb8595391f512c805460008051602062031ac883398151915291905b848410620138d857505050505060ff6103965416151560ff801961072e541691161761072e5560005b6106be548110156200ae7557806200ae476200ae6f9262004e59565b905460039190911b1c6001600160a01b031660009081526106bd602052604081205562004c12565b6200ae2b565b506200ae846103265462004d95565b8051906001600160401b038211620029ba576020906200aea48362004f74565b016106be600052602060002060005b838110620138ba575050505060005b610326548110156200af05578062000ef06200aee26200aeff9362004de9565b905460039190911b1c6001600160a01b0316620019dd8362004e59565b6200aec2565b5060005b610326548110156200af7457806200af256200af6e9262004de9565b9060018060a01b03918291549060031b1c1660005261032560205260408060002054916200af538462004de9565b90549060031b1c166000526106bd6020526000205562004c12565b6200af09565b5060005b6106c0548110156200afc257806200af946200afbc9262004e75565b905460039190911b1c6001600160a01b031660009081526106bf602052604081205562004c12565b6200af78565b506200afd16103285462004d95565b8051906001600160401b038211620029ba576020906200aff18362004f97565b016106c0600052602060002060005b8381106201389c575050505060005b610328548110156200b052578062000ef06200b02f6200b04c9362004dcd565b905460039190911b1c6001600160a01b0316620019dd8362004e75565b6200b00f565b5060005b610328548110156200b0c157806200b0726200b0bb9262004dcd565b9060018060a01b03918291549060031b1c1660005261032760205260408060002054916200b0a08462004dcd565b90549060031b1c166000526106bf6020526000205562004c12565b6200b056565b506106c2546000805b82811062013857575b501562013821575b5060005b60208301519081518110156200b1375762000ef0620077166200b111620076f66020620067ee866200b1319862004c79565b86516001600160a01b031660009081526106c16020526040902062022f40565b6200b0df565b505060005b602083015180518210156200b18457620076f66020620067ee846200b1619462004c79565b90606482101562004c30576200b17e9142906106c3015562004c12565b6200b13c565b5050906000905b602081015180518310156200fe7557826200b1a69162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036200b77057604001906200b1e760c08351015162004c22565b51936200b1fe60a0620077f0818651015162004c22565b51916200b20f86518551146202cca5565b6200b21e86518451146202cd0b565b60005b86518110156200b377576200b237818662004c79565b51606481101562004c3057600160ff61039f6200b25d9360031b0154161515146202cd6d565b6200b269818562004c79565b516200b276828762004c79565b5190606482101562004c305761039e6200b2969260031b0154906200606a565b906200b2a3838862004c79565b5191606483101562004c305761039e6200b2c29360031b01556202cdc5565b6200b2ce818562004c79565b516200b2db828762004c79565b5190606482101562004c30576200b31d9161039b906001600160a01b036200b304868d62004c79565b511660005260031b01602052604060002054906200606a565b91906200b32b828862004c79565b5190606482101562004c30576200b3719362000ef09261039b906001600160a01b036200b359878f62004c79565b511660005260031b016020526040600020556202ce24565b6200b221565b50926200b38e919250620084c590959495620312cf565b916040516200b39d8162002a5e565b6000815260003681376000945b80518610156200b756576200b3c0868262004c79565b516107a0526200b3d1855162004d95565b966000946200b3e1845162004d95565b6103805260009460005b88518110156200b4b2578a896200b41b6001600160a01b036200b40f858462004c79565b51166107a0516203110f565b15806200b46b575b6200b43c575b50506200b4369062004c12565b6200b3eb565b986200b4609162001a9c82859c62007f886200b4369760018060a01b039262004c79565b9790508a896200b429565b50505060646107a051101562004c30576001600160a01b036200b48f828b62004c79565b511660005261039b6107a05160031b016020528a8960406000205415156200b423565b50909895979498969291939660005b88518110156200b54f5760646107a051101562004c30576001600160a01b03806200b4ed838c62004c79565b511660005261039b6107a05160031b01602052604060002054156200b51f575b506200b5199062004c12565b6200b4c1565b819b6200b547916200b5366200b519948d62004c79565b511662001a9c826103805162004c79565b9a906200b50d565b509850969592919093966107a0516064811015806104805262004c305760031b61039c0154986200b585620080b6898c62006271565b6108005260006102005260006107c0525b6104805162004c30576107c0518a8110156200b65f576200b5cc6200b5ec9160006104805261039c6107a05160031b0162004e91565b9054610380516001600160a01b03939260031b9190911c83169062031166565b156200b60c575b506200b6026107c05162004c12565b6107c0526200b596565b6000610480526200b62b6107c05161039c6107a05160031b0162004e91565b90549060031b1c166200b645610200516108005162004c79565b526200b6546102005162004c12565b61020052386200b5f3565b50979294959093985095909560005b8281106200b70a575050506104805162004c305761080051516001600160401b038111620029ba576200b6ac8161039c6107a05160031b0162004fcd565b6020610800510161039c6107a05160031b01600052602060002060005b8381106200b6ec57505050506200b6e09062004c12565b9492959091956200b3aa565b82516001600160a01b0316818301556020909201916001016200b6c9565b6200b750906001600160a01b036200b723828562004c79565b51166200b737610200516108005162004c79565b526200b7466102005162004c12565b6102005262004c12565b6200b66e565b5050939092506200b768915062004c12565b90916200b18b565b906020829493940151602681101562002942576002036200b921576040809201908151938451916200b7c76200b7ab60a08098015162004c22565b51966200b7bc818751015162004c46565b519551015162004c57565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b86518110156200b90e576200b801818862004c79565b51606481101562004c305760ff61039f6200b8239260031b015416156202ce7d565b6200b82f818862004c79565b51606481101562004c305760031b61039f01805460ff191660011790556200b858818562004c79565b516200b865828962004c79565b5190606482101562004c305761039d6200b8839260031b0162005659565b6200b88f818662004c79565b516200b89c828962004c79565b51606481101562004c305760031b61039901556200b8bb818762004c79565b516200b8c8828962004c79565b51606481101562004c305760031b61039a01556200b8e7818862004c79565b5190606482101562004c3057600061039e6200b9089360031b015562004c12565b6200b7eb565b509592509350506200b768915062004c12565b9092916020840151602681101562002942576003036200bf3f5760408401906200b95060c08351015162004c22565b51906200b96760a0620077f0818651015162004c22565b51936200b97c835185511462000ee962031533565b6200b98f835186511462000ee962031533565b60005b83518110156200b9ec576200b9a8818662004c79565b5190606482101562004c305761039b6200b9e69260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200b992565b509095919560005b87518110156200bb36576200ba0a818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200ba4360406000205462007da7838962004c79565b906200ba50838862004c79565b5191606483101562004c305761039b6200ba889360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200ba94818662004c79565b51606481101562004c305761039b906001600160a01b036200bab7848c62004c79565b511660005260031b016020526200bad96040600020546200685b838962004c79565b91906200bae7828862004c79565b5190606482101562004c30576200bb309361039b62000ef0938d6200bb148760018060a01b039262004c79565b511660005260031b0160205260406000205562000ee96203169c565b6200b9f4565b50926200bb55919294506200bb4e90969596620312cf565b94620311b3565b92604051906200bb658262002a97565b6001825260203681840137516001600160a01b03166200bb858262004c22565b526000945b80518610156200b756576200bba0868262004c79565b51610580526200bbb1855162004d95565b966000946200bbc1845162004d95565b6106a05260009460005b88518110156200bc92578a896200bbfb6001600160a01b036200bbef858462004c79565b5116610580516203110f565b15806200bc4b575b6200bc1c575b50506200bc169062004c12565b6200bbcb565b986200bc409162001a9c82859c62007f886200bc169760018060a01b039262004c79565b9790508a896200bc09565b505050606461058051101562004c30576001600160a01b036200bc6f828b62004c79565b511660005261039b6105805160031b016020528a8960406000205415156200bc03565b50909895979498969291939660005b88518110156200bd3657606461058051101562004c30576001600160a01b036200bccc828b62004c79565b511660005261039b6105805160031b01602052604060002054156200bcfd575b6200bcf79062004c12565b6200bca1565b996200bcf7906200bd2d906001600160a01b036200bd1c8e8d62004c79565b511662001a9c826106a05162004c79565b9a90506200bcec565b50985096959291909396610580516064811015806105005262004c305760031b61039c0154986200bd6c620080b6898c62006271565b6105205260006105c05260006106e0525b6105005162004c30576106e0518a8110156200be48576200bdb36200bdd09160006105005261039c6105805160031b0162004e91565b90546106a05160039290921b1c6001600160a01b03169062031166565b156200bdef575b6200bde56106e05162004c12565b6106e0526200bd7d565b6000610500526200be0e6106e05161039c6105805160031b0162004e91565b60018060a01b0391549060031b1c166200be2f6105c0516105205162004c79565b526200be3e6105c05162004c12565b6105c0526200bdd7565b50979294959093985095909560005b8281106200bef3575050506105005162004c305761052051516001600160401b038111620029ba576200be958161039c6105805160031b0162004fcd565b6020610520510161039c6105805160031b01600052602060002060005b8381106200bed557505050506200bec99062004c12565b9492959091956200bb8a565b82516001600160a01b0316818301556020909201916001016200beb2565b6200bf39906001600160a01b036200bf0c828562004c79565b51166200bf206105c0516105205162004c79565b526200bf2f6105c05162004c12565b6105c05262004c12565b6200be57565b90926020810151602681101562002942576004036200c5645760400160c0936200bf7d6200bf71868451015162004c22565b51958351015162004c46565b51906200bf9460a0620077f0818651015162004c22565b51936200bfa9875184511462000ee962031533565b6200bfbc875185511462000ee962031533565b6200bfcf875186511462000ee962031533565b60005b87518110156200c039576200bfe8818662004c79565b5190606482101562004c30576200c0339161039b906001600160a01b036200c011848d62004c79565b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200bfd2565b509095919593929360005b83518110156200c198576200c05a818762004c79565b51606481101562004c305761039b906001600160a01b036200c07d848862004c79565b511660005260031b016020526200c09f60406000205462007da7838862004c79565b906200c0ac838962004c79565b5191606483101562004c30576200c0f19261039b906001600160a01b036200c0d5878b62004c79565b511660005260031b0160205260406000205562000ee962031637565b6200c0fd818762004c79565b51606481101562004c305761039b906001600160a01b036200c120848c62004c79565b511660005260031b016020526200c1426040600020546200685b838862004c79565b9190506200c151818862004c79565b5191606483101562004c30576200c1929261039b906001600160a01b036200c17a858e62004c79565b511660005260031b0160205260406000205562004c12565b6200c044565b5091936200c1b491935062007e98620084c591979697620312cf565b6000945b80518610156200b756576200c1ce868262004c79565b51610860526200c1df855162004d95565b966000946200c1ef845162004d95565b6107605260009460005b88518110156200c2c0578a896200c2296001600160a01b036200c21d858462004c79565b5116610860516203110f565b15806200c279575b6200c24a575b50506200c2449062004c12565b6200c1f9565b986200c26e9162001a9c82859c62007f886200c2449760018060a01b039262004c79565b9790508a896200c237565b505050606461086051101562004c30576001600160a01b036200c29d828b62004c79565b511660005261039b6108605160031b016020528a8960406000205415156200c231565b50909895979498969291939660005b88518110156200c35d57606461086051101562004c30576001600160a01b03806200c2fb838c62004c79565b511660005261039b6108605160031b01602052604060002054156200c32d575b506200c3279062004c12565b6200c2cf565b819b6200c355916200c3446200c327948d62004c79565b511662001a9c826107605162004c79565b9a906200c31b565b50985096959291909396610860516064811015806108e05262004c305760031b61039c0154986200c393620080b6898c62006271565b6103005260006103e0526000610840525b6108e05162004c3057610840518a8110156200c46d576200c3da6200c3fa9160006108e05261039c6108605160031b0162004e91565b9054610760516001600160a01b03939260031b9190911c83169062031166565b156200c41a575b506200c4106108405162004c12565b610840526200c3a4565b60006108e0526200c4396108405161039c6108605160031b0162004e91565b90549060031b1c166200c4536103e0516103005162004c79565b526200c4626103e05162004c12565b6103e052386200c401565b50979294959093985095909560005b8281106200c518575050506108e05162004c305761030051516001600160401b038111620029ba576200c4ba8161039c6108605160031b0162004fcd565b6020610300510161039c6108605160031b01600052602060002060005b8381106200c4fa57505050506200c4ee9062004c12565b9492959091956200c1b8565b82516001600160a01b0316818301556020909201916001016200c4d7565b6200c55e906001600160a01b036200c531828562004c79565b51166200c5456103e0516103005162004c79565b526200c5546103e05162004c12565b6103e05262004c12565b6200c47c565b92906020840151602681101562002942576005036200cb0a5760408401906200c59760a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156200c600576200c5bc818562004c79565b5190606482101562004c305761039b6200c5fa9260018060a01b038a511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200c5a6565b509060005b83518110156200c6a5576200c61b818562004c79565b51606481101562004c305761039b9060018060a01b0389511660005260031b016020526200c65460406000205462007da7838862004c79565b91906200c662828762004c79565b5190606482101562004c30576200c69f9361039b62000ef09360018060a01b038d511660005260031b0160205260406000205562000ee962031637565b6200c605565b50916200c6b69194959350620312cf565b92604051926200c6c68462002a97565b6001845260203681860137516001600160a01b03166200c6e68462004c22565b52604051926200c6f68462002a5e565b6000845260003681376000945b80518610156200b756576200c719868262004c79565b51610640526200c72a855162004d95565b966000946200c73a845162004d95565b6104a05260009460005b88518110156200c80b578a896200c7746001600160a01b036200c768858462004c79565b5116610640516203110f565b15806200c7c4575b6200c795575b50506200c78f9062004c12565b6200c744565b986200c7b99162001a9c82859c62007f886200c78f9760018060a01b039262004c79565b9790508a896200c782565b505050606461064051101562004c30576001600160a01b036200c7e8828b62004c79565b511660005261039b6106405160031b016020528a8960406000205415156200c77c565b50909895979498969291939660005b88518110156200c8af57606461064051101562004c30576001600160a01b036200c845828b62004c79565b511660005261039b6106405160031b01602052604060002054156200c876575b6200c8709062004c12565b6200c81a565b996200c870906200c8a6906001600160a01b036200c8958e8d62004c79565b511662001a9c826104a05162004c79565b9a90506200c865565b50985096959291909396610640516064811015806104405262004c305760031b61039c0154986200c8e5620080b6898c62006271565b610540526000610360526000610460525b6104405162004c3057610460518a8110156200c9c1576200c92c6200c9499160006104405261039c6106405160031b0162004e91565b90546104a05160039290921b1c6001600160a01b03169062031166565b156200c968575b6200c95e6104605162004c12565b610460526200c8f6565b6000610440526200c9876104605161039c6106405160031b0162004e91565b60018060a01b0391549060031b1c166200c9a8610360516105405162004c79565b526200c9b76103605162004c12565b610360526200c950565b50979294959093985095909560005b8281106200ca6c575050506104405162004c305761054051516001600160401b038111620029ba576200ca0e8161039c6106405160031b0162004fcd565b6020610540510161039c6106405160031b01600052602060002060005b8381106200ca4e57505050506200ca429062004c12565b9492959091956200c703565b82516001600160a01b0316818301556020909201916001016200ca2b565b6200cab2906001600160a01b036200ca85828562004c79565b51166200ca99610360516105405162004c79565b526200caa86103605162004c12565b6103605262004c12565b6200c9d0565b60405162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b926020810151602681101562002942576006036200d0ed576040016200cb3560c08251015162004c22565b51936200cb4c60a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156200cbcc576200cb7b818562004c79565b5190606482101562004c30576200cbc69161039b906001600160a01b036200cba4848c62004c79565b511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200cb65565b509060005b86518110156200cc6e576200cbe7818562004c79565b51606481101562004c305761039b906001600160a01b036200cc0a848b62004c79565b511660005260031b016020526200cc2c60406000205462007da7838862004c79565b91906200cc3a828762004c79565b5190606482101562004c30576200cc689362000ef09261039b906001600160a01b036200c0d5878f62004c79565b6200cbd1565b50916200cc85919350620084c590959495620312cf565b91604051926200cc958462002a5e565b6000845260003681376000945b80518610156200b756576200ccb8868262004c79565b51610420526200ccc9855162004d95565b966000946200ccd9845162004d95565b6102e05260009460005b88518110156200cdaa578a896200cd136001600160a01b036200cd07858462004c79565b5116610420516203110f565b15806200cd63575b6200cd34575b50506200cd2e9062004c12565b6200cce3565b986200cd589162001a9c82859c62007f886200cd2e9760018060a01b039262004c79565b9790508a896200cd21565b505050606461042051101562004c30576001600160a01b036200cd87828b62004c79565b511660005261039b6104205160031b016020528a8960406000205415156200cd1b565b50909895979498969291939660005b88518110156200ce4757606461042051101562004c30576001600160a01b03806200cde5838c62004c79565b511660005261039b6104205160031b01602052604060002054156200ce17575b506200ce119062004c12565b6200cdb9565b819b6200ce3f916200ce2e6200ce11948d62004c79565b511662001a9c826102e05162004c79565b9a906200ce05565b50985096959291909396610420516064811015806107405262004c305760031b61039c0154986200ce7d620080b6898c62006271565b6102c05260006101c0526000610600525b6107405162004c3057610600518a8110156200cf57576200cec46200cee49160006107405261039c6104205160031b0162004e91565b90546102e0516001600160a01b03939260031b9190911c83169062031166565b156200cf04575b506200cefa6106005162004c12565b610600526200ce8e565b6000610740526200cf236106005161039c6104205160031b0162004e91565b90549060031b1c166200cf3d6101c0516102c05162004c79565b526200cf4c6101c05162004c12565b6101c052386200ceeb565b50979294959093985095909560005b8281106200d002575050506107405162004c30576102c051516001600160401b038111620029ba576200cfa48161039c6104205160031b0162004fcd565b60206102c0510161039c6104205160031b01600052602060002060005b8381106200cfe457505050506200cfd89062004c12565b9492959091956200cca2565b82516001600160a01b0316818301556020909201916001016200cfc1565b6200d048906001600160a01b036200d01b828562004c79565b51166200d02f6101c0516102c05162004c79565b526200d03e6101c05162004c12565b6101c05262004c12565b6200cf66565b60405162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b602081949293940151602681101562002942576007036200d28857604001916200d11c60c08451015162004c22565b51916200d12e60a08551015162004c22565b51935151916200d146845186511462000ee962031533565b60005b84518110156200d276576001600160a01b03806200d168838862004c79565b51166000526106b8806020526200d18c60ff604060002054161562000ee962031604565b60026200d19a848862004c79565b516200d2046200d1ab868c62004c79565b519162008a978b604051966200d1c1886200299e565b60018852886200d1e88b60208b01946000865260408c0197885260608c01998a5262004c79565b511660005260205262008a8d604060002097511515886200572c565b519101556200d214828762004c79565b516106b954929116600160401b831015620029ba5760018301806106b95583101562004c30576106b960005260008051602062031ca883398151915290920180546001600160a01b0319169092179091556200d2709062004c12565b6200d149565b5094915092506200b768915062004c12565b6020810151602681101562002942576008036200d3765760c060406200d2b2920151015162004c22565b519160005b83518110156200d367576200d361906001600160a01b03806200d2db838862004c79565b51166000526106b890816020526200d304600160ff6040600020541615151462000ee962031563565b806200d311848962004c79565b5116600052816020526200d33560ff60406000205460081c161562000ee9620315cb565b6200d341838862004c79565b5116600052602052604060002061010061ff001982541617905562004c12565b6200d2b7565b50926200b76891925062004c12565b6020810151602681101562002942576009036200d4555760c060406200d3a0920151015162004c22565b519160005b83518110156200d367576200d44f906001600160a01b03806200d3c9838862004c79565b51166000526106b890816020526200d3f2600160ff6040600020541615151462000ee962031563565b806200d3ff848962004c79565b5116600052816020526200d427600160ff60406000205460081c1615151462000ee962031596565b6200d433838862004c79565b5116600052602052604060002061ff0019815416905562004c12565b6200d3a5565b602081015160268110156200294257600a036200d53d57604001906200d49160a06200d48660c08551015162004c22565b519351015162004c22565b51926200d4a6835185511462000ee962031533565b60005b83518110156200d52c576200d526906001600160a01b03806200d4cd838862004c79565b51166000526106b8806020526200d4f5600160ff6040600020541615151462000ee962031563565b6200d501838962004c79565b51916200d50f848962004c79565b511660005260205260026040600020015562004c12565b6200d4a9565b50939092506200b768915062004c12565b60208194939294015160268110156200294257600b036200d61d57604001926200d56c60c08551015162004c22565b51935151916200d584855184511462000ee962031533565b60005b85518110156200d60d576200d6079062000ef06001600160a01b03806200d5af848b62004c79565b51166000526106b8806020526200d5d7600160ff6040600020541615151462000ee962031563565b6200d5e3848962004c79565b51916200d5f1858c62004c79565b5116600052602052600160406000200162005659565b6200d587565b509350916200b768915062004c12565b909192602082015160268110156200294257600c036200d76857606060408301510151926200d64c846202c2eb565b60005b84518110156200d52c5760e06200d66f8260606040880151015162004c79565b510151156200d6f3576200d6976200d6908260606040880151015162004c79565b5162005cf2565b6106ba548060001981011162001de8576200d6b86005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de857600562008efb6200d6ed936000190162005c40565b6200d64f565b6200d7126200d70b8260606040880151015162004c79565b5162005ccf565b6106bb548060001981011162001de8576200d7336005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de857600562008efb6200d6ed936000190162005c00565b929190602081015160268110156200294257600d036200d8af576040019260206200d79860a08651015162004c22565b5194510151916200d7ad85518451146202c9e4565b60005b85518110156200d60d57806200d7cb6200d844928662004c79565b51156200d84a576200d7ee6200d7e2828962004c79565b516106ba54116202ca6d565b6200d81a60ff60056200d80d6200d806858c62004c79565b5162005c40565b50015460081c166202cac5565b6200d83260ff6005620090576200d806858c62004c79565b6005620090736200d806838a62004c79565b6200d7b0565b6200d8666200d85a828962004c79565b516106bb54116202ca6d565b6200d88560ff60056200d80d6200d87e858c62004c79565b5162005c00565b6200d89d60ff6005620090576200d87e858c62004c79565b6005620090736200d87e838a62004c79565b602081015160268110156200294257600e036200d9e5576040019260206200d8dc60a08651015162004c22565b5194510151916200d8f185518451146202c9e4565b60005b85518110156200d60d57806200d90f6200d981928662004c79565b51156200d987576200d9326200d926828962004c79565b516106ba54116202cb87565b6200d95760ff60056200d94a6200d806858c62004c79565b50015460081c166202cbe0565b6200d96f60ff6005620091af6200d806858c62004c79565b600562008efb6200d806838a62004c79565b6200d8f4565b6200d9a36200d997828962004c79565b516106bb54116202cb87565b6200d9bb60ff60056200d94a6200d87e858c62004c79565b6200d9d360ff6005620091af6200d87e858c62004c79565b600562008efb6200d87e838a62004c79565b909192602082015160268110156200294257600f036200db2257606060408301510151926200da14846202c2eb565b60005b84518110156200d52c5760e06200da378260606040880151015162004c79565b510151156200dab4576200da586200d6908260606040880151015162004c79565b6106ba548060001981011162001de8576200da796005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de8576005620090736200daae936000190162005c40565b6200da17565b6200dacc6200d70b8260606040880151015162004c79565b6106bb548060001981011162001de8576200daed6005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de8576005620090736200daae936000190162005c00565b9291906020810151602681101562002942576010036200dc675760400151926200db5560a0608086015195015162004c22565b51916200db6a855184511462000ee962031533565b60005b85518110156200d60d57806200db886200dbfd928862004c79565b516200db948162002edc565b6200dba0828762004c79565b51906200dbad8162002edc565b6200dbc46200dbbb62031666565b82151562004bdf565b6200dbcf8162002edc565b600181036200dc0357506200dbf36200dbe762031666565b61271083111562004bdf565b6107275562004c12565b6200db6d565b6200dc0e8162002edc565b600281036200dc2257506107285562004c12565b6200dc2d8162002edc565b600381036200dc4157506107295562004c12565b806200dc4f60049262002edc565b146200dc5c575062004c12565b61072a553862009e21565b6020810151602681101562002942576011036200df0a57604001906200dc9860a06200d48660c08551015162004c22565b51936200dca983518651146202c163565b60005b83518110156200dd29576200dd23906200dd036001600160a01b03806200dcd4848962004c79565b51166000526106bd90816020526200dcf76040600020546200685b868d62004c79565b939062000ee9620314e9565b6200dd0f848962004c79565b511660005260205260406000205562004c12565b6200dcac565b509350906200dd3890620311b3565b906106be54936200dd4f620080b684518762006271565b9060009260005b8781106200deca575060005b85518110156200de17576000805b8981106200ddc8575b50156200dd92575b6200dd8c9062004c12565b6200dd62565b936200dd8c906200ddbf906001600160a01b036200ddb1888a62004c79565b511662001a9c828862004c79565b9490506200dd81565b6200ddd38162004e59565b90546001600160a01b0360039290921b1c8116906200ddf3858b62004c79565b5116146200de0c576200de069062004c12565b6200dd70565b50506001386200dd79565b5095509392506200de288262004d95565b8051906001600160401b038211620029ba576020906200de488362004f74565b016106be600052602060002060005b8381106200deac575050505060005b8281106200de7c575050506200b7689062004c12565b6200dea69062000ef06001600160a01b036200de99838662004c79565b5116620019dd8362004e59565b6200de66565b82516001600160a01b0316818301556020909201916001016200de57565b936200defd6200df04916200dedf8762004e59565b905460039190911b1c6001600160a01b031662001a9c828862004c79565b9462004c12565b6200dd56565b6020819492940151602681101562002942576012036200e14e57604001906200df3e60a06200d48660c08551015162004c22565b51936200df4f83518651146202c163565b60005b83518110156200dfa3576200df9d906200dd036001600160a01b03806200df7a848962004c79565b51166000526106bd90816020526200dcf760406000205462007da7868d62004c79565b6200df52565b50935091906200dfb390620311b3565b6106be546200dfc28162004d95565b906000926000915b8083106200e075575050506200dfe08262004d95565b8051906001600160401b038211620029ba576020906200e0008362004f74565b016106be600052602060002060005b8381106200e057575050505060005b8281106200e034575050506200b7689062004c12565b6200e0519062000ef06001600160a01b036200de99838662004c79565b6200e01e565b82516001600160a01b0316818301556020909201916001016200e00f565b91956000959193959760005b85518110156200e13f576200e0968962004e59565b90546001600160a01b0360039290921b1c8116906200e0b6838962004c79565b5116146200e0cf576200e0c99062004c12565b6200e081565b509750956001959391955b806200e10e575b156200e0f9576200e0f29062004c12565b916200dfca565b936200defd6200e0f2916200dedf8762004e59565b506200e11a8162004e59565b60018060a01b0391549060031b1c166000526106bd602052604060002054156200e0e1565b5097969096959391956200e0da565b6020819493940151602681101562002942576013036200e1ef5760408091015101519160005b83518110156200d367576200e18a818562004c79565b51906106bc54600160401b811015620029ba5760018101806106bc5581101562004c30576106bc6000526200e1e99262000ef0916007027f0487500372b3cc67c23af8f14e14f40d94d05acb10821fef30e703b5df87397d016202de6d565b6200e174565b602081949392940151602681101562002942576014036200e72a57604001906200e21e60c08351015162004c22565b51936200e23560a0620077f0818651015162004c22565b51916200e24686518551146202cca5565b6200e25586518451146202cd0b565b60005b86518110156200e34b576200e26e818562004c79565b516200e27b828762004c79565b5190606482101562004c305761039e6200e29b9260031b0154906200606a565b906200e2a8838862004c79565b5191606483101562004c305761039e6200e2c79360031b01556202cdc5565b6200e2d3818562004c79565b516200e2e0828762004c79565b5190606482101562004c30576200e3099161039b906001600160a01b036200b304868d62004c79565b91906200e317828862004c79565b5190606482101562004c30576200e3459362000ef09261039b906001600160a01b036200b359878f62004c79565b6200e258565b50926200e362919250620084c590959495620312cf565b916040516200e3718162002a5e565b6000815260003681376000945b80518610156200b756576200e394868262004c79565b516107e0526200e3a5855162004d95565b966000946200e3b5845162004d95565b6105e05260009460005b88518110156200e486578a896200e3ef6001600160a01b036200e3e3858462004c79565b51166107e0516203110f565b15806200e43f575b6200e410575b50506200e40a9062004c12565b6200e3bf565b986200e4349162001a9c82859c62007f886200e40a9760018060a01b039262004c79565b9790508a896200e3fd565b50505060646107e051101562004c30576001600160a01b036200e463828b62004c79565b511660005261039b6107e05160031b016020528a8960406000205415156200e3f7565b50909895979498969291939660005b88518110156200e5235760646107e051101562004c30576001600160a01b03806200e4c1838c62004c79565b511660005261039b6107e05160031b01602052604060002054156200e4f3575b506200e4ed9062004c12565b6200e495565b819b6200e51b916200e50a6200e4ed948d62004c79565b511662001a9c826105e05162004c79565b9a906200e4e1565b509850969592919093966107e0516064811015806104e05262004c305760031b61039c0154986200e559620080b6898c62006271565b6107005260006103c0526000610820525b6104e05162004c3057610820518a8110156200e633576200e5a06200e5c09160006104e05261039c6107e05160031b0162004e91565b90546105e0516001600160a01b03939260031b9190911c83169062031166565b156200e5e0575b506200e5d66108205162004c12565b610820526200e56a565b60006104e0526200e5ff6108205161039c6107e05160031b0162004e91565b90549060031b1c166200e6196103c0516107005162004c79565b526200e6286103c05162004c12565b6103c052386200e5c7565b50979294959093985095909560005b8281106200e6de575050506104e05162004c305761070051516001600160401b038111620029ba576200e6808161039c6107e05160031b0162004fcd565b6020610700510161039c6107e05160031b01600052602060002060005b8381106200e6c057505050506200e6b49062004c12565b9492959091956200e37e565b82516001600160a01b0316818301556020909201916001016200e69d565b6200e724906001600160a01b036200e6f7828562004c79565b51166200e70b6103c0516107005162004c79565b526200e71a6103c05162004c12565b6103c05262004c12565b6200e642565b926020840151602681101562002942576015036200ed235760408401906200e75760c08351015162004c22565b51906200e76e60a0620077f0818651015162004c22565b51936200e783835185511462000ee962031533565b6200e796835186511462000ee962031533565b60005b83518110156200e7f3576200e7af818662004c79565b5190606482101562004c305761039b6200e7ed9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200e799565b509095919560005b87518110156200e921576200e811818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200e84a60406000205462007da7838962004c79565b906200e857838862004c79565b5191606483101562004c305761039b6200e88f9360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200e89b818662004c79565b51606481101562004c305761039b906001600160a01b036200e8be848c62004c79565b511660005260031b016020526200e8e06040600020546200685b838962004c79565b91906200e8ee828862004c79565b5190606482101562004c30576200e91b9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200e7fb565b50926200e939919294506200bb4e90969596620312cf565b92604051906200e9498262002a97565b6001825260203681840137516001600160a01b03166200e9698262004c22565b526000945b80518610156200b756576200e984868262004c79565b51610680526200e995855162004d95565b966000946200e9a5845162004d95565b6103405260009460005b88518110156200ea76578a896200e9df6001600160a01b036200e9d3858462004c79565b5116610680516203110f565b15806200ea2f575b6200ea00575b50506200e9fa9062004c12565b6200e9af565b986200ea249162001a9c82859c62007f886200e9fa9760018060a01b039262004c79565b9790508a896200e9ed565b505050606461068051101562004c30576001600160a01b036200ea53828b62004c79565b511660005261039b6106805160031b016020528a8960406000205415156200e9e7565b50909895979498969291939660005b88518110156200eb1a57606461068051101562004c30576001600160a01b036200eab0828b62004c79565b511660005261039b6106805160031b01602052604060002054156200eae1575b6200eadb9062004c12565b6200ea85565b996200eadb906200eb11906001600160a01b036200eb008e8d62004c79565b511662001a9c826103405162004c79565b9a90506200ead0565b50985096959291909396610680516064811015806103a05262004c305760031b61039c0154986200eb50620080b6898c62006271565b6102405260006107805260006106c0525b6103a05162004c30576106c0518a8110156200ec2c576200eb976200ebb49160006103a05261039c6106805160031b0162004e91565b90546103405160039290921b1c6001600160a01b03169062031166565b156200ebd3575b6200ebc96106c05162004c12565b6106c0526200eb61565b60006103a0526200ebf26106c05161039c6106805160031b0162004e91565b60018060a01b0391549060031b1c166200ec13610780516102405162004c79565b526200ec226107805162004c12565b610780526200ebbb565b50979294959093985095909560005b8281106200ecd7575050506103a05162004c305761024051516001600160401b038111620029ba576200ec798161039c6106805160031b0162004fcd565b6020610240510161039c6106805160031b01600052602060002060005b8381106200ecb957505050506200ecad9062004c12565b9492959091956200e96e565b82516001600160a01b0316818301556020909201916001016200ec96565b6200ed1d906001600160a01b036200ecf0828562004c79565b51166200ed04610780516102405162004c79565b526200ed136107805162004c12565b6107805262004c12565b6200ec3b565b9091926020810151602681101562002942576016036200edd55760c060406200ed50920151015162004c22565b519160005b83518110156200d367576001600160a01b036200ed73828662004c79565b5161072b54929116600160401b831015620029ba57600183018061072b5583101562004c305761072b60005260008051602062031b6883398151915290920180546001600160a01b0319169092179091556200edcf9062004c12565b6200ed55565b6020810151602681101562002942576017036200ee325760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036200eef05760c060406200ee5c920151015162004c22565b5191600160ff1961072e54161761072e5560005b83518110156200d367576001600160a01b036200ee8e828662004c79565b5161072d54929116600160401b831015620029ba57600183018061072d5583101562004c305761072d60005260008051602062031ac883398151915290920180546001600160a01b0319169092179091556200eeea9062004c12565b6200ee70565b602081949293940151602681101562002942576019036200ef18575b506200b7689062004c12565b602081015160268110156200294257601a036200f08f5760a060406200ef42920151015162004c22565b51906200ef5360038351146202c163565b6200ef5e8262004c22565b516200ef6e62009dba8462004c46565b51926200f053576200b768926001036200f04c576200ef956200eff391610729546200606a565b61072955604051906200efa88262002a26565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004bdf565b6200f0456200f00561072a5462006057565b61072a55604051906200f0188262002a97565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004bdf565b906200ef0c565b506200f045565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b602081015160268110156200294257601b036200f61c57509190610727546200f0bb62009e97620313c0565b61072a546107285411156200f0da6200f0d36203142e565b8262004bdf565b61072954906200f0eb838362005ebb565b50506200f0f762031484565b506000805b606482106200f5cd575b5050906200f1366200f13c93926200f12c6200f121620313c0565b612710861062004bdf565b62000ee96203142e565b62005ebb565b90506200f14862031484565b5060009060005b606481106200f4fa575b50906127106200f16a92046200624f565b90506200f17a6107345462004d95565b906000946000905b60648210156200f4ed578160031b9460ff61039f87015416156200f2d75760009661039a870154156200f2c657600098975b62004c305761039c8701548910156200f2ac576200f1d78961039c890162004e91565b600160a01b6001900391549060031b1c16978860005261039b8801602052604098868a60002054906200f20a9162005ebb565b9a906200f21662031484565b6200f2219162004bdf565b60009a61039a8b01546200f2359162005ebb565b91906200f24162031484565b6200f24c9162004bdf565b826000526106bf602052600020908154906200f268916200606a565b9091556200f27562031484565b6200f2809162004bdf565b6200f28c828962004c79565b526200f2989062004c12565b986200f2a49062004c12565b98976200f1b4565b929095506200f2be9196975062004c12565b90946200f182565b929095506200f2be91965062004c12565b95969392509350505b6200f2eb8262004d95565b9160009160005b8281106200f457575050506106c054916200f312620080b6848462006271565b926000906000905b8082106200f43a57505060005b8381106200f3a45750508251929150506001600160401b038211620029ba576020906200f3548362004f97565b016106c0600052602060002060005b8381106200f38657505050506200b76890600061072955600061072a556200f045565b82516001600160a01b0316818301556020909201916001016200f363565b6000805b8381106200f3f2575b50156200f3ca575b6200f3c49062004c12565b6200f327565b906200f3c4906200f3e9906001600160a01b036200823e858762004c79565b9190506200f3b9565b6001600160a01b03806200f407858862004c79565b5116906200f416838a62004c79565b5116146200f42f576200f4299062004c12565b6200f3a8565b50506001386200f3b1565b90916200824c6200f45091620098248562004e75565b906200f31a565b6000805b8581106200f4a5575b50156200f47d575b6200f4779062004c12565b6200f2f2565b926200f477906200f49c906001600160a01b036200823e878662004c79565b9390506200f46c565b6001600160a01b03806200f4ba858762004c79565b5116906200f4c9838a62004c79565b5116146200f4e2576200f4dc9062004c12565b6200f45b565b50506001386200f464565b939495929150506200f2e0565b90918160039695961b60ff61039f82015416156200f5c15761039a81015461039c8201546000928391825b8184106200f5615750505050620074b66200f558936200f55062000ef0979694620062359462005ebb565b929062005d15565b9493946200f14f565b94929462004c30576200f5ba856200f5b26200f58662000ef09861039c870162004e91565b905460039190911b1c6001600160a01b0316600090815261039b8601602052604081205490966200606a565b979062005edd565b926200f525565b5091909493946200f159565b8160039897981b60ff61039f82015416156200f61257916200a2d4620074b66200f608936200a2c862000ef09661039a6200a2be8762005e5e565b909695966200f0fc565b509695966200f106565b602081015160268110156200294257601c036200f6795760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036200f69d575b506200b768906200f045565b602081015160268110156200294257601e146200f69157602081015160268110156200294257601f036200f72d5760406200f6db9101515162004c22565b519061072c54600160401b811015620029ba57600181018061072c5581101562004c305761072c6000526200b768926200f7269160008051602062031c088339815191520162005659565b906200f691565b6020810151602681101562002942576020036200f751575b506200b768906200f726565b6020810151602681101562002942576021146200f745576020810151602681101562002942576022036200f7d757506200b7689060ff1961072e541661072e5561072d54600061072d55806200f7ab575b505b906200f745565b61072d6000526200f7d09060008051602062031ac88339815191529081019062004ed6565b386200f7a2565b6020810151602681101562002942576023036200f7fb575b506200b768906200f7a4565b6020810151602681101562002942576024146200f7ef576020810151602681101562002942576025146200f7ef579290916020840151602681101562002942576015036200fe375760408401906200f85860c08351015162004c22565b51906200f86f60a0620077f0818651015162004c22565b51936200f884835185511462000ee962031533565b6200f897835186511462000ee962031533565b60005b83518110156200f8f4576200f8b0818662004c79565b5190606482101562004c305761039b6200f8ee9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200f89a565b509095919560005b87518110156200fa22576200f912818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200f94b60406000205462007da7838962004c79565b906200f958838862004c79565b5191606483101562004c305761039b6200f9909360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200f99c818662004c79565b51606481101562004c305761039b906001600160a01b036200f9bf848c62004c79565b511660005260031b016020526200f9e16040600020546200685b838962004c79565b91906200f9ef828862004c79565b5190606482101562004c30576200fa1c9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200f8fc565b50926200fa3a919294506200bb4e90969596620312cf565b92604051906200fa4a8262002a97565b6001825260203681840137516001600160a01b03166200fa6a8262004c22565b526000945b80518610156200fe24576200fa85868262004c79565b51610660526200fa96855162004d95565b966000946200faa6845162004d95565b6108805260009460005b88518110156200fb77578a896200fae06001600160a01b036200fad4858462004c79565b5116610660516203110f565b15806200fb30575b6200fb01575b50506200fafb9062004c12565b6200fab0565b986200fb259162001a9c82859c62007f886200fafb9760018060a01b039262004c79565b9790508a896200faee565b505050606461066051101562004c30576001600160a01b036200fb54828b62004c79565b511660005261039b6106605160031b016020528a8960406000205415156200fae8565b50909895979498969291939660005b88518110156200fc1b57606461066051101562004c30576001600160a01b036200fbb1828b62004c79565b511660005261039b6106605160031b01602052604060002054156200fbe2575b6200fbdc9062004c12565b6200fb86565b996200fbdc906200fc12906001600160a01b036200fc018e8d62004c79565b511662001a9c826108805162004c79565b9a90506200fbd1565b50985096959291909396610660516064811015806106205262004c305760031b61039c0154986200fc51620080b6898c62006271565b6105a0526000610400526000610280525b6106205162004c3057610280518a8110156200fd2d576200fc986200fcb59160006106205261039c6106605160031b0162004e91565b90546108805160039290921b1c6001600160a01b03169062031166565b156200fcd4575b6200fcca6102805162004c12565b610280526200fc62565b6000610620526200fcf36102805161039c6106605160031b0162004e91565b60018060a01b0391549060031b1c166200fd14610400516105a05162004c79565b526200fd236104005162004c12565b610400526200fcbc565b50979294959093985095909560005b8281106200fdd8575050506106205162004c30576105a051516001600160401b038111620029ba576200fd7a8161039c6106605160031b0162004fcd565b60206105a0510161039c6106605160031b01600052602060002060005b8381106200fdba57505050506200fdae9062004c12565b9492959091956200fa6f565b82516001600160a01b0316818301556020909201916001016200fd97565b6200fe1e906001600160a01b036200fdf1828562004c79565b51166200fe05610400516105a05162004c79565b526200fe146104005162004c12565b6104005262004c12565b6200fd3c565b5050939092506200b7689150906200f7ef565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b509190506200fe8482620145d6565b929060068110156200294257600281036200feb45760405162461bcd60e51b81528062004c0e60048201620075e4565b6003810362010e4357506107338054600260ff82166200fed48162002937565b1462010dfe5760ff19166002179055610738549060018201821162001de8576001820161073855610324549092600019929060005b86518110156200ff85576200ff2c846200ff24838a62004c79565b511062030c1a565b8460026200ff466200ff3f848b62004c79565b516202de4d565b500154106200ff61575b6200ff5b9062004c12565b6200ff09565b93506200ff5b60026200ff796200ff3f878a62004c79565b5001549490506200ff50565b5090936000199360005b87518110156200fffc576200ffaa856200ff24838b62004c79565b8560036200ffbd6200ff3f848c62004c79565b500154106200ffd8575b6200ffd29062004c12565b6200ff8f565b94506200ffd260036200fff06200ff3f888b62004c79565b5001549590506200ffc7565b509194600191935062010010875162004d95565b6201001c885162004d95565b62010028895162004d95565b90620100358a5162004d95565b9260405197620100458962002a09565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e08501526000610100850152016000526107366020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b8211620029ba57600184015482600186015580831062010c3f575b5060200190600184016000526020600020916000905b828210620105de57505050506040620100fe9101516002830162005659565b60208301518051906001600160401b038211620029ba576020600384019162010128848462004fcd565b0190600052602060002060005b838110620105c9575050505060408301518051906001600160401b038211620029ba57602060048401916201016b848462004fcd565b0190600052602060002060005b838110620105b4575050505060608301518051906001600160401b038211620029ba5760206005840191620101ae848462004fcd565b0190600052602060002060005b8381106201059f575050505060808301518051906001600160401b038211620029ba5760206006840191620101f1848462004fcd565b0190600052602060002060005b8381106201058a575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029425761010062010256926201025d9560ff8019855416911617835501511515906200573d565b426200606a565b90156201054a576107385460005261073660205280600760406000200155610731556201029b6107385491826000526007604060002001546200606a565b91901562010507576000526107366020528060086040600020015561073255610738546000526009604060002001600260ff1982541617905560005b82518110156201031d578062000ef0620102f662010317938662004c79565b516107385460005261073660205262006c0683600360406000200162004e91565b620102d7565b50906000905b80518210156201050357610738549182600052610736602052620103606201035382600360406000200162004e91565b90549060031b1c6202de4d565b5054936201036e8562004d95565b9460005b818110620104b857505060009260005b8651811015620104865762010398818862004c79565b51946064958681101562004c305760031b60010154620103b9838a62004c79565b51908782101562004c30576006620103d79260031b01549062005ebb565b919015620104435790620103eb916200606a565b959015620104055750620103ff9062004c12565b62010382565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152fd5b8660405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b50945092620104b09262000ef09160005261073660205262006c0683600660406000200162004e91565b909162010323565b620104fd9086600052610736602052620104ea81620104e36201035388600360406000200162004e91565b5062004e91565b90549060031b1c62001a9c828a62004c79565b62010372565b5050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620101fe565b600190602084519401938184015501620101bb565b60019060208451940193818401550162010178565b60019060208451940193818401550162010135565b805180518554602083015190916001600160a01b031690602681101562002942576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010638848462005361565b01906000526020600020906000905b83821062010c1f5750505050602081015180516001600160401b038111620029ba57602060028801926201067c838562030721565b019160005260206000209060005b8160051c811062010be35750601f198116810362010b9e575b5050506040810151805190600160401b8211620029ba57600387015482600389015580831062010b16575b50602001600387016000526020600020906000905b83821062010af557505050506060810151805190600160401b8211620029ba57600487015482600489015580831062010a74575b50602001600487016000526020600020906000905b83821062010a535750505050608081015180516001600160401b038111620029ba576020600588019262010761838562030721565b019160005260206000209060005b8160051c811062010a145750601f1981168103620109c6575b5050506006850160a08201516020815191620107a58385620053ef565b019160005260206000206000925b8284106201096257505050506007850160c08201516020815191620107d98385620053ef565b019160005260206000206000925b828410620108f5575050505060e001518051906001600160401b038211620029ba5762010827826201081d600889015462002b98565b600889016200560f565b602090601f83116001146201087a5792826009936020936001966000926201086e575b5050600019600383901b1c191690851b1760088801555b01940191019092620100df565b0151905038806201084a565b906008870160005260206000209160005b601f1985168110620108dc575083602093600196938793600997601f19811610620108c2575b505050811b01600888015562010861565b015160001960f88460031b161c19169055388080620108b1565b919260206001819286850151815501940192016201088b565b80518051906001600160401b038211620029ba5760209062010918838662004fcd565b0183600052602060002060005b83811062010944575050505060016020819201920193019290620107e7565b82516001600160a01b03168183015560209092019160010162010925565b80518051906001600160401b038211620029ba5760209062010985838662004fcd565b0183600052602060002060005b838110620109b1575050505060016020819201920193019290620107b3565b60019060208451940193818401550162010992565b60009260005b601f19831683038110620109ea57505060051c015538808062010788565b9093602062010a0a6001928488519162010a048362002edc565b6203078b565b95019101620109cc565b6000805b6020811062010a2f5750838201556001016201076f565b9490602062010a496001928885519162010a048362002edc565b9201950162010a18565b600660208262010a6760019451876200576f565b019301910190916201072c565b600681810204810362001de857600683810204830362001de8576004880160005260206000208360060281015b826006028201811062010ab657505062010717565b806000600692556000600182015562010ad2600282016200543e565b6000600382015562010ae760048201620052d3565b600060058201550162010aa1565b600760208262010b0960019451876202de6d565b01930191019091620106e3565b600781810204810362001de857600783810204830362001de8576003880160005260206000208360070281015b826007028201811062010b58575050620106ce565b8062010b6660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010b9060058201620052d3565b600060068201550162010b43565b60009260005b601f1983168303811062010bc257505060051c0155388080620106a3565b9093602062010bd96001928488511515916203078b565b9501910162010ba4565b6000805b6020811062010bfe5750838201556001016201068a565b9490602062010c156001928885511515916203078b565b9201950162010be7565b600160208262010c328394518762005659565b0193019101909162010647565b600981810204810362001de857600983810204830362001de8576001850160005260206000208360090281015b826009028201811062010c81575050620100c9565b6000815562010c936001820162005322565b62010ca86002820180549060008155620306f9565b6003810154600060038301558062010d88575b506004810154600060048301558062010d19575b508062010ce860056009930180549060008155620306f9565b62010cf660068201620053b0565b62010d0460078201620053b0565b62010d1260088201620052d3565b0162010c6c565b600681810204810362001de857600482016000526020600020906006028101905b81811062010d49575062010ccf565b806000600692556000600182015562010d65600282016200543e565b6000600382015562010d7a60048201620052d3565b600060058201550162010d3a565b600781810204810362001de857600382016000526020600020906007028101905b81811062010db8575062010cbb565b8062010dc660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010df060058201620052d3565b600060068201550162010da9565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b6005919293501462010e525750565b9060008061032a54905b818110620137da575b505015620137be575b60005b602083015190815181101562010ec95762000ef06200771662010ea3620076f66020620067ee8662010ec39862004c79565b86516001600160a01b031660009081526103296020526040902062022f40565b62010e71565b505060005b6020830151805182101562010f1657620076f66020620067ee8462010ef39462004c79565b90606482101562004c305762010f1091429061032b015562004c12565b62010ece565b50506000905b602083015180518310156200a592578262010f379162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036201117a576040019062010f7860c08351015162004c22565b519362010f8f60a0620077f0818651015162004c22565b519162010fa086518551146202cca5565b62010faf86518451146202cd0b565b60005b8651811015620111015762010fc8818662004c79565b51606481101562004c3057600160ff600762010fed9360031b0154161515146202cd6d565b62010ff9818562004c79565b5162011006828762004c79565b5190606482101562004c30576006620110259260031b0154906200606a565b9062011032838862004c79565b5191606483101562004c30576006620110509360031b01556202cdc5565b6201105c818562004c79565b5162011069828762004c79565b5190606482101562004c3057620110a9916003906001600160a01b0362011091868d62004c79565b5116600052811b01602052604060002054906200606a565b9190620110b7828862004c79565b5190606482101562004c3057620110fb9362000ef0926003906001600160a01b03620110e4878f62004c79565b5116600052811b016020526040600020556202ce24565b62010fb2565b5094915091620111156201111c91620312cf565b91620311b3565b93604051926201112c8462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b662011157938762004c79565b62011138565b509450926020925062011171915062004c12565b91905062010f1c565b9091926020820151602681101562002942576002036201130b57604080920190815193845191620111b46200b7ab60a08098015162004c22565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b8651811015620112f557620111ee818862004c79565b51606481101562004c305760ff60076201120f9260031b015416156202ce7d565b6201121b818862004c79565b51606481101562004c305760031b600701805460ff1916600117905562011243818562004c79565b5162011250828962004c79565b5190606482101562004c305760056201126d9260031b0162005659565b62011279818662004c79565b5162011286828962004c79565b51606481101562004c305760031b60010155620112a4818762004c79565b51620112b1828962004c79565b51606481101562004c305760031b60020155620112cf818862004c79565b5190606482101562004c305760006006620112ef9360031b015562004c12565b620111d8565b5095915093506020925062011171915062004c12565b92919060208101516026811015620029425760030362011338576020919262000ef062011171926202cec9565b602081015160268110156200294257600403620115db576201136260c06040830151015162004c22565b51936201137760c06040840151015162004c46565b51906201139e60a06040620113928282880151015162004c22565b51950151015162004c46565b5193620113b3875184511462000ee962031533565b620113c6875185511462000ee962031533565b620113d9875186511462000ee962031533565b60005b87518110156201144157620113f2818662004c79565b5190606482101562004c30576201143b916003906001600160a01b036201141a848d62004c79565b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b620113dc565b509095919593929360005b8351811015620115985762011462818762004c79565b51606481101562004c30576003906001600160a01b0362011484848862004c79565b5116600052811b01602052620114a560406000205462007da7838862004c79565b90620114b2838962004c79565b5191606483101562004c3057620114f5926003906001600160a01b03620114da878b62004c79565b5116600052811b0160205260406000205562000ee962031637565b62011501818762004c79565b51606481101562004c30576003906001600160a01b0362011523848c62004c79565b5116600052811b01602052620115446040600020546200685b838862004c79565b91905062011553818862004c79565b5191606483101562004c305762011592926003906001600160a01b036201157b858e62004c79565b5116600052811b0160205260406000205562004c12565b6201144c565b5093620115b29192969350620084c562007e9891620312cf565b9260005b83518110156201115d578062000ef0620079b6620115d5938762004c79565b620115b6565b92602084015160268110156200294257600503620117a4576201160660a06040860151015162004c22565b51906201161b60a06040870151015162004c46565b519282518451036200cab85760005b8351811015620116825762011640818562004c79565b5190606482101562004c305760036201167c9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6201162a565b509060005b835181101562011723576201169d818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b01602052620116d460406000205462007da7838862004c79565b9190620116e2828762004c79565b5190606482101562004c30576201171d93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b62011687565b50949250906201173390620312cf565b9060405192620117438462002a97565b6001845260203681860137516001600160a01b0316620117638462004c22565b5260405194620117738662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b66201179e938762004c79565b6201177f565b926020810151602681101562002942576006036201195957604001620117cf60c08251015162004c22565b5193620117e660a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b8651811015620118645762011815818562004c79565b5190606482101562004c30576201185e916003906001600160a01b036201183d848c62004c79565b5116600052811b0160205262000ef060406000205462007d3b838962004c79565b620117ff565b509060005b865181101562011903576201187f818562004c79565b51606481101562004c30576003906001600160a01b03620118a1848b62004c79565b5116600052811b01602052620118c260406000205462007da7838862004c79565b9190620118d0828762004c79565b5190606482101562004c3057620118fd9362000ef0926003906001600160a01b03620114da878f62004c79565b62011869565b509491620119189193506201111590620312cf565b9160405194620119288662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b662011953938762004c79565b62011934565b60208101516026811015620029425760070362011a6b57604001926201198460c08551015162004c22565b51916201199660a08651015162004c22565b5194515191620119ae845187511462000ee962031533565b60005b84518110156201115d5762011a659062000ef06001600160a01b0380620119d9848a62004c79565b51166000528660028b62011a5562011a188762011a1081610320978860205262008a3360ff604060002054161562000ee962031604565b519362004c79565b519162008a978d6040519662011a2e886200299e565b60018852886200d1e88c60208b01946000865260408c0197885260608c01998a5262004c79565b5191015562008ab2838962004c79565b620119b1565b60208194939401516026811015620029425760080362011b025760c0604062011a98920151015162004c22565b519160005b835181101562011af05762011aea906001600160a01b038062011ac1838862004c79565b511660005261032090816020526200d304600160ff6040600020541615151462000ee962031563565b62011a9d565b50926020919250620111719062004c12565b60208101516026811015620029425760090362011b845760c0604062011b2c920151015162004c22565b519160005b835181101562011af05762011b7e906001600160a01b038062011b55838862004c79565b511660005261032090816020526200d3f2600160ff6040600020541615151462000ee962031563565b62011b31565b602081015160268110156200294257600a0362011c32576040019062011bb560a06200d48660c08551015162004c22565b519262011bca835185511462000ee962031533565b60005b835181101562011c1f5762011c19906001600160a01b038062011bf1838862004c79565b5116600052610320806020526200d4f5600160ff6040600020541615151462000ee962031563565b62011bcd565b5093620111719193506020925062004c12565b60208194939294015160268110156200294257600b0362011ce5576040019262011c6160c08551015162004c22565b519351519162011c79855184511462000ee962031533565b60005b855181101562011cd25762011ccc9062000ef06001600160a01b038062011ca4848b62004c79565b5116600052610320806020526200d5d7600160ff6040600020541615151462000ee962031563565b62011c7c565b5093509160209150620111719062004c12565b909192602082015160268110156200294257600c0362011e22576060604083015101519262011d14846202c2eb565b60005b845181101562011c1f5760e062011d378260606040880151015162004c79565b5101511562011db45762011d5862008ea78260606040880151015162004c79565b610322548060001981011162001de85762011d796005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005c20565b62011d17565b62011dcc62008f258260606040880151015162004c79565b610322548060001981011162001de85762011ded6005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005be0565b929190602081015160268110156200294257600d0362011f365760400192602062011e5260a08651015162004c22565b51945101519162011e6785518451146202c9e4565b60005b855181101562011cd2578062011e8562011ede928662004c79565b511562011ee45762011e9c6200901d828962004c79565b62011eb460ff60056200d80d6200903e858c62004c79565b62011ecc60ff6005620090576200903e858c62004c79565b6005620090736200903e838a62004c79565b62011e6a565b62011ef4620090ab828962004c79565b62011f0c60ff60056200d80d620090cc858c62004c79565b62011f2460ff600562009057620090cc858c62004c79565b600562009073620090cc838a62004c79565b602081949294015160268110156200294257600e0362011ffd5760400190602062011f6660a08451015162004c22565b51925101519362011f7b83518651146202c9e4565b60005b835181101562011cd2578062011f9962011fa5928862004c79565b5162011fab5762004c12565b62011f7e565b62011fbb62009168828762004c79565b62011fd360ff60056200d94a6200903e858a62004c79565b62011feb60ff6005620091af6200903e858a62004c79565b600562008efb6200903e838862004c79565b90602082949394015160268110156200294257600f036201213b57606060408301510151926201202d846202c2eb565b60005b845181101562011c1f5760e0620120508260606040880151015162004c79565b51015115620120cd576201207162008ea78260606040880151015162004c79565b610322548060001981011162001de857620120926005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005c20565b62012030565b620120e562008f258260606040880151015162004c79565b610322548060001981011162001de857620121066005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005be0565b90602081949394015160268110156200294257601003620121ac5760400151906201216f60a0608084015193015162004c22565b519362012184835186511462000ee962031533565b60005b835181101562011cd2578062000ef06200935a620121a6938762004c79565b62012187565b6020819492940151602681101562002942576011036201240e5760400190620121e060a06200d48660c08551015162004c22565b5193620121f183518651146202c163565b60005b83518110156201226b57620122659062000ef06001600160a01b03806201221c848962004c79565b5116600052610325806020526201223e6040600020546200685b868d62004c79565b9190926201224d868b62004c79565b511660005260205260406000205562000ee9620314e9565b620121f4565b509350906201227a90620311b3565b90610326549362012291620080b684518762006271565b9060009260005b878110620123f3575060005b85518110156201234b576000805b898110620122fc575b5015620122d4575b620122ce9062004c12565b620122a4565b93620122ce90620122f3906001600160a01b036200ddb1888a62004c79565b949050620122c3565b620123078162004de9565b90546001600160a01b0360039290921b1c81169062012327858b62004c79565b51161462012340576201233a9062004c12565b620122b2565b5050600138620122bb565b5095509392506201235c8262004d95565b8051906001600160401b038211620029ba576020906201237c8362004f2a565b01610326600052602060002060005b838110620123d5575050505060005b828110620123b2575050506201117160209162004c12565b620123cf9062000ef06001600160a01b03620019d0838662004c79565b6201239a565b82516001600160a01b0316818301556020909201916001016201238b565b936200defd62012408916200dedf8762004de9565b62012298565b6020819492940151602681101562002942576012036201265357604001906201244260a06200d48660c08551015162004c22565b51936201245383518651146202c163565b60005b8351811015620124a657620124a09062000ef06001600160a01b03806201247e848962004c79565b5116600052610325806020526201223e60406000205462007da7868d62004c79565b62012456565b5093509190620124b690620311b3565b61032654620124c58162004d95565b906000926000915b8083106201257a57505050620124e38262004d95565b8051906001600160401b038211620029ba57602090620125038362004f2a565b01610326600052602060002060005b8381106201255c575050505060005b82811062012539575050506201117160209162004c12565b620125569062000ef06001600160a01b03620019d0838662004c79565b62012521565b82516001600160a01b03168183015560209092019160010162012512565b91956000959193959760005b855181101562012644576201259b8962004de9565b90546001600160a01b0360039290921b1c811690620125bb838962004c79565b511614620125d457620125ce9062004c12565b62012586565b509750956001959391955b8062012613575b15620125fe57620125f79062004c12565b91620124cd565b936200defd620125f7916200dedf8762004de9565b506201261f8162004de9565b60018060a01b0391549060031b1c1660005261032560205260406000205415620125e6565b509796909695939195620125df565b602081015160268110156200294257601303620126ac5760408091015101519260005b84518110156201269b578062000ef0620098ce62012695938862004c79565b62012676565b509250906201117160209162004c12565b602081015160268110156200294257601403620128555760400190620126d760c08351015162004c22565b5193620126ee60a0620077f0818651015162004c22565b5191620126ff86518551146202cca5565b6201270e86518451146202cd0b565b60005b8651811015620128005762012727818562004c79565b5162012734828762004c79565b5190606482101562004c30576006620127539260031b0154906200606a565b9062012760838862004c79565b5191606483101562004c305760066201277e9360031b01556202cdc5565b6201278a818562004c79565b5162012797828762004c79565b5190606482101562004c3057620127bf916003906001600160a01b0362011091868d62004c79565b9190620127cd828862004c79565b5190606482101562004c3057620127fa9362000ef0926003906001600160a01b03620110e4878f62004c79565b62012711565b5094915091620111156201281491620312cf565b9360405192620128248462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b66201284f938762004c79565b62012830565b6020810151602681101562002942576015036201287f576020919262000ef062011171926202cec9565b602081015160268110156200294257601603620128db5760c06040620128a9920151015162004c22565b519260005b84518110156201269b57620128d59062000ef06001600160a01b0362009b14838962004c79565b620128ae565b602081015160268110156200294257601703620129385760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601803620129a35760c0604062012962920151015162004c22565b5192600160ff196103965416176103965560005b84518110156201269b576201299d9062000ef06001600160a01b0362009be0838962004c79565b62012976565b60208193929301516026811015620029425760190362012b185760008091604082910160a08082510151805162012adf575b5050519060e082015191620129f96200685460c060018060a01b0393015162004c22565b511690602083519301915af13d1562012ad6573d9062012a198262002e73565b9162012a29604051938462002ab3565b82523d6000602084013e5b1562012a4857506201117160209162004c12565b62004c0e9062012ab56040519160008051602062031c88833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162012aa4816059946020868601910162002d20565b810103603981018452018262002ab3565b60405162461bcd60e51b815260206004820152918291602483019062002d45565b60609062012a34565b62012aea9062004c22565b515162012af9575b80620129d5565b819250620068549062012b0f9251015162004c22565b51903862012af2565b602081015160268110156200294257601a0362012bce5760a0604062012b42920151015162004c22565b5162012b5260038251146202c163565b62012b5d8162004c22565b519162012b7662012b6e8362004c46565b519262004c57565b51916200f05357602092620111719260010362009e215762012ba062012bae91610391546200606a565b6103915562000ee962031484565b62000ef062012bc06103925462006057565b6103925562000ee9620314be565b602081015160268110156200294257601b0362012ffc5750919062012bfe61038f54620061b062009e97620313c0565b505062012c0a62031484565b506000805b6064811062012fb0575b505062012c256200618c565b62012c336107345462004d95565b906000946000905b606482101562012fa3578160031b9460ff6007870154161562012d8b5760009660028701541562012d7a57600098975b62004c3057600487015489101562012d605762012c8c896004890162004e91565b9054600391821b1c6001600160a01b031660008181529189016020526040918290205491999162012cbf90889062005ebb565b9a9062012ccb62031484565b62012cd69162004bdf565b60009a60028b015462012ce99162005ebb565b919062012cf562031484565b62012d009162004bdf565b826000526103276020526000209081549062012d1c916200606a565b90915562012d2962031484565b62012d349162004bdf565b62012d40828962004c79565b5262012d4c9062004c12565b9862012d589062004c12565b989762012c6b565b9290955062012d729196975062004c12565b909462012c3b565b9290955062012d7291965062004c12565b95969392509350505b62012d9f8262004d95565b9160009160005b82811062012f0d57505050610328549162012dc6620080b6848462006271565b926000906000905b80821062012ef057505060005b83811062012e5a5750508251929150506001600160401b038211620029ba5760209062012e088362004eef565b01610328600052602060002060005b83811062012e3c57505050506201117160209160006103915560006103925562004c12565b82516001600160a01b03168183015560209092019160010162012e17565b6000805b83811062012ea8575b501562012e80575b62012e7a9062004c12565b62012ddb565b9062012e7a9062012e9f906001600160a01b036200823e858762004c79565b91905062012e6f565b6001600160a01b038062012ebd858862004c79565b51169062012ecc838a62004c79565b51161462012ee55762012edf9062004c12565b62012e5e565b505060013862012e67565b90916200824c62012f0691620098248562004dcd565b9062012dce565b6000805b85811062012f5b575b501562012f33575b62012f2d9062004c12565b62012da6565b9262012f2d9062012f52906001600160a01b036200823e878662004c79565b93905062012f22565b6001600160a01b038062012f70858762004c79565b51169062012f7f838a62004c79565b51161462012f985762012f929062004c12565b62012f11565b505060013862012f1a565b9394959291505062012d94565b8060039594951b9060ff6007830154161562012ff2576200a2d4620074b662000ef0946200a2c862012fe99560026200a2be8762005d82565b93929362012c0f565b5093929362012c19565b602081015160268110156200294257601c03620130595760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036201307f575b506201117160209162004c12565b602081015160268110156200294257601e146201307157602081015160268110156200294257601f03620130d057602091620130c86200a3b96040620111719401515162004c22565b915062013071565b602081015160268110156200294257602003620130f6575b5062011171602091620130c8565b602081015160268110156200294257602180910362013117575b50620130e8565b602082015160268110156200a53a57602203620131545750506201117160209160ff196103965416610396556201314d62004fba565b9162013110565b602082015160268110156200a53a576023036201317b575b5050620111716020916201314d565b602082015160268110156200a53a576024146201316c57602082015160268110156200a53a576025146201316c57602082959394920151906026821015620137aa57506015036200fe37576040840190620131db60c08351015162004c22565b5190620131f260a0620077f0818651015162004c22565b519362013207835185511462000ee962031533565b6201321a835186511462000ee962031533565b60005b8351811015620132755762013233818662004c79565b5190606482101562004c305760036201326f9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6201321d565b509095919560005b87518110156201339c5762013293818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b01602052620132ca60406000205462007da7838962004c79565b90620132d7838862004c79565b5191606483101562004c305760036201330d9360018060a01b03895116600052811b0160205260406000205562000ee962031637565b62013319818662004c79565b51606481101562004c30576003906001600160a01b036201333b848c62004c79565b5116600052811b016020526201335c6040600020546200685b838962004c79565b91906201336a828862004c79565b5190606482101562004c30576201339693600362000ef0938d62007e608760018060a01b039262004c79565b6201327d565b5092620133b4919294506200bb4e90969596620312cf565b9260405190620133c48262002a97565b6001825260203681840137516001600160a01b0316620133e48262004c22565b526000945b80518610156201379557620133ff868262004c79565b516102605262013410855162004d95565b9660009462013420845162004d95565b6103205260009460005b8851811015620134ef578a896201345a6001600160a01b036201344e858462004c79565b511661026051620310b9565b1580620134aa575b6201347b575b5050620134759062004c12565b6201342a565b986201349f9162001a9c82859c62007f88620134759760018060a01b039262004c79565b9790508a8962013468565b505050606461026051101562004c30576001600160a01b03620134ce828b62004c79565b5116600052600361026051811b016020528a89604060002054151562013462565b50909895979498969291939660005b88518110156201359157606461026051101562004c30576001600160a01b0362013529828b62004c79565b5116600052600361026051811b016020526040600020541562013558575b620135529062004c12565b620134fe565b99620135529062013588906001600160a01b03620135778e8d62004c79565b511662001a9c826103205162004c79565b9a905062013547565b50985096959291909396610260516064811015806101e05262004c305760031b6004015498620135c6620080b6898c62006271565b6102205260006102a0526000610560525b6101e05162004c3057610560518a811015620136a0576201360c620136299160006101e05260046102605160031b0162004e91565b90546103205160039290921b1c6001600160a01b03169062031166565b1562013648575b6201363e6105605162004c12565b61056052620135d7565b60006101e052620136666105605160046102605160031b0162004e91565b60018060a01b0391549060031b1c16620136876102a0516102205162004c79565b52620136966102a05162004c12565b6102a05262013630565b50979294959093985095909560005b82811062013749575050506101e05162004c305761022051516001600160401b038111620029ba57620136ec8160046102605160031b0162004fcd565b6020610220510160046102605160031b01600052602060002060005b8381106201372b57505050506201371f9062004c12565b949295909195620133e9565b82516001600160a01b03168183015560209092019160010162013708565b6201378f906001600160a01b0362013762828562004c79565b5116620137766102a0516102205162004c79565b52620137856102a05162004c12565b6102a05262004c12565b620136af565b5050936201117191935060209250916201316c565b634e487b7160e01b60005260045260246000fd5b8151620137d4906001600160a01b031662006647565b62010e6e565b620137e58162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462013814576201380e9062004c12565b62010e5c565b5050506001388062010e65565b82516001600160a01b0316600160401b821015620029ba57620019dd8260016201385094016106c25562004e21565b386200b0db565b620138628162004e21565b9054865160039290921b1c6001600160a01b0390811691161462013891576201388b9062004c12565b6200b0ca565b50506001386200b0d3565b82516001600160a01b0316818301556020909201916001016200b000565b82516001600160a01b0316818301556020909201916001016200aeb3565b600191820180546001600160a01b03909216848601559390910192906200ae02565b61072d600052620139219060008051602062031ac883398151915290810190830162004ed6565b386200adc3565b600180826201393982948662013d7f565b019201920191906200ad85565b61072c60005260008051602062031c08833981519152908282015b8183018110620139735750506200ad4a565b8062013981600192620052d3565b0162013961565b600191820180546001600160a01b03909216848601559390910192906200ad1b565b61072b600052620139d19060008051602062031b6883398151915290810190830162004ed6565b386200acdc565b60018091930191825493816106c301550190916200ac7f565b82516001600160a01b0316818301556020909201916001016200ab98565b62013a2a906106c26000528484600020918201910162004ed6565b386200ab88565b82516001600160a01b0316818301556020909201916001016200a9b4565b62013a6a906106b96000528484600020918201910162004ed6565b386200a9a4565b8062013a939160031b600160ff60078301541615151462013a99575062004c12565b6200a8fa565b62013aac6004820161039c830162013f18565b61039f8101600160ff1982541617905580548161039801556001810154610399820155600281015461039a82015562013aed6005820161039d830162013d7f565b61039e60068201549101553862009e21565b600660208262013b1360019451866200576f565b019201920191906200a6f7565b600681810204810362001de857600683810204830362001de8576106ba6000527f4bc0fef855e05548476b22fb01fb9c435488f87351c9bc2f734e5ca5bc2141996006840281015b826006028201811062013b7d5750506200a6e4565b806000600692556000600182015562013b99600282016200543e565b6000600382015562013bae60048201620052d3565b600060058201550162013b68565b600660208262013bd060019451866200576f565b019201920191906200a66c565b8060060290600682040362001de8578260060260068104840362001de8576000906106bb82526020822092830192015b82811062013c1d5750506200a659565b80826006925582600182015562013c37600282016200543e565b82600382015562013c4b60048201620052d3565b8260058201550162013c0d565b608460405162461bcd60e51b8152602060048201526040602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b8152602060048201526047602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b81811462010503578154916001600160401b038311620029ba5762013d41838362004fcd565b60005260206000209060005260206000208154916000925b84841062013d68575050505050565b600180919201938454928185015501929062013d59565b90808214620105035762013d94815462002b98565b906001600160401b038211620029ba57819062013dbe8262013db7865462002b98565b866200560f565b600090601f831160011462013df75760009262013deb5750508160011b916000199060031b1c1916179055565b015490503880620056a2565b81526020808220858352818320935090601f1985169083905b82821062013e4c57505090846001959493921062013e3257505050811b019055565b015460001960f88460031b161c19169055388080620056ef565b849581929585015481556001809101960194019062013e10565b818114620105035781549162013e7d838362005361565b6000526020600020906000526020600020906000905b83821062013ea15750505050565b8062013eb06001928562013d7f565b92810192918101910162013e93565b818114620105035781549162013ed68383620053ef565b6000526020600020906000526020600020906000905b83821062013efa5750505050565b8062013f096001928562013d1b565b92810192918101910162013eec565b81811462010503578154916001600160401b038311620029ba5762013f3e838362004fcd565b60005260206000209060005260206000208154916000925b84841062013f65575050505050565b600191820180546001600160a01b039092168486015593909101929062013f56565b818114620105035781549162013f9e8383620053ef565b6000526020600020906000526020600020906000905b83821062013fc25750505050565b8062013fd16001928562013f18565b92810192918101910162013fb4565b818114620105035781549162013ff78383620054f2565b6000526020600020906000526020600020906000905b8382106201401b5750505050565b80600191840362014038575b60088091019301910190916201400d565b80548455620140658280860190830160ff90620140598282541684620055d4565b5460081c1690620055ee565b6002808201549085015562014081600380830190860162013d1b565b60048085019082018082036201409a575b505062014027565b620140a59162013e66565b620140b7600580830190860162013ebf565b620140c9600680830190860162013f87565b620140db600780830190860162013d7f565b388062014092565b919062005c9657808203620140f6575050565b60ff60058062002b5a946201410f8486541682620055bb565b600185015460018201556201412b600286016002830162013fe0565b6003850154600382015562014147600486016004830162013d7f565b0192016201415982825416846200572c565b6201416b82825460081c16846200573d565b5460101c169062005755565b908082146201050357908154906000915b60648310620141975750505050565b600180919401928354948184015501919262014188565b906103225491600092602082019182515190620141cb8262002b80565b91620141db604051938462002ab3565b808352620141ec601f199162002b80565b01366020840137620142018451518462005ebb565b90156201457e57620142139062004d95565b9186938551511562014574576201422a8162004d95565b975b865151811015620143bc5760008080805b87858c888410620142d25750839450620142669392506201426091508862004c79565b6200350b565b600681101562002942576003146201428b575b50620142859062004c12565b6201422c565b6000905b8a818310620142a057505062014279565b8298620142b7620142cb9394620142c49362004c79565b5162001a9c828b62004c79565b9762004c12565b906201428f565b620142e5620142ec939285925162004c79565b51620149a3565b93909480831180620143a8575b156201435f57505091838562014355575b6006811015620029425760038f911462014335575b50506201432c9062004c12565b9190916201423d565b946201434c9162001a9c826201432c959862004c79565b93908d6201431f565b600095506201430a565b809492959195148062014394575b156201431f576006811015620029425760038f9114620143355750506201432c9062004c12565b50600681101562002942578015156201436d565b5060068610156200294257851515620142f9565b505093505090929350600093845b83518610156201450f57620143ea620143e4878662004c79565b620055ad565b9060068083101562002942576002928303620144155750506201440e909562004c12565b94620143ca565b62014425620143e4898862004c79565b92818410156200294257600180941480620144fb575b1562014450575050506201440e909562004c12565b62014465620143e48a899b9694959b62004c79565b9280841015620029425760048094149283620144cf575b5082620144a4575b505062014498575b506201440e9062004c12565b95506201440e6201448c565b909150881015620144ba57871415388062014484565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620144e65789141591386201447c565b602184634e487b7160e01b6000525260246000fd5b50818310156200294257808314156201443b565b92509290935060068210156200294257600382036201456b575b620145348162004d95565b9360005b82811062014547575050509190565b806201455862014565928462004c79565b5162001a9c828962004c79565b62014538565b50600062014529565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b906103235491600092602082019182515190620145f38262002b80565b9162014603604051938462002ab3565b80835262014614601f199162002b80565b01366020840137620146298451518462005ebb565b90156201457e576201463b9062004d95565b918693855151156201457457620146528162004d95565b975b865151811015620147ca5760008080805b87858c888410620146e05750839450620146889392506201426091508862004c79565b60068110156200294257600314620146ad575b50620146a79062004c12565b62014654565b6000905b8a818310620146c25750506201469b565b8298620142b7620146d99394620142c49362004c79565b90620146b1565b620146f3620146fa939285925162004c79565b5162014a42565b93909480831180620147b6575b156201476d57505091838562014763575b6006811015620029425760038f911462014743575b50506201473a9062004c12565b91909162014665565b946201475a9162001a9c826201473a959862004c79565b93908d6201472d565b6000955062014718565b8094929591951480620147a2575b156201472d576006811015620029425760038f9114620147435750506201473a9062004c12565b50600681101562002942578015156201477b565b506006861015620029425785151562014707565b505093505090929350600093845b8351861015620148ed57620147f2620143e4878662004c79565b90600680831015620029425760029283036201481d57505062014816909562004c12565b94620147d8565b6201482d620143e4898862004c79565b92818410156200294257600380941480620148d9575b15620148585750505062014816909562004c12565b6201486d620143e48a899b9694959b62004c79565b9280841015620029425760058094149283620148c2575b5082620148ac575b5050620148a0575b50620148169062004c12565b95506201481662014894565b909150881015620029425787141538806201488c565b908093508a10156200294257891415913862014884565b508183101562002942578083141562014843565b92509290935060068210156200294257600382036201493c575b620149128162004d95565b9360005b82811062014925575050509190565b806201455862014936928462004c79565b62014916565b50600062014907565b156201494d57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b91929060009081948294620149bd61032254841062014945565b60ff6005620149cc8562005c20565b50015460081c161562014a355782620149e9928592600162014c1c565b620149f5575b50929190565b809450600192935062014a09915062005c20565b50015490600362014a2a60ff62014a208662005c20565b5054169462005c20565b5001549138620149ef565b5050509150915080918190565b9192906000908194829462014a5c61032354841062014945565b60ff600562014a6b8562005be0565b50015460081c161562014a35578262014a879285928362014c1c565b62014a925750929190565b809450600192935062014aa6915062005be0565b50015490600362014a2a60ff62014abd8662005be0565b5054169462005be0565b9062002b5a606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262014b3e815180926020868601910162002d20565b810103604181018552018362002ab3565b606d62002b5a919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262014bc1815180926020605f8701910162002d20565b82016d016103737b2329034b73232bc1d160951b605f82015262014bef825180936020878501910162002d20565b0103604d81018552018362002ab3565b805482101562004c305760005260206000209060031b0190600090565b93929190841562014fad5762014c4661032254841062000ee962014c408662005028565b62014ac7565b62014c7d600262014c578562005c20565b500154851062000ee962014c6b8662005028565b62014c768862005028565b9062014b4f565b841562014f8e5762014cad600162014ca486600262014c9c8862005c20565b500162014bff565b50015460ff1690565b945b62014cba8662002edc565b8562014ccb57505050505050600090565b62014cd68662002edc565b60039580870362014ced5750505050505050600190565b62014cf88162002edc565b6004810362014d0d5750505050505050600090565b62014d188162002edc565b6001810362014d2e5750620031f8955062014fdd565b91959392949062014d3f8362002edc565b600280931462014d56575b50505050505050600090565b801562014f705762014d80600162014d74848662014c9c8962005c20565b50015460081c60ff1690565b935b811562014f54578562014d9b848662014c9c8562005c20565b500154965b62014dab8862004d95565b9860005b89811062014ec95750505050505062014dc88262002937565b6001820362014e2b57505050906001916000915b81831062014dea5750505090565b9091928062014e08575b62014e00909362004c12565b919062014ddc565b5062014e0062014e2362014e1d858462004c79565b51151590565b905062014df4565b62014e368262002937565b810362014e905750509060009182915b81831062014e545750505090565b909192801562014e73575b62014e6b909362004c12565b919062014e46565b5062014e6b62014e8862014e1d858462004c79565b905062014e5f565b90915062014e9e8162002937565b1462014eb257503880808080808062014d4a565b62014ec562014e1d620031f89262004c22565b1590565b808b62014f12828c8a8c8a8c1562014f335762014f08949262014efe949262014c9c62014ef69362005c20565b500162004e91565b90549060031b1c90565b8787878b62014c1c565b62014f2662014f2d9462000ef09362004c79565b9015159052565b62014daf565b62014f4e949262014efe949262014c9c62014ef69362005be0565b62014f08565b8562014f66848662014c9c8562005be0565b5001549662014da0565b62014f87600162014d74848662014c9c8962005be0565b9362014d82565b62014fa6600162014ca486600262014c9c8862005be0565b9462014caf565b62014fc661032354841062000ee962014c408662005028565b62014fd7600262014c578562005be0565b62014c7d565b93926004620150279186600014620151f557600262015002878262014c9c8562005c20565b500154955b8715620151e457600262014c9c6201501f9362005c20565b5001620035d2565b916032841115620151d857603384101580620151cc575b620151bf57609784101580620151b3575b620151a65760d38410158062015199575b6201518d5761012d8410158062015181575b62015174576101918410158062015167575b6201515a576101af841015806201514d575b62015140576101cd8410158062015133575b62015126576101f58410158062015119575b6201510c5761025984101580620150ff575b620150f157506102bd831015620150e65750505050600090565b620031f89362022e31565b9050620031f893506202a144565b506102bc841115620150cc565b50620031f893506201d479565b50610258841115620150ba565b50620031f893506202aaa8565b506101f4841115620150a8565b50620031f893506202b50b565b506101cc84111562015096565b50620031f89350620225a0565b506101ae84111562015084565b50620031f89350620273b8565b50610190841062015072565b50620031f89362015212565b5061012c84111562015060565b50620031f8935062022c1c565b5060b48411156201504f565b5050620031f8926201e0d9565b5060958411156201503e565b50620031f893620243bf565b600262014c9c6201501f9362005be0565b600262015208878262014c9c8562005be0565b5001549562015007565b9260d38114620157e15760d48114620157d45760d58114620157c75760d68114620157ba5760d78114620157ad5760d88114620157a05760d98114620157945760da8114620157875760db81146201577a5760dc81146201576e5760dd81146201575f5760de8114620157505760df8114620157435760e08114620157365760e181146201572a5760e281146201571d5760e38114620157105760e48114620157045760e58114620156f55760e68114620156e65760e78114620156d95760e88114620156cc5760e98114620156bf5760ea8114620156b25760eb8114620156a55760ec8114620156985760ed81146201568b5760ee81146201567e5760ef8114620156715760f08114620156645760f18114620156575760f281146201564a5760f381146201563d5760f48114620156305760f58114620156235760f68114620156165760f78114620156095760f88114620155fc5760f98114620155f05760fa8114620155e45760fb8114620155d85760fc8114620155cc5760fd8114620155c05760fe8114620155b45760ff8114620155a85761010081146201559c5761010181146201559057610102811462015584576101038114620155785761010481146201556c5761010581146201556057610106811462015554576101078114620155485761010881146201553c576101098114620155305761010a8114620155245761010b8114620155185761010c81146201550c5761010d8114620155005761010e8114620154f45761010f8114620154e8576101108114620154dc576101118114620154d0576101128114620154c4576101138114620154b8576101148114620154ac576101158114620154a057610116146201549557505050600090565b620031f8926201cb32565b50620031f8926201c90b565b50620031f8926201c6e4565b50620031f8926201c3e3565b50620031f8926201c1c4565b50620031f8926201bfa5565b50620031f8926201bd73565b50620031f8926201bbaa565b50620031f8926201b9e1565b50620031f8926201b7a9565b50620031f8926201b5e2565b50620031f8926201b2b7565b50620031f8926201b085565b50620031f8926201aebc565b50620031f8926201acf3565b50620031f8926201aae5565b50620031f8926201a8ad565b50620031f8926201a6e6565b50620031f8926201a3b4565b50620031f8926201a154565b50620031f89262019f83565b50620031f89262019da2565b50620031f89262019bdb565b50620031f89262019985565b50620031f892620197bc565b50620031f892620195f3565b50620031f89262019312565b50620031f89262019012565b50620031f89262018d25565b50620031f89262018a25565b50620031f89250620188a0565b50620031f892506201875b565b50620031f89250620185e9565b50620031f89250620184a4565b50620031f892506201835f565b50620031f892506201821b565b50620031f89250620180a6565b50620031f8925062017f62565b50620031f8925062017e1e565b50620031f8925062017cdd565b50620031f8925062017b9a565b50620031f8925062017a59565b50620031f8925062017910565b50620031f89250620177cc565b50620031f8925062017688565b50620031f8925062017513565b50620031f8925062017375565b50620031f8925062017232565b509050620031f89150620171d7565b509050620031f891506201717a565b50620031f89262016f3c565b50620031f8925062016dad565b50620031f8925062016c5e565b50620031f89262016a47565b50620031f892506201689f565b50620031f8925062016752565b509050620031f89150620166f7565b509050620031f891506201668a565b50620031f8926201643e565b50620031f89250620162af565b50620031f892506201615a565b50620031f89262015f2c565b50620031f8925062015d74565b50620031f8925062015c18565b50620031f8925062015b17565b50620031f89250620159ea565b50620031f89250620158e9565b50620031f8925090602001906001825151036201589057600162015806835162004c22565b515103620158365762015819906201ce37565b91901562006640576200685462015831915162004c22565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001825151036201599157600162015907835162004c22565b51510362015937576201591a906201ce37565b91901562006640576200685462015932915162004c22565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015abe57600262015a08835162004c22565b51510362015a625762015a1b906201ce37565b9015620066405762015a3262006854835162004c22565b51811015918262015a4257505090565b62015a5c91925062015a55905162004c22565b5162004c46565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015bbf57600162015b35835162004c22565b51510362015b655762015b48906201ce37565b91901562006640576200685462015b60915162004c22565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90604001600191828251510362015d1a578262015c36835162004c22565b51510362015cc05762015c49906201d1aa565b156200663857829160009182945b62015c65575b505050905090565b805185101562015cba576001600160a01b038062015c84878462004c79565b51169062015c9762006854855162004c22565b51160362015cb25762015cab849562004c12565b9462015c57565b505091505090565b62015c5d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362015ed2578262015d92835162004c22565b51511062015e785762015da5906201d1aa565b156200663857600091835b62015dbc575b50505090565b815183101562015e7257600080855b62015df4575b501562015deb5762015de4849362004c12565b9262015db0565b50505050600090565b62015e058396949295965162004c22565b515181101562015e67576001600160a01b038062015e24888562004c79565b51169062015e388362007494875162004c22565b51161462015e5a579062015e4e84939262004c12565b90939594919262015dcb565b5091809493503862015dd1565b949390929462015dd1565b62015db6565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016100578462015f4e845162004c22565b515103620160a65762015f61906201d1aa565b1562015fff5784931562016016576000935b62015f7f575050505090565b805184101562005131576001600160a01b038062015f9e868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262015fc9888662004c79565b51166000528452600020015462015fe562006854855162004c22565b510362015fff5762015ff8859462004c12565b9362015f73565b5050505050600090565b5050505050505050600090565b6000935b62016026575050505090565b805184101562005131576001600160a01b038062016045868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016070888662004c79565b5116600052845260002001546201608c62006854855162004c22565b510362015fff576201609f859462004c12565b936201601a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016255578262016178835162004c22565b515103620161fb576201618b906201d1aa565b919091156200663857600091835b620161a75750505050600090565b8051831015620161f55783926001600160a01b0380620161c8838562004c79565b511690620161db62006854865162004c22565b511614620050f757620161ee9062004c12565b9262016199565b62015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620163e45782620162cd835162004c22565b5151106201638a57620162e0906201d1aa565b15620066385782916000935b620162fa5750505050600090565b8151841015620161f5576000835b62016322575b506201631b839462004c12565b93620162ec565b93929162016331825162004c22565b515185101562016381576001600160a01b038062016350868462004c79565b511690620163648762007494865162004c22565b51161462015cb2576201637983949562004c12565b909262016308565b9192936201630e565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016630578462016460845162004c22565b515103620165d65762016473906201d1aa565b9190911562015fff5784931562016534576000935b62016497575050505050600090565b81518410156201652e5784936001600160a01b039081620164b9828662004c79565b511660005261032080845260409060ff826000205416620164ea575b5050620164e3915062004c12565b9362016488565b8293620164fa6002948862004c79565b5116600052845260002001546201651662006854865162004c22565b51146201652657803880620164d5565b505050505090565b62015fff565b6000935b62016547575050505050600090565b81518410156201652e5784936001600160a01b03908162016569828662004c79565b51166000526106b880845260409060ff8260002054166201659a575b505062016593915062004c12565b9362016538565b8293620165aa6002948862004c79565b511660005284526000200154620165c662006854865162004c22565b5114620165265780388062016585565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62016695816201d1aa565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620166ca838762004c79565b51169083511603620166e757620166e19062004c12565b620166ab565b5050905090565b50505050600190565b62016702816201d1aa565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062016735838662004c79565b5116908351161462006625576201674c9062004c12565b62016716565b90604001600191828251510362016845578262016770835162004c22565b515103620167eb5762016783906201d233565b156200663857829160009182945b6201679e57505050905090565b805185101562015cba576001600160a01b0380620167bd878462004c79565b511690620167d062006854855162004c22565b51160362015cb257620167e4849562004c12565b9462016791565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620169ed5782620168bd835162004c22565b5151106201699357620168d0906201d233565b156200663857600091835b620168e65750505090565b815183101562015e7257600080855b62016915575b501562015deb576201690e849362004c12565b92620168db565b620169268396949295965162004c22565b515181101562016988576001600160a01b038062016945888562004c79565b511690620169598362007494875162004c22565b5116146201697b57906201696f84939262004c12565b909395949192620168f5565b50918094935038620168fb565b9493909294620168fb565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016c04578462016a69845162004c22565b51510362016baa5762016a7c906201d233565b1562015fff5784931562016b1a576000935b62016a9a575050505090565b805184101562005131576001600160a01b038062016ab9868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262016ae4888662004c79565b51166000528452600020015462016b0062006854855162004c22565b510362015fff5762016b13859462004c12565b9362016a8e565b6000935b62016b2a575050505090565b805184101562005131576001600160a01b038062016b49868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016b74888662004c79565b51166000528452600020015462016b9062006854855162004c22565b510362015fff5762016ba3859462004c12565b9362016b1e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016d53578262016c7c835162004c22565b51510362016cf95762016c8f906201d233565b919091156200663857600091835b62016cab5750505050600090565b8051831015620161f55783926001600160a01b038062016ccc838562004c79565b51169062016cdf62006854865162004c22565b511614620050f75762016cf29062004c12565b9262016c9d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016ee2578262016dcb835162004c22565b51511062016e885762016dde906201d233565b15620066385782916000935b62016df85750505050600090565b8151841015620161f5576000835b62016e20575b5062016e19839462004c12565b9362016dea565b93929162016e2f825162004c22565b515185101562016e7f576001600160a01b038062016e4e868462004c79565b51169062016e628762007494865162004c22565b51161462015cb25762016e7783949562004c12565b909262016e06565b91929362016e0c565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362017120578462016f5e845162004c22565b515103620170c65762016f71906201d233565b9190911562015fff5784931562017024576000935b62016f95575050505050600090565b81518410156201652e5784936001600160a01b03908162016fb7828662004c79565b511660005261032080845260409060ff82600020541662016fe8575b505062016fe1915062004c12565b9362016f86565b829362016ff86002948862004c79565b5116600052845260002001546201701462006854865162004c22565b5114620165265780388062016fd3565b6000935b62017037575050505050600090565b81518410156201652e5784936001600160a01b03908162017059828662004c79565b51166000526106b880845260409060ff8260002054166201708a575b505062017083915062004c12565b9362017028565b82936201709a6002948862004c79565b511660005284526000200154620170b662006854865162004c22565b5114620165265780388062017075565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62017185816201d233565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620171ba838762004c79565b51169083511603620166e757620171d19062004c12565b6201719b565b620171e2816201d233565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062017215838662004c79565b5116908351161462006625576201722c9062004c12565b620171f6565b9060200160019182825151036201731b578262017250835162004c22565b515103620172c15762017263906201d26c565b9050156200663857829160009182945b6201728057505050905090565b805185101562015cba5762017296858262004c79565b51620172a762006854845162004c22565b510362015cb257620172ba849562004c12565b9462017273565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620174b9578262017393835162004c22565b5151106201745f57620173a6906201d26c565b9050156200663857600091835b620173be5750505090565b815183101562015e7257600080855b620173ed575b501562015deb57620173e6849362004c12565b92620173b3565b620173fe8396949295965162004c22565b5151811015620174545762017414868362004c79565b51620174268262007494865162004c22565b51146201744757906201743b84939262004c12565b909395949192620173cd565b50918094935038620173d3565b9493909294620173d3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201762e57600262017532835162004c22565b515103620175d45762017545906201d26c565b9050919091156200663857829160009182945b6201756557505050905090565b815185101562015cba576201757b858362004c79565b516201758c62006854835162004c22565b51118015620175ae575b62015cb257620175a7849562004c12565b9462017558565b50620175bb858362004c79565b51620175cc62015a55835162004c22565b511062017596565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620177725782620176a6835162004c22565b5151036201771857620176b9906201d26c565b9050156200663857829160009182945b620176d657505050905090565b805185101562015cba57620176ec858262004c79565b51620176fd62006854845162004c22565b51101562015cb25762017711849562004c12565b94620176c9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620178b65782620177ea835162004c22565b5151036201785c57620177fd906201d26c565b9050156200663857829160009182945b6201781a57505050905090565b805185101562015cba5762017830858262004c79565b516201784162006854845162004c22565b51111562015cb25762017855849562004c12565b946201780d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620179ff57826201792e835162004c22565b515103620179a55762017941906201d26c565b909391501562006638578060009384925b6201796b575b5050506200685462015831915162004c22565b90919381518510156201799e576200defd62017995916201798d878562004c79565b519062006271565b91908162017952565b9362017958565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017b40578262017a77835162004c22565b51510362017ae65762017a8a906201d26c565b909391501562006638578060009384925b62017ab4575b5050506200685462015932915162004c22565b909193815185101562017adf576200defd62017ad6916201798d878562004c79565b91908162017a9b565b9362017aa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200190600190818351510362017c8357600262017bba845162004c22565b51510362017c295762017bcd906201d26c565b909150156200663857906000918183925b62017bf7575b50505062015a3262006854835162004c22565b909192825184101562017c2257620064f062017c19916201798d868662004c79565b91908062017bde565b9262017be4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017dc4578262017cfb835162004c22565b51510362017d6a5762017d0e906201d26c565b909391501562006638578060009384925b62017d38575b5050506200685462015b60915162004c22565b909193815185101562017d63576200defd62017d5a916201798d878562004c79565b91908162017d1f565b9362017d25565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017f08578262017e3c835162004c22565b51510362017eae5762017e4f906201d26c565b90929150156200663857600091835b62017e6c5750505050600090565b8051831015620161f5578262017e8485948362004c79565b5162017e9562006854855162004c22565b5110620050f75762017ea79062004c12565b9262017e5e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201804c578262017f80835162004c22565b51510362017ff25762017f93906201d26c565b9291921562015deb57600092845b62017fb0575050505050600090565b80518410156201652e578362017fc886958462004c79565b5162017fd962006854865162004c22565b5111620165265762017feb9062004c12565b9362017fa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620181c1576002620180c5835162004c22565b5151036201816757620180d8906201d26c565b929091921562015deb57600092845b620180f6575050505050600090565b80518410156201652e57836201810e86958562004c79565b516201811f62006854855162004c22565b5111158062018140575b6201652657620181399062004c12565b93620180e7565b506201814d818562004c79565b516201815e62015a55855162004c22565b51101562018129565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018305578262018239835162004c22565b515103620182ab576201824c906201d26c565b9291921562015deb57600092845b62018269575050505050600090565b80518410156201652e57836201828186958462004c79565b516201829262006854865162004c22565b51146201652657620182a49062004c12565b936201825a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201844a57826201837d835162004c22565b515103620183f05762018390906201d26c565b9050919091156200663857600091835b620183ae5750505050600090565b8051831015620161f55782620183c685948362004c79565b51620183d762006854855162004c22565b5110620050f757620183e99062004c12565b92620183a0565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201858f5782620184c2835162004c22565b5151036201853557620184d5906201d26c565b9050919091156200663857600091835b620184f35750505050600090565b8051831015620161f557826201850b85948362004c79565b516201851c62006854855162004c22565b5111620050f7576201852e9062004c12565b92620184e5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201870157600262018608835162004c22565b515103620186a7576201861b906201d26c565b9050156200663857600091835b620186365750505050600090565b8151831015620161f557826201864e85948462004c79565b516201865f62006854845162004c22565b5111158062018680575b620050f757620186799062004c12565b9262018628565b506201868d818462004c79565b516201869e62015a55845162004c22565b51101562018669565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018846578262018779835162004c22565b515103620187ec576201878c906201d26c565b9050919091156200663857600091835b620187aa5750505050600090565b8051831015620161f55782620187c285948362004c79565b51620187d362006854855162004c22565b5114620050f757620187e59062004c12565b926201879c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620189cb5782620188be835162004c22565b5151106201897157620188d1906201d26c565b905015620066385782916000935b620188ed5750505050600090565b8151841015620161f5576000835b62018915575b506201890e839462004c12565b93620188df565b93929162018924825162004c22565b515185101562018968576201893a848262004c79565b516201894c8662007494855162004c22565b511462015cb2576201896083949562004c12565b9092620188fb565b91929362018901565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362018ccb578462018a47845162004c22565b51511062018c715762018a5a906201d233565b9290921562015fff5784931562018b6e576000935b62018a7b575050505090565b825184101562005131576001600160a01b038062018a9a868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b62018ae0575b505050501562015fff5762018ad9859462004c12565b9362018a6f565b9092989591939662018af3865162004c22565b51518a101562018b62578162018b0a8a8362004c79565b5116600052838352600285600020015462018b2b8b62007494895162004c22565b511462018b4f5762018b408798999a62004c12565b93919097999894929662018abd565b9650509396505050843880808062018ac3565b96938296995062018ac3565b6000935b62018b7e575050505090565b825184101562005131576001600160a01b038062018b9d868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b62018be3575b505050501562015fff5762018bdc859462004c12565b9362018b72565b9092989591939662018bf6865162004c22565b51518a101562018c65578162018c0d8a8362004c79565b5116600052838352600285600020015462018c2e8b62007494895162004c22565b511462018c525762018c438798999a62004c12565b93919097999894929662018bc0565b9650509396505050843880808062018bc6565b96938296995062018bc6565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362018fb8578362018d44835162004c22565b51511062018f5e5762018d57906201d233565b9490941562015fff5783921562018e695793926000905b62018d7d575050505050600090565b83518110156201652e576001600160a01b038062018d9c838762004c79565b511660005261032080875260409160ff83600020541662018dd2575b5050509362018dc983949562004c12565b90949362018d6e565b6000929190865b62018de6575b5062018db8565b90929791939662018df8865162004c22565b515189101562018e5e578162018e0f898362004c79565b5116600052838352600285600020015462018e308a62007494895162004c22565b511462018e525762018e4487989962004c12565b939190979894929862018dd9565b50505050505091505090565b969382985062018ddf565b93926000905b62018e7e575050505050600090565b83518110156201652e576001600160a01b038062018e9d838762004c79565b51166000526106b880875260409160ff83600020541662018ed3575b5050509362018eca83949562004c12565b90949362018e6f565b6000929190865b62018ee7575b5062018eb9565b90929791939662018ef9865162004c22565b515189101562018f53578162018f10898362004c79565b5116600052838352600285600020015462018f318a62007494895162004c22565b511462018e525762018f4587989962004c12565b939190979894929862018eda565b969382985062018ee0565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101906001938483515103620192b8578462019034845162004c22565b5151106201925e5762019047906201d1aa565b9290921562015fff578493156201915b576000935b62019068575050505090565b825184101562005131576001600160a01b038062019087868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b620190cd575b505050501562015fff57620190c6859462004c12565b936201905c565b90929895919396620190e0865162004c22565b51518a10156201914f5781620190f78a8362004c79565b51166000528383526002856000200154620191188b62007494895162004c22565b51146201913c576201912d8798999a62004c12565b939190979998949296620190aa565b96505093965050508438808080620190b0565b969382969950620190b0565b6000935b6201916b575050505090565b825184101562005131576001600160a01b03806201918a868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b620191d0575b505050501562015fff57620191c9859462004c12565b936201915f565b90929895919396620191e3865162004c22565b51518a1015620192525781620191fa8a8362004c79565b511660005283835260028560002001546201921b8b62007494895162004c22565b51146201923f57620192308798999a62004c12565b939190979998949296620191ad565b96505093965050508438808080620191b3565b969382969950620191b3565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362019599578362019331835162004c22565b5151106201953f5762019344906201d1aa565b9490941562015fff578392156201944a5793926000905b6201936a575050505050600090565b83518110156201652e576001600160a01b038062019389838762004c79565b511660005261032080875260409160ff836000205416620193bf575b50505093620193b683949562004c12565b9094936201935b565b6000929190865b620193d3575b50620193a5565b909297919396620193e5865162004c22565b51518910156201943f5781620193fc898362004c79565b511660005283835260028560002001546201941d8a62007494895162004c22565b511462018e52576201943187989962004c12565b9391909798949298620193c6565b9693829850620193cc565b93926000905b6201945f575050505050600090565b83518110156201652e576001600160a01b03806201947e838762004c79565b51166000526106b880875260409160ff836000205416620194b4575b50505093620194ab83949562004c12565b90949362019450565b6000929190865b620194c8575b506201949a565b909297919396620194da865162004c22565b5151891015620195345781620194f1898362004c79565b51166000528383526002856000200154620195128a62007494895162004c22565b511462018e52576201952687989962004c12565b9391909798949298620194bb565b9693829850620194c1565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019762578462019615845162004c22565b515103620197085762019628906201d1aa565b1562015fff578493156201969f576000935b62019646575050505090565b805184101562005131576001600160a01b0362019664858362004c79565b511660005261032582526040600020546201968462006854855162004c22565b51101562015fff5762019698859462004c12565b936201963a565b6000935b620196af575050505090565b805184101562005131576001600160a01b03620196cd858362004c79565b51166000526106bd8252604060002054620196ed62006854855162004c22565b51101562015fff5762019701859462004c12565b93620196a3565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201992b5784620197de845162004c22565b515103620198d157620197f1906201d1aa565b1562015fff5784931562019868576000935b6201980f575050505090565b805184101562005131576001600160a01b036201982d858362004c79565b511660005261032582526040600020546201984d62006854855162004c22565b51111562015fff5762019861859462004c12565b9362019803565b6000935b62019878575050505090565b805184101562005131576001600160a01b0362019896858362004c79565b51166000526106bd8252604060002054620198b662006854855162004c22565b51111562015fff57620198ca859462004c12565b936201986c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101600193848251510362019b81576002620199a7835162004c22565b51510362019b2757620199ba906201d1aa565b9290921562015fff5784931562019a79576000935b620199db575050505090565b825184101562005131576001600160a01b0380620199fa868662004c79565b5116600052610325808352604090816000205462019a1d62006854875162004c22565b511192831562019a43575b50505062015fff5762019a3c859462004c12565b93620199cf565b9091925062019a53878762004c79565b511660005282526000205462019a6e62015a55845162004c22565b511038808062019a28565b6000935b62019a89575050505090565b825184101562005131576001600160a01b038062019aa8868662004c79565b51166000526106bd808352604090816000205462019acb62006854875162004c22565b511192831562019af1575b50505062015fff5762019aea859462004c12565b9362019a7d565b9091925062019b01878762004c79565b511660005282526000205462019b1c62015a55845162004c22565b511038808062019ad6565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019d48578462019bfd845162004c22565b51510362019cee5762019c10906201d1aa565b1562015fff5784931562019c86576000935b62019c2e575050505090565b805184101562005131576001600160a01b0362019c4c858362004c79565b5116600052610325825260406000205462019c6c62006854855162004c22565b510362015fff5762019c7f859462004c12565b9362019c22565b6000935b62019c96575050505090565b805184101562005131576001600160a01b0362019cb4858362004c79565b51166000526106bd825260406000205462019cd462006854855162004c22565b510362015fff5762019ce7859462004c12565b9362019c8a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019f29578462019dc4845162004c22565b51510362019ecf5762019dd7906201d1aa565b1562015fff5784931562019e625760009182945b62019dfc575b505050505050600090565b815185101562019e5c5785946001600160a01b0362019e1c828562004c79565b511684526103258252604084205462019e3a62006854875162004c22565b511062019e535762019e4c9062004c12565b9462019deb565b50505050505090565b62019df1565b60009182945b62019e7857505050505050600090565b815185101562019e5c5785946001600160a01b0362019e98828562004c79565b511684526106bd8252604084205462019eb662006854875162004c22565b511062019e535762019ec89062004c12565b9462019e68565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201a0fa578462019fa5845162004c22565b5151036201a0a05762019fb8906201d1aa565b1562015fff578493156201a0335760009182945b62019fdc57505050505050600090565b815185101562019e5c5785946001600160a01b0362019ffc828562004c79565b51168452610325825260408420546201a01a62006854875162004c22565b511162019e53576201a02c9062004c12565b9462019fcc565b60009182945b6201a04957505050505050600090565b815185101562019e5c5785946001600160a01b036201a069828562004c79565b511684526106bd825260408420546201a08762006854875162004c22565b511162019e53576201a0999062004c12565b946201a039565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910160019384825151036201a35a5760026201a176835162004c22565b5151036201a300576201a189906201d1aa565b9190911562015fff578493156201a24d576000935b6201a1ad575050505050600090565b81518410156201652e5784936001600160a01b03806201a1ce838662004c79565b511660005261032580865260409081600020546201a1f162006854875162004c22565b51111592836201a216575b50505062016526576201a20f9062004c12565b936201a19e565b909192506201a226848762004c79565b51166000528552600020546201a24162015a55845162004c22565b5110153880806201a1fc565b6000935b6201a260575050505050600090565b81518410156201652e5784936001600160a01b03806201a281838662004c79565b51166000526106bd80865260409081600020546201a2a462006854875162004c22565b51111592836201a2c9575b50505062016526576201a2c29062004c12565b936201a251565b909192506201a2d9848762004c79565b51166000528552600020546201a2f462015a55845162004c22565b5110153880806201a2af565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201a53157836201a3d3845162004c22565b5151036201a4d757156201a45c576201a3ec906201d1aa565b156200663857829160009182945b6201a40757505050905090565b805185101562015cba576201a4316001600160a01b036201a429878462004c79565b51166201a5e7565b6201a44162006854845162004c22565b51101562015cb2576201a455849562004c12565b946201a3fa565b6201a467906201d1aa565b156200663857829160009182945b6201a48257505050905090565b805185101562015cba576201a4ac6001600160a01b036201a4a4878462004c79565b51166201a58b565b6201a4bc62006854845162004c22565b51101562015cb2576201a4d0849562004c12565b946201a475565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201a59f57505090565b90916200824c6201a5e0916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b9062006271565b906201a591565b60009081905b606482106201a5fb57505090565b90916200824c6201a633916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a5ed565b600091906201a694576000905b606482106201a65557505090565b90916200824c6201a68d916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a647565b81905b606482106201a6a557505090565b90916200824c6201a6df916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b906201a697565b916020019060019283835151036201a85357836201a705845162004c22565b5151036201a7f957156201a786576201a71e906201d1aa565b156200663857829160009182945b6201a73957505050905090565b805185101562015cba576201a75b6001600160a01b036201a429878462004c79565b6201a76b62006854845162004c22565b51111562015cb2576201a77f849562004c12565b946201a72c565b6201a791906201d1aa565b156200663857829160009182945b6201a7ac57505050905090565b805185101562015cba576201a7ce6001600160a01b036201a4a4878462004c79565b6201a7de62006854845162004c22565b51111562015cb2576201a7f2849562004c12565b946201a79f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201aa8b5760026201a8cd845162004c22565b5151036201aa3157156201a986576201a8e6906201d1aa565b919091156200663857829160009182945b6201a90457505050905090565b815185101562015cba576001600160a01b036201a927816201a429888662004c79565b6201a93762006854845162004c22565b51119081156201a95b575b5062015cb2576201a954849562004c12565b946201a8f7565b6201a96d91506201a429878562004c79565b6201a97d62015a55835162004c22565b5110386201a942565b6201a991906201d1aa565b919091156200663857829160009182945b6201a9af57505050905090565b815185101562015cba576001600160a01b036201a9d2816201a4a4888662004c79565b6201a9e262006854845162004c22565b51119081156201aa06575b5062015cb2576201a9ff849562004c12565b946201a9a2565b6201aa1891506201a4a4878562004c79565b6201aa2862015a55835162004c22565b5110386201a9ed565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160208091019160019384845151036201ac9957846201ab06855162004c22565b5151036201ac3f57156201ab87576201ab2091506201d1aa565b156200663857829160009182945b6201ab3b57505050905090565b805185101562015cba576201ab5d6001600160a01b036201a429878462004c79565b6201ab6d62006854845162004c22565b510362015cb2576201ab80849562004c12565b946201ab2e565b6201ab92906201d1aa565b9290921562015deb57600092845b6201abac575050505090565b805184101562005131576001600160a01b036201abca858362004c79565b511660009081905b606482106201ac075750506201abed62006854845162004c22565b510362015fff576201ac00859462004c12565b936201aba0565b90916200824c6201ac38916201a5d98560031b8560005261039b81018a526103996040600020549101549062004eaa565b906201abd2565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201ae6257836201ad12845162004c22565b5151036201ae0857156201ad94576201ad2b906201d1aa565b919091156200663857600091835b6201ad475750505050600090565b8051831015620161f55783926201ad6b6001600160a01b036201a429838562004c79565b6201ad7b62006854855162004c22565b5110620050f7576201ad8d9062004c12565b926201ad39565b6201ad9f906201d1aa565b919091156200663857600091835b6201adbb5750505050600090565b8051831015620161f55783926201addf6001600160a01b036201a4a4838562004c79565b6201adef62006854855162004c22565b5110620050f7576201ae019062004c12565b926201adad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b02b57836201aedb845162004c22565b5151036201afd157156201af5d576201aef4906201d1aa565b919091156200663857600091835b6201af105750505050600090565b8051831015620161f55783926201af346001600160a01b036201a429838562004c79565b6201af4462006854855162004c22565b5111620050f7576201af569062004c12565b926201af02565b6201af68906201d1aa565b919091156200663857600091835b6201af845750505050600090565b8051831015620161f55783926201afa86001600160a01b036201a4a4838562004c79565b6201afb862006854855162004c22565b5111620050f7576201afca9062004c12565b926201af76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b25d5760026201b0a5845162004c22565b5151036201b20357156201b15b576201b0be906201d1aa565b156200663857600091835b6201b0d75750505050600090565b8151831015620161f55783926001600160a01b036201b0fc816201a429848762004c79565b6201b10c62006854855162004c22565b51111590816201b12f575b50620050f7576201b1289062004c12565b926201b0c9565b6201b14191506201a429838662004c79565b6201b15162015a55845162004c22565b511015386201b117565b6201b166906201d1aa565b156200663857600091835b6201b17f5750505050600090565b8151831015620161f55783926001600160a01b036201b1a4816201a4a4848762004c79565b6201b1b462006854855162004c22565b51111590816201b1d7575b50620050f7576201b1d09062004c12565b926201b171565b6201b1e991506201a4a4838662004c79565b6201b1f962015a55845162004c22565b511015386201b1bf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b43457836201b2d6845162004c22565b5151036201b3da57156201b35f576201b2ef906201d1aa565b156200663857829160009182945b6201b30a57505050905090565b805185101562015cba576201b3346001600160a01b036201b32c878462004c79565b51166201b4e3565b6201b34462006854845162004c22565b51101562015cb2576201b358849562004c12565b946201b2fd565b6201b36a906201d1aa565b156200663857829160009182945b6201b38557505050905090565b805185101562015cba576201b3af6001600160a01b036201b3a7878462004c79565b51166201b48e565b6201b3bf62006854845162004c22565b51101562015cb2576201b3d3849562004c12565b946201b378565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201b4a257505090565b90916200824c6201b4dc916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b494565b60009081905b606482106201b4f757505090565b90916200824c6201b52f916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b4e9565b600091906201b590576000905b606482106201b55157505090565b90916200824c6201b589916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b543565b81905b606482106201b5a157505090565b90916200824c6201b5db916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b593565b916020019060019283835151036201b74f57836201b601845162004c22565b5151036201b6f557156201b682576201b61a906201d1aa565b156200663857829160009182945b6201b63557505050905090565b805185101562015cba576201b6576001600160a01b036201b32c878462004c79565b6201b66762006854845162004c22565b51111562015cb2576201b67b849562004c12565b946201b628565b6201b68d906201d1aa565b156200663857829160009182945b6201b6a857505050905090565b805185101562015cba576201b6ca6001600160a01b036201b3a7878462004c79565b6201b6da62006854845162004c22565b51111562015cb2576201b6ee849562004c12565b946201b69b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b9875760026201b7c9845162004c22565b5151036201b92d57156201b882576201b7e2906201d1aa565b919091156200663857829160009182945b6201b80057505050905090565b815185101562015cba576001600160a01b036201b823816201b32c888662004c79565b6201b83362006854845162004c22565b51119081156201b857575b5062015cb2576201b850849562004c12565b946201b7f3565b6201b86991506201b32c878562004c79565b6201b87962015a55835162004c22565b5110386201b83e565b6201b88d906201d1aa565b919091156200663857829160009182945b6201b8ab57505050905090565b815185101562015cba576001600160a01b036201b8ce816201b3a7888662004c79565b6201b8de62006854845162004c22565b51119081156201b902575b5062015cb2576201b8fb849562004c12565b946201b89e565b6201b91491506201b3a7878562004c79565b6201b92462015a55835162004c22565b5110386201b8e9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201bb5057836201ba00845162004c22565b5151036201baf657156201ba82576201ba19906201d1aa565b919091156200663857600091835b6201ba355750505050600090565b8051831015620161f55783926201ba596001600160a01b036201b32c838562004c79565b6201ba6962006854855162004c22565b5110620050f7576201ba7b9062004c12565b926201ba27565b6201ba8d906201d1aa565b919091156200663857600091835b6201baa95750505050600090565b8051831015620161f55783926201bacd6001600160a01b036201b3a7838562004c79565b6201badd62006854855162004c22565b5110620050f7576201baef9062004c12565b926201ba9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160200190600192836201bbbf845162004c22565b5151036201bd195783835151036201bcbf57156201bc4b576201bbe2906201d1aa565b919091156200663857600091835b6201bbfe5750505050600090565b8051831015620161f55783926201bc226001600160a01b036201b32c838562004c79565b6201bc3262006854855162004c22565b5111620050f7576201bc449062004c12565b926201bbf0565b6201bc56906201d1aa565b919091156200663857600091835b6201bc725750505050600090565b8051831015620161f55783926201bc966001600160a01b036201b3a7838562004c79565b6201bca662006854855162004c22565b5111620050f7576201bcb89062004c12565b926201bc64565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b916020019060026201bd86835162004c22565b5151036201bf4b5760019283835151036201bef157156201be49576201bdac906201d1aa565b156200663857600091835b6201bdc55750505050600090565b8151831015620161f55783926001600160a01b036201bdea816201b32c848762004c79565b6201bdfa62006854855162004c22565b51111590816201be1d575b50620050f7576201be169062004c12565b926201bdb7565b6201be2f91506201b32c838662004c79565b6201be3f62015a55845162004c22565b511015386201be05565b6201be54906201d1aa565b156200663857600091835b6201be6d5750505050600090565b8151831015620161f55783926001600160a01b036201be92816201b3a7848762004c79565b6201bea262006854855162004c22565b51111590816201bec5575b50620050f7576201bebe9062004c12565b926201be5f565b6201bed791506201b3a7838662004c79565b6201bee762015a55845162004c22565b511015386201bead565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060019384835151036201c16a5760026201bfc8845162004c22565b5151036201c11057156201c072576201bfe1906201d1aa565b9290921562015deb57600092845b6201bffb575050505090565b805184101562005131576201c01562006854845162004c22565b51606481101562004c30576001600160a01b036201c034868462004c79565b5116600052600390811b0182526040600020546201c05762015a55855162004c22565b51101562015fff576201c06b859462004c12565b936201bfef565b6201c07d906201d1aa565b9290921562015deb57600092845b6201c097575050505090565b805184101562005131576201c0b162006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c0d4878562004c79565b511660005260031b0182526040600020546201c0f562015a55855162004c22565b51101562015fff576201c109859462004c12565b936201c08b565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208092019060019384835151036201c3895760026201c1e7845162004c22565b5151036201c32f57156201c291576201c200906201d1aa565b9290921562015deb57600092845b6201c21a575050505090565b805184101562005131576201c23462006854845162004c22565b51606481101562004c30576001600160a01b036201c253868462004c79565b5116600052600390811b0182526040600020546201c27662015a55855162004c22565b51111562015fff576201c28a859462004c12565b936201c20e565b6201c29c906201d1aa565b9290921562015deb57600092845b6201c2b6575050505090565b805184101562005131576201c2d062006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c2f3878562004c79565b511660005260031b0182526040600020546201c31462015a55855162004c22565b51111562015fff576201c328859462004c12565b936201c2aa565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101600392836201c3f9835162004c22565b5151036201c6855760019485835151036201c62b57156201c523576201c41f906201d1aa565b9390931562015fff57600093855b6201c43a57505050505090565b80518510156201c51d576201c45462006854845162004c22565b516064908181101562004c30576001600160a01b03908490826201c4798a8762004c79565b5116600052811b01865260409081600020546201c49b62015a55885162004c22565b51119283156201c4c1575b50505062019df1576201c4ba869562004c12565b946201c42d565b909192506201c4d562006854875162004c22565b519081101562004c305784916201c4ed898662004c79565b5116600052811b018552600020546201c5126201c50b855162004c22565b5162004c57565b51103880806201c4a6565b62016526565b6201c531909392936201d1aa565b9390931562015fff57600093855b6201c54c57505050505090565b80518510156201c51d576201c56662006854845162004c22565b5160648082101562004c30576001600160a01b0391826201c588898662004c79565b511660005261039b8091881b01855260409182600020546201c5af62015a55895162004c22565b51119384156201c5d6575b5050505062019df1576201c5cf869562004c12565b946201c53f565b90919293506201c5eb62006854885162004c22565b519182101562004c30576201c601898662004c79565b5116600052861b018352600020546201c61f6201c50b855162004c22565b5110388080806201c5ba565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201c6fa835162004c22565b5151036201c8b15760019384835151036201c85757156201c7b5576201c720906201d1aa565b9290921562015deb57600092845b6201c73d575050505050600090565b80518410156201652e576201c75762006854845162004c22565b5193606485101562004c305785946001600160a01b036201c779838562004c79565b5116600052600390811b0183526040600020546201c79c62015a55865162004c22565b511062016526576201c7ae9062004c12565b936201c72e565b6201c7c0906201d1aa565b9290921562015deb57600092845b6201c7dd575050505050600090565b80518410156201652e576201c7f762006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201c81d848662004c79565b511660005260031b0183526040600020546201c83e62015a55865162004c22565b511062016526576201c8509062004c12565b936201c7ce565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060026201c921835162004c22565b5151036201cad85760019384835151036201ca7e57156201c9dc576201c947906201d1aa565b9290921562015deb57600092845b6201c964575050505050600090565b80518410156201652e576201c97e62006854845162004c22565b5193606485101562004c305785946001600160a01b036201c9a0838562004c79565b5116600052600390811b0183526040600020546201c9c362015a55865162004c22565b511162016526576201c9d59062004c12565b936201c955565b6201c9e7906201d1aa565b9290921562015deb57600092845b6201ca04575050505050600090565b80518410156201652e576201ca1e62006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201ca44848662004c79565b511660005260031b0183526040600020546201ca6562015a55865162004c22565b511162016526576201ca779062004c12565b936201c9f5565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b916020809101600392836201cb48835162004c22565b5151036201cdd85760019485835151036201cd7e57156201cc6d576201cb6e906201d1aa565b9390931562015fff57600093855b6201cb8c57505050505050600090565b805185101562019e5c576201cba662006854845162004c22565b51946064958681101562004c305787966001600160a01b03918590836201cbce868862004c79565b5116600052811b018752604080600020546201cbef62015a55895162004c22565b51111592836201cc14575b50505062019e53576201cc0d9062004c12565b946201cb7c565b91985091506201cc2962006854875162004c22565b519788101562004c3057889785916201cc43858762004c79565b5116600052811b018652600020546201cc616201c50b865162004c22565b5110153880806201cbfa565b6201cc7b909392936201d1aa565b9390931562015fff57600093855b6201cc9957505050505050600090565b805185101562019e5c576201ccb362006854845162004c22565b519460648087101562004c305787966001600160a01b0390816201ccd8858762004c79565b511660005261039b8091891b01865260409081600020546201ccff62015a558a5162004c22565b51111593846201cd25575b5050505062019e53576201cd1e9062004c12565b946201cc89565b9193509198506201cd3b62006854885162004c22565b519081101562004c305789986201cd53858762004c79565b5116600052871b018452600020546201cd716201c50b865162004c22565b511015388080806201cd0a565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201ce42816201cfc7565b156201cfbe576040810190606082510151511515806201cf83575b156201ce6f5750516060015151600191565b604082510151511515806201cf6a575b156201ce915750516040015151600191565b60808251015151151590816201cf50575b50156201ceb457516080015151600191565b805160c081015151156201cefb57506201ced360c08251015162004c22565b51516201cee457505b600090600090565b60c06201cef49151015162004c22565b5151600191565b602081015151156201cf135750516020015151600191565b60a0015180516201cf27575b50506201cedc565b6201cf329062004c22565b51516201cf4057806201cf1f565b60a06201cef49151015162004c22565b60209150015160268110156200294257601014386201cea2565b506020810151602681101562002942576013146201ce7f565b5060208101805160268110156200294257600c149081156201cfa7575b506201ce5d565b90505160268110156200294257600f14386201cfa0565b50600090600090565b60200180519060269081831015620029425760018093146201d1a55780518281101562002942576002146201d1a55780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760051462015db6578051838110156201d1905760061462015db6578051838110156201d1905760071462015db6578051838110156201d1905760081462015db6578051838110156201d1905760091462015db6578051838110156201d19057600a1462015db6578051838110156201d19057600b1462015db6578051838110156201d19057600c1462015db6578051838110156201d19057600d1462015db6578051838110156201d19057600e1462015db6578051838110156201d19057600f1462015db6578051838110156201d1905760101462015db6578051838110156201d1905760111462015db6578051838110156201d1905760121462015db6578051838110156201d1905760131462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db65751918210156201d17b5750601e14620031f85750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201d1b5816201cfc7565b156201d224576020810151602681101562002942576004146201d211576040015160c0015180516201d1ff57506040516201d1f08162002a5e565b60008152600036813790600090565b6201d20a9062004c22565b5190600190565b60c060406201d20a920151015162004c46565b506040516201d1f08162002a5e565b6020810151602681101562002942576004146201d25957506040516201d1f08162002a5e565b60c060406201d20a920151015162004c22565b6201d277816201d3bc565b156201d3ac57602081019081519160269081841015620029425760018094146201d3915780518281101562002942576003146201d3915780519082821015620029425760048092146201d375578051838110156201d190576005146201d375578051838110156201d190576006146201d375578051838110156201d190576014146201d375578051838110156201d190576015146201d3755751918210156201d17b5750601e146201d357575050604051906201d3348262002a5e565b60008252604051916201d3478362002a5e565b6000835260003681379190600090565b604001916201d37060a0620077f0818651015162004c22565b519190565b505050604001916201d37060a0620077f0818651015162004c22565b5050604001916201d37060a0620077f0818651015162004c22565b50604051906201d3348262002a5e565b60200180519060269081831015620029425760018093146201d1a5578051828110156200294257600214620066385780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db6578051838110156201d19057601e1462015db6578051838110156201d1905760051462015db65751918210156201d17b5750600614620031f85750600090565b916101f581146201d523576101f681146201d517576101f781146201d50b576101f881146201d4ff576101f981146201d4f3576101fa81146201d4e7576101fb81146201d4db576101fc146201d4d0575050600090565b620031f8916201df74565b50620031f8916201ddcf565b50620031f8916201dc6a565b50620031f8916201db05565b50620031f8916201d9a0565b50620031f8916201d7fb565b50620031f8916201d696565b50620031f891906020019060019182815151036201d63c57826201d548825162004c22565b5151036201d5e2576020820151602681101562002942576002036200663857600091835b6201d57a5750505050600090565b604081019260a0936201d591858251015162004c57565b51518210156201d5da57816200749487966201d5b09351015162004c57565b516201d5c162006854855162004c22565b5110620050f7576201d5d39062004c12565b926201d56c565b505062015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d7a157826201d6b5825162004c22565b5151036201d747576020820151602681101562002942576002036200663857600091835b6201d6e75750505050600090565b604081019260a0936201d6fe858251015162004c57565b51518210156201d5da57816200749487966201d71d9351015162004c57565b516201d72e62006854855162004c22565b5111620050f7576201d7409062004c12565b926201d6d9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d9465760026201d81b825162004c22565b5151036201d8ec576020820151602681101562002942576002036200663857600091835b6201d84d5750505050600090565b604081019260a0936201d864858251015162004c57565b51518210156201d5da5781856201d88582620074948a998651015162004c57565b516201d89662006854885162004c22565b51111592836201d8bb575b505050620050f7576201d8b49062004c12565b926201d83f565b5101516201d8cf9250620074949062004c57565b516201d8e062015a55855162004c22565b5110158138806201d8a1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201daab57826201d9bf825162004c22565b5151036201da51576020820151602681101562002942576002036200663857600091835b6201d9f15750505050600090565b604081019260a0936201da08858251015162004c57565b51518210156201d5da57816200749487966201da279351015162004c57565b516201da3862006854855162004c22565b5114620050f7576201da4a9062004c12565b926201d9e3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dc1057826201db24825162004c22565b5151036201dbb6576020820151602681101562002942576002036200663857600091835b6201db565750505050600090565b604081019260a0936201db6d858251015162004c68565b51518210156201d5da57816200749487966201db8c9351015162004c46565b516201db9d62006854855162004c22565b5110620050f7576201dbaf9062004c12565b926201db48565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dd7557826201dc89825162004c22565b5151036201dd1b576020820151602681101562002942576002036200663857600091835b6201dcbb5750505050600090565b604081019260a0936201dcd2858251015162004c68565b51518210156201d5da57816200749487966201dcf19351015162004c46565b516201dd0262006854855162004c22565b5111620050f7576201dd149062004c12565b926201dcad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201df1a5760026201ddef825162004c22565b5151036201dec0576020820151602681101562002942576002036200663857600091835b6201de215750505050600090565b604081019260a0936201de38858251015162004c68565b51518210156201d5da5781856201de5982620074948a998651015162004c46565b516201de6a62006854885162004c22565b51111592836201de8f575b505050620050f7576201de889062004c12565b926201de13565b5101516201dea39250620074949062004c46565b516201deb462015a55855162004c22565b5110158138806201de75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201e07f57826201df93825162004c22565b5151036201e025576020820151602681101562002942576002036200663857600091835b6201dfc55750505050600090565b604081019260a0936201dfdc858251015162004c68565b51518210156201d5da57816200749487966201dffb9351015162004c46565b516201e00c62006854855162004c22565b5114620050f7576201e01e9062004c12565b926201dfb7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91603381036201e1c3575060209150016001815151036201e1735760016201e102825162004c22565b5151036201e12057620068546201e11a915162004c22565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201e2ac575060209150016001815151036201e25c5760016201e1eb825162004c22565b5151036201e20957620068546201e203915162004c22565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201e3be575060209150016001815151036201e36e5760026201e2d4825162004c22565b5151036201e314576201e2ec62006854825162004c22565b5142101590816201e2fb575090565b6201e30d915062015a55905162004c22565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201e4c2575060209150016001815151036201e4685760016201e3e6825162004c22565b5151036201e40e5762015831620068546201e401426200628d565b5050505050925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603781036201e5b9575060209150016001815151036201e55f5760016201e4ea825162004c22565b5151036201e5055762015932620068546201e401426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603881036201e6bd575060209150016001815151036201e6635760026201e5e1825162004c22565b5151036201e609576201e5f4426200628d565b505050505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603981036201e7c2575060209150016001815151036201e7685760016201e6e5825162004c22565b5151036201e70e5762015831620068546201e700426200628d565b505050509390505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603a81036201e8b9575060209150016001815151036201e85f5760016201e7ea825162004c22565b5151036201e8055762015932620068546201e700426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603b81036201e9be575060209150016001815151036201e9645760026201e8e1825162004c22565b5151036201e90a576201e8f4426200628d565b50505050905062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603c81036201eac3575060209150016001815151036201ea695760016201e9e6825162004c22565b5151036201ea0f5762015831620068546201ea01426200628d565b505050949150505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603d81036201ebba575060209150016001815151036201eb605760016201eaeb825162004c22565b5151036201eb065762015932620068546201ea01426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603e81036201ecbf575060209150016001815151036201ec655760026201ebe2825162004c22565b5151036201ec0b576201ebf5426200628d565b50505091505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603f81036201edc4575060209150016001815151036201ed6a5760016201ece7825162004c22565b5151036201ed105762015831620068546201ed02426200628d565b505095925050505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040928184036201eeba575050602001906001825151036201ee625760016201edee835162004c22565b5151036201ee0a575062015932620068546201ed02426200628d565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604182036201efbc575050602001906001825151036201ef645760026201eee2835162004c22565b5151036201ef0c57506201eef6426200628d565b50509250505062015a3262006854835162004c22565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9092604284036201efd45750620031f8925062020232565b604384036201efea5750620031f892506202043c565b60448481036201f002575050620031f892506202063e565b604585036201f019575050620031f89250620208bb565b604685036201f030575050620031f8925062020abd565b604785036201f047575050620031f8925062020cbf565b604885036201f05e575050620031f8925062020fa2565b604985036201f075575050620031f89250620212ad565b604a85036201f08c575050620031f8925062021589565b604b85036201f0a3575050620031f892506202194c565b604c85036201f0ba575050620031f8925062021af5565b604d85036201f0d1575050620031f8925062021bf9565b604e85036201f0e8575050620031f8925062021d51565b604f85036201f0ff575050620031f8925062021ed0565b605085036201f116575050620031f8925062021fd4565b91909293605581146000146201f2d6575060208401926002845151036201f27e57600192836201f147865162004c46565b5151036201f227575090829160009586945b6201f174575b50505050506200685462015831915162004c46565b90919293956201f1878383015162004c22565b51518710156201f220576201f1dd9084156201f1e85762009842906201f1c160646201f1b98b620074948c5162004c22565b51106202212c565b6201a5d96201f1d68a620074948b5162004c22565b51620060e5565b93929190836201f159565b62009842906201f20460646201f1b98b620074948c5162004c22565b6201a5d96201f2198a620074948b5162004c22565b5162006113565b956201f15f565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605681036201f457575060208401926002845151036201f3ff57600192836201f300865162004c46565b5151036201f3a8575090829160009586945b6201f32d575b50505050506200685462015932915162004c46565b90919293956201f3408383015162004c22565b51518710156201f3a1576201f37a9084156201f3855762009842906201f1c160646201f3728b620074948c5162004c22565b51106202219e565b93929190836201f312565b62009842906201f20460646201f3728b620074948c5162004c22565b956201f318565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605781036201f61b575060208401946002865151036201f5c25760026201f483875162004c46565b5151036201f56a5750600092835b6201f49f8287015162004c22565b51518510156201f53057906201f4f6856201f49f9389876000146201f5005760646201f4d96200960f94620074946201f4e1945162004c22565b511062022210565b6201a5d96201f1d689620074948d5162004c22565b949091506201f491565b60646201f4d96200960f94620074946201f51b945162004c22565b6201a5d96201f21989620074948d5162004c22565b935050939250506201f54762006854835162004c46565b5181101591826201f55757505090565b62015a5c91925062015a55905162004c46565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605881036201f7d0575060208401926002845151036201f77857600192836201f649865162004c46565b5151036201f721575090829160009586945b6201f6755750505050506200685462015831915162004c46565b90919293956201f6888383015162004c22565b51518710156201f220576201f6de9084156201f6e95762009842906201f6c260646201f6ba8b620074948c5162004c22565b511062022282565b6201a5d96201f6d78a620074948b5162004c22565b5162005d82565b93929190836201f65b565b62009842906201f70560646201f6ba8b620074948c5162004c22565b6201a5d96201f71a8a620074948b5162004c22565b5162005db7565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605981036201f949575060208401926002845151036201f8f157600192836201f7fa865162004c46565b5151036201f89a575090829160009586945b6201f8265750505050506200685462015932915162004c46565b90919293956201f8398383015162004c22565b51518710156201f3a1576201f8739084156201f87e5762009842906201f6c260646201f86b8b620074948c5162004c22565b5110620222f4565b93929190836201f80c565b62009842906201f70560646201f86b8b620074948c5162004c22565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a81036201fad3575060208401946002865151036201fa7a5760026201f975875162004c46565b5151036201fa225750600092835b6201f9918287015162004c22565b51518510156201f53057906201f9e8856201f9919389876000146201f9f25760646201f9cb6200960f94620074946201f9d3945162004c22565b511062022366565b6201a5d96201f6d789620074948d5162004c22565b949091506201f983565b60646201f9cb6200960f94620074946201fa0d945162004c22565b6201a5d96201f71a89620074948d5162004c22565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b81036201fcaa575060208401926002845151036201fc5257600192836201fb01865162004c46565b5151036201fbfb575090829160009586945b6201fb2d5750505050506200685462015831915162004c46565b90919293956201fb408383015162004c22565b51518710156201f2205783156201fbaf5760646201fb71816201fb698a620074948b5162004c22565b5110620223d8565b6201fb828862007494895162004c22565b519081101562004c30576201fba4916006620098429260031b01549062006271565b93929190836201fb13565b60646201fbc7816201fb698a620074948b5162004c22565b6201fbd88862007494895162004c22565b519081101562004c30576201fba49161039e620098429260031b01549062006271565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036201fe7d575060208401926002845151036201fe2557600192836201fcd4865162004c46565b5151036201fdce575090829160009586945b6201fd005750505050506200685462015932915162004c46565b90919293956201fd138383015162004c22565b51518710156201f3a15783156201fd825760646201fd44816201fd3c8a620074948b5162004c22565b51106202244a565b6201fd558862007494895162004c22565b519081101562004c30576201fd77916006620098429260031b01549062006271565b93929190836201fce6565b60646201fd9a816201fd3c8a620074948b5162004c22565b6201fdab8862007494895162004c22565b519081101562004c30576201fd779161039e620098429260031b01549062006271565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d8196929394961460001462020054575060208401926002845151036201fffb5760026201fead855162004c46565b5151036201ffa35750600080955b6201fec98187015162004c22565b51518710156201ff8c5783156201ff3b576064916201fefb836201fef38a620074948a5162004c22565b5110620224bc565b6201ff0c8862007494885162004c22565b519283101562004c3057620142c46201ff329160066201fec99560031b01549062006271565b9691506201febb565b6064916201ff54836201fef38a620074948a5162004c22565b6201ff658862007494885162004c22565b519283101562004c3057620142c46201ff329161039e6201fec99560031b01549062006271565b509293509350506201f54762006854835162004c46565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e0362015deb576020840192600284515103620201da576001928362020081865162004c46565b51510362020183575090829160009586945b620200ae575b50505050506200685462015b60915162004c46565b9091929395620200c18383015162004c22565b51518710156202017c57831562020130576064620200f281620200ea8a620074948b5162004c22565b51106202252e565b620201038862007494895162004c22565b519081101562004c305762020125916006620098429260031b01549062006271565b939291908362020093565b60646202014881620200ea8a620074948b5162004c22565b620201598862007494895162004c22565b519081101562004c3057620201259161039e620098429260031b01549062006271565b9562020099565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b906040810190600182515103620203e257600162020251835162004c22565b5151036202038857602001916001835151036202032e57600162020276845162004c22565b515103620202d45715620202b05762006854620202a862015831926201a4296200685460018060a01b03925162004c22565b925162004c22565b62006854620202a862015831926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906040810190600182515103620205e45760016202045b835162004c22565b5151036202058a57602001916001835151036202053057600162020480845162004c22565b515103620204d65715620204b25762006854620202a862015932926201a4296200685460018060a01b03925162004c22565b62006854620202a862015932926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040820191600183515103620208615760016202065c845162004c22565b515103620208075760200190600182515103620207ad57600262020681835162004c22565b515103620207535715620206f75760018060a01b03620206ab816201a42962006854865162004c22565b620206bb62006854845162004c22565b5111159283620206cb5750505090565b620206eb92935062015a55916201a42962006854620202a8935162004c22565b51101538808062015db6565b60018060a01b0362020713816201a4a462006854865162004c22565b6202072362006854845162004c22565b5111159283620207335750505090565b620206eb92935062015a55916201a4a462006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020a63576001620208da835162004c22565b51510362020a095760200191600183515103620209af576001620208ff845162004c22565b515103620209555715620209315762006854620202a862015831926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015831926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020c6557600162020adc835162004c22565b51510362020c0b576020019160018351510362020bb157600162020b01845162004c22565b51510362020b57571562020b335762006854620202a862015932926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015932926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604082019160018351510362020ed657600162020cdd845162004c22565b51510362020e7c576020019060018251510362020e2257600262020d02835162004c22565b51510362020dc8571562020d6c5760018060a01b0362020d2c816201b32c62006854865162004c22565b62020d3c62006854845162004c22565b511115928362020d4c5750505090565b620206eb92935062015a55916201b32c62006854620202a8935162004c22565b60018060a01b0362020d88816201b3a762006854865162004c22565b62020d9862006854845162004c22565b511115928362020da85750505090565b620206eb92935062015a55916201b3a762006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b1562020f3857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620211e257600162020fc2845162004c22565b5151036202118957602001926001845151036202113057600262020fe7855162004c22565b515103620210d7571562021069576202101360646202100b62006854865162004c22565b511062020f30565b6202102362006854845162004c22565b5190606482101562004c3057600362015a55926201583194620210526200685460018060a01b03925162004c22565b5116600052811b0160205260002054925162004c22565b6202107f60646202100b62006854865162004c22565b6202108f62006854845162004c22565b5190606482101562004c305761039b62015a55926201583194620210bf6200685460018060a01b03925162004c22565b511660005260031b0160205260002054925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202124357565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620214be576001620212cd845162004c22565b5151036202146557602001926001845151036202140c576002620212f2855162004c22565b515103620213b357156202135d576202131e60646202131662006854865162004c22565b51106202123b565b6202132e62006854845162004c22565b5190606482101562004c3057600362015a55926201593294620210526200685460018060a01b03925162004c22565b6202137360646202131662006854865162004c22565b6202138362006854845162004c22565b5190606482101562004c305761039b62015a55926201593294620210bf6200685460018060a01b03925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202151f57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820192600184515103620218f3576001620215a9855162004c22565b5151036202189a57602080930192600184515103620218425760039182620215d2865162004c22565b515103620217e45715620216e357620215fe6064620215f662006854875162004c22565b511062021517565b6202160e62006854855162004c22565b5191606483101562004c305760018060a01b039581876202163462006854845162004c22565b5116946000958652811b018352848420546202165562015a55885162004c22565b51111596876202166a575b5050505050505090565b90919293949596506202168262006854885162004c22565b51916064831015620216cf57916201c50b959391620216ac62006854620216bf9997955162004c22565b51168452811b0190522054925162004c22565b5110153880808080808062021660565b634e487b7160e01b86526032600452602486fd5b620216f96064620215f662006854875162004c22565b6202170962006854855162004c22565b51606481101562004c305760018060a01b0395866202172d62006854835162004c22565b511693600094855261039b8093821b018452858520546202175362015a55895162004c22565b511115978862021769575b505050505050505090565b9091929394959697506202178262006854895162004c22565b51926064841015620217d05791620217bf97959391620217ad620068546201c50b9997955162004c22565b511685521b0190522054925162004c22565b51101538808080808080806202175e565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620219f65760016202196a835162004c22565b5151036202199c57156202198a576201583162006854620202a862021ab8565b6201583162006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021a61575090565b908160031b60ff61039f820154161562021ab25762021a9f62021aac9262021a9761039962021aa594015462005da88762005fe7565b92906200607c565b62006271565b9162004c12565b62021a54565b50905090565b6000805b6064811062021ac9575090565b9060ff60078360031b01541615620061fd5762021aa562021aef916201a5d984620060e5565b62021abc565b906020019060018251510362021b9f57600162021b13835162004c22565b51510362021b45571562021b33576201593262006854620202a862021ab8565b6201593262006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021cf757600262021c17835162004c22565b51510362021c9d571562021c615762021c2f62021ab8565b62021c3f62006854835162004c22565b511115908162021c4d575090565b905062015a5c62015a55620202a862021ab8565b62021c6b62021a50565b62021c7b62006854835162004c22565b511115908162021c89575090565b905062015a5c62015a55620202a862021a50565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021dfb57600162021d6f835162004c22565b51510362021da1571562021d8f576201583162006854620202a862021e93565b6201583162006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021e66575090565b9060ff61039f8360031b01541615620061fd5762021aa562021e8d916201a5d98462005e5e565b62021e59565b6000805b6064811062021ea4575090565b9060ff60078360031b01541615620061fd5762021aa562021eca916201a5d98462005d82565b62021e97565b906020019060018251510362021f7a57600162021eee835162004c22565b51510362021f20571562021f0e576201593262006854620202a862021e93565b6201593262006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620220d257600262021ff2835162004c22565b5151036202207857156202203c576202200a62021e93565b6202201a62006854835162004c22565b511115908162022028575090565b905062015a5c62015a55620202a862021e93565b6202204662021e55565b6202205662006854835162004c22565b511115908162022064575090565b905062015a5c62015a55620202a862021e55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202213457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620221a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202221857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202228a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620222fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202236e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620223e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202245257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620224c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202253657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462022608576101928114620225fc576101938114620225f0576101968114620225e45761019714620225d9575050600090565b620031f89162022b3e565b50620031f89162022a59565b50620031f891620228b4565b50620031f89162022773565b50620031f891906020019060019182815151036202271957826202262d825162004c22565b515103620226bf57602082015160268110156200294257600a036200663857600091835b6202265f5750505050600090565b604081019260a09362022676858251015162004c22565b51518210156201d5da5781620074948796620226959351015162004c22565b51620226a662006854855162004c22565b5114620050f757620226b89062004c12565b9262022651565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202285a57602082015160268110156200294257600a03620066385782916000935b620227b05750505050600090565b6040810160a0620227c5818351015162004c22565b51518610156201d5da57906000855b620227f0575b505050620227e9839462004c12565b93620227a2565b620227fc855162004c22565b515181101562022854576202281a8762007494858551015162004c22565b516202282c8262007494885162004c22565b51146202284a57906202284186939262004c12565b909192620227d4565b5050505050905090565b620227da565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001906001918281515103620229ff576002620228d4825162004c22565b515103620229a557602082015160268110156200294257600a036200663857600091835b620229065750505050600090565b604081019260a0936202291d858251015162004c22565b51518210156201d5da5781856202293e82620074948a998651015162004c22565b516202294f62006854885162004c22565b511115928362022974575b505050620050f7576202296d9062004c12565b92620228f8565b510151620229889250620074949062004c22565b516202299962015a55855162004c22565b5110158138806202295a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600191828151510362022ae557602082015160268110156200294257600b036200663857600091835b62022a905750505050600090565b60408101515192835181101562022ade5762022ac762022ab282879662004c79565b5162022abf855162004c22565b519062031908565b620050f75762022ad79062004c12565b9262022a82565b5062015deb565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362022bc357602082015160268110156200294257600b036200663857600091835b62022b755750505050600090565b60408101515192835181101562022ade5762022bac62022b9782879662004c79565b5162022ba4855162004c22565b519062006589565b620050f75762022bbc9062004c12565b9262022b67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b916097811462022c405760981462022c35575050600090565b620031f89162022d51565b50602001805151620031f892906000190162022cf857600162022c64835162004c22565b51510362022c9e57602001516026811015620029425762006854620202a862022c8d92620316cf565b511462022c9957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9190916020809301600191828251510362022dd857938293946000935b62022d7d575050505050600090565b62022d89835162004c22565b51518410156201652e5781810151936026851015620029425762022dae8695620316cf565b62022dbf8262007494875162004c22565b5114620165265762022dd19062004c12565b9362022d6e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462022f34576102be811462022f28576102bf811462022f1c576102c0811462022f10576102c1811462022f04576102c2811462022ef8576102c3811462022eec576102c4811462022ee0576102c5811462022ed4576102c6811462022ec8576102c7811462022ebc576102c81462022eb157505050600090565b620031f89262024159565b50620031f89262023f5e565b50620031f89262023d59565b50620031f89262023ae9565b50620031f892620238e4565b50620031f892620236d5565b50620031f892620235b6565b50620031f8926202348f565b50620031f89262023368565b50620031f8926202320e565b50620031f892620230ba565b50620031f89262022f51565b606482101562004c30570190600090565b916020809101926001845151036202306057600162022f71855162004c22565b51510362023006571562022fcd57620202a862022fbf620158319362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b9062022f40565b90549060031b1c426200627f565b620202a862022fbf620158319362022fb8620076f6620068549560018060a01b038451166000526106c1815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602080910192600184515103620231b4576001620230da855162004c22565b5151036202315a57156202312157620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101926001845151036202330e5760026202322e855162004c22565b515103620232b45715620232805781516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b62015a3262006854835162004c22565b81516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202343557600162023386845162004c22565b515103620233db5715620233c957620076f66020620233a69201620073dc565b606481101562004c305762006854620202a8620158319261032b0154426200627f565b620076f66020620233a69201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202355c576001620234ad845162004c22565b515103620235025715620234f057620076f66020620234cd9201620073dc565b606481101562004c305762006854620202a8620159329261032b0154426200627f565b620076f66020620234cd9201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202367b576002620235d4845162004c22565b5151036202362157156202360f57620076f66020620235f49201620073dc565b606481101562004c3057620232709061032b0154426200627f565b620076f66020620235f49201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90929160409384820160019384825151036202388b5784620236f8835162004c22565b515103620238325795849596600014620237a4576000945b6202372057505050505050600090565b6202372c825162004c22565b515185101562019e5c57859460018060a01b03620237508262007494865162004c22565b5116600052602061032981526202378b620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b9288015162004c22565b511062019e53576202379d9062004c12565b9462023710565b6000945b620237b857505050505050600090565b620237c4825162004c22565b515185101562019e5c57859460018060a01b03620237e88262007494865162004c22565b51166000526020610329815262023819620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511062019e53576202382b9062004c12565b94620237a8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909291604093848201600193848251510362023a90578462023907835162004c22565b51510362023a375795849596600014620239a9576000945b6202392f57505050505050600090565b6202393b825162004c22565b515185101562019e5c57859460018060a01b036202395f8262007494865162004c22565b51166000526020610329815262023990620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e5357620239a29062004c12565b946202391f565b6000945b620239bd57505050505050600090565b620239c9825162004c22565b515185101562019e5c57859460018060a01b03620239ed8262007494865162004c22565b51166000526020610329815262023a1e620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e535762023a309062004c12565b94620239ad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023d0057600262023b0c825162004c22565b51510362023ca75784959660001462023be3576000945b62023b3357505050505050600090565b62023b3f815162004c22565b515185101562019e5c57859460018060a01b0362023b638262007494855162004c22565b51166000526020610329815262023b8c62022fbf8660002062022fb8620076f6858901620073dc565b9086019062023ba062006854835162004c22565b51811015918262023bc5575b505062019e535762023bbe9062004c12565b9462023b23565b62023bd891925062015a55905162004c22565b511015388062023bac565b6000945b62023bf757505050505050600090565b62023c03815162004c22565b515185101562019e5c57859460018060a01b0362023c278262007494855162004c22565b51166000526020610329815262023c5062022fbf8660002062022fb8620076f6858901620073dc565b9086019062023c6462006854835162004c22565b51811015918262023c89575b505062019e535762023c829062004c12565b9462023be7565b62023c9c91925062015a55905162004c22565b511015388062023c70565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023f05578462023d7b825162004c22565b51510362023eac5784959660001462023e22576000945b62023d9f57505050505090565b62023dab815162004c22565b51518510156201c51d5760018060a01b0362023dcd8662007494845162004c22565b51166000526020610329815262023e086200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b9287015162004c22565b511162019df15762023e1b869562004c12565b9462023d92565b6000945b62023e3357505050505090565b62023e3f815162004c22565b51518510156201c51d5760018060a01b0362023e618662007494845162004c22565b51166000526020610329815262023e926200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511162019df15762023ea5869562004c12565b9462023e26565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362024100578462023f80825162004c22565b515103620240a7578495966000146202401d576000945b62023fa457505050505090565b62023fb0815162004c22565b51518510156201c51d5760018060a01b0362023fd28662007494845162004c22565b511660005260206103298152620240036200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df15762024016869562004c12565b9462023f97565b6000945b6202402e57505050505090565b6202403a815162004c22565b51518510156201c51d5760018060a01b036202405c8662007494845162004c22565b5116600052602061032981526202408d6200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df157620240a0869562004c12565b9462024021565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b92916040808201926001938481515103620243665760026202417c825162004c22565b5151036202430d578495966000146202424e576000945b620241a057505050505090565b620241ac815162004c22565b51518510156201c51d5760018060a01b03620241ce8662007494845162004c22565b511660005260206103298152620241f762022fbf8560002062022fb8620076f6858801620073dc565b908501906202420b62006854835162004c22565b51811091821562024231575b505062019df1576202422a869562004c12565b9462024193565b6202424491925062015a55905162004c22565b5110388062024217565b6000945b6202425f57505050505090565b6202426b815162004c22565b51518510156201c51d5760018060a01b036202428d8662007494845162004c22565b511660005260206106c18152620242b662022fbf8560002062022fb8620076f6858801620073dc565b90850190620242ca62006854835162004c22565b518110918215620242f0575b505062019df157620242e9869562004c12565b9462024252565b6202430391925062015a55905162004c22565b51103880620242d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600193808503620243d75750620031f8935062024aa7565b60028103620243ed5750620031f8935062024b91565b60038103620244f7575050906040019180835151036202449b5762024413835162004c22565b5151036202443c57620244366200685460018060a01b0380935116935162004c22565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362024510575050620031f8935062024cd6565b6005810362024527575050620031f8935062024e1b565b600681036202453e575050620031f8935062024f60565b6007810362024555575050620031f893506202519c565b600881036202456c575050620031f89350620253fa565b6009810362024583575050620031f8935062025636565b600a81036202459a575050620031f8935062025866565b600b8103620245b1575050620031f8935062025b5d565b600c8103620245c8575050620031f8935062025d85565b600d8103620245df575050620031f8935062025fd1565b600e8103620245f6575050620031f89350620261c8565b600f81036202460d575050620031f893506202650d565b6010810362024624575050620031f8935062026704565b601181036202463b575050620031f8935062026824565b6012810362024652575050620031f8935062026944565b6013810362024669575050620031f8935062026ada565b6014810362024680575050620031f8935062026bfa565b6015810362024697575050620031f8935062026d1a565b60198103620246ae575050620031f8935062026ea3565b601a8103620246c5575050620031f8935062026fdb565b601b8103620246dc575050620031f8935062027113565b601c819592939495146000146202481f5750602001938085515103620247c65762024708855162004c22565b5151036202476d575060009015620247475750516001600160a01b03166000908152610327602052604090205490620158319062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201583190620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601d81036202495a5750602001938085515103620249015762024843855162004c22565b515103620248a8575060009015620248825750516001600160a01b03166000908152610327602052604090205490620159329062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201593290620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601e810362024a8c5750602001938451510362024a335760026202497f855162004c22565b515103620249da575060009015620249bc5750516001600160a01b03166000908152610327602052604090205462015a3262006854835162004c22565b90516001600160a01b031681526106bf602052604090205462023270565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b9294509291601f141590506200663857620031f89262027282565b91909160018251510362024b38571562024b0457620031f89160018060a01b039051166000526103206020526200112762024afe62024aef6001604060002001935162004c22565b51926040519283809262002bd5565b62031908565b620031f89160018060a01b039051166000526106b86020526200112762024afe62024aef6001604060002001935162004c22565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b916020019160018351510362024c7a57600162024baf845162004c22565b51510362024c1b571562024bec57516001600160a01b031660009081526103206020526040902060020154905162015b6090620068549062004c22565b516001600160a01b031660009081526106b86020526040902060020154905162015b6090620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024dbf57600162024cf4845162004c22565b51510362024d60571562024d3157516001600160a01b03166000908152610320602052604090206002015490516201583190620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024f0457600162024e39845162004c22565b51510362024ea5571562024e7657516001600160a01b03166000908152610320602052604090206002015490516201593290620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202514057600262024f81845162004c22565b515103620250e05762024f9962006854845162004c22565b5162024faa62015a55855162004c22565b51106202505a57156202502b5760018060a01b0390818451166000526103209182825260026040600020015462024fe662006854865162004c22565b511115948562024ff857505050505090565b9091929394505116600052526202501d62015a55600260406000200154925162004c22565b511015388080808062016526565b60018060a01b0390818451166000526106b89182825260026040600020015462024fe662006854865162004c22565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202531b57620251bf835162004c22565b515115620252b3579483949560001462025243576000935b620251e6575050505050600090565b620251f2835162004c22565b51518410156201652e57849360018060a01b0383511660005261032082526002604060002001546202522a8262007494875162004c22565b511462016526576202523c9062004c12565b93620251d7565b6000935b62025256575050505050600090565b62025262835162004c22565b51518410156201652e57849360018060a01b038351166000526106b882526002604060002001546202529a8262007494875162004c22565b51146201652657620252ac9062004c12565b9362025247565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202537f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202555757600262025418845162004c22565b515103620254f7578015620254db576202544560646202543d62006854865162004c22565b511062025377565b1562025492576202545b62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201583162015a55604060002054925162004c22565b620254a262006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201583162015a55604060002054925162004c22565b620254f160646202543d62006854865162004c22565b62025445565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620255bb57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202579357600262025654845162004c22565b5151036202573357801562025717576202568160646202567962006854865162004c22565b5110620255b3565b15620256ce576202569762006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201593262015a55604060002054925162004c22565b620256de62006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201593262015a55604060002054925162004c22565b6202572d60646202567962006854865162004c22565b62025681565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620257f757565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b91909160208092019160018351510362025a8d57600391826202588a855162004c22565b51510362025a2a57801562025a0e57620258b76064620258af62006854875162004c22565b5110620257ef565b156202596b57620258cd62006854845162004c22565b5191606483101562004c305760018060a01b03948186825116946000958652811b01835260408420546202590662015a55875162004c22565b5111159586620259195750505050505090565b909192939495506202593062006854875162004c22565b51916064831015620216cf5751168452811b019052604090205490516202595c906201c50b9062004c22565b51101538808080808062019e53565b6202597b62006854845162004c22565b51606481101562004c305760018060a01b03948581511693600094855261039b8093821b0184526040852054620259b762015a55885162004c22565b5111159687620259cb575050505050505090565b9091929394959650620259e362006854885162004c22565b51926064841015620217d057511685521b01905260409020549051620216bf906201c50b9062004c22565b62025a246064620258af62006854875162004c22565b620258b7565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b1562025aee57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025cb457600262025b7b845162004c22565b51510362025c5a57801562025c3e5762025ba8606462025ba062006854865162004c22565b511062025ae6565b1562025bf55762025bbe62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b0160205262015b6062015a55604060002054925162004c22565b62025c0562006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b0160205262015b6062015a55604060002054925162004c22565b62025c54606462025ba062006854865162004c22565b62025ba8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b1562025d1657565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025f7757600262025da3845162004c22565b51510362025f1d57801562025f015762025dd0606462025dc862006854865162004c22565b511062025d0e565b1562025e745762025de662006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e605762025e3762006854845162004c22565b51906064821015620014905750620202a86201583192600662015a559360031b01549062005007565b634e487b7160e01b81526011600452602490fd5b62025e8462006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e605762025ed762006854845162004c22565b51906064821015620014905750620202a8620158319261039e62015a559360031b01549062005007565b62025f17606462025dc862006854865162004c22565b62025dd0565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b91602001916001835151036202616e57600262025fef845162004c22565b51510362026114571562026087576202600d62006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202605e62006854845162004c22565b51906064821015620014905750620202a86201593292600662015a559360031b01549062005007565b6202609762006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e6057620260ea62006854845162004c22565b51906064821015620014905750620202a8620159329261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90602080930191600183515103620264b3576002620261e8845162004c22565b51510362026459571562026322576202620662006854835162004c22565b516064908181101562004c305760018060a01b03948584511693600094855260038093811b0182526040852054848102908082048614901517156202630e576202625562006854885162004c22565b5185811015620217d057841b60060154620262709162005007565b6202628062015a55885162004c22565b511115968762026294575050505050505090565b9091929394959650620262ac62006854885162004c22565b519185831015620217d05751168552821b820190526040832054828102939080159085048414171562025e6057620262e962006854865162004c22565b51928310156200149057501b60060154620216bf916201c50b91620202a89162005007565b634e487b7160e01b86526011600452602486fd5b6202633262006854835162004c22565b519060648083101562004c305760018060a01b03948583511693600094855261039b809160031b018252604085205493838502948086048514901517156202630e576202638462006854885162004c22565b519484861015620217d057620263a59061039e809760031b01549062005007565b620263b562015a55895162004c22565b5111159788620263ca57505050505050505090565b909192939495969750620263e362006854895162004c22565b51918583101562026445575116865260031b0190526040832054928184029380850483149015171562025e60576202642062006854865162004c22565b519182101562001490575060031b0154620217bf916201c50b91620202a89162005007565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620266aa5760026202652b845162004c22565b515103620266505715620265c3576202654962006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202659a62006854845162004c22565b51906064821015620014905750620202a862015b6092600662015a559360031b01549062005007565b620265d362006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e60576202662662006854845162004c22565b51906064821015620014905750620202a862015b609261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620267ca57600162026722845162004c22565b515103620267705780156202675057620202a86200685491620158319360018060a01b03905116906201a63a565b505162015831906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620268ea57600162026842845162004c22565b515103620268905780156202687057620202a86200685491620159329360018060a01b03905116906201a63a565b505162015932906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026a8057600262026963835162004c22565b51510362026a26578015620269d45782516001600160a01b03906202698b908216836201a63a565b6202699b62006854855162004c22565b5111159384620269ac575050505090565b620269c793945091620202a89162015a55935116906201a63a565b51101538808080620050f7565b5081516001600160a01b0390620269ed9082166201a5e7565b620269fd62006854845162004c22565b511115928362026a0d5750505090565b620206eb92935062015a5591620202a89151166201a5e7565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026ba057600162026af8845162004c22565b51510362026b4657801562026b2657620202a86200685491620158319360018060a01b03905116906201b536565b505162015831906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026cc057600162026c18845162004c22565b51510362026c6657801562026c4657620202a86200685491620159329360018060a01b03905116906201b536565b505162015932906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026e4957600262026d39835162004c22565b51510362026def57801562026d9d5782516001600160a01b039062026d61908216836201b536565b62026d7162006854855162004c22565b511115938462026d82575050505090565b620269c793945091620202a89162015a55935116906201b536565b5081516001600160a01b039062026db69082166201b4e3565b62026dc662006854845162004c22565b511115928362026dd65750505090565b620206eb92935062015a5591620202a89151166201b4e3565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026f8157600162026ec1845162004c22565b51510362026f27571562026efb57516001600160a01b03166000908152610325602052604090205490516201583190620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620270b957600162026ff9845162004c22565b5151036202705f57156202703357516001600160a01b03166000908152610325602052604090205490516201593290620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020809101916001835151036202722857600262027134845162004c22565b515103620271ce5715620271a25760018060a01b039081845116600052610325918282526040600020546202716e62006854865162004c22565b51111594856202718057505050505090565b9091929394505116600052526202501d62015a55604060002054925162004c22565b60018060a01b0390818451166000526106bd918282526040600020546202716e62006854865162004c22565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b909160400160019283825151036202735e57839215620272fd576000925b620272ae5750505050600090565b620272ba825162004c22565b5151831015620161f557839260018060a01b038083511690620272e38362007494875162004c22565b511614620050f757620272f69062004c12565b92620272a0565b6000925b6202730f5750505050600090565b6202731b825162004c22565b5151831015620161f557839260018060a01b038083511690620273448362007494875162004c22565b511614620050f757620273579062004c12565b9262027301565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9161012d81146202764b5761012e81146202763f5761012f811462027633576101308114620276275761013181146202761b5761013281146202760f57610133811462027603576101348114620275f7576101358114620275eb576101368114620275df576101378114620275d3576101388114620275c7576101398114620275bb5761013a8114620275af5761013b8114620275a35761013c8114620275975761013d81146202758a5761013e81146202757d5761013f81146202757057610140811462027563576101418114620275575761014281146202754b5761014381146202753f57610144811462027533576101458114620275275761014681146202751b5761014781146202750f57610173811462027502576101748114620274f65761017514620274eb575050600090565b620031f89162029e66565b50620031f89162029ca3565b5050620031f89062029c47565b50620031f89162029af9565b50620031f891620297af565b50620031f89162029635565b50620031f891620294b4565b50620031f891620292ef565b50620031f8916202918d565b50620031f89162029012565b5050620031f89062028f0b565b5050620031f89062028df6565b5050620031f89062028cf4565b5050620031f89062028bec565b50620031f89162028a6b565b50620031f891620288ea565b50620031f89162028767565b50620031f891620285e4565b50620031f89162028463565b50620031f891620282e2565b50620031f8916202815f565b50620031f89162027fdc565b50620031f89162027e9d565b50620031f89162027d5e565b50620031f89162027c39565b50620031f89162027b15565b50620031f891620279d7565b50620031f89162027899565b50620031f89162027775565b50620031f891906020019060019182815151036202771c57602082015160268110156200294257600d0362006638576202768683926202a012565b6000935b620276985750505050600090565b620276a4825162004c22565b5151841015620161f5576000835b620276cc575b50620276c5839462004c12565b936202768a565b93929181518510156202771357620276ea8462007494835162004c22565b51620276f7868462004c79565b511462015cb2576202770b83949562004c12565b9092620276b2565b919293620276b8565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202784057602082015160268110156200294257600d036200663857620277aa83926202a012565b6000935b620277bc5750505050600090565b620277c8825162004c22565b5151841015620161f5576000835b620277f0575b50620277e9839462004c12565b93620277ae565b939291815185101562027837576202780e8462007494835162004c22565b516202781b868462004c79565b511462015cb2576202782f83949562004c12565b9092620277d6565b919293620277dc565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202797e57602082015160268110156200294257600d036200663857620278ce83926202a012565b6000925b620278dd5750505090565b620278e9825162004c22565b515183101562015e7257600080855b62027918575b501562015deb5762027911849362004c12565b92620278d2565b829593919495518110156202797357620279388662007494845162004c22565b5162027945828562004c79565b51146202796657906202795a84939262004c12565b909395949192620278f8565b50918094935038620278fe565b9493909294620278fe565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027abc57602082015160268110156200294257600d03620066385762027a0c83926202a012565b6000925b62027a1b5750505090565b62027a27825162004c22565b515183101562015e7257600080855b62027a56575b501562015deb5762027a4f849362004c12565b9262027a10565b8295939194955181101562027ab15762027a768662007494845162004c22565b5162027a83828562004c79565b511462027aa4579062027a9884939262004c12565b90939594919262027a36565b5091809493503862027a3c565b949390929462027a3c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027be057602082015160268110156200294257600e03620066385762027b4a83926202a012565b6000935b62027b5c5750505050600090565b62027b68825162004c22565b5151841015620161f5576000835b62027b90575b5062027b89839462004c12565b9362027b4e565b939291815185101562027bd75762027bae8462007494835162004c22565b5162027bbb868462004c79565b511462015cb25762027bcf83949562004c12565b909262027b76565b91929362027b7c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027d0457602082015160268110156200294257600e03620066385762027c6e83926202a012565b6000935b62027c805750505050600090565b62027c8c825162004c22565b5151841015620161f5576000835b62027cb4575b5062027cad839462004c12565b9362027c72565b939291815185101562027cfb5762027cd28462007494835162004c22565b5162027cdf868462004c79565b511462015cb25762027cf383949562004c12565b909262027c9a565b91929362027ca0565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027e4357602082015160268110156200294257600e03620066385762027d9383926202a012565b6000925b62027da25750505090565b62027dae825162004c22565b515183101562015e7257600080855b62027ddd575b501562015deb5762027dd6849362004c12565b9262027d97565b8295939194955181101562027e385762027dfd8662007494845162004c22565b5162027e0a828562004c79565b511462027e2b579062027e1f84939262004c12565b90939594919262027dbd565b5091809493503862027dc3565b949390929462027dc3565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027f8257602082015160268110156200294257600e03620066385762027ed283926202a012565b6000925b62027ee15750505090565b62027eed825162004c22565b515183101562015e7257600080855b62027f1c575b501562015deb5762027f15849362004c12565b9262027ed6565b8295939194955181101562027f775762027f3c8662007494845162004c22565b5162027f49828562004c79565b511462027f6a579062027f5e84939262004c12565b90939594919262027efc565b5091809493503862027f02565b949390929462027f02565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202810557600262027ffc825162004c22565b515103620280ab57602082015160268110156200294257600d0362006638576202802783926202a012565b906000925b6202803a5750505050600090565b8151831015620161f557826202805285948462004c79565b516202806362006854845162004c22565b5111158062028084575b620050f7576202807d9062004c12565b926202802c565b5062028091818462004c79565b51620280a262015a55845162004c22565b5110156202806d565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001906001918281515103620282885760026202817f825162004c22565b5151036202822e57602082015160268110156200294257600d036200663857620281aa83926202a012565b906000925b620281bd5750505050600090565b8151831015620161f55782620281d585948462004c79565b51620281e662006854845162004c22565b5111158062028207575b620050f757620282009062004c12565b92620281af565b5062028214818462004c79565b516202822562015a55845162004c22565b511015620281f0565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202840957600262028302825162004c22565b515103620283af57602082015160268110156200294257600d0362006638576202832d83926202a012565b60009182945b6202834057505050905090565b815185101562015cba5762028356858362004c79565b516202836762006854835162004c22565b5111801562028389575b62015cb25762028382849562004c12565b9462028333565b5062028396858362004c79565b51620283a762015a55835162004c22565b511062028371565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202858a57600262028483825162004c22565b5151036202853057602082015160268110156200294257600d036200663857620284ae83926202a012565b60009182945b620284c157505050905090565b815185101562015cba57620284d7858362004c79565b51620284e862006854835162004c22565b511180156202850a575b62015cb25762028503849562004c12565b94620284b4565b5062028517858362004c79565b516202852862015a55835162004c22565b5110620284f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202870d57600262028604825162004c22565b515103620286b357602082015160268110156200294257600e0362006638576202862f83926202a012565b906000925b620286425750505050600090565b8151831015620161f557826202865a85948462004c79565b516202866b62006854845162004c22565b511115806202868c575b620050f757620286859062004c12565b9262028634565b5062028699818462004c79565b51620286aa62015a55845162004c22565b51101562028675565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202889057600262028787825162004c22565b5151036202883657602082015160268110156200294257600e036200663857620287b283926202a012565b906000925b620287c55750505050600090565b8151831015620161f55782620287dd85948462004c79565b51620287ee62006854845162004c22565b511115806202880f575b620050f757620288089062004c12565b92620287b7565b506202881c818462004c79565b516202882d62015a55845162004c22565b511015620287f8565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028a115760026202890a825162004c22565b515103620289b757602082015160268110156200294257600e0362006638576202893583926202a012565b60009182945b6202894857505050905090565b815185101562015cba576202895e858362004c79565b516202896f62006854835162004c22565b5111801562028991575b62015cb2576202898a849562004c12565b946202893b565b506202899e858362004c79565b51620289af62015a55835162004c22565b511062028979565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028b9257600262028a8b825162004c22565b51510362028b3857602082015160268110156200294257600e03620066385762028ab683926202a012565b60009182945b62028ac957505050905090565b815185101562015cba5762028adf858362004c79565b5162028af062006854835162004c22565b5111801562028b12575b62015cb25762028b0b849562004c12565b9462028abc565b5062028b1f858362004c79565b5162028b3062015a55835162004c22565b511062028afa565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602080820190815160268110156200294257600d14801562028cde575b62028c905750805160268110156200294257600f1490811562028c79575b5062028c335750600090565b6000805b6060604084015101518051821015620166ee5762028c588260e09262004c79565b5101511562021ab257604062028c7060609262004c12565b91505062028c37565b90505160268110156200294257600c143862028c27565b60009150815b8160408501510151805182101562028cd45762028cb68260019262004c79565b51151503620166e75762028ccc60409162004c12565b905062028c96565b5050505050600190565b50815160268110156200294257600e1462028c09565b602080820190815160268110156200294257600d14801562028de0575b62028d9c5750805160268110156200294257600f1490811562028d85575b5062028d3b5750600090565b6000805b6060604084015101518051821015620166ee5760e062028d628360019362004c79565b51015115151462021ab257604062028d7c60609262004c12565b91505062028d3f565b90505160268110156200294257600c143862028d2f565b60009150815b8160408501510151805182101562028cd45762028dc28260019262004c79565b51151514620166e75762028dd860409162004c12565b905062028da2565b50815160268110156200294257600e1462028d11565b602080820190815160268110156200294257600d14801562028ef5575b62028ea75750805160268110156200294257600f1490811562028e90575b5062028e3d5750600090565b60005b60606040830151015180518210156200663857819060e062028e66600193849362004c79565b51015115151462028e8a5750604062028e8160609262004c12565b91505062028e40565b91505090565b90505160268110156200294257600c143862028e31565b905060005b8160408401510151805182101562015deb57819062028ecf600192839262004c79565b5115151462028eee575062028ee660409162004c12565b905062028eac565b9250505090565b50815160268110156200294257600e1462028e13565b602080820190815160268110156200294257600d14801562028ffc575b62028fb55750805160268110156200294257600f1490811562028f9e575b5062028f525750600090565b60005b6060604083015101518051821015620066385762028f768260e09262004c79565b5101511562028f9757604062028f8e60609262004c12565b91505062028f55565b5050600190565b90505160268110156200294257600c143862028f46565b905060005b8160408401510151805182101562015deb57819062028fdd600192839262004c79565b5115150362028eee575062028ff460409162004c12565b905062028fba565b50815160268110156200294257600e1462028f28565b602080920191600192838151510362029133576202903284915162004c22565b515103620290da57808201805160268110156200294257600f14159081620290c2575b506200663857600091835b6202906e5750505050600090565b60408101926060845101519384518210156201d5da57620290a96200685460a0866202909c868b9a62004c79565b5101519351015162004c22565b5114620050f757620290bb9062004c12565b9262029060565b90505160268110156200294257600c14153862029055565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202929557818301805160268110156200294257600f141590816202927d575b5062015deb5783926000945b620291d6575050505050600090565b6040810160608082510151518710156202927557906000865b6202920b575b50505062029204849562004c12565b94620291c7565b62029217855162004c22565b51518110156202926f57856202923289858551015162004c79565b510151620292468262007494885162004c22565b51146202926457906202925b87939262004c12565b909192620291ef565b505050505050905090565b620291f5565b505062015fff565b90505160268110156200294257600c141538620291bb565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202945a57600262029310825162004c22565b5151036202940057818301805160268110156200294257600f14159081620293e8575b5062015deb57600092845b6202934d575050505050600090565b60408101936060948581510151958651831015620293df578286918262029376838c9b62004c79565b5101516202938962006854895162004c22565b5111159384620293af575b505050506201652657620293a89062004c12565b936202933e565b620293bf93945051015162004c79565b510151620293d262015a55855162004c22565b5110158482388062029394565b50505062015fff565b90505160268110156200294257600c14153862029333565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092016001928382515103620295dc5783620294d3835162004c22565b5151036202957d57808301805160268110156200294257600f1415908162029565575b5062015deb57600092845b62029510575050505050600090565b6060604082015101519384518110156202955e57826202953282889762004c79565b5101516202954562006854865162004c22565b51106201652657620295579062004c12565b9362029501565b5062015fff565b90505160268110156200294257600c141538620294f6565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b6020809201600192838251510362029756578362029654835162004c22565b515103620296f757808301805160268110156200294257600f14159081620296df575b5062015deb57600092845b62029691575050505050600090565b6060604082015101519384518110156202955e5782620296b382889762004c79565b510151620296c662006854865162004c22565b51116201652657620296d89062004c12565b9362029682565b90505160268110156200294257600c14153862029677565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b9060200190600191828151510362029a9f5782620297ce825162004c22565b51510362029a3f5760208201805160268110156200294257600f1415908162029a27575b5062006638576000939291825b6202980e575b50600093505050565b604081019460608087510151805183101562029a1e5762029834836202983b9262004c79565b51620055ad565b90600691828110156200294257158062029a05575b620299ab57620298696202983484838b51015162004c79565b828110156200294257861480620299eb575b620299ab57620298946202983484838b51015162004c79565b82811015620029425760028091149081620299d0575b50620299ab57620298c46202983484838b51015162004c79565b82811015620029425760038091149081620299b5575b50620299ab57620298f46202983484838b51015162004c79565b9782891015620029425760048099148062029991575b6202998657836202992392620298349251015162004c79565b908110156202997157849596506005809114908162029956575b50620050f7576202994e9062004c12565b9493620297ff565b90506202996862006854855162004c22565b5114386202993d565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b5088620299a362006854885162004c22565b51146202990a565b5093955050505050565b9050620299c762006854875162004c22565b511438620298da565b9050620299e262006854875162004c22565b511438620298aa565b5085620299fd62006854875162004c22565b51146202987b565b5062029a1662006854865162004c22565b511562029850565b50505062029805565b90505160268110156200294257600c141538620297f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362029bed5760208201805160268110156200294257600f1415908162029bd5575b50620066385782916000935b62029b415750505050600090565b6040810160608082510151518610156201d5da57906000855b62029b76575b50505062029b6f839462004c12565b9362029b33565b62029b82855162004c22565b515181101562029bcf578262029b9d88828551015162004c79565b51015162029bb18262007494885162004c22565b51146202284a579062029bc686939262004c12565b90919262029b5a565b62029b60565b90505160268110156200294257600c14153862029b27565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602081015160268110156200294257601303620075075760005b604080830151015180518210156200663857819060c062029c86600193849362004c79565b51015115151462028e8a575062029c9d9062004c12565b62029c61565b60209182018051516000949360019390916000190162029e0c57600262029ccb845162004c22565b51510362029db257818101516026811015620029425760130362029da8576000959493929190835b62029d02575b50505050909150565b604080820190808251015180518a101562029d9f5784918262029d278c809462004c79565b51015162029d3a62006854895162004c22565b511115938462029d6f575b5050505062029d655762029d5c8495969762004c12565b96959462029cf3565b5050509150915090565b62029d7f93945051015162004c79565b51015162029d9262015a55855162004c22565b5110158288388062029d45565b50505062029cf9565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001600191828251510362029fb7578262029e84835162004c22565b51510362029f5957602081015160268110156200294257601303620066385782916000935b62029eb75750505050600090565b6040808301908082510151518610156201d5da57906000855b62029eec575b50505062029ee5839462004c12565b9362029ea9565b62029efc87848451015162004c79565b51515181101562029f535762029f248162029f1c89868651015162004c79565b515162004c79565b5162029f3562006854865162004c22565b51146202284a579062029f4a86939262004c12565b90919262029ed0565b62029ed6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b602090818101805160268110156200294257600d149081156202a12d575b506202a0525750506040516202a0468162002a5e565b60008152600036813790565b6040019160a0916202a0746202a06c848651015162004c22565b515162004d95565b93600092835b6202a089868451015162004c22565b51518110156202a0e6576202a0a381858551015162004c79565b516202a0c1575b6202a0b96202a0899162004c12565b90506202a07a565b936202a0b96202a0dc828762001a9c6202a089958c62004c79565b959150506202a0aa565b50935050506202a0f68162004d95565b9060005b8181106202a109575090925050565b806202a11a6202a127928762004c79565b5162001a9c828662004c79565b6202a0fa565b90505160268110156200294257600e14386202a030565b9161025981146202a4c05761025a81146202a3d05761025b81146202a2e05761025c81146202a1ca5761025d81146202a1be5761025e81146202a1b25761025f81146202a1a657610260146202a19b575050600090565b620031f8916202a97e565b50620031f8916202a804565b50620031f8916202a6f3565b50620031f8916202a5b0565b50602001906001825151036202a2865760026202a1e8835162004c22565b5151036202a22c57602001908151516202a20762006854835162004c22565b51111591826202a21657505090565b62015a5c91925062015a55905151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a3765760016202a2fe835162004c22565b5151036202a31c5762006854602062015b6092015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a4665760016202a3ee835162004c22565b5151036202a40c576200685460206201593292015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a5565760016202a4de835162004c22565b5151036202a4fc576200685460206201583192015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919091602080930160019182825151036202a69957826202a5d2835162004c22565b5151036202a63f57938293946000935b6202a5f1575050505050600090565b818101519384518110156202955e576202a616620076f684620067ee848a9962004c79565b6202a62662006854865162004c22565b511462016526576202a6389062004c12565b936202a5e2565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202a7aa578293946000945b6202a71e575050505050600090565b8281018051518610156202955e576000855b6202a74b575b50506202a744849562004c12565b946202a70f565b6202a757845162004c22565b51518110156202a7a4576202a777620076f686620067ee8a865162004c79565b6202a7888262007494875162004c22565b51146202284a57906202a79c869262004c12565b90916202a730565b6202a736565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91909160208093019060019182815151036202a92457846202a827825162004c22565b5151920191825151036202a8a95782939460009283955b6202a84d575b50505050905090565b805180518710156202a8a257620076f683620067ee896202a86e9462004c79565b6202a87f8762007494865162004c22565b51036202a899576202a892859662004c12565b956202a83e565b50505091505090565b506202a844565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202aa4e578293946000935b6202a9a6575050505090565b8281018051518510156202aa4757856000918183905b6202a9de575b5050501562015fff576202a9d7859462004c12565b936202a99a565b6202a9ea865162004c22565b51518110156202aa41576202aa0a620076f688620067ee8b865162004c79565b6202aa1b8262007494895162004c22565b51146202aa34576202aa2d9062004c12565b826202a9bc565b505090508538806202a9c2565b6202a9c2565b50620050f7565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916101cd81146202aafa576101ce81146202aaee576101cf81146202aae2576101d0146202aad7575050600090565b620031f8916202b108565b50620031f8916202aee6565b50620031f8916202acf3565b50620031f8919060200160019182825151036202ac995760026202ab1f835162004c22565b5151036202ac3f576202ab32816202b2fb565b1562006638576202ab43906202b358565b9180939150518251036202abd457600092845b6202ab65575050505050600090565b80518410156201652e57836202ab7d86958362004c79565b516202ab8e62006854855162004c22565b5114806202abae575b62016526576202aba79062004c12565b936202ab56565b506202abbb818562004c79565b516202abcc62015a55855162004c22565b51106202ab97565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202ae8c5760026202ad12835162004c22565b5151036202ae32576202ad25816202b2fb565b1562006638576202ad36906202b358565b9180939150518251036202adc757600092845b6202ad58575050505050600090565b80518410156201652e57836202ad7086958362004c79565b516202ad8162006854855162004c22565b5114806202ada1575b62016526576202ad9a9062004c12565b936202ad49565b506202adae818562004c79565b516202adbf62015a55855162004c22565b51116202ad8a565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b0ae5760036202af05835162004c22565b5151036202b054576202af18816202b2fb565b1562006638576202af29906202b358565b9180939150518251036202afe957600092845b6202af4b575050505050600090565b80518410156201652e57836202af6386958362004c79565b516202af7462006854855162004c22565b5114806202afc2575b806202af9b575b62016526576202af949062004c12565b936202af3c565b506202afa8818562004c79565b516202afb96201c50b855162004c22565b5110156202af84565b506202afcf818562004c79565b516202afe062015a55855162004c22565b5111156202af7d565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b2a15760026202b127835162004c22565b5151036202b247576202b13a816202b2fb565b1562006638576202b14b906202b358565b9180939150518251036202b1dc57600092845b6202b16d575050505050600090565b80518410156201652e57836202b18586958362004c79565b516202b19662006854855162004c22565b5114806202b1b6575b62016526576202b1af9062004c12565b936202b15e565b506202b1c3818562004c79565b516202b1d462015a55855162004c22565b51146202b19f565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020018051602681101562002942576014149081156202b340575b81156202b329575b5062022c9957600090565b90505160268110156200294257601e14386202b31e565b8091505160268110156200294257601514906202b316565b6202b363816202b2fb565b156202b46957602081018051602681101562002942576014146202b454578051602681101562002942576015146202b41d575160268110156200294257601e146202b3eb57506040516202b3b78162002a5e565b60008152604051916202b3ca8362002a5e565b60008352604051916202b3dd8362002a5e565b600083526000368137929190565b604001906202b3ff60a08351015162004c22565b51906202b41660a06200749b818651015162004c46565b5191929190565b50604001906202b43260a08351015162004c22565b51906202b41660a06202b449818651015162004c57565b519451015162004c68565b50604001906202b3ff60a08351015162004c22565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202b5b5576101b081146202b5a9576101b181146202b59d576101b281146202b591576101b381146202b585576101b481146202b579576101b581146202b56d576101b6146202b562575050600090565b620031f8916202bffe565b50620031f8916202be59565b50620031f8916202bcf4565b50620031f8916202bb8f565b50620031f8916202ba2a565b50620031f8916202b885565b50620031f8916202b720565b50620031f891906020019060019182815151036202b6c657826202b5da825162004c22565b5151036202b66c576020820151602681101562002942576011036200663857600091835b6202b60c5750505050600090565b604081019260a0936202b623858251015162004c22565b51518210156201d5da57816200749487966202b6429351015162004c22565b516202b65362006854855162004c22565b5110620050f7576202b6659062004c12565b926202b5fe565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b82b57826202b73f825162004c22565b5151036202b7d1576020820151602681101562002942576011036200663857600091835b6202b7715750505050600090565b604081019260a0936202b788858251015162004c22565b51518210156201d5da57816200749487966202b7a79351015162004c22565b516202b7b862006854855162004c22565b5111620050f7576202b7ca9062004c12565b926202b763565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b9d05760026202b8a5825162004c22565b5151036202b976576020820151602681101562002942576011036200663857600091835b6202b8d75750505050600090565b604081019260a0936202b8ee858251015162004c22565b51518210156201d5da5781856202b90f82620074948a998651015162004c22565b516202b92062006854885162004c22565b51111592836202b945575b505050620050f7576202b93e9062004c12565b926202b8c9565b5101516202b9599250620074949062004c22565b516202b96a62015a55855162004c22565b5110158138806202b92b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bb3557826202ba49825162004c22565b5151036202badb576020820151602681101562002942576011036200663857600091835b6202ba7b5750505050600090565b604081019260a0936202ba92858251015162004c22565b51518210156201d5da57816200749487966202bab19351015162004c22565b516202bac262006854855162004c22565b5114620050f7576202bad49062004c12565b926202ba6d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bc9a57826202bbae825162004c22565b5151036202bc40576020820151602681101562002942576012036200663857600091835b6202bbe05750505050600090565b604081019260a0936202bbf7858251015162004c22565b51518210156201d5da57816200749487966202bc169351015162004c22565b516202bc2762006854855162004c22565b5110620050f7576202bc399062004c12565b926202bbd2565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bdff57826202bd13825162004c22565b5151036202bda5576020820151602681101562002942576012036200663857600091835b6202bd455750505050600090565b604081019260a0936202bd5c858251015162004c22565b51518210156201d5da57816200749487966202bd7b9351015162004c22565b516202bd8c62006854855162004c22565b5111620050f7576202bd9e9062004c12565b926202bd37565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bfa45760026202be79825162004c22565b5151036202bf4a576020820151602681101562002942576012036200663857600091835b6202beab5750505050600090565b604081019260a0936202bec2858251015162004c22565b51518210156201d5da5781856202bee382620074948a998651015162004c22565b516202bef462006854885162004c22565b51111592836202bf19575b505050620050f7576202bf129062004c12565b926202be9d565b5101516202bf2d9250620074949062004c22565b516202bf3e62015a55855162004c22565b5110158138806202beff565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202c10957826202c01d825162004c22565b5151036202c0af576020820151602681101562002942576012036200663857600091835b6202c04f5750505050600090565b604081019260a0936202c066858251015162004c22565b51518210156201d5da57816200749487966202c0859351015162004c22565b516202c09662006854855162004c22565b5114620050f7576202c0a89062004c12565b926202c041565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b156202c16b57565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202c1ba8162002edc565b6202c1c86200dbbb62031666565b6202c1d38162002edc565b600181036202c1f157506202c1eb6200dbe762031666565b61038f55565b6202c1fc8162002edc565b600281036202c20c575061039055565b6202c2178162002edc565b600381036202c227575061039155565b806202c23560049262002edc565b146202c23e5750565b61039255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b82518110156202c9df5760e06202c307828562004c79565b510151156202c6be576202c32062029834828562004c79565b600680821015620029425760049182036202c46b575060209060016003836202c34a868962004c79565b51015106036202c3675750506202c3619062004c12565b6202c2ef565b62004c0e82846202c45060636202c3986202c391856202c388868e62004c79565b51015162005028565b9362005028565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202c3d462004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c3fd82518093601396878501910162002d20565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002ab3565b5193849362461bcd60e51b8552840152602483019062002d45565b6202c47b62029834848762004c79565b818110156201d190576001036202c58b575060209060026003836202c4a1868962004c79565b51015106036202c4b85750506202c3619062004c12565b62004c0e82846202c450605d6202c4d96202c391856202c388868e62004c79565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202c51562004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c53e82518093601396878501910162002d20565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002ab3565b6202c59b62029834848762004c79565b90811015620144ba576002036202c6a2576020906003826202c5be858862004c79565b510151066202c5d45750506202c3619062004c12565b62004c0e82846202c4506202c5fa6202c5f3846202c388858d62004c79565b9262005028565b916202c69360409384519586936202c61862004ce38387016202c2b3565b0160008051602062031c4883398151915281528151906202c642826013948d868501910162002d20565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002ab3565b60405162461bcd60e51b815290819062004c0e9082016202c244565b6202c6ce62029834828562004c79565b6006908181101562002942576005036202c7e95750602060016003826202c6f6858862004c79565b51015106036202c70c57506202c3619062004c12565b62004c0e826202c7cc60526202c72d6202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202c76862004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c792826013958c878501910162002d20565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002ab3565b5192839262461bcd60e51b84526004840152602483019062002d45565b6202c7f962029834838662004c79565b9080821015620029425760039182036202c90857506002602091826202c820858862004c79565b51015106036202c83657506202c3619062004c12565b62004c0e826202c7cc605c6202c8576202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202c89262004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c8bc826013958c878501910162002d20565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002ab3565b6202c91862029834848762004c79565b9081101562002942576002036202c9c457602090816202c939848762004c79565b510151066202c94e57506202c3619062004c12565b62004c0e826202c7cc6202c96d6202c5f3856202c38881988b62004c79565b916202c9b560409384519788936202c98b62004ce38387016202c27c565b0160008051602062031c4883398151915281528151906202c642826013948b868501910162002d20565b03601f19810186528562002ab3565b60405162461bcd60e51b81528062004c0e600482016202c244565b509050565b156202c9ec57565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202ca7557565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202cacd57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202cb2e57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202cb8f57565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202cbe857565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202cc4a57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202ccad57565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202cd1357565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202cd7557565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202cdcd57565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202ce2c57565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202ce8557565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202cede60c08351015162004c22565b51916202cf0060a06202cef5818451015162004c22565b519251015162004c46565b51936202cf15845183511462000ee962031533565b6202cf28845186511462000ee962031533565b60005b84518110156202cf84576202cf41818462004c79565b5190606482101562004c30576202cf7e9160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202cf2b565b5092919360005b83518110156202d0ae576202cfa1818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202cfe060406000205462007da7868962004c79565b906202cfed868a62004c79565b51918783101562004c3057846202d01a93878f5116600052811b01845260406000205562000ee962031637565b6202d026848862004c79565b518581101562004c30578290846202d03f878c62004c79565b5116600052811b0181526202d05f6040600020546200685b868962004c79565b9190926202d06e868a62004c79565b519687101562004c30576202d0a89662000ef0956202d08e888d62004c79565b5116600052811b01905260406000205562000ee96203169c565b6202cf8b565b5050620111156202d0bf91620312cf565b90604051936202d0cf8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d0f68562004c22565b526000935b81518510156202d417576202d111858362004c79565b51946202d11f845162004d95565b916000936202d12f825162004d95565b610920528496855b87518110156202d1d7576202d15e610960516202d155838b62004c79565b51168b620310b9565b15806202d1a0575b6202d17d575b6202d1779062004c12565b6202d137565b956202d1976202d17791610960516200a1478a8c62004c79565b9690506202d16c565b5060648a101562004c3057610960516202d1bb828a62004c79565b511660005260038a811b0160205260406000205415156202d166565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d270578762004c3057610960516202d214828c62004c79565b51166000528b602052604060002054156202d23b575b6202d2359062004c12565b6202d1f4565b976202d2676202d235918b6202d2568c610960519262004c79565b511662001a9c826109205162004c79565b9890506202d22a565b50949591939650985096909596806109405262004c3057600401806109805254956202d2a1620080b6868962006271565b61090052600097886109a0525b6109405162004c30576109a051888110156202d34c576202d2dd6202d2f3916000610940526109805162004e91565b6109605191549060031b1c166109205162031166565b156202d312575b6202d3086109a05162004c12565b6109a0526202d2ae565b976202d345906202d32a6109a0516109805162004e91565b6109605191549060031b1c1662001a9c826109005162004c79565b976202d2fa565b5095939096509690969391936000915b8383106202d3e657505050506109405162004c305761090051516001600160401b038111620029ba576202d394816109805162004fcd565b60206109005101610980516000526020600020600061096051905b8481106202d3cf5750505050506202d3c79062004c12565b93926202d0fb565b60019060208386511695019481850155016202d3af565b6200824c6202d41091610960516202d3ff868662004c79565b511662001a9c826109005162004c79565b916202d35c565b5050509050565b60408101906202d43360c08351015162004c22565b51916202d44a60a06202cef5818451015162004c22565b51936202d45f845183511462000ee962031533565b6202d472845186511462000ee962031533565b60005b84518110156202d4ce576202d48b818462004c79565b5190606482101562004c30576202d4c89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d475565b5092919360005b83518110156202d5de576202d4eb818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202d52a60406000205462007da7868962004c79565b906202d537868a62004c79565b51918783101562004c3057846202d56493878f5116600052811b01845260406000205562000ee962031637565b6202d570848862004c79565b518581101562004c30578290846202d589878c62004c79565b5116600052811b0181526202d5a96040600020546200685b868962004c79565b9190926202d5b8868a62004c79565b519687101562004c30576202d5d89662000ef0956202d08e888d62004c79565b6202d4d5565b5050620111156202d5ef91620312cf565b90604051936202d5ff8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d6268562004c22565b526000935b81518510156202d417576202d641858362004c79565b51946202d64f845162004d95565b916000936202d65f825162004d95565b610940528496855b87518110156202d6fe576202d685610960516202d155838b62004c79565b15806202d6c7575b6202d6a4575b6202d69e9062004c12565b6202d667565b956202d6be6202d69e91610960516200a1478a8c62004c79565b9690506202d693565b5060648a101562004c3057610960516202d6e2828a62004c79565b511660005260038a811b0160205260406000205415156202d68d565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d797578762004c3057610960516202d73b828c62004c79565b51166000528b602052604060002054156202d762575b6202d75c9062004c12565b6202d71b565b976202d78e6202d75c918b6202d77d8c610960519262004c79565b511662001a9c826109405162004c79565b9890506202d751565b50949591939650985096909596806109005262004c3057600401806109205254956202d7c8620080b6868962006271565b6109a05260009788610980525b6109005162004c305761098051888110156202d873576202d8046202d81a916000610900526109205162004e91565b6109605191549060031b1c166109405162031166565b156202d839575b6202d82f6109805162004c12565b610980526202d7d5565b976202d86c906202d851610980516109205162004e91565b6109605191549060031b1c1662001a9c826109a05162004c79565b976202d821565b5095939096509690969391936000915b8383106202d90d57505050506109005162004c30576109a051516001600160401b038111620029ba576202d8bb816109205162004fcd565b60206109a05101610920516000526020600020600061096051905b8481106202d8f65750505050506202d8ee9062004c12565b93926202d62b565b60019060208386511695019481850155016202d8d6565b6200824c6202d93791610960516202d926868662004c79565b511662001a9c826109a05162004c79565b916202d883565b60408101906202d95360c08351015162004c22565b51916202d96a60a06202cef5818451015162004c22565b51936202d97f845183511462000ee962031533565b6202d992845186511462000ee962031533565b60005b84518110156202d9ee576202d9ab818462004c79565b5190606482101562004c30576202d9e89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d995565b5092919360005b83518110156202dafe576202da0b818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202da4a60406000205462007da7868962004c79565b906202da57868a62004c79565b51918783101562004c3057846202da8493878f5116600052811b01845260406000205562000ee962031637565b6202da90848862004c79565b518581101562004c30578290846202daa9878c62004c79565b5116600052811b0181526202dac96040600020546200685b868962004c79565b9190926202dad8868a62004c79565b519687101562004c30576202daf89662000ef0956202d08e888d62004c79565b6202d9f5565b5050620111156202db0f91620312cf565b90604051936202db1f8562002a97565b60018552602036818701376001600160a01b036109408190529051166202db468562004c22565b526000935b81518510156202d417576202db61858362004c79565b51946202db6f845162004d95565b916000936202db7f825162004d95565b6109a0528496855b87518110156202dc1e576202dba5610940516202d155838b62004c79565b15806202dbe7575b6202dbc4575b6202dbbe9062004c12565b6202db87565b956202dbde6202dbbe91610940516200a1478a8c62004c79565b9690506202dbb3565b5060648a101562004c3057610940516202dc02828a62004c79565b511660005260038a811b0160205260406000205415156202dbad565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202dca6578762004c3057610940516202dc5b828c62004c79565b51166000528b602052604060002054156202dc82575b6202dc7c9062004c12565b6202dc3b565b976202dc9d6202dc7c918b6202d9268c610940519262004c79565b9890506202dc71565b50949591939650985096909596806109005262004c3057600401806109205254956202dcd7620080b6868962006271565b6109805260009788610960525b6109005162004c305761096051888110156202dd82576202dd136202dd29916000610900526109205162004e91565b6109405191549060031b1c166109a05162031166565b156202dd48575b6202dd3e6109605162004c12565b610960526202dce4565b976202dd7b906202dd60610960516109205162004e91565b6109405191549060031b1c1662001a9c826109805162004c79565b976202dd30565b5095939096509690969391936000915b8383106202de1c57505050506109005162004c305761098051516001600160401b038111620029ba576202ddca816109205162004fcd565b60206109805101610920516000526020600020600061094051905b8481106202de055750505050506202ddfd9062004c12565b93926202db4b565b60019060208386511695019481850155016202dde5565b6200824c6202de4691610940516202de35868662004c79565b511662001a9c826109805162004c79565b916202dd92565b610324805482101562004c30576000526007602060002091020190600090565b815180519192916001600160401b038111620029ba576202de8f818562004fcd565b6020809201846000528260002060005b8381106202df06575050505060c08260069262002b5a95940151600185015560408101516002850155606081015160038501556202dee760808201511515600486016200572c565b6202defa60a08201516005860162005659565b0151151591016200572c565b825182820155918401916001016202de9f565b6103248054600160401b811015620029ba576202df3c916001820190556202de4d565b91909162005c965762002b5a916202de6d565b610394908154600160401b811015620029ba576001810180845581101562004c305762002b5a9260005260206000200162005659565b62006a176202df94916200754a565b610738805480600052610736908160205260ff60096040600020015460081c166203067d57610733600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202dff5604060002062003634565b9060008061032a54905b81811062030636575b5050156203061a575b60005b60208301519081518110156202e04c5762000ef06200771662010ea3620076f66020620067ee866202e0469862004c79565b6202e014565b505060005b602083015180518210156202e09957620076f66020620067ee846202e0769462004c79565b90606482101562004c30576202e09391429061032b015562004c12565b6202e051565b50506000905b602083015180518310156200a59257826202e0ba9162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036202e2c657604001906202e0fb60c08351015162004c22565b51936202e11260a0620077f0818651015162004c22565b51916202e12386518551146202cca5565b6202e13286518451146202cd0b565b60005b86518110156202e254576202e14b818662004c79565b51606481101562004c3057600160ff60076202e1709360031b0154161515146202cd6d565b6202e17c818562004c79565b516202e189828762004c79565b5190606482101562004c30576202e1aa906006809360031b0154906200606a565b6202e1b6848962004c79565b5192606484101562004c30576202e1d29360031b01556202cdc5565b6202e1de818562004c79565b516202e1eb828762004c79565b5190606482101562004c30576202e213916003906001600160a01b0362011091868d62004c79565b91906202e221828862004c79565b5190606482101562004c30576202e24e9362000ef0926003906001600160a01b03620110e4878f62004c79565b6202e135565b5094915091620111156202e26891620312cf565b93604051926202e2788462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202e2a3938762004c79565b6202e284565b50945092602092506202e2bd915062004c12565b9190506202e09f565b602081949293940151602681101562002942576002036202e558576040018051928351906202e2fe62007a1660a08097015162004c22565b519382518651036202e5035782518451036202e4ad5782518551036202e4545760005b86518110156202e43e576202e337818862004c79565b51606481101562004c305760ff60076202e3589260031b015416156202ce7d565b6202e364818862004c79565b51606481101562004c305760031b600701805460ff191660011790556202e38c818562004c79565b516202e399828962004c79565b5190606482101562004c305760056202e3b69260031b0162005659565b6202e3c2818662004c79565b516202e3cf828962004c79565b51606481101562004c305760031b600101556202e3ed818762004c79565b516202e3fa828962004c79565b51606481101562004c305760031b600201556202e418818862004c79565b5190606482101562004c3057600060066202e4389360031b015562004c12565b6202e321565b509591509350602092506202e2bd915062004c12565b60405162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b92916020840151602681101562002942576003036202eb64576202e58460c06040860151015162004c22565b5160a0916202e5ad6202e59e846040890151015162004c22565b51936040880151015162004c46565b51936202e5c2835185511462000ee962031533565b6202e5d5835186511462000ee962031533565b60005b83518110156202e630576202e5ee818662004c79565b5190606482101562004c305760036202e62a9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6202e5d8565b509095919560005b87518110156202e757576202e64e818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b016020526202e68560406000205462007da7838962004c79565b906202e692838862004c79565b5191606483101562004c305760036202e6c89360018060a01b03895116600052811b0160205260406000205562000ee962031637565b6202e6d4818662004c79565b51606481101562004c30576003906001600160a01b036202e6f6848c62004c79565b5116600052811b016020526202e7176040600020546200685b838962004c79565b91906202e725828862004c79565b5190606482101562004c30576202e75193600362000ef0938d62007e608760018060a01b039262004c79565b6202e638565b50926202e76f919294506200bb4e90969596620312cf565b92604051906202e77f8262002a97565b6001825260203681840137516001600160a01b03166202e79f8262004c22565b526000945b80518610156202eb50576202e7ba868262004c79565b516108e0526202e7cb855162004d95565b966000946202e7db845162004d95565b6108c05260009460005b88518110156202e8aa578a896202e8156001600160a01b036202e809858462004c79565b51166108e051620310b9565b15806202e865575b6202e836575b50506202e8309062004c12565b6202e7e5565b986202e85a9162001a9c82859c62007f886202e8309760018060a01b039262004c79565b9790508a896202e823565b50505060646108e051101562004c30576001600160a01b036202e889828b62004c79565b511660005260036108e051811b016020528a8960406000205415156202e81d565b50909895979498969291939660005b88518110156202e94c5760646108e051101562004c30576001600160a01b036202e8e4828b62004c79565b511660005260036108e051811b01602052604060002054156202e913575b6202e90d9062004c12565b6202e8b9565b996202e90d906202e943906001600160a01b036202e9328e8d62004c79565b511662001a9c826108c05162004c79565b9a90506202e902565b509850969592919093966108e0516064811015806108805262004c305760031b60040154986202e981620080b6898c62006271565b6108a0526000610860526000610840525b6108805162004c3057610840518a8110156202ea5b576202e9c76202e9e49160006108805260046108e05160031b0162004e91565b90546108c05160039290921b1c6001600160a01b03169062031166565b156202ea03575b6202e9f96108405162004c12565b610840526202e992565b6000610880526202ea216108405160046108e05160031b0162004e91565b60018060a01b0391549060031b1c166202ea42610860516108a05162004c79565b526202ea516108605162004c12565b610860526202e9eb565b50979294959093985095909560005b8281106202eb04575050506108805162004c30576108a051516001600160401b038111620029ba576202eaa78160046108e05160031b0162004fcd565b60206108a0510160046108e05160031b01600052602060002060005b8381106202eae657505050506202eada9062004c12565b9492959091956202e7a4565b82516001600160a01b0316818301556020909201916001016202eac3565b6202eb4a906001600160a01b036202eb1d828562004c79565b51166202eb31610860516108a05162004c79565b526202eb406108605162004c12565b6108605262004c12565b6202ea6a565b5050936202e2bd9193506020925062004c12565b90926020810151602681101562002942576004036202ed975760400160c0936202eb966200bf71868451015162004c22565b51906202ebad60a0620077f0818651015162004c22565b51936202ebc2875184511462000ee962031533565b6202ebd5875185511462000ee962031533565b6202ebe8875186511462000ee962031533565b60005b87518110156202ec2f576202ec01818662004c79565b5190606482101562004c30576202ec29916003906001600160a01b036201141a848d62004c79565b6202ebeb565b509095919593929360005b83518110156202ed54576202ec50818762004c79565b51606481101562004c30576003906001600160a01b036202ec72848862004c79565b5116600052811b016020526202ec9360406000205462007da7838862004c79565b906202eca0838962004c79565b5191606483101562004c30576202ecc8926003906001600160a01b03620114da878b62004c79565b6202ecd4818762004c79565b51606481101562004c30576003906001600160a01b036202ecf6848c62004c79565b5116600052811b016020526202ed176040600020546200685b838862004c79565b9190506202ed26818862004c79565b5191606483101562004c30576202ed4e926003906001600160a01b036201157b858e62004c79565b6202ec3a565b50936202ed6e9192969350620084c562007e9891620312cf565b9260005b83518110156202e2a9578062000ef0620079b66202ed91938762004c79565b6202ed72565b926020840151602681101562002942576005036202ef525760408401906202edc960a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156202ee30576202edee818562004c79565b5190606482101562004c305760036202ee2a9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6202edd8565b509060005b83518110156202eed1576202ee4b818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b016020526202ee8260406000205462007da7838862004c79565b91906202ee90828762004c79565b5190606482101562004c30576202eecb93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b6202ee35565b50949250906202eee190620312cf565b90604051926202eef18462002a97565b6001845260203681860137516001600160a01b03166202ef118462004c22565b52604051946202ef218662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202ef4c938762004c79565b6202ef2d565b926020810151602681101562002942576006036202f0e6576040016202ef7d60c08251015162004c22565b51936202ef9460a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156202eff1576202efc3818562004c79565b5190606482101562004c30576202efeb916003906001600160a01b036201183d848c62004c79565b6202efad565b509060005b86518110156202f090576202f00c818562004c79565b51606481101562004c30576003906001600160a01b036202f02e848b62004c79565b5116600052811b016020526202f04f60406000205462007da7838862004c79565b91906202f05d828762004c79565b5190606482101562004c30576202f08a9362000ef0926003906001600160a01b03620114da878f62004c79565b6202eff6565b5094916202f0a59193506201111590620312cf565b91604051946202f0b58662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202f0e0938762004c79565b6202f0c1565b6020810151602681101562002942576007036202f16c57604001926202f11160c08551015162004c22565b51916202f12360a08651015162004c22565b51945151916202f13b845187511462000ee962031533565b60005b84518110156202e2a9576202f1669062000ef06001600160a01b0380620119d9848a62004c79565b6202f13e565b6020819493940151602681101562002942576008036202f1da5760c060406202f199920151015162004c22565b519160005b83518110156202f1c8576202f1c2906001600160a01b038062011ac1838862004c79565b6202f19e565b509260209192506202e2bd9062004c12565b6020810151602681101562002942576009036202f2335760c060406202f204920151015162004c22565b519160005b83518110156202f1c8576202f22d906001600160a01b038062011b55838862004c79565b6202f209565b602081015160268110156200294257600a036202f2b957604001906202f26460a06200d48660c08551015162004c22565b51926202f279835185511462000ee962031533565b60005b83518110156202f2a6576202f2a0906001600160a01b038062011bf1838862004c79565b6202f27c565b50936202e2bd9193506020925062004c12565b60208194939294015160268110156200294257600b036202f34457604001926202f2e860c08551015162004c22565b51935151916202f300855184511462000ee962031533565b60005b85518110156202f331576202f32b9062000ef06001600160a01b038062011ca4848b62004c79565b6202f303565b50935091602091506202e2bd9062004c12565b909192602082015160268110156200294257600c036202f47757606060408301510151926202f373846202c2eb565b60005b84518110156202f2a65760e06202f3968260606040880151015162004c79565b510151156202f40e576202f3b762008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f3da60059162005c20565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005c20565b6202f376565b6202f42662008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f44960059162005be0565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005be0565b929190602081015160268110156200294257600d036202f4e0576040019260206202f4a760a08651015162004c22565b5194510151916202f4bc85518451146202c9e4565b60005b85518110156202f331578062011e856202f4da928662004c79565b6202f4bf565b602081949294015160268110156200294257600e036202f549576040019060206202f51060a08451015162004c22565b5192510151936202f52583518651146202c9e4565b60005b83518110156202f331578062011f996202f543928862004c79565b6202f528565b90602082949394015160268110156200294257600f036202f67d57606060408301510151926202f579846202c2eb565b60005b84518110156202f2a65760e06202f59c8260606040880151015162004c79565b510151156202f614576202f5bd62008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f5e060059162005c20565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005c20565b6202f57c565b6202f62c62008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f64f60059162005be0565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005be0565b906020819493940151602681101562002942576010036202f6ee5760400151906202f6b160a0608084015193015162004c22565b51936202f6c6835186511462000ee962031533565b60005b83518110156202f331578062000ef06200935a6202f6e8938762004c79565b6202f6c9565b6020819492940151602681101562002942576011036202f90757604001906202f72260a06200d48660c08551015162004c22565b51936202f73383518651146202c163565b60005b83518110156202f764576202f75e9062000ef06001600160a01b03806201221c848962004c79565b6202f736565b509350906202f77390620311b3565b9061032654936202f78a620080b684518762006271565b9060009260005b8781106202f8ec575060005b85518110156202f844576000805b8981106202f7f5575b50156202f7cd575b6202f7c79062004c12565b6202f79d565b936202f7c7906202f7ec906001600160a01b036200ddb1888a62004c79565b9490506202f7bc565b6202f8008162004de9565b90546001600160a01b0360039290921b1c8116906202f820858b62004c79565b5116146202f839576202f8339062004c12565b6202f7ab565b50506001386202f7b4565b5095509392506202f8558262004d95565b8051906001600160401b038211620029ba576020906202f8758362004f2a565b01610326600052602060002060005b8381106202f8ce575050505060005b8281106202f8ab575050506202e2bd60209162004c12565b6202f8c89062000ef06001600160a01b03620019d0838662004c79565b6202f893565b82516001600160a01b0316818301556020909201916001016202f884565b936200defd6202f901916200dedf8762004de9565b6202f791565b6020819492940151602681101562002942576012036202fb2a57604001906202f93b60a06200d48660c08551015162004c22565b51936202f94c83518651146202c163565b60005b83518110156202f97d576202f9779062000ef06001600160a01b03806201247e848962004c79565b6202f94f565b50935091906202f98d90620311b3565b610326546202f99c8162004d95565b906000926000915b8083106202fa51575050506202f9ba8262004d95565b8051906001600160401b038211620029ba576020906202f9da8362004f2a565b01610326600052602060002060005b8381106202fa33575050505060005b8281106202fa10575050506202e2bd60209162004c12565b6202fa2d9062000ef06001600160a01b03620019d0838662004c79565b6202f9f8565b82516001600160a01b0316818301556020909201916001016202f9e9565b91956000959193959760005b85518110156202fb1b576202fa728962004de9565b90546001600160a01b0360039290921b1c8116906202fa92838962004c79565b5116146202faab576202faa59062004c12565b6202fa5d565b509750956001959391955b806202faea575b156202fad5576202face9062004c12565b916202f9a4565b936200defd6202face916200dedf8762004de9565b506202faf68162004de9565b60018060a01b0391549060031b1c16600052610325602052604060002054156202fabd565b5097969096959391956202fab6565b6020810151602681101562002942576013036202fb835760408091015101519260005b84518110156202fb72578062000ef0620098ce6202fb6c938862004c79565b6202fb4d565b509250906202e2bd60209162004c12565b6020810151602681101562002942576014036202fd2c57604001906202fbae60c08351015162004c22565b51936202fbc560a0620077f0818651015162004c22565b51916202fbd686518551146202cca5565b6202fbe586518451146202cd0b565b60005b86518110156202fcd7576202fbfe818562004c79565b516202fc0b828762004c79565b5190606482101562004c305760066202fc2a9260031b0154906200606a565b906202fc37838862004c79565b5191606483101562004c305760066202fc559360031b01556202cdc5565b6202fc61818562004c79565b516202fc6e828762004c79565b5190606482101562004c30576202fc96916003906001600160a01b0362011091868d62004c79565b91906202fca4828862004c79565b5190606482101562004c30576202fcd19362000ef0926003906001600160a01b03620110e4878f62004c79565b6202fbe8565b5094915091620111156202fceb91620312cf565b93604051926202fcfb8462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202fd26938762004c79565b6202fd07565b6020810151602681101562002942576015036202fd56576020919262000ef06202e2bd926202d93e565b6020810151602681101562002942576016036202fdb25760c060406202fd80920151015162004c22565b519260005b84518110156202fb72576202fdac9062000ef06001600160a01b0362009b14838962004c79565b6202fd85565b6020810151602681101562002942576017036202fe0f5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036202fe795760c060406202fe39920151015162004c22565b51610396805460ff191660011790559260005b84518110156202fb72576202fe739062000ef06001600160a01b0362009be0838962004c79565b6202fe4c565b6020819392930151602681101562002942576019036202ff605760008091604082910160a0808251015180516202ff27575b5050519060e0820151916202fecf6200685460c060018060a01b0393015162004c22565b511690602083519301915af13d156202ff1e573d906202feef8262002e73565b916202feff604051938462002ab3565b82523d6000602084013e5b1562012a4857506202e2bd60209162004c12565b6060906202ff0a565b6202ff329062004c22565b51516202ff41575b806202feab565b81925062006854906202ff579251015162004c22565b5190386202ff3a565b602081015160268110156200294257601a036202ffe25760a060406202ff8a920151015162004c22565b516202ff9a60038251146202c163565b6202ffa58162004c22565b51916202ffb662012b6e8362004c46565b51916200f053576020926202e2bd9260010362009e215762009e019062009df46103919182546200606a565b602081015160268110156200294257601b03620303cb575091906203001261038f54620061b062009e97620313c0565b50506203001e62031484565b506000805b606481106203037f575b5050620300396200618c565b90620300486107345462004d95565b906000946000905b606482101562030373578160031b9260ff600785015416156203015b5760009660028501541562030142576000975b62004c3057600485015488101562030142576203013b62030134899a620300ae620300e59b60048a0162004e91565b60018060a01b0391549060031b1c168060005260038901602052620300d98b60406000205462005ebb565b9c9062000ee962031484565b620301286203010c6203010060009e60028d01549062005ebb565b919062000ee962031484565b8260005261032760205262009df460406000209182546200606a565b62001a9c828b62004c79565b9962004c12565b976203007f565b929093506203015391965062004c12565b909462030050565b95969392509350505b6203016f8262004d95565b9160009160005b828110620302dd57505050610328549162030196620080b6848462006271565b926000906000905b808210620302c057505060005b8381106203022a5750508251929150506001600160401b038211620029ba57602090620301d88362004eef565b01610328600052602060002060005b8381106203020c57505050506202e2bd60209160006103915560006103925562004c12565b82516001600160a01b031681830155602090920191600101620301e7565b6000805b83811062030278575b501562030250575b6203024a9062004c12565b620301ab565b906203024a906203026f906001600160a01b036200823e858762004c79565b9190506203023f565b6001600160a01b03806203028d858862004c79565b5116906203029c838a62004c79565b511614620302b557620302af9062004c12565b6203022e565b505060013862030237565b90916200824c620302d691620098248562004dcd565b906203019e565b6000805b8581106203032b575b501562030303575b620302fd9062004c12565b62030176565b92620302fd9062030322906001600160a01b036200823e878662004c79565b939050620302f2565b6001600160a01b038062030340858762004c79565b5116906203034f838a62004c79565b5116146203036857620303629062004c12565b620302e1565b5050600138620302ea565b93505092939062030164565b8060039594951b9060ff60078301541615620303c1576200a2d4620074b662000ef0946200a2c8620303b89560026200a2be8762005d82565b93929362030023565b509392936203002d565b602081015160268110156200294257601c03620304285760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036203044e575b506202e2bd60209162004c12565b602081015160268110156200294257601e146203044057602081015160268110156200294257601f036203049f57602091620304976200a3b960406202e2bd9401515162004c22565b915062030440565b602081015160268110156200294257602003620304c5575b506202e2bd60209162030497565b6020810151602681101562002942576021809103620304e6575b50620304b7565b602082015160268110156200a53a57602203620305225750506202e2bd60209161039660ff1981541690556203051b62004fba565b91620304df565b602082015160268110156200a53a5760230362030549575b50506202e2bd6020916203051b565b6020820151906026821015620137aa5760248092036203056b575b506203053a565b60208301516026811015620306075760251462030564576020830151906026821015620305f35750601503620305b65750602091620305ae6202e2bd926202d93e565b913862030564565b60649060166040519162461bcd60e51b83526020600484015282015275496e76616c6964206f7065726174696f6e207479706560501b6044820152fd5b9050634e487b7160e01b6000526004526000fd5b50634e487b7160e01b6000526004526000fd5b815162030630906001600160a01b031662006647565b6202e011565b620306418162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462030670576203066a9062004c12565b6202dfff565b505050600138806202e008565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062030704575050565b62002b5a91600052601f6020600020910160051c81019062004ed6565b90600160401b8111620029ba5781548183558082106203074057505050565b62002b5a92600052601f6020600020918180850160051c84019416806203076f575b500160051c019062004ed6565b600019908186019182549160200360031b1c1690553862030762565b9060ff809160031b9316831b921b19161790565b919091620307ba620307b36000946202de4d565b5062003495565b91835b83518051821015620308ac5781620307d59162004c79565b516064908181101562004c3057600390811b9660018060a01b038616600052602091880182526203081360409860018a600020549101549062005ebb565b91901562030879579062030827916200606a565b97901562030843575050506203083d9062004c12565b620307bd565b519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b505086519062461bcd60e51b82526004820152600e60248201526d706f776572206f766572666c6f7760901b6044820152fd5b509092505050565b60005b61073854908160005261073691602092808452600393604092858460002001805486101562030a1557620308f086620308fc9262004e91565b905490881b1c6202de4d565b509560ff6006809801541662030924575b50505050506203091e915062004c12565b620308b7565b816000528383526203094c620309408783886000200162004e91565b905490831b1c6202de4d565b50966203096c876001809a01549285600052878752886000200162004e91565b905490831b1c91836000528585526203098c886005896000200162004e91565b9054911b1c9060009260649283810293818504149015171562030a015790620309b59162004eaa565b10620309f9575b620309c857806203090d565b6009945060005252600020019060ff1991818382541617905561073391825416179055600061073155600061073255565b5085620309bc565b634e487b7160e01b84526011600452602484fd5b50505050505050600061073854905b81600052610736602052600380604060002001805483101562030a9a57600662030a6162030a558560ff9462004e91565b905490851b1c6202de4d565b500154161562030a955762030a768262030caa565b908110156200294257620105035762030a8f9062004c12565b62030a24565b505050565b50505060ff19906107336003838254161790556000526107366020526009604060002001908154169055565b6107385490600090828252610736916020928084526003906040908282852001549562030af38762002b80565b9662030b028451988962002ab3565b80885262030b13601f199162002b80565b013682890137845b88865282825284848720015481101562030b64579062030b598262000ef062030b478897969562030caa565b62030b53838d62004c79565b6200520e565b909192935062030b1b565b5050505090919350815b835181101562030bdb5762030b84818562004c79565b518281101562030bc757600180911462030baa575062030ba49062004c12565b62030b6e565b610733805460ff1916909117905550506107318190556107325550565b634e487b7160e01b84526021600452602484fd5b509091506107328054421060001462030c0257506107339060ff1982541617905561073155565b9050610733600160ff19825416179055816107315555565b1562030c2257565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b1562030c6f57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b61073854906000918083526107368060205282604085206003019062030cd09162004e91565b90549060031b1c62030ce2816202de4d565b5060010154938386528260205280604087206004019062030d039162004e91565b90549060031b1c928487528060205281604088206005019062030d269162004e91565b90549060031b1c948752602052604086206006019062030d469162004e91565b90549060031b1c9062030d59906202de4d565b506006015460ff1662030da5575062030d959262005da862021a9f938362030d8562030d8d9562005e85565b969062030c67565b929062030c67565b111562030d9f5790565b50600190565b6200f136925062030d959362030dbf62030d8d9362005e85565b949062030c67565b9092919262030dd7825162004d95565b60009162030de6815162004d95565b8390845b865181101562030e80576001600160a01b0362030e0d816202d155848b62004c79565b158062030e4c575b62030e2d575b5062030e279062004c12565b62030dea565b819662030e44916200823e62030e27948b62004c79565b959062030e1b565b5060648a101562004c30578062030e64838a62004c79565b511660005260038a811b01602052604060002054151562030e15565b509295919694509260005b875181101562030f0057606486101562004c30576001600160a01b038062030eb4838b62004c79565b5116600052600387811b016020526040600020541562030ee1575b5062030edb9062004c12565b62030e8b565b819562030ef8916200ddb162030edb948c62004c79565b949062030ecf565b5092509450926064831015938462004c305760049586600395861b019687549462030f30620080b6828862006271565b9460009689889a5b620310a457818b101562030fd957506000998b62030f7362030f5b838362004e91565b90546001600160a01b0392918e1b1c82168a62031166565b1562030f96575b50509062030f8b8b94939262004c12565b9a9091929362030f38565b91998c95949392909162030fac908c9062004e91565b9054908d1b1c1662030fbf828b62004c79565b5262030fcb9062004c12565b9890919293508b3862030f7a565b9697949a98505091975092506000915b8383106203107f57505050506203106a578051926001600160401b03841162031055575062031019838362004fcd565b602080910191600052806000209060005b84811062031039575050505050565b83516001600160a01b031683820155928101926001016203102a565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203109d906200824c906001600160a01b036200a147868662004c79565b9162030fe9565b603285634e487b7160e01b6000525260246000fd5b9060005b606483101562004c30576003600484821b01805483101562015fff5782620310e59162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311099062004c12565b620310bd565b9060005b606483101562004c3057600361039c84821b01805483101562015fff57826203113c9162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311609062004c12565b62031113565b9060005b825181101562006638576001600160a01b038062031189838662004c79565b51169083161462006625576203119f9062004c12565b6203116a565b801562001de8576000190190565b9081519060005b60001983810184811162001de85782101562031281576001820180831162001de8575b848110620311f8575050620311f29062004c12565b620311ba565b6001600160a01b03806203120d858962004c79565b5116816203121c848a62004c79565b51161462031237575b50620312319062004c12565b620311dd565b828692960182811162001de85762031231926203127a926203125e62031273938b62004c79565b51166203126c898b62004c79565b52620311a5565b95620311a5565b9062031225565b5050906203128f8162004d95565b9060005b818110620312a2575090925050565b620312c9906001600160a01b03620312bb828862004c79565b511662001a9c828662004c79565b62031293565b80519160005b60001984810185811162001de85782101562031387576001820180831162001de8575b858110620313135750506203130d9062004c12565b620312d5565b6203131f838662004c79565b516203132c828762004c79565b511462031345575b6203133f9062004c12565b620312f8565b948181019080821162001de857620313786203137f916203136b6203133f948962004c79565b516203126c8a8a62004c79565b96620311a5565b905062031334565b50509091620313968162004d95565b9060005b818110620313a9575090925050565b806202a11a620313ba928762004c79565b6203139a565b604051620313ce816200299e565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203143c8162002a26565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620314928162002a97565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b604051620314cc8162002a97565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620314f78162002a26565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620315418162002a97565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620315718162002a97565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620315a48162002a97565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620315d98162002a97565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620316128162002a97565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b604051620316458162002a97565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b604051620316748162002a97565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b604051620316aa8162002a97565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b60268110156200294257801562007507576001811462030d9f5760028114620319025760038114620318fc5760048114620318f65760058114620318f05760068114620318ea5760078114620318e45760088114620318de5760098114620318d857600a8114620318d257600b8114620318cc57600c8114620318c657600d8114620318c057600e8114620318ba57600f8114620318b45760108114620318ae5760118114620318a85760128114620318a257601381146203189c57601481146203189657601581146203189057601681146203188a57601781146203188457601881146203187e57601981146203187857601a81146203187257601b81146203186c57601c81146203186657601d81146203186057601e81146203185a57601f81146203185457602081146203184e57602181146203184857602281146203184257602381146203183c576024811462031836576025146203183157600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200664057600090815b8351811015620166ee576001600160f81b03198062031938838762006577565b51169062031947838562006577565b511603620166e7576203195a9062004c12565b62031918565b604051906203196f8262002a26565b60288252604036602084013760005b601481106203198c57505090565b60139080820391821162001de857600382901b916001600160fd1b0381160362001de85760ff80831162001de857600192620319d59084901b6001600160a01b03861662005007565b60f081168282160391821162001de857620319f99060f41b600f60f81b1662031a62565b82841b916001600160ff1b038416840362001de85762031a369160001a62031a22848962006577565b5360f81b6001600160f81b03191662031a62565b92810180911162001de85762031a5562031a5c9360001a918662006577565b5362004c12565b6203197e565b60f81c600a81101562031a8b5760300160ff811162001de85760f81b6001600160f81b03191690565b60570160ff811162001de85760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65a4039f5a7be218ee4582681830797ad3adb3fc42221d510b404c1c20513cd5f9305d206c656e677468206973206e6f7420320000000000000000000000000000546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b617665203120656c656d656e74000000000000000000000000000000000000007420686176652074776f20656c656d656e747300000000000000000000000000f8c51ad45ec8504cc31b470490eebc0390b72c6fe329b047b8c5d2eaf5faf707546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f7420310000000000000000000000000000006506a45eb4eaa8543dde316bec7c09b25ef1e87a59a8ef880021210a26a5aa39742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f7420afaf75ed05c3fa878ca2fef6bc901427ab4ca9c5028b0bbe72a546312bd924aa2e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973745d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d706c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212201b9fa0280c35b6e081eb1f2914678c611bc8026b085956491408d50c5865193d64736f6c63430008130033", - "deployedBytecode": "0x6109c08060405260043610156200001557600080fd5b600090813560e01c908163036ee85014620028bc575080630fda3e1e146200282457806310ade3ea14620027f55780631797631d146200276e5780631c75255a146200270957806323b65c7814620026825780632514a6b4146200245c5780632eeb063b146200228c5780633fb18aec146200222257806356424cf414620022035780635c00d98714620021e05780635d0b184914620002055780635f1231ea14620020f65780635f5d5f00146200206f578063681ece9d146200202b5780636c0d4fa41462001e985780637daa10ce1462001e7b5780638129fc1c1462001aac57806383e4cccf1462001843578063864f9f7a146200180557806386ad77e214620014a45780638c7a63ae1462001414578063942d59fa14620012315780639f36145f14620011ab578063a064c4f11462001180578063acf80bc41462001142578063aec266871462001058578063aefca42a1462001037578063c41f94821462000fef578063c591aa981462000fa1578063d5a172f21462000f75578063d6a93c511462000f24578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e36200521b565b50610c80620001f162002ad7565b6200020060405180926200290c565bf35b80fd5b50346200020257806003193601126200020257602061073854604051908152f35b5060031960203682011262000df7576001600160401b036004351162000df757606090600435360301126200020257604051620002638162002a26565b62000273600435600401620028f7565b8152600435602401356101608190526001600160401b03811162000dff57600435013660238201121562000dff576004620002b5910135806101805262002b80565b90620002c5604051928362002ab3565b6101805182526020820161012052610180516101605160043501906024369160051b8301011162000c125760240160a052825b6101805160051b6101605160043501602460a0519282010182101562000e0357813560808190526001600160401b031062000dff57606091350136036023190112620002025762000350604051806101005262002a26565b62000369602460805161016051600435010101620028f7565b610100515260446080516101605160043501010135602681101562000df7576020610100510152608051610160516004350101606481013560c05260018060401b0360648201351162000df7576101006064820135909101360360231901126200020257620003df604051806101a052620029ec565b60c051608051610160516004350101016001600160401b0360248201351162000df75762000417906024369181810135010162004858565b6101a0515260c0516080516101605160043501010160448101359060018060401b03821162000dff5736604383830101121562000dff570160240135916200045f8362002b80565b906200046f604051928362002ab3565b838252602082019060c051608051610160516004350101013660448760051b81840135840101011162000c1657806044809201350101915b604460c051608051610160516004350101018760051b9082810135010101831015620004e85760208091620004dc85620048e3565b815201920191620004a7565b506101a051602001929092525060c051608051610160519395600435909401010192506001600160401b0360648401351162000c12573660436064850135850101121562000c1257602460648401358401013590620005478262002b80565b9062000557604051928362002ab3565b82825260208201606486013560c05160805161016051600435010101013660448660051b8301011162000dfb57604401905b606487013560c051608051610160516004350101010160448660051b820101831015620006a9576001600160401b03833511620006a55760e08335820136036043190112620006a55760405191620005e18362002a42565b6001600160401b03843583016044013511620006a1576200060e36604486358501818101350101620048f1565b835283358201606481013560208501526084810135604085015260a48101356060850152620006409060c401620048e3565b60808401526001600160401b038435830160e4013511620006a157602092839262000690906101049062000681368935830160e48101350160440162002e8f565b60a085015287350101620048e3565b60c082015281520191019062000589565b8980fd5b8880fd5b505050929350905060406101a051015260c051608051610160516004350101019260018060401b03608485013511620002025736604360848601358601011215620002025760246084850135850101359362000716620007098662002b80565b6040518060e05262002ab3565b8460e05152602060e0510192608482013560c05160805161016051600435010101013660448860051b8301011162000c12576044016101405293925b608482013560c0516080516101605160043501010101610140519060448860051b82010182101562000c1a576001600160401b0382351162000c165761010082359091013603604319011262000c125760405190620007b182620029ec565b60448135608486013560c0516080516101605160043501010101010135600681101562000c0e57825260648135608486013560c051608051610160516004350101010101013560208301528035608485013560c0516080516101605160043501010101019560018060401b0360848801351162000c0e573660636084890135890101121562000c0e576200084f604460848901358901013562002b80565b976200085f604051998a62002ab3565b60446084890135890101358952602089019060848901358435608489013560c05160805161016051600435010101010101366064604460848d01358d01013560051b83010111620006a557606401915b60848a0135853560848a013560c051608051610160516004350101010101016064604460848d01358d01013560051b82010184101562000afd576001600160401b03843511620006a15760c08435820136036063190112620006a157604051906200091a82620029d0565b84358101606481013583526005608490910135101562000af9578435810160848101356020840152600460a490910135101562000af9578435810160a4810135604084015260c481013560608401526001600160401b0360e4909101351162000af95762000995368635830160e481013501606401620048f1565b60808301526001600160401b038535820161010401351162000af957608085358201610104810135013603606319011262000af95760405190620009d9826200299e565b6001600160401b038635820161010481013501606401351162000af55762000a1536606461010489358501908101350181810135010162004858565b82526001600160401b038635820161010481013501608401351162000af55762000a5336873583016101048101350160848101350160640162004957565b60208301526001600160401b03863582016101048101350160a401351162000af55762000a9436873583016101048101350160a481013501606401620049e2565b60408301526001600160401b03863582016101048101350160c401351162000af55760209384939092909162000adf9036908935016101048101350160c48101350160640162002e8f565b606082015260a0820152815201920191620008af565b8b80fd5b8a80fd5b505097505096604083015260a48135608486013560c051608051610160516004350101010101013560608301528035608485013560c05160805161016051600435010101010160018060401b0360c48201351162000c0e57610124602094939262000b7762000bf2936044369160c4810135010162002e8f565b608085015262000ba260e4823560848a013560c05160805161016051600435010101010101620048e3565b60a085015262000bce610104823560848a013560c05160805161016051600435010101010101620048e3565b60c085015235608487013560c05160805161016051600435010101010101620048e3565b60e0820152815201926020610140510161014052939262000752565b8580fd5b8380fd5b8480fd5b505050509091925060e05160606101a051015260c051608051610160516004350101019160018060401b0360a48401351162000df75736604360a4850135850101121562000df757602460a4840135840101359262000c798462002b80565b9162000c89604051938462002ab3565b848352602083019060a483013560c05160805161016051600435010101013660448860051b8301011162000c0e57604401915b60448760051b60a486013560c0516080516101605160043501010101010183101562000cfe5760058335101562000c0e57823581526020928301920162000cbc565b509450505092909260806101a051015260c0516080516101605160043501010160c48101359060018060401b03821162000c1657602462000d43923692010162004957565b60a06101a051015260c0516080516101605160043501010160e48101359060018060401b03821162000c1657602462000d809236920101620049e2565b60c06101a051015260c051608051610160516004350101016101048101359060018060401b03821162000c1657602462000dbe923692010162002e8f565b60e06101a05101526101a05160406101005101526101005161012051526020610120510161012052602060a0510160a0529091620002f8565b5080fd5b8780fd5b8280fd5b60208401858152849084600435604401356001600160401b03811162000df75762000e3690600436918135010162002e8f565b604084015282516001600160a01b03919062000e8f90831662000e8662000e6762000e613362031960565b62004adb565b62000e7f62000e79878a511662031960565b62004b41565b9062004b98565b90331462004bdf565b8251805182101562000efc579062000ef062000ef6928462000eb384339362004c79565b5151161462000ee962000eca62000e613362031960565b62000e7f62000e798862000ee0888c5162004c79565b51511662031960565b9062004bdf565b62004c12565b62000e8f565b62000f2062000f0b86620067c5565b60405191829160208352602083019062002d45565b0390f35b503462000202578060031936011262000202575b6064811062000f4d575b602090604051908152f35b60ff60078260031b0154161562000f6f5762000f699062004c12565b62000f38565b62000f42565b50346200020257806003193601126200020257610730546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b0362000fd0620028db565b1681526107378452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c0620010126004356200628d565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b50346200020257806003193601126200020257602061073254604051908152f35b50346200020257806003193601126200020257610735908154916200107d8362002b80565b916200108d604051938462002ab3565b8383526020938484018093835285832083915b8383106200110a5750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620010db5785850386f35b909192938280620010f9600193603f198a8203018652885162002d45565b9601920196019592919092620010cd565b600188819260409a99979a516200112f8162001127818962002bd5565b038262002ab3565b81520192019201919096939596620010a0565b50346200020257602036600319011262000202576020906040906001600160a01b036200116e620028db565b16815261032783522054604051908152f35b50346200020257602036600319011262000202576020620011a3600435620060e5565b604051908152f35b503462000202576020366003190112620002025760406200120691600435815261073660205220620011dd8162003634565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003199565b9360208601526040850152620012226060850183831662003434565b60081c16151560808301520390f35b5034620002025760208060031936011262000df757604051620012548162002a09565b60405192620012638462002a26565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e0830152806101008093015260043581526107368352604090209160405192620012c48462002a09565b620012cf8162003634565b8452620012df6003820162003442565b84830190815292620012f46004830162003442565b60408601908152956200130a6005840162003442565b868201908152926200131f6006820162003442565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff88166200135b90876200520e565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d016200138c9162003199565b9451601f198d8703810160408f015295620013a79162002ee7565b905191858d830301908d0152620013be9162002ee7565b905190838b82030160808c0152620013d69162002ee7565b9051918982030160a08a0152620013ed9162002ee7565b955160c08801525160e087015251908501620014099162003434565b511515908301520390f35b503462000202576020366003190112620002025760043590606482101562001490575060031b60018101546002820154916200148660056200146760068401549362001127604051809481930162002bd5565b6040519485948552602085015260806040850152608084019062002d45565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b503462000202578060031936011262000202576103228054620014c78162002b80565b91620014d7604051938462002ab3565b81835283526020808420849184015b838310620016b1578585610323805490620015018262002b80565b9362001511604051958662002ab3565b82855260208501918152602081209080925b84841062001559576200154a8662000f208960405193849360408552604085019062002fcf565b90838203602085015262002fcf565b6040516200156781620029ec565b6200157760ff855416826200350b565b600184015460208201526002840154620015918162002b80565b90620015a1604051928362002ab3565b80825260208201600287018652602086209086905b8382106200162e5750505050600192826020926040600695015260038701546060820152604051620015f181620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e082015281520193019301929162001523565b600860206001926040516200164381620029d0565b8654815260ff858801548181166200165b8162002edc565b85840152851c166200166d8162002937565b6040820152600287015460608201526200168a6003880162003442565b60808201526200169d60048801620035d2565b60a0820152815201930191019091620015b6565b604051620016bf81620029ec565b620016cf60ff845416826200350b565b60018301546020820152600283018054620016ea8162002b80565b91620016fa604051938462002ab3565b81835289526020808a20908a9084015b8382106200178257505050506001928260209260406006950152600386015460608201526040516200174581620011278160048b0162002bd5565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201920192019190620014e6565b600860206001926040516200179781620029d0565b8654815260ff85880154818116620017af8162002edc565b85840152851c16620017c18162002937565b604082015260028701546060820152620017de6003880162003442565b6080820152620017f160048801620035d2565b60a08201528152019301910190916200170a565b50346200020257602036600319011262000202576020906040906001600160a01b0362001831620028db565b16815261032583522054604051908152f35b5034620002025760208060031936011262000df7578160043591620018864784111562000ee9620018748662005028565b6200187f4762005028565b9062004cc1565b338252620018f1610325808352620018ca604085205486111562000ee9620018ae8862005028565b338852848752620018c3604089205462005028565b9062004d2d565b338452808352620018e085604086205462004fed565b929062000ee9620018ae8862005028565b33845282528060408420551562001933575b508080809381811562001929575b3390f1156200191d5780f35b604051903d90823e3d90fd5b506108fc62001911565b9050610326805491620019468362004d95565b918593865b81811062001a39575050620019608462004d95565b805192906001600160401b03841162001a25579080849392620019868a98979662004f2a565b0191865280862090865b84811062001a06575050505050825b828110620019af57505062001903565b91925090620019fc9062000ef06001600160a01b03620019d0838662004c79565b5116620019dd8362004de9565b90919082549060031b9160018060a01b03809116831b921b1916179055565b908492916200199f565b83516001600160a01b0316818401558997509281019260010162001990565b634e487b7160e01b88526041600452602488fd5b62001a448162004de9565b90546001600160a01b03916003913391831b1c83160362001a73575b505062001a6d9062004c12565b6200194b565b9662001aa391839862001a8a62001a6d9562004de9565b9054911b1c1662001a9c828962004c79565b5262004c12565b95903862001a60565b5034620002025780600319360112620002025761073080546001600160a01b03191633179055610733805460ff19166001908117909155604051909190819062001af68162002a5e565b52906103228054600082558062001e12575b508252818060405162001b1b8162002a5e565b5262001dfe576103238054600082558062001d7f575b5082526127106107345562001d7162001b4962005b54565b836040519162001b598362002a5e565b81835262001c616040519162001b6f8362002a5e565b8383526040519462001b818662002a5e565b8486526040519362001b938562002a5e565b8585526040519462001ba58662002a5e565b8686526040519162001bb7836200299e565b8252602097888301526040820152606094858201526040519162001bdb83620029d0565b8683526003888401528660408401528686840152608083015260a082015262001c048262004c22565b5262001c108162004c22565b506040519062001c2082620029ec565b6004825287868301526040820152838382015260405162001c418162002a5e565b84815260808201528660a08201528660c08201528660e082015262005c60565b62001c6b62005b54565b60405162001c798162002a5e565b83815260405162001c8a8162002a5e565b84815260405162001c9b8162002a5e565b85815260405162001cac8162002a5e565b8681526040519162001cbe8362002a5e565b8783526040519362001cd0856200299e565b8452888401526040830152848201526040519162001cee83620029d0565b8583526003878401528560408401528585840152608083015260a082015262001d178262004c22565b5262001d238162004c22565b50856040519462001d3486620029ec565b60058652850152604084015282015260405162001d518162002a5e565b84815260808201528260a08201528260c08201528360e082015262005cac565b61138861038f556103905580f35b92506006838102938185040362001de85760009382855260208520908101905b81811062001daf57505062001b31565b8086849255868682015562001dc7600282016200543e565b86600382015562001ddb60048201620052d3565b8660058201550162001d9f565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001de85760009382855260208520908101905b81811062001e4257505062001b08565b8086849255868682015562001e5a600282016200543e565b86600382015562001e6e60048201620052d3565b8660058201550162001e32565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001eb562002ad7565b6040519162001ec483620029ec565b61038f5483526103905490602091828501526103915460408501526103925460608501526040518061039390848254918281520191845284842090845b8181106200200d575050508162001f1a91038262002ab3565b6080850152610394805462001f2f8162002b80565b9162001f3f604051938462002ab3565b818352835283832083908584015b83831062001fdf575050505060a08501526040518092839161039591808354928381520192855280852094905b82821062001fbb5750505062001f939250038262002ab3565b60c083015260ff6103965416151560e083015262000f20610397546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062001f7a565b600187819260409998995162001ffb8162001127818962002bd5565b81520192019201919095949562001f4d565b82546001600160a01b03168452928601926001928301920162001f01565b5034620002025760203660031901126200020257600435906064821015620014905762000f206200206260048460031b0162002b22565b6040519182918262002958565b5034620002025780600319360112620002025760405161032180548083529083526020808301937f375af38c615bc3b651d74d7d59974b82de2cfc350734166de4356711f3dca12992915b828210620020d55762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620020ba565b5034620002025760209081600319360112620002025760409062002119620028db565b816060845162002129816200299e565b82815286810183905285810182905201526001600160a01b03168152610320835220604051906200215a826200299e565b620021d581549160ff83161515845260ff8585019360081c1615158352600260405191620021998362002191816001850162002bd5565b038462002ab3565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002d45565b905160808301520390f35b50346200020257602036600319011262000202576020620011a360043562005d82565b503462000202578060031936011262000202576020620011a36200618c565b50346200020257604036600319011262000202576001600160401b0360043581811162000dff576200225990369060040162002e8f565b916024359182116200020257602062002282846200227b366004870162002e8f565b9062006589565b6040519015158152f35b50346200020257806003193601126200020257604051620022ad8162002a5e565b6040516106c383825b606482106200244557505050620022cd8162002a7a565b815260405191620022de83620029ec565b61072754835261072854906020918285015261072954604085015261072a5460608501526040518061072b90848254918281520191845284842090845b8181106200242757505050816200233491038262002ab3565b608085015261072c8054620023498162002b80565b9162002359604051938462002ab3565b818352835283832083908584015b838310620023f9575050505060a08501526040518092839161072d91808354928381520192855280852094905b828210620023d557505050620023ad9250038262002ab3565b60c083015260ff61072e5416151560e083015262000f2061072f546040519384938462002dc5565b85546001600160a01b03168452600195860195879550938101939091019062002394565b6001878192604099989951620024158162001127818962002bd5565b81520192019201919095949562002367565b82546001600160a01b0316845292860192600192830192016200231b565b6001602081928554815201930191019091620022b6565b5034620002025760208060031936011262000df7576004356200248b4782111562000ee9620018748462005028565b3383528280808061032794858752620024d0604083205482111562000ee9620024b48462005028565b338652898b52620024c9604087205462005028565b90620051a2565b33825285875262002510620024ea82604085205462004fed565b919062000ee9620024fb8562005028565b3387528a8c52620024c9604088205462005028565b338352868852604083205581811562002678575b3390f1156200266d57338352815260408220541562002541575080f35b610328805491620025528362004d95565b918493855b818110620026135750506200256c8462004d95565b805192906001600160401b038411620025ff5781906200258c8562004eef565b0191865280862090865b848110620025e3575050505050825b828110620025b35750505080f35b620025dd9062000ef06001600160a01b03620025d0838662004c79565b5116620019dd8362004dcd565b620025a5565b83516001600160a01b0316838201559281019260010162002596565b634e487b7160e01b87526041600452602487fd5b6200261e8162004dcd565b90546001600160a01b03916003913391831b1c8316036200264d575b5050620026479062004c12565b62002557565b966200266491839862001a8a620026479562004dcd565b9590386200263a565b6040513d84823e3d90fd5b506108fc62002524565b5034620002025780600319360112620002025760405161032680548083529083526020808301937f953a1f58387b28901d66ca469c0f2f10840990fe6eba2d456bb60fb027f000d992915b828210620026e85762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620026cd565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000dff5760648210156200275a579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b5034620002025780600319360112620002025760405161032880548083529083526020808301937fe1b7123756d5187477d16898f0ed5b46851d48ab984ff1401c7617fb3825ab6e92915b828210620027d45762000f2085620020628189038262002ab3565b83546001600160a01b031686529485019460019384019390910190620027b9565b50346200020257806003193601126200020257602060ff610733541660405190620028208162002937565b8152f35b5034620002025760209081600319360112620002025762002844620028db565b6200284e6200521b565b506001600160a01b031681526103298252604080822090519190620028738362002a5e565b60405193849192915b60648310620028a657610c808587620028958162002a7a565b81526200020060405180926200290c565b600182819286548152019401920191926200287c565b90503462000df7578160031936011262000df757602090610731548152f35b600435906001600160a01b0382168203620028f257565b600080fd5b35906001600160a01b0382168203620028f257565b516000915b606483106200291f57505050565b60019082518152602080910192019201919062002911565b600411156200294257565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062002980575050505090565b83516001600160a01b03168552938101939281019260010162002971565b608081019081106001600160401b03821117620029ba57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b03821117620029ba57604052565b61010081019081106001600160401b03821117620029ba57604052565b61012081019081106001600160401b03821117620029ba57604052565b606081019081106001600160401b03821117620029ba57604052565b60e081019081106001600160401b03821117620029ba57604052565b602081019081106001600160401b03821117620029ba57604052565b610c8081019081106001600160401b03821117620029ba57604052565b604081019081106001600160401b03821117620029ba57604052565b601f909101601f19168101906001600160401b03821190821017620029ba57604052565b6040519062002ae68262002a5e565b6040518261032b6000835b6064821062002b0b5750505062002b088262002a7a565b52565b600160208192855481520193019101909162002af1565b9060405191828154918282526020928383019160005283600020936000905b82821062002b5c5750505062002b5a9250038362002ab3565b565b85546001600160a01b03168452600195860195889550938101939091019062002b41565b6001600160401b038111620029ba5760051b60200190565b90600182811c9216801562002bca575b602083101462002bb457565b634e487b7160e01b600052602260045260246000fd5b91607f169162002ba8565b906000929180549162002be88362002b98565b91828252600193848116908160001462002c4f575060011462002c0c575b50505050565b90919394506000526020928360002092846000945b83861062002c3a57505050500101903880808062002c06565b80548587018301529401938590820162002c21565b9294505050602093945060ff191683830152151560051b0101903880808062002c06565b90815462002c818162002b80565b9260409362002c938551918262002ab3565b828152809460208092019260005281600020906000935b85851062002cba57505050505050565b6001848192845162002cd28162001127818a62002bd5565b81520193019401939162002caa565b90815180825260208080930193019160005b82811062002d02575050505090565b83516001600160a01b03168552938101939281019260010162002cf3565b60005b83811062002d345750506000910152565b818101518382015260200162002d23565b9060209162002d608151809281855285808601910162002d20565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002d985750505050505090565b909192939495848062002db483856001950387528a5162002d45565b980193019301919493929062002d87565b93929162002dd785610ca0936200290c565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002e6362002e2c6080840151610100610d408a0152610dc089019062002ce1565b62002e4c60a085015191610cbf1992838b830301610d608c015262002d6c565b9060c08501519089830301610d808a015262002ce1565b9101511515610da0860152930152565b6001600160401b038111620029ba57601f01601f191660200190565b81601f82011215620028f25780359062002ea98262002e73565b9262002eb9604051948562002ab3565b82845260208383010111620028f257816000926020809301838601378301015290565b600511156200294257565b90815180825260208080930193019160005b82811062002f08575050505090565b83518552938101939281019260010162002ef9565b90815180825260208092019182818360051b82019501936000915b84831062002f495750505050505090565b909192939495848062002f6583856001950387528a5162002ee7565b980193019301919493929062002f38565b90815180825260208092019182818360051b82019501936000915b84831062002fa25750505050505090565b909192939495848062002fbe83856001950387528a5162002ce1565b980193019301919493929062002f91565b90815180825260208092019081926005928183851b82019601946000915b84831062002fff575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029425783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b828110620030bf5750505050509282916200308960019560608085015190840152608080850151908483039085015262002d45565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062002fed565b919395968062003185600193959761011f198b82030189528951908151815283820151620030ed8162002edc565b8482015287820151620031008162002937565b888201526060908183015182820152816200317562003164620031536080620031368189015160c080848a015288019062002ee7565b9560a0809901519881880391015287519080875286019062002d6c565b888701518582038a87015262002f1d565b8b8601518482038d86015262002f76565b9301519181840391015262002d45565b970195019101918b96959493919262003054565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620031fb5750505050906040620031f89392015190604081840391015262002d45565b90565b858703607f19018352835180516001600160a01b03168852602081015194979394929391929060268210156200294257604091602084015201519060606040820152620032578251610100606084015261016083019062002d6c565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003419575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b8281106200339457505050506060840151838203605f190160c0850152620032d8925062002fcf565b608083015190605f198382030160e0840152602080835192838152019201906000905b8082106200337057505050620033638360209360e06200334c62003334879660a060019a0151605f198683030161010087015262002f1d565b60c0850151848203605f190161012086015262002f76565b92015190610140605f198285030191015262002d45565b98019401929101620031d2565b9091926020806001928651620033868162002edc565b8152019401920190620032fb565b90919293602080600192601f19868203018852885190620033fd620033c2835160e080855284019062002ee7565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002d45565b60c09283015115159190920152970196950193929101620032af565b90919260208060019286511515815201940192019062003279565b906003821015620029425752565b9060405191828154918282526020928383019160005283600020936000905b8282106200347a5750505062002b5a9250038362002ab3565b85548452600195860195889550938101939091019062003461565b90604051620034a48162002a42565b60c060ff60068395620034b78162003442565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152604051620034fc8162001127816005860162002bd5565b60a08601520154161515910152565b6006821015620029425752565b908154620035268162002b80565b9262003536604051948562002ab3565b818452600090815260208082208186015b84841062003556575050505050565b6001838192620035668562003442565b81520192019301929062003547565b908154620035838162002b80565b9262003593604051948562002ab3565b818452600090815260208082208186015b848410620035b3575050505050565b6001838192620035c38562002b22565b815201920193019290620035a4565b9060036060604051620035e5816200299e565b620036308195620035f68162002c73565b8352620036066001820162003518565b6020840152620036196002820162003575565b604084015262002191604051809681930162002bd5565b0152565b90604051620036438162002a26565b82546001600160a01b03168152600183018054919384929091620036678262002b80565b9162003677604051938462002ab3565b80835260208301916000526020600020916000905b828210620036b9575050505091620036306040926002946020840152620021918451809681930162002bd5565b604051620036c78162002a26565b84546001600160a01b038116825260a01c60ff16602681101562002942576020820152604051620036f881620029ec565b620037066001870162002c73565b815260028601604051808260208294549384815201906000526020600020926000905b80601f8301106200468657620038629454918181106200466f575b81811062004655575b8181106200463b575b81811062004621575b81811062004608575b818110620045ee575b818110620045d4575b818110620045ba575b818110620045a0575b81811062004586575b8181106200456c575b81811062004552575b81811062004538575b8181106200451e575b81811062004504575b818110620044ea575b818110620044d0575b818110620044b6575b8181106200449c575b81811062004482575b81811062004468575b8181106200444e575b81811062004434575b8181106200441a575b81811062004400575b818110620043e6575b818110620043cc575b818110620043b2575b81811062004398575b8181106200437e575b81811062004364575b1062004353575b50038262002ab3565b6020820152600386018054620038788162002b80565b9162003888604051938462002ab3565b81835260208301906000526020600020906000905b8382106200433257505050506040820152600486018054620038bf8162002b80565b91620038cf604051938462002ab3565b81835260208301906000526020600020906000905b838210620041d557505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003ecc5784600997946020979460019a979462003a5b94549181811062003eae575b81811062003e8d575b81811062003e6c575b81811062003e4b575b81811062003e2b575b81811062003e0a575b81811062003de9575b81811062003dc8575b81811062003da7575b81811062003d86575b81811062003d65575b81811062003d44575b81811062003d23575b81811062003d02575b81811062003ce1575b81811062003cc0575b81811062003c9f575b81811062003c7e575b81811062003c5d575b81811062003c3c575b81811062003c1b575b81811062003bfa575b81811062003bd9575b81811062003bb8575b81811062003b97575b81811062003b76575b81811062003b55575b81811062003b34575b81811062003b13575b81811062003af2575b81811062003ad1575b1062003ab65750038262002ab3565b608082015262003a6e60068a0162003518565b60a082015262003a8160078a0162003575565b60c082015260405162003a9d81620011278160088e0162002bd5565b60e082015260408201528152019401910190926200368c565b90889160f81c62003ac78162002edc565b8152013862003859565b928a8d9160ff8560f01c1662003ae78162002edc565b815201930162003a4c565b928a8d9160ff8560e81c1662003b088162002edc565b815201930162003a43565b928a8d9160ff8560e01c1662003b298162002edc565b815201930162003a3a565b928a8d9160ff8560d81c1662003b4a8162002edc565b815201930162003a31565b928a8d9160ff8560d01c1662003b6b8162002edc565b815201930162003a28565b928a8d9160ff8560c81c1662003b8c8162002edc565b815201930162003a1f565b928a8d9160ff8560c01c1662003bad8162002edc565b815201930162003a16565b928a8d9160ff8560b81c1662003bce8162002edc565b815201930162003a0d565b928a8d9160ff8560b01c1662003bef8162002edc565b815201930162003a04565b928a8d9160ff8560a81c1662003c108162002edc565b8152019301620039fb565b928a8d9160ff8560a01c1662003c318162002edc565b8152019301620039f2565b928a8d9160ff8560981c1662003c528162002edc565b8152019301620039e9565b928a8d9160ff8560901c1662003c738162002edc565b8152019301620039e0565b928a8d9160ff8560881c1662003c948162002edc565b8152019301620039d7565b928a8d9160ff8560801c1662003cb58162002edc565b8152019301620039ce565b928a8d9160ff8560781c1662003cd68162002edc565b8152019301620039c5565b928a8d9160ff8560701c1662003cf78162002edc565b8152019301620039bc565b928a8d9160ff8560681c1662003d188162002edc565b8152019301620039b3565b928a8d9160ff8560601c1662003d398162002edc565b8152019301620039aa565b928a8d9160ff8560581c1662003d5a8162002edc565b8152019301620039a1565b928a8d9160ff8560501c1662003d7b8162002edc565b815201930162003998565b928a8d9160ff8560481c1662003d9c8162002edc565b81520193016200398f565b928a8d9160ff8560401c1662003dbd8162002edc565b815201930162003986565b928a8d9160ff8560381c1662003dde8162002edc565b81520193016200397d565b928a8d9160ff8560301c1662003dff8162002edc565b815201930162003974565b928a8d9160ff8560281c1662003e208162002edc565b81520193016200396b565b928a8d9160ff85831c1662003e408162002edc565b815201930162003962565b928a8d9160ff8560181c1662003e618162002edc565b815201930162003959565b928a8d9160ff8560101c1662003e828162002edc565b815201930162003950565b928a8d9160ff8560081c1662003ea38162002edc565b815201930162003947565b928a8d9160ff851662003ec18162002edc565b81520193016200393e565b926001610400602092865460ff811662003ee68162002edc565b825260ff8160081c1662003efa8162002edc565b8583015260ff8160101c1662003f108162002edc565b604083015260ff8160181c1662003f278162002edc565b606083015260ff81861c1662003f3d8162002edc565b608083015260ff8160281c1662003f548162002edc565b60a083015260ff8160301c1662003f6b8162002edc565b60c083015262003f8160ff8260381c1662002edc565b60ff8160381c1660e083015260ff8160401c1662003f9f8162002edc565b61010083015260ff8160481c1662003fb78162002edc565b61012083015260ff8160501c1662003fcf8162002edc565b61014083015260ff8160581c1662003fe78162002edc565b61016083015260ff8160601c1662003fff8162002edc565b61018083015260ff8160681c16620040178162002edc565b6101a083015260ff8160701c166200402f8162002edc565b6101c083015260ff8160781c16620040478162002edc565b6101e083015260ff8160801c166200405f8162002edc565b61020083015260ff8160881c16620040778162002edc565b61022083015260ff8160901c166200408f8162002edc565b61024083015260ff8160981c16620040a78162002edc565b61026083015260ff8160a01c16620040bf8162002edc565b61028083015260ff8160a81c16620040d78162002edc565b6102a083015260ff8160b01c16620040ef8162002edc565b6102c083015260ff8160b81c16620041078162002edc565b6102e083015260ff8160c01c166200411f8162002edc565b61030083015260ff8160c81c16620041378162002edc565b61032083015260ff8160d01c166200414f8162002edc565b61034083015260ff8160d81c16620041678162002edc565b61036083015260ff8160e01c166200417f8162002edc565b61038083015260ff8160e81c16620041978162002edc565b6103a083015260ff8160f01c16620041af8162002edc565b6103c083015260f81c620041c38162002edc565b6103e082015201940192019162003915565b604051620041e381620029ec565b620041f360ff855416826200350b565b600184015460208201526002840180546200420e8162002b80565b916200421e604051938462002ab3565b81835260208301906000526020600020906000905b838210620042ab57505050506001928260209260406006950152600387015460608201526040516200426e81620011278160048c0162002bd5565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e0820152815201930191019091620038e4565b600190602060405191620042bf83620029d0565b85548352838601549260ff8416620042d78162002edc565b8382015260ff600894851c16620042ee8162002937565b6040820152600287015460608201526200430b6003880162003442565b60808201526200431e60048801620035d2565b60a082015281520193019101909162004233565b60076020600192620043448662003495565b8152019301910190916200389d565b60f81c151581526020013862003859565b92602060019160ff8560f01c161515815201930162003852565b92602060019160ff8560e81c161515815201930162003849565b92602060019160ff8560e01c161515815201930162003840565b92602060019160ff8560d81c161515815201930162003837565b92602060019160ff8560d01c16151581520193016200382e565b92602060019160ff8560c81c161515815201930162003825565b92602060019160ff8560c01c16151581520193016200381c565b92602060019160ff8560b81c161515815201930162003813565b92602060019160ff8560b01c16151581520193016200380a565b92602060019160ff8560a81c161515815201930162003801565b92602060019160ff8560a01c1615158152019301620037f8565b92602060019160ff8560981c1615158152019301620037ef565b92602060019160ff8560901c1615158152019301620037e6565b92602060019160ff8560881c1615158152019301620037dd565b92602060019160ff8560801c1615158152019301620037d4565b92602060019160ff8560781c1615158152019301620037cb565b92602060019160ff8560701c1615158152019301620037c2565b92602060019160ff8560681c1615158152019301620037b9565b92602060019160ff8560601c1615158152019301620037b0565b92602060019160ff8560581c1615158152019301620037a7565b92602060019160ff8560501c16151581520193016200379e565b92602060019160ff8560481c161515815201930162003795565b92602060019160ff8560401c16151581520193016200378c565b92602060019160ff8560381c161515815201930162003783565b92602060019160ff8560301c16151581520193016200377a565b92602060019160ff8560281c161515815201930162003771565b92602060019160ff85831c161515815201930162003768565b92602060019160ff8560181c16151581520193016200375f565b92602060019160ff8560101c161515815201930162003756565b92602060019160ff8560081c16151581520193016200374d565b92602060019160ff85161515815201930162003744565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003729565b9080601f83011215620028f257813590620048738262002b80565b9262004883604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620048b35750505050505090565b82356001600160401b038111620028f2578691620048d78484809489010162002e8f565b815201920191620048a2565b35908115158203620028f257565b81601f82011215620028f2578035916200490b8362002b80565b926200491b604051948562002ab3565b808452602092838086019260051b820101928311620028f2578301905b82821062004947575050505090565b8135815290830190830162004938565b9080601f83011215620028f257813590620049728262002b80565b9262004982604051948562002ab3565b828452602092838086019160051b83010192808411620028f257848301915b848310620049b25750505050505090565b82356001600160401b038111620028f2578691620049d684848094890101620048f1565b815201920191620049a1565b9080601f83011215620028f257813591620049fd8362002b80565b9260409262004a0f8451958662002ab3565b8185526020938486019185600594851b86010194818611620028f257868101935b86851062004a4357505050505050505090565b84356001600160401b038111620028f257820183603f82011215620028f257888101359062004a728262002b80565b9162004a818751938462002ab3565b808352868b8401918a1b83010191868311620028f25791878c94929593015b81811062004ab957505082935081520194019362004a30565b91938091939562004aca84620028f7565b8152019101918b9391949262004aa0565b9062002b5a604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b30815180926020868601910162002d20565b810103602581018552018362002ab3565b9062002b5a6040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004b87815180926020868601910162002d20565b810103602081018552018362002ab3565b602062002b5a91939293604051948162004bbc879351809286808701910162002d20565b820162004bd28251809386808501910162002d20565b0103808552018362002ab3565b1562004be85750565b60405162461bcd60e51b81526020600482015290819062004c0e90602483019062002d45565b0390fd5b600019811462001de85760010190565b80511562004c305760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c305760400190565b80516002101562004c305760600190565b80516003101562004c305760800190565b805182101562004c305760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002b5a916020949360405195869262004cf162004ce383860162004c8e565b918281519485920162002d20565b016e0161030b732103130b630b731b29d1608d1b815262004d1c825180936020878501910162002d20565b010360101981018552018362002ab3565b601962002b5a916020949360405195869262004d4f62004ce383860162004c8e565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004d84825180936020878501910162002d20565b010360061981018552018362002ab3565b9062004da18262002b80565b62004db0604051918262002ab3565b828152809262004dc3601f199162002b80565b0190602036910137565b610328805482101562004c305760005260206000200190600090565b610326805482101562004c305760005260206000200190600090565b610321805482101562004c305760005260206000200190600090565b6106c2805482101562004c305760005260206000200190600090565b61032a805482101562004c305760005260206000200190600090565b6106be805482101562004c305760005260206000200190600090565b6106c0805482101562004c305760005260206000200190600090565b805482101562004c305760005260206000200190600090565b8181029291811591840414171562001de857565b919082549060031b91821b91600019901b1916179055565b81811062004ee2575050565b6000815560010162004ed6565b600160401b8111620029ba576103289081549080835581811062004f1257505050565b62002b5a926000526020600020918201910162004ed6565b600160401b8111620029ba576103269081549080835581811062004f1257505050565b8054600082558062004f5d575050565b62002b5a9160005260206000209081019062004ed6565b600160401b8111620029ba576106be9081549080835581811062004f1257505050565b600160401b8111620029ba576106c09081549080835581811062004f1257505050565b6103958054600082558062004f5d575050565b90600160401b8111620029ba5781549080835581811062004f1257505050565b919082811162004ffe576001920390565b50600091508190565b811562005012570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101562005193575b506904ee2d6d415b85acef8160201b8083101562005183575b50662386f26fc100008083101562005173575b506305f5e1008083101562005163575b506127108083101562005153575b50606482101562005142575b600a8092101562005137575b60019081602181860195620050c48762002e73565b96620050d4604051988962002ab3565b808852620050e5601f199162002e73565b01366020890137860101905b620050fe575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200513157919082620050f1565b620050f7565b9160010191620050af565b9190606460029104910191620050a3565b6004919392049101913862005097565b6008919392049101913862005089565b6010919392049101913862005079565b6020919392049101913862005066565b6040935081049150386200504d565b601e62002b5a9160209493604051958692620051c462004ce383860162004c8e565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620051fd825180936020878501910162002d20565b010360011981018552018362002ab3565b6003821015620029425752565b604051906200522a8262002a5e565b60405182620052398262002a7a565b610c8036833752565b906200524e8262002b80565b6040906200525f8251918262002ab3565b838152809362005272601f199162002b80565b019160005b838110620052855750505050565b60209082516200529581620029ec565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e083015282860101520162005277565b620052df815462002b98565b9081620052ea575050565b81601f60009311600114620052fd575055565b9080839182526200531e601f60208420940160051c84016001850162004ed6565b5555565b805490600081558162005333575050565b6000526020600020908101905b8181106200534c575050565b806200535a600192620052d3565b0162005340565b90600160401b8111620029ba578154918181558282106200538157505050565b600052602060002091820191015b8181106200539b575050565b80620053a9600192620052d3565b016200538f565b8054906000815581620053c1575050565b6000526020600020908101905b818110620053da575050565b80620053e860019262004f4d565b01620053ce565b90600160401b8111620029ba578154918181558282106200540f57505050565b600052602060002091820191015b81811062005429575050565b806200543760019262004f4d565b016200541d565b8054600091828155816200545157505050565b6001600160fd1b0382168203620054de5782526020822091600391821b8301925b838110620054805750505050565b8082600892558260018201558260028201556200549f84820162004f4d565b620054ad6004820162005322565b620054bb60058201620053b0565b620054c960068201620053b0565b620054d760078201620052d3565b0162005472565b634e487b7160e01b83526011600452602483fd5b600160401b8211620029ba578054908281558183106200551157505050565b6001600160fd1b03828116830362001de8578316830362001de857600090815260208120600392831b810193831b015b8381106200554f5750505050565b8082600892558260018201558260028201556200556e84820162004f4d565b6200557c6004820162005322565b6200558a60058201620053b0565b6200559860068201620053b0565b620055a660078201620052d3565b0162005541565b516006811015620029425790565b906006811015620029425760ff80198354169116179055565b90620055e08162002edc565b60ff80198354169116179055565b90620055fa8162002937565b61ff0082549160081b169061ff001916179055565b9190601f81116200561f57505050565b62002b5a926000526020600020906020601f840160051c830193106200564e575b601f0160051c019062004ed6565b909150819062005640565b81519192916001600160401b038111620029ba5762005685816200567e845462002b98565b846200560f565b602080601f8311600114620056c4575081929394600092620056b8575b50508160011b916000199060031b1c1916179055565b015190503880620056a2565b90601f198316958460005282600020926000905b8882106200571357505083600195969710620056f9575b505050811b019055565b015160001960f88460031b161c19169055388080620056ef565b80600185968294968601518155019501930190620056d8565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b815160068110156200294257620057879082620055bb565b602082015160018201556002810160408301516020815191620057ab8385620054f2565b01916000526020600020916000905b8282106200581e57505050509060e0600562002b5a9360608401516003820155620057ed60808501516004830162005659565b01916200580160a08201511515846200572c565b6200581360c08201511515846200573d565b015115159062005755565b8051805185556200585e60018601620058476020840151620058408162002edc565b82620055d4565b604083015190620058588262002937565b620055ee565b60608101516002860155608081015180519060038701906001600160401b038311620029ba5760209062005893848462004fcd565b0190600052602060002060005b83811062005b3f575050505060a0015180518051906004870190602090620058c9848462005361565b01906000526020600020906000905b83821062005b1f57505050506005850160208201516020815191620058fe8385620053ef565b019160005260206000206000925b82841062005abb57505050506006850160408201516020815191620059328385620053ef565b019160005260206000206000925b82841062005a4e5750505050606001518051906001600160401b038211620029ba57620059808262005976600789015462002b98565b600789016200560f565b602090601f8311600114620059d3579282600893602093600196600092620059c7575b5050600019600383901b1c191690851b1760078801555b01940191019092620057ba565b015190503880620059a3565b906007870160005260206000209160005b601f198516811062005a35575083602093600196938793600897601f1981161062005a1b575b505050811b016007880155620059ba565b015160001960f88460031b161c1916905538808062005a0a565b91926020600181928685015181550194019201620059e4565b80518051906001600160401b038211620029ba5760209062005a71838662004fcd565b0183600052602060002060005b83811062005a9d57505050506001602081920192019301929062005940565b82516001600160a01b03168183015560209092019160010162005a7e565b80518051906001600160401b038211620029ba5760209062005ade838662004fcd565b0183600052602060002060005b83811062005b0a5750505050600160208192019201930192906200590c565b60019060208451940193818401550162005aeb565b600160208262005b328394518762005659565b01930191019091620058d8565b600190602084519401938184015501620058a0565b60409081519162005b658362002a97565b60018352829160005b60208082101562005bd85783516020929162005b8a82620029d0565b60008252600081830152600086830152606060008184015280608084015286519062005bb6826200299e565b808252808383015280888301528082015260a083015282880101520162005b6e565b505091925050565b610323805482101562004c30576000526006602060002091020190600090565b6106bb805482101562004c30576000526006602060002091020190600090565b610322805482101562004c30576000526006602060002091020190600090565b6106ba805482101562004c30576000526006602060002091020190600090565b6103228054600160401b811015620029ba5762005c839160018201905562005c20565b91909162005c965762002b5a916200576f565b634e487b7160e01b600052600060045260246000fd5b6103238054600160401b811015620029ba5762005c839160018201905562005be0565b6106bb8054600160401b811015620029ba5762005c839160018201905562005c00565b6106ba8054600160401b811015620029ba5762005c839160018201905562005c40565b1562005d1d57565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b606481101562004c305762005daf8162005da86002620031f89460031b01549162005f41565b9062005ebb565b919062005d15565b606481101562004c3057600390811b61039a81015490600061039c820190815490809561039b829501915b83861062005e0057505050505050620031f89162005daf9162005ebb565b9690919293949662004c305762005e538762005e4b62005e2562000ef09a8962004e91565b905490861b1c6001600160a01b031660009081526020879052604081205490946200606a565b999062005edd565b949392919062005de2565b606481101562004c305762005daf8162005da861039a620031f89460031b01549162005fe7565b90811562005eb257606462005e9e818402938462005007565b0362005eaa5760019190565b600091508190565b60019150600090565b9190821562005ed35762005e9e818402938462005007565b5060019150600090565b1562005ee557565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6064811015908162004c3057600390811b906004928383019182549260009582879601935b85871062005f78575050505050505090565b97969091929394959762005fd25762005fc68862005e4b62005fa062000ef09a9b8762004e91565b905490881b1c6001600160a01b031660009081526020899052604081205490946200606a565b95949392919062005f66565b603282634e487b7160e01b6000525260246000fd5b6064811015908162004c305790600391821b9061039c82019081549060009461039b869501915b8386106200601f5750505050505090565b9590919293949562004c30576200604c866200604462005e2562000ef0998962004e91565b989062005edd565b94939291906200600e565b906001820191821062005eaa5760019190565b9190820191821062005eaa5760019190565b156200608457565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b606481101562004c30576200610b8162005da86001620031f89460031b01549162005f41565b91906200607c565b606481101562004c3057600390811b61039981015490600061039c820190815490809561039b829501915b8386106200615c57505050505050620031f8916200610b9162005ebb565b9690919293949662004c3057620061818762005e4b62005e2562000ef09a8962004e91565b94939291906200613e565b61038f54620061d26200619e620313c0565b91620061b06127109384831062004bdf565b620061c86103925461039054111562000ee96203142e565b6103915462005ebb565b919050620061df62031484565b5060009081925b6064841062006202575b620061fd9350046200624f565b905090565b9160ff60078560031b015416156200624857836200623562006241926200622e62000ef0969762005d82565b906200606a565b949062000ee962031484565b92620061e6565b91620061f0565b9080156200626757620062629162005007565b600191565b5050600090600090565b9190820180921162001de857565b9190820391821162001de857565b906107b2906301e1853e80840483810180821162001de8576001820181811162001de857604583019082821162001de8576064620062d092049060021c6200627f565b9561017183019682881162001de857620062f1906101908099049062006271565b9084840294848604148415171562001de85762015180948583029280840487149015171562001de85762006331926200632a9162006271565b906200627f565b9160049586910815958662006550575b506040516101a081016001600160401b038111828210176200653b57604052600c9687825261018080366020850137601f91826200637f8562004c22565b5215620065315760ff601d5b16620063978462004c46565b5281620063a48462004c57565b52601e620063b28462004c68565b5282518810156200651c578160a08401528251600510156200651c57601e60c08401528251600610156200651c578160e08401528251600710156200651c57816101008401528251600810156200651c57601e6101208401528251600910156200651c57816101408401528251600a10156200651c57601e6101608401528251600b10156200651c57820152600096905b81881062006497575b50508282049460018601809611620064825760018701809711620064825750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b909692620064a6848362004c79565b5185810290808204871490151715620064ff5781106200651457620064cc848362004c79565b519085820291808304871490151715620064ff57620064f791620064f0916200627f565b9362004c12565b969062006443565b601188634e487b7160e01b6000525260246000fd5b92966200644c565b603288634e487b7160e01b6000525260246000fd5b60ff601c6200638b565b604187634e487b7160e01b6000525260246000fd5b9095506064860615908115916200656b575b50943862006341565b90508506153862006562565b90815181101562004c30570160200190565b90815181511162006640576000905b620065a783518251906200627f565b8211620066385760019260005b82518110156200662d576001600160f81b031980620065df620065d8848862006271565b8562006577565b511690620065ee838662006577565b5116036200660757620066019062004c12565b620065b4565b5092509060005b62006625576200661e9062004c12565b9062006598565b505050600190565b50929190916200660e565b505050600090565b5050600090565b61032a80549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e3d565b610395805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b610393805490600160401b821015620029ba576001820180825582101562004c30576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b61032180549190600160401b831015620029ba5782620019dd91600162002b5a9501905562004e05565b60405190620067408262002a97565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067768262002a26565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200695c5781620067ee88620067f69362004c79565b5101620073dc565b602692838210156200294257601a918203620068b4578762006819915162004c79565b5192828401519081101562002942570362006872575093620068636200686b926200685b6200685460a0604062000ef09a0151015162004c22565b5162004c22565b51906200606a565b9590620073ea565b92620067cb565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068cd81620067ee89869a979a5162004c79565b82811015620029425760140362006906575050906200686362000ef0956200622e620068ff846200686b965162004c79565b5162007437565b6200691890620067ee85855162004c79565b90811015620029425760151462006936575b506200686b9062004c12565b906200686362006955956200622e620068ff846200686b965162004c79565b906200692a565b505050909250803410600014620069d25760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007253575b506107339182549260ff841693620069f38562002937565b60019480860362006a2d5750505062006a2391925062006a1d62006a1782620074ce565b620075a5565b6200762f565b620031f862006731565b62006a388162002937565b60028114808062007246575b1562006e6f5750505062006a5882620074e3565b1562006e305762006a6982620074e3565b1562006df45762006aa290602080930190600260ff8560018060a01b0362006a92865162004c22565b5151169460409687915162004c22565b510151015192541662006ab58162002937565b0362006db45781600052610737808552836000209261073880549485600052875260ff86600020541662006d76578351948060005261073693848952600396878960002001540362006d105783600052885286600020906000528752856000208960ff19825416179055886000905b62006b6e575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b57620308b4565b519162006b648362002a97565b6015835282015290565b845181101562006d0a5786825480600052858a5262006b938389846000200162004e91565b905490891b1c908a84888b62006baa838d62004c79565b511562006c6857505050505062006c0d62006bed85549283600052888d526200622e62006bdf87600480986000200162004e91565b9054908d1b1c91896203079f565b9092600052878c5262006c0685858d6000200162004e91565b9062004ebe565b1562006c26575062006c1f9062004c12565b8962006b24565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006ca562006cb7966200622e87999462006c06979860005284895262006c9887600580986000200162004e91565b9054911b1c918d6203079f565b959097600052528c6000200162004e91565b1562006cc85762006c1f9062004c12565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b2a565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e7f82979495969762002937565b6003821491828062007239575b1562006f0e5750505050505062006ea3816200754a565b1562006ebe5762006eb4906202df85565b620031f862006767565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f198162002937565b81806200722b575b806200721e575b156200714857505050509060ff9062006f4062030ac6565b54169062006f4e8262002937565b81036200700c575062006f6181620074ce565b1562006f7b578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200701a60039262002937565b146200705357505b604051620070308162002a97565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200705e816200754a565b156200706f5762006eb4906202df85565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b620071538162002937565b821562007209575b505080620071fb575b62007173575050505062007022565b60ff19161790556200718581620074ce565b156200719f578062006a1d62006a1762006a2393620074ce565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b506107325442101562007164565b6200721691925062002937565b38806200715b565b5061073254421062006f28565b506107315442101562006f21565b5061073254421062006e8c565b5061073154421062006a44565b60018060a01b03908184511660005261032590816020526040600020541562007349575b62007283903462004fed565b90156200730557620072a69083865116600052826020526040600020546200606a565b929015620072c45784511660005260205260406000205538620069db565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b60009081610326928354915b828110620073a1575b50156200736f575b50905062007277565b86518516600160401b821015620029ba57620019dd82620072839560016200739a9501905562004de9565b3862007366565b86620073ad8262004de9565b919054818c51169260031b1c1614620073d157620073cb9062004c12565b62007355565b50506001386200735e565b516026811015620029425790565b15620073f257565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007451818351015162004c46565b5151841015620074c6579262006863620074b6604094620074ae85620074a686620074948b6200749b8362000ef09f9e6200749490620074bc9e51015162004c46565b5162004c79565b519451015162004c57565b519062005ebb565b9290620073ea565b6200606a565b919290506200743c565b509093505050565b602001515115620074de57600190565b600090565b602001516001815103620075075762007500620031f89162004c22565b516200750d565b50600090565b60208101516026811015620029425760200362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b602001516001815103620075075762007567620031f89162004c22565b5160208101516026811015620029425760210362007507576040015160a081015151620075075760c08101515162007507575151620074de57600190565b15620075ad57565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763a81620141ae565b5162013cb157600681101562002942576003811462013c585780620076975760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200a5fb575060008061032a54905b8181106200a5b4575b5050156200a598575b60005b6020908183015191825182101562007724576200771681610329620076fc620076f662000ef095620067ee886200771e9a62004c79565b620316cf565b9160018060a01b0388511660005252604060002062022f40565b429162004ebe565b620076bf565b50505060005b602080830151805183101562007772576200774f91620067ee84620076f69362004c79565b90606482101562004c30576200776c91429061032b015562004c12565b6200772a565b505050906000905b602083015180518310156200a5925782620077959162004c79565b51602081018051602690818110156200294257156200a54f578151818110156200294257600103620079e2575050604080910190620077d960c08351015162004c22565b5192620077fb60a0620077f0818651015162004c22565b519451015162004c46565b51956200780c85518551146202cca5565b6200781b85518851146202cd0b565b60005b8551811015620079605762007834818662004c79565b516064908181101562004c3057600160ff60076200785b9360031b0154161515146202cd6d565b62007867828a62004c79565b5162007874838862004c79565b51908282101562004c30576006620078929260031b0154906200606a565b906200789f848962004c79565b51918383101562004c30576006620078bc9360031b01556202cdc5565b620078c8828a62004c79565b5190620078d6838862004c79565b518181101562004c30576001600160a01b039392620079169160039086620078ff878e62004c79565b5116600052811b016020528760002054906200606a565b62007922848a62004c79565b519283101562004c3057600362000ef0936200795a9662007944878e62004c79565b5116600052811b0160205287600020556202ce24565b6200781e565b5093926200797d919296506200797690620312cf565b92620311b3565b9451926200798b8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b6620079bf938762004c79565b51878a62030dc7565b62007997565b5094509260209250620079d9915062004c12565b9190506200777a565b815181811015620029425760020362007c78575050604080910180519283519562007a2762007a1660a08097015162004c22565b51956200749b818651015162004c46565b5193875186510362007c2557875184510362007bd157875185510362007b7a575060005b855181101562007b645762007a61818762004c79565b51906064918281101562004c305762007a8660ff6007809360031b015416156202ce7d565b62007a92828962004c79565b518381101562004c305760031b01805460ff1916600117905562007ab7818a62004c79565b5162007ac4828962004c79565b51908382101562004c3057600562007ae09260031b0162005659565b62007aec818662004c79565b5162007af9828962004c79565b518381101562004c305760031b6001015562007b16818762004c79565b5162007b23828962004c79565b518381101562004c305760031b6002015562007b40818862004c79565b519182101562004c30576000600662007b5e9360031b015562004c12565b62007a4b565b50955093905060209250620079d9915062004c12565b5162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b819593949295518181101562002942576003036200826f575050604084019062007ca760c08351015162004c22565b519362007cbe60a0620077f0818651015162004c22565b519362007cd3865185511462000ee962031533565b62007ce6865186511462000ee962031533565b60005b865181101562007d4e5762007cff818662004c79565b5190606482101562004c3057600362007d489260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b51111562000ee962031637565b62007ce9565b50909493919460005b855181101562007e815762007d6d818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b0160205262007daf60406000205462007da7848962004c79565b519062004fed565b9062007dbc848a62004c79565b51918383101562004c3057600362007deb93878f5116600052811b0160205260406000205562000ee962031637565b62007df7828862004c79565b518181101562004c30576003908462007e11858c62004c79565b5116600052811b0160205262007e326040600020546200685b848962004c79565b62007e3e848a62004c79565b519283101562004c3057600362000ef09362007e7b9662007e60878e62004c79565b5116600052811b0160205260406000205562000ee96203169c565b62007d57565b5091509162007e9862007e9f9196959496620312cf565b95620311b3565b926040519462007eaf8662002a97565b6001865260203681880137516001600160a01b031662007ecf8662004c22565b526000905b86518210156200825a5762007eea828862004c79565b516108c05262007efb855162004d95565b9660009462007f0b885162004d95565b6108a0528594865b885181101562007fe1578a8962007f436001600160a01b0362007f37858462004c79565b51166108c051620310b9565b158062007f9c575b62007f64575b505062007f5e9062004c12565b62007f13565b9862007f919162001a9c82859c62007f8862007f5e9760018060a01b039262004c79565b51169262004c79565b9790508a8962007f51565b50505060646108c051101562004c30576001600160a01b0362007fc0828b62004c79565b511660005260036108c051811b016020528a89604060002054151562007f4b565b509098949897969291939760005b8851811015620080825760646108c051101562004c30576001600160a01b036200801a828b62004c79565b511660005260036108c051811b016020526040600020541562008049575b620080439062004c12565b62007fef565b99620080439062008079906001600160a01b03620080688e8d62004c79565b511662001a9c826108a05162004c79565b9a905062008038565b5098509694939291956108c0516064811015806107205262004c305760031b6004015496620080bc620080b6878a62006271565b62004d95565b996000998a6104c0525b6107205162004c30576104c0518a8110156200817b57620080fb620081189160006107205260046108c05160031b0162004e91565b90546108a05160039290921b1c6001600160a01b03169062031166565b1562008137575b6200812d6104c05162004c12565b6104c052620080c6565b99808c62001a9c62008174936200815b6104c05160046108c05160031b0162004e91565b905460039190911b1c6001600160a01b03169262004c79565b996200811f565b509a939794969299919850946000915b8383106200822057505050506107205162004c30578051906001600160401b038211620029ba57602090620081ca8360046108c05160031b0162004fcd565b0160046108c05160031b01600052602060002060005b838110620082025750505050620081f79062004c12565b909295919562007ed4565b82516001600160a01b031681830155602090920191600101620081e0565b62008253906200824c906001600160a01b036200823e868662004c79565b511662001a9c828962004c79565b9262004c12565b916200818b565b91945050620079d99194506020925062004c12565b81959394929551818110156200294257600403620084f5575050604080920160c094620082b0620082a4878451015162004c22565b51968351015162004c46565b5194620082c760a0620077f0818651015162004c22565b5193620082dc885188511462000ee962031533565b620082ef885185511462000ee962031533565b62008302885186511462000ee962031533565b60005b885181101562008369576200831b818662004c79565b5190606482101562004c305762008363916003906001600160a01b0362008343848e62004c79565b5116600052811b0160205262000ef0886000205462007d3b838a62004c79565b62008305565b50909691959294939660005b8351811015620084a9576200838b818862004c79565b51906064918281101562004c30576001600160a01b039060039082620083b2858a62004c79565b5116600052811b01602052620083d38b62007da7848b600020549262004c79565b90620083e0848c62004c79565b51918583101562004c30576003620084199385620083ff888d62004c79565b5116600052811b016020528a6000205562000ee962031637565b62008425828a62004c79565b518381101562004c3057600390826200843f858b62004c79565b5116600052811b01602052620084608b6200685b848b600020549262004c79565b9190506200846f838b62004c79565b519384101562004c3057620084a3936003916200848d858b62004c79565b5116600052811b01602052876000205562004c12565b62008375565b5094620084cc92975062007e9891939450620084c590620312cf565b93620311b3565b9260005b8351811015620079c5578062000ef0620079b6620084ef938762004c79565b620084d0565b8195949395519080821015620029425760059182036200870957505050604091828501906200853960a06200852e818551015162004c22565b519351015162004c46565b51928251845103620086b85760005b83518110156200859f576200855e818562004c79565b5190606482101562004c30576003620085999260018060a01b038b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008548565b509092919260005b84518110156200863957620085bd818662004c79565b519060648083101562004c3057600360018060a01b0393848c5116600052811b01602052620085f6886000205462007da7848962004c79565b62008602848a62004c79565b519283101562004c3057600362000ef09362008633968e5116600052811b01602052896000205562000ee962031637565b620085a7565b509593926200864a919250620312cf565b91805193620086598562002a97565b6001855260203681870137516001600160a01b0316620086798562004c22565b525194620086878662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620086b2938762004c79565b62008693565b845162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029425760060362008971575050509060408092016200873960c08251015162004c22565b51946200875060a06200852e818551015162004c22565b5192865183510362008920578651845103620088d45760005b8751811015620087cd576200877f818562004c79565b5190606482101562004c3057620087c7916003906001600160a01b03620087a7848d62004c79565b5116600052811b0160205262000ef0876000205462007d3b838962004c79565b62008769565b509092919260005b87518110156200888057620087eb818662004c79565b5160648082101562004c30576001600160a01b0392916003908462008811858e62004c79565b5116600052811b0160205262008831886000205462007da7848962004c79565b6200883d848a62004c79565b519283101562004c3057600362000ef0936200887a96620088608f889062004c79565b5116600052811b01602052896000205562000ee962031637565b620087d5565b509592620088959192506200797690620312cf565b925194620088a38662002a5e565b60008652600036813760005b8351811015620079c5578062000ef0620079b6620088ce938762004c79565b620088af565b845162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029425760070362008ac0575050506040809101936200899d60c08651015162004c22565b5192620089af60a08751015162004c22565b5195515191620089c7855188511462000ee962031533565b60005b855181101562007b645762008aba9062000ef06001600160a01b038260028862008aa28e62008a978e62008a8d8f8962008a058a8562004c79565b511660005262008a418962008a39816103209a8b60205262008a3360ff8760002054161562000ee962031604565b62004c79565b519662004c79565b51968a62008a7783519b8c9662008a58886200299e565b600188526060602089019860008a528781019b8c52019b8c5262004c79565b511660005260205260002097511515886200572c565b511515866200573d565b516001850162005659565b5191015562008ab2838a62004c79565b511662006707565b620089ca565b8251959695939492818510156200294257600894850362008bb75750505062008af260c0604080950151015162004c22565b519360005b855181101562008ba25762008b9c906001600160a01b038062008b1b838a62004c79565b5116600052610320908160205262008b7160ff62008b486001828c600020541615151462000ee962031563565b8262008b55868d62004c79565b5116600052836020528960002054891c161562000ee9620315cb565b62008b7d838a62004c79565b51166000526020528560002061010061ff001982541617905562004c12565b62008af7565b509490935060209250620079d9915062004c12565b805182811015620029425760090362008c8b5750505062008be160c0604080950151015162004c22565b519360005b855181101562008ba25762008c8590866001600160a01b038062008c0b848462004c79565b511660005262008c5e6001898362008c4087610320978860205262008a338660ff8097600020541615151462000ee962031563565b5116600052846020528a600020548a1c1615151462000ee962031596565b62008c6a838a62004c79565b51166000526020528560002061ff0019815416905562004c12565b62008be6565b809796949293959751828110156200294257600a0362008d69575050505060408094019162008cd060a062008cc560c08651015162004c22565b519451015162004c22565b519162008ce5845184511462000ee962031533565b60005b8451811015620079c55762008d63906001600160a01b038062008d0c838962004c79565b51166000526103208060205262008d33600160ff8c600020541615151462000ee962031563565b62008d3f838862004c79565b519162008d4d848a62004c79565b5116600052602052600289600020015562004c12565b62008ce8565b8097959751828110156200294257600b0362008e38575050505060408092019362008d9960c08651015162004c22565b519451519162008db1865184511462000ee962031533565b60005b8651811015620079c55762008e329062000ef06001600160a01b038062008ddc848c62004c79565b51166000526103208060205262008e03600160ff8b600020541615151462000ee962031563565b62008e0f848962004c79565b519162008e1d858d62004c79565b51166000526020526001886000200162005659565b62008db4565b8097949593969751828110156200294257600c0362008f8f5750505060400160609182825101519362008e6b856202c2eb565b60005b855181101562008f795760e062008e8a82878751015162004c79565b5101511562008f115762008eae62008ea782878751015162004c79565b5162005c60565b610322805460001992919083810190811162001de85762008ed08a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005c20565b5001805460ff1916905562004c12565b62008e6e565b62008f2c62008f2582878751015162004c79565b5162005cac565b610322805460001992919083810190811162001de85762008f4e8a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762008efb62008f0b9362005be0565b50959150935060209250620079d9915062004c12565b809796959392949751828110156200294257600d03620090e457505060400194602062008fc160a08851015162004c22565b51965101519162008fd687518451146202c9e4565b60005b875181101562007b64578080878a62008ff762009086958962004c79565b51156200908c57620090576200903e8483620090296200901d6200906298889762004c79565b5161032254116202ca6d565b62008a338d620090456200903e858562004c79565b5162005c20565b509060ff9889920154901c166202cac5565b50015416156202cb26565b86620090736200903e838c62004c79565b5001805460ff1916600117905562004c12565b62008fd9565b62009057620090cc8483620090b7620090ab620090d398889762004c79565b5161032354116202ca6d565b62008a338d62009045620090cc858562004c79565b5162005be0565b8662009073620090cc838c62004c79565b809794939751828110156200294257600e03620091ca5750506040019160206200911360a08551015162004c22565b5193510151956200912884518851146202c9e4565b60005b845181101562007b6457806200914662009152928a62004c79565b51620091585762004c12565b6200912b565b6200917462009168828862004c79565b5161032254116202cb87565b620091b9876200919e6200918d6200903e858b62004c79565b5060ff9283910154891c166202cbe0565b88620091af6200903e858b62004c79565b500154166202cc42565b8662008efb6200903e838962004c79565b80919293509694959651828110156200294257600f03620092ee575050604001606091828251015193620091fe856202c2eb565b60005b855181101562008f795760e06200921d82878751015162004c79565b510151156200928d576200923a62008ea782878751015162004c79565b610322805460001992919083810190811162001de8576200925c8a9162005c20565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005c20565b62009201565b620092a162008f2582878751015162004c79565b610322805460001992919083810190811162001de857620092c38a9162005be0565b5001805461ff0019166101001790555491820191821162001de8578762009073620092879362005be0565b8091929394969550518281101562002942576010036200939357505060400151906200932360a0608084015193015162004c22565b519362009338835186511462000ee962031533565b60005b835181101562009380578062000ef06200935a6200937a938762004c79565b51620093668162002edc565b62009372838a62004c79565b51906202c1af565b6200933b565b5093509160209150620079d99062004c12565b80959295518281101562002942576011036200961c57505090604080940191620093c860a062008cc560c08651015162004c22565b5191620093d984518451146202c163565b60005b845181101562009451576200944b9062000ef06001600160a01b038062009404848a62004c79565b511660005261032580602052620094258b600020546200685b868b62004c79565b91909262009434868c62004c79565b51166000526020528a6000205562000ee9620314e9565b620093dc565b5093945091620094629150620311b3565b90610326928354946200947b620080b685518862006271565b91600093845b888110620095dc575060005b865181101562009534576000805b8a8110620094e5575b5015620094bd575b620094b79062004c12565b6200948d565b94620094b790620094dc906001600160a01b036200823e898b62004c79565b959050620094ac565b620094f08162004de9565b90546001600160a01b0360039290921b1c81169062009510858c62004c79565b5116146200952957620095239062004c12565b6200949b565b5050600138620094a4565b50965094909350620095468362004d95565b805191906001600160401b038311620029ba57602090620095678462004f2a565b0190600052602060002060005b838110620095be575050505060005b8281106200959b57505050620079d960209162004c12565b620095b89062000ef06001600160a01b03620019d0838662004c79565b62009583565b82516001600160a01b03168183015560209092019160010162009574565b946200960f6200961691620095f18862004de9565b905460039190911b1c6001600160a01b031662001a9c828962004c79565b9562004c12565b62009481565b80518281101562002942576012036200988b5750506040809401916200964d60a062008cc560c08651015162004c22565b51916200965e84518451146202c163565b60005b8451811015620096b057620096aa9062000ef06001600160a01b038062009689848a62004c79565b511660005261032580602052620094258b6000205462007da7868b62004c79565b62009661565b509491509291620096c190620311b3565b906103268054620096d28162004d95565b9260009485925b808410620097865750505050620096f08362004d95565b805191906001600160401b038311620029ba57602090620097118462004f2a565b0190600052602060002060005b83811062009768575050505060005b8281106200974557505050620079d960209162004c12565b620097629062000ef06001600160a01b03620019d0838662004c79565b6200972d565b82516001600160a01b0316818301556020909201916001016200971e565b9297600097929597949194998a5b86518110156200987957620097a98b62004de9565b90546001600160a01b0360039290921b1c811690620097c9838a62004c79565b511614620097e257620097dc9062004c12565b62009794565b509950976001979592979491945b8062009849575b156200980f57620098089062004c12565b92620096d9565b95620098426200980891620098248962004de9565b905460039190911b1c6001600160a01b031662001a9c828a62004c79565b9662004c12565b50620098558162004de9565b60018060a01b0391549060031b1c16600052610325602052826000205415620097f7565b509998909897959297949194620097f0565b8095929551828110156200294257601303620098ec57505060408091015101519260005b8451811015620098db578062000ef0620098ce620098d5938862004c79565b516202df19565b620098af565b50925090620079d960209162004c12565b805191808310156200294257601492830362009a8e575050506040809101906200991b60c08351015162004c22565b51926200993260a0620077f0818651015162004c22565b51956200994385518551146202cca5565b6200995285518851146202cd0b565b60005b855181101562009a39576200996b818962004c79565b5162009978828762004c79565b516064918282101562004c30576006620099989260031b0154906200606a565b90620099a5848962004c79565b51918383101562004c30576006620099c29360031b01556202cdc5565b620099ce828a62004c79565b5190620099dc838862004c79565b518181101562004c30576001600160a01b03939262009a059160039086620078ff878e62004c79565b62009a11848a62004c79565b519283101562004c3057600362000ef09362009a339662007944878e62004c79565b62009955565b50939262009a4f919296506200797690620312cf565b94519262009a5d8462002a5e565b60008452600036813760005b8351811015620079c5578062000ef0620079b662009a88938762004c79565b62009a69565b8151818110156200294257601590810362009aba57505050506020919262000ef0620079d9926202d41e565b825191808310156200294257601692830362009b2257505050505060c0604062009ae8920151015162004c22565b519260005b8451811015620098db5762009b1c9062000ef06001600160a01b0362009b14838962004c79565b5116620066bc565b62009aed565b835181811015620029425760170362009b7b5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029425760180362009bee57505050505060c0604062009ba6920151015162004c22565b51610396805460ff191660011790559260005b8451811015620098db5762009be89062000ef06001600160a01b0362009be0838962004c79565b511662006671565b62009bb9565b839796975181811015620029425760190362009d6257505050505060008080604080940160a08082510151805162009d29575b5050519060e08201519162009c456200685460c060018060a01b0393015162004c22565b511690602083519301915af1903d1562009d20573d9162009c668362002e73565b9262009c758351948562002ab3565b83523d6000602085013e5b1562009c95575050620079d960209162004c12565b62004c0e925062009d0181519260008051602062031c88833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b8385015283815162009cf0816059946020868601910162002d20565b810103603981018552018362002ab3565b5162461bcd60e51b815260206004820152918291602483019062002d45565b60609162009c80565b62009d349062004c22565b515162009d43575b8062009c21565b819250620068549062009d599251015162004c22565b51903862009d3c565b8351818110156200294257601a0362009e62575050505062009d8d60a0604080940151015162004c22565b519062009d9e60038351146202c163565b62009da98262004c22565b519262009dc262009dba8462004c46565b519362004c57565b519262009e2857505091620079d99160016020941460001462009e215762009e019062009df46103919182546200606a565b90915562000ee962031484565b62000ef061039262009e14815462006057565b90915562000ee9620314be565b5062004c12565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b90919280945051818110156200294257601b036200a2f5575050505050919062009ea261038f54620061b062009e97620313c0565b612710831062004bdf565b505062009eae62031484565b506000805b606481106200a284575b505062009ec96200618c565b62009ed76107345462004d95565b9060009485935b60648510156200a2775760ff60078660031b015416156200a0365760009560028660031b0154156200a02757869796975b62004c305760048660031b01548810156200a00e5762009f37886004600389901b0162004e91565b600160a01b6001900391549060031b1c1696876000528660031b6003016020526040978589600020549062009f6c9162005ebb565b999062009f7862031484565b62009f839162004bdf565b6000998960031b6002015462009f999162005ebb565b919062009fa562031484565b62009fb09162004bdf565b828b526103276020528a209081549062009fca916200606a565b90915562009fd762031484565b62009fe29162004bdf565b62009fee828862004c79565b5262009ffa9062004c12565b976200a0069062004c12565b979662009f0f565b91946200a01e9196975062004c12565b93909462009ede565b91946200a01e91965062004c12565b949592915092505b6200a0498262004d95565b91600091825b8281106200a1e157505050610328908154926200a071620080b6858462006271565b9360009081905b8082106200a1a657505060005b8381106200a1025750508351939150506001600160401b038311620029ba576020906200a0b28462004eef565b0190600052602060002060005b8381106200a0e45750505050620079d960209160006103915560006103925562004c12565b82516001600160a01b0316818301556020909201916001016200a0bf565b6000805b8381106200a15e575b50156200a128575b6200a1229062004c12565b6200a085565b906200a122906200a155906001600160a01b036200a147858762004c79565b511662001a9c828a62004c79565b9190506200a117565b6001600160a01b03806200a173858862004c79565b5116906200a182838b62004c79565b5116146200a19b576200a1959062004c12565b6200a106565b50506001386200a10f565b90916200824c6200a1da916200a1bc8562004dcd565b905460039190911b1c6001600160a01b031662001a9c828b62004c79565b906200a078565b6000805b8581106200a22f575b50156200a207575b6200a2019062004c12565b6200a04f565b926200a201906200a226906001600160a01b036200823e878662004c79565b9390506200a1f6565b6001600160a01b03806200a244858762004c79565b5116906200a253838a62004c79565b5116146200a26c576200a2669062004c12565b6200a1e5565b50506001386200a1ee565b949592915092506200a03e565b806003959394951b9060ff600783015416156200a2ea576200a2d4620074b662000ef0946200a2c86200a2e09560026200a2be8762005d82565b9101549062005ebb565b929062000ee962031484565b939062000ee962031484565b9392919362009eb3565b509392919362009ebd565b8351818110156200294257601c036200a34e5760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b8351818110156200294257601d036200a374575b5050505050620079d960209162004c12565b8351818110156200294257601e146200a362578351818110156200294257601f036200a3ca57505050506020916200a3c06200a3b96040620079d99401515162004c22565b516202df4f565b913880806200a362565b83518181101562002942576020036200a3f0575b5050505050620079d96020916200a3c0565b835181811015620029425760218091036200a40d575b506200a3de565b8451828110156200a53a576022036200a44d57505050505050620079d960209161039660ff1981541690556200a44262004fba565b91388080806200a406565b8451828110156200a53a576023036200a474575b505050505050620079d96020916200a442565b845194828610156200a53a5760248096036200a492575b506200a461565b8051838110156200a526576025146200a48b5751918210156200a5125750036200a4d65750506020916200a4ca620079d9926202d41e565b9138808080806200a48b565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200a5ae906001600160a01b031662006647565b620076bc565b6200a5bf8162004e3d565b9054855160039290921b1c6001600160a01b039081169116146200a5ee576200a5e89062004c12565b620076aa565b50505060013880620076b3565b600281036200a61f5760405162461bcd60e51b81528062004c0e60048201620075e4565b6001146200a62a5750565b6200a6386103235462005242565b805190600160401b8211620029ba576106bb54826106bb5580831062013bdd575b506020016106bb60005260206000206000915b83831062013bbc575050505060005b610323548110156200a6b4578062000ef06200a69b6200a6ae9362005be0565b506200a6a78362005c00565b90620140e3565b6200a67b565b506200a6c36103225462005242565b805190600160401b8211620029ba576106ba54826106ba5580831062013b20575b506020016106ba60005260206000206000915b83831062013aff575050505060005b610322548110156200a738578062000ef06200a7266200a7329362005c20565b506200a6a78362005c40565b6200a706565b5060005b6064811015806200a8f557600160ff61039f8460031b0154161515146200a770575b506200a76a9062004c12565b6200a73c565b916000835b62004c305761039c8360031b01548110156200a7df576200a7d6929350600092816200a7aa859361039c8860031b0162004e91565b9054600391821b1c6001600160a01b031660009081529087901b61039b01602052604081205562004c12565b9093926200a775565b5091604051906200a7f08262002a5e565b6000825262004c30578051906001600160401b038211620029ba576020906200a8218361039c8660031b0162004fcd565b0161039c8360031b01600052602060002060005b8381106200a8d75750505050600381901b61039f8101805460ff1916905560006103988201819055610399820181905561039a82015561039d01546200a76a91906200a8819062002b98565b601f908181116200a8ac575b5050600061039d8260031b0155600061039e8260031b0155906200a75e565b6200a8cf9161039d8460031b016000526020600020910160051c81019062004ed6565b38806200a88d565b82516001600160a01b0316818301556020909201916001016200a835565b505060005b6064811062013a71575060005b610321548110156200a96257806200a9236200a95c9262004e05565b60018060a01b0391549060031b1c166000526106b860205260006002604082208281556200a95460018201620052d3565b015562004c12565b6200a907565b506200a9716103215462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106b954836106b95580841062013a4f575b50016106b9600052602060002060005b83811062013a31575050505060005b610321548110156200aa35576200a9da8162004e05565b90546106b95460039290921b1c6001600160a01b0316919081101562004c30576106b960005260008051602062031ca8833981519152810180546001600160a01b0319169092179091556200aa2f9062004c12565b6200a9c3565b509060005b610321548110156200aaf457806200aa566200aaa99262004e05565b9060018060a01b03918291549060031b1c16600052610320602052604080600020916200aa838462004e05565b90549060031b1c166000526106b8602052600020908082036200aaaf575b505062004c12565b6200aa3a565b600280916200aad560ff6200aac881845416876200572c565b825460081c16856200573d565b6200aae7600182016001860162013d7f565b015491015538806200aaa1565b5060005b6106c2548110156200ab4657806200ab146200ab409262004e21565b60018060a01b0391549060031b1c166000526106c160205262000ef06040600020606481019062004ed6565b6200aaf8565b506200ab5561032a5462004d95565b8051906001600160401b038211620029ba57600160401b8211620029ba576020906106c254836106c25580841062013a0f575b50016106c2600052602060002060005b838110620139f1575050505060005b61032a548110156200abea578062000ef06200abc76200abe49362004e3d565b905460039190911b1c6001600160a01b0316620019dd8362004e21565b6200aba7565b5060005b61032a548110156200ac7557806200ac0a6200ac5c9262004e3d565b9060018060a01b03918291549060031b1c16600052610329602052604080600020916200ac378462004e3d565b90549060031b1c166000526106c1602052600020908082036200ac6257505062004c12565b6200abee565b6200ac6d9162014177565b38806200aaa1565b5061032b80546000905b60648210620139d857505061038f546107275550610390546107285561039154610729556103925461072a55610393546001600160401b038111620029ba57600160401b8111620029ba5761072b548161072b55808210620139aa575b5061072b60009081527f5633a4c6d9b97531e399e3f8ca4246ad061775375fff6b4bcce16d5826063f97805460008051602062031b6883398151915291905b8484106201398857505050505061039454600160401b8111620029ba5761072c548161072c5580821062013946575b5061072c600090815260008051602062031c088339815191527faa8d8c5069de1a96df104a74e1e1a7598fabc0d586553b00a0e002f860df95975b83831062013928575050610395549150506001600160401b038111620029ba57600160401b8111620029ba5761072d548161072d55808210620138fa575b5061072d60009081527f9b9d7759e89c320201cfa750871914a6fc9f76735934f3be5ccb8595391f512c805460008051602062031ac883398151915291905b848410620138d857505050505060ff6103965416151560ff801961072e541691161761072e5560005b6106be548110156200ae7557806200ae476200ae6f9262004e59565b905460039190911b1c6001600160a01b031660009081526106bd602052604081205562004c12565b6200ae2b565b506200ae846103265462004d95565b8051906001600160401b038211620029ba576020906200aea48362004f74565b016106be600052602060002060005b838110620138ba575050505060005b610326548110156200af05578062000ef06200aee26200aeff9362004de9565b905460039190911b1c6001600160a01b0316620019dd8362004e59565b6200aec2565b5060005b610326548110156200af7457806200af256200af6e9262004de9565b9060018060a01b03918291549060031b1c1660005261032560205260408060002054916200af538462004de9565b90549060031b1c166000526106bd6020526000205562004c12565b6200af09565b5060005b6106c0548110156200afc257806200af946200afbc9262004e75565b905460039190911b1c6001600160a01b031660009081526106bf602052604081205562004c12565b6200af78565b506200afd16103285462004d95565b8051906001600160401b038211620029ba576020906200aff18362004f97565b016106c0600052602060002060005b8381106201389c575050505060005b610328548110156200b052578062000ef06200b02f6200b04c9362004dcd565b905460039190911b1c6001600160a01b0316620019dd8362004e75565b6200b00f565b5060005b610328548110156200b0c157806200b0726200b0bb9262004dcd565b9060018060a01b03918291549060031b1c1660005261032760205260408060002054916200b0a08462004dcd565b90549060031b1c166000526106bf6020526000205562004c12565b6200b056565b506106c2546000805b82811062013857575b501562013821575b5060005b60208301519081518110156200b1375762000ef0620077166200b111620076f66020620067ee866200b1319862004c79565b86516001600160a01b031660009081526106c16020526040902062022f40565b6200b0df565b505060005b602083015180518210156200b18457620076f66020620067ee846200b1619462004c79565b90606482101562004c30576200b17e9142906106c3015562004c12565b6200b13c565b5050906000905b602081015180518310156200fe7557826200b1a69162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036200b77057604001906200b1e760c08351015162004c22565b51936200b1fe60a0620077f0818651015162004c22565b51916200b20f86518551146202cca5565b6200b21e86518451146202cd0b565b60005b86518110156200b377576200b237818662004c79565b51606481101562004c3057600160ff61039f6200b25d9360031b0154161515146202cd6d565b6200b269818562004c79565b516200b276828762004c79565b5190606482101562004c305761039e6200b2969260031b0154906200606a565b906200b2a3838862004c79565b5191606483101562004c305761039e6200b2c29360031b01556202cdc5565b6200b2ce818562004c79565b516200b2db828762004c79565b5190606482101562004c30576200b31d9161039b906001600160a01b036200b304868d62004c79565b511660005260031b01602052604060002054906200606a565b91906200b32b828862004c79565b5190606482101562004c30576200b3719362000ef09261039b906001600160a01b036200b359878f62004c79565b511660005260031b016020526040600020556202ce24565b6200b221565b50926200b38e919250620084c590959495620312cf565b916040516200b39d8162002a5e565b6000815260003681376000945b80518610156200b756576200b3c0868262004c79565b516107a0526200b3d1855162004d95565b966000946200b3e1845162004d95565b6103805260009460005b88518110156200b4b2578a896200b41b6001600160a01b036200b40f858462004c79565b51166107a0516203110f565b15806200b46b575b6200b43c575b50506200b4369062004c12565b6200b3eb565b986200b4609162001a9c82859c62007f886200b4369760018060a01b039262004c79565b9790508a896200b429565b50505060646107a051101562004c30576001600160a01b036200b48f828b62004c79565b511660005261039b6107a05160031b016020528a8960406000205415156200b423565b50909895979498969291939660005b88518110156200b54f5760646107a051101562004c30576001600160a01b03806200b4ed838c62004c79565b511660005261039b6107a05160031b01602052604060002054156200b51f575b506200b5199062004c12565b6200b4c1565b819b6200b547916200b5366200b519948d62004c79565b511662001a9c826103805162004c79565b9a906200b50d565b509850969592919093966107a0516064811015806104805262004c305760031b61039c0154986200b585620080b6898c62006271565b6108005260006102005260006107c0525b6104805162004c30576107c0518a8110156200b65f576200b5cc6200b5ec9160006104805261039c6107a05160031b0162004e91565b9054610380516001600160a01b03939260031b9190911c83169062031166565b156200b60c575b506200b6026107c05162004c12565b6107c0526200b596565b6000610480526200b62b6107c05161039c6107a05160031b0162004e91565b90549060031b1c166200b645610200516108005162004c79565b526200b6546102005162004c12565b61020052386200b5f3565b50979294959093985095909560005b8281106200b70a575050506104805162004c305761080051516001600160401b038111620029ba576200b6ac8161039c6107a05160031b0162004fcd565b6020610800510161039c6107a05160031b01600052602060002060005b8381106200b6ec57505050506200b6e09062004c12565b9492959091956200b3aa565b82516001600160a01b0316818301556020909201916001016200b6c9565b6200b750906001600160a01b036200b723828562004c79565b51166200b737610200516108005162004c79565b526200b7466102005162004c12565b6102005262004c12565b6200b66e565b5050939092506200b768915062004c12565b90916200b18b565b906020829493940151602681101562002942576002036200b921576040809201908151938451916200b7c76200b7ab60a08098015162004c22565b51966200b7bc818751015162004c46565b519551015162004c57565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b86518110156200b90e576200b801818862004c79565b51606481101562004c305760ff61039f6200b8239260031b015416156202ce7d565b6200b82f818862004c79565b51606481101562004c305760031b61039f01805460ff191660011790556200b858818562004c79565b516200b865828962004c79565b5190606482101562004c305761039d6200b8839260031b0162005659565b6200b88f818662004c79565b516200b89c828962004c79565b51606481101562004c305760031b61039901556200b8bb818762004c79565b516200b8c8828962004c79565b51606481101562004c305760031b61039a01556200b8e7818862004c79565b5190606482101562004c3057600061039e6200b9089360031b015562004c12565b6200b7eb565b509592509350506200b768915062004c12565b9092916020840151602681101562002942576003036200bf3f5760408401906200b95060c08351015162004c22565b51906200b96760a0620077f0818651015162004c22565b51936200b97c835185511462000ee962031533565b6200b98f835186511462000ee962031533565b60005b83518110156200b9ec576200b9a8818662004c79565b5190606482101562004c305761039b6200b9e69260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200b992565b509095919560005b87518110156200bb36576200ba0a818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200ba4360406000205462007da7838962004c79565b906200ba50838862004c79565b5191606483101562004c305761039b6200ba889360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200ba94818662004c79565b51606481101562004c305761039b906001600160a01b036200bab7848c62004c79565b511660005260031b016020526200bad96040600020546200685b838962004c79565b91906200bae7828862004c79565b5190606482101562004c30576200bb309361039b62000ef0938d6200bb148760018060a01b039262004c79565b511660005260031b0160205260406000205562000ee96203169c565b6200b9f4565b50926200bb55919294506200bb4e90969596620312cf565b94620311b3565b92604051906200bb658262002a97565b6001825260203681840137516001600160a01b03166200bb858262004c22565b526000945b80518610156200b756576200bba0868262004c79565b51610580526200bbb1855162004d95565b966000946200bbc1845162004d95565b6106a05260009460005b88518110156200bc92578a896200bbfb6001600160a01b036200bbef858462004c79565b5116610580516203110f565b15806200bc4b575b6200bc1c575b50506200bc169062004c12565b6200bbcb565b986200bc409162001a9c82859c62007f886200bc169760018060a01b039262004c79565b9790508a896200bc09565b505050606461058051101562004c30576001600160a01b036200bc6f828b62004c79565b511660005261039b6105805160031b016020528a8960406000205415156200bc03565b50909895979498969291939660005b88518110156200bd3657606461058051101562004c30576001600160a01b036200bccc828b62004c79565b511660005261039b6105805160031b01602052604060002054156200bcfd575b6200bcf79062004c12565b6200bca1565b996200bcf7906200bd2d906001600160a01b036200bd1c8e8d62004c79565b511662001a9c826106a05162004c79565b9a90506200bcec565b50985096959291909396610580516064811015806105005262004c305760031b61039c0154986200bd6c620080b6898c62006271565b6105205260006105c05260006106e0525b6105005162004c30576106e0518a8110156200be48576200bdb36200bdd09160006105005261039c6105805160031b0162004e91565b90546106a05160039290921b1c6001600160a01b03169062031166565b156200bdef575b6200bde56106e05162004c12565b6106e0526200bd7d565b6000610500526200be0e6106e05161039c6105805160031b0162004e91565b60018060a01b0391549060031b1c166200be2f6105c0516105205162004c79565b526200be3e6105c05162004c12565b6105c0526200bdd7565b50979294959093985095909560005b8281106200bef3575050506105005162004c305761052051516001600160401b038111620029ba576200be958161039c6105805160031b0162004fcd565b6020610520510161039c6105805160031b01600052602060002060005b8381106200bed557505050506200bec99062004c12565b9492959091956200bb8a565b82516001600160a01b0316818301556020909201916001016200beb2565b6200bf39906001600160a01b036200bf0c828562004c79565b51166200bf206105c0516105205162004c79565b526200bf2f6105c05162004c12565b6105c05262004c12565b6200be57565b90926020810151602681101562002942576004036200c5645760400160c0936200bf7d6200bf71868451015162004c22565b51958351015162004c46565b51906200bf9460a0620077f0818651015162004c22565b51936200bfa9875184511462000ee962031533565b6200bfbc875185511462000ee962031533565b6200bfcf875186511462000ee962031533565b60005b87518110156200c039576200bfe8818662004c79565b5190606482101562004c30576200c0339161039b906001600160a01b036200c011848d62004c79565b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200bfd2565b509095919593929360005b83518110156200c198576200c05a818762004c79565b51606481101562004c305761039b906001600160a01b036200c07d848862004c79565b511660005260031b016020526200c09f60406000205462007da7838862004c79565b906200c0ac838962004c79565b5191606483101562004c30576200c0f19261039b906001600160a01b036200c0d5878b62004c79565b511660005260031b0160205260406000205562000ee962031637565b6200c0fd818762004c79565b51606481101562004c305761039b906001600160a01b036200c120848c62004c79565b511660005260031b016020526200c1426040600020546200685b838862004c79565b9190506200c151818862004c79565b5191606483101562004c30576200c1929261039b906001600160a01b036200c17a858e62004c79565b511660005260031b0160205260406000205562004c12565b6200c044565b5091936200c1b491935062007e98620084c591979697620312cf565b6000945b80518610156200b756576200c1ce868262004c79565b51610860526200c1df855162004d95565b966000946200c1ef845162004d95565b6107605260009460005b88518110156200c2c0578a896200c2296001600160a01b036200c21d858462004c79565b5116610860516203110f565b15806200c279575b6200c24a575b50506200c2449062004c12565b6200c1f9565b986200c26e9162001a9c82859c62007f886200c2449760018060a01b039262004c79565b9790508a896200c237565b505050606461086051101562004c30576001600160a01b036200c29d828b62004c79565b511660005261039b6108605160031b016020528a8960406000205415156200c231565b50909895979498969291939660005b88518110156200c35d57606461086051101562004c30576001600160a01b03806200c2fb838c62004c79565b511660005261039b6108605160031b01602052604060002054156200c32d575b506200c3279062004c12565b6200c2cf565b819b6200c355916200c3446200c327948d62004c79565b511662001a9c826107605162004c79565b9a906200c31b565b50985096959291909396610860516064811015806108e05262004c305760031b61039c0154986200c393620080b6898c62006271565b6103005260006103e0526000610840525b6108e05162004c3057610840518a8110156200c46d576200c3da6200c3fa9160006108e05261039c6108605160031b0162004e91565b9054610760516001600160a01b03939260031b9190911c83169062031166565b156200c41a575b506200c4106108405162004c12565b610840526200c3a4565b60006108e0526200c4396108405161039c6108605160031b0162004e91565b90549060031b1c166200c4536103e0516103005162004c79565b526200c4626103e05162004c12565b6103e052386200c401565b50979294959093985095909560005b8281106200c518575050506108e05162004c305761030051516001600160401b038111620029ba576200c4ba8161039c6108605160031b0162004fcd565b6020610300510161039c6108605160031b01600052602060002060005b8381106200c4fa57505050506200c4ee9062004c12565b9492959091956200c1b8565b82516001600160a01b0316818301556020909201916001016200c4d7565b6200c55e906001600160a01b036200c531828562004c79565b51166200c5456103e0516103005162004c79565b526200c5546103e05162004c12565b6103e05262004c12565b6200c47c565b92906020840151602681101562002942576005036200cb0a5760408401906200c59760a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156200c600576200c5bc818562004c79565b5190606482101562004c305761039b6200c5fa9260018060a01b038a511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200c5a6565b509060005b83518110156200c6a5576200c61b818562004c79565b51606481101562004c305761039b9060018060a01b0389511660005260031b016020526200c65460406000205462007da7838862004c79565b91906200c662828762004c79565b5190606482101562004c30576200c69f9361039b62000ef09360018060a01b038d511660005260031b0160205260406000205562000ee962031637565b6200c605565b50916200c6b69194959350620312cf565b92604051926200c6c68462002a97565b6001845260203681860137516001600160a01b03166200c6e68462004c22565b52604051926200c6f68462002a5e565b6000845260003681376000945b80518610156200b756576200c719868262004c79565b51610640526200c72a855162004d95565b966000946200c73a845162004d95565b6104a05260009460005b88518110156200c80b578a896200c7746001600160a01b036200c768858462004c79565b5116610640516203110f565b15806200c7c4575b6200c795575b50506200c78f9062004c12565b6200c744565b986200c7b99162001a9c82859c62007f886200c78f9760018060a01b039262004c79565b9790508a896200c782565b505050606461064051101562004c30576001600160a01b036200c7e8828b62004c79565b511660005261039b6106405160031b016020528a8960406000205415156200c77c565b50909895979498969291939660005b88518110156200c8af57606461064051101562004c30576001600160a01b036200c845828b62004c79565b511660005261039b6106405160031b01602052604060002054156200c876575b6200c8709062004c12565b6200c81a565b996200c870906200c8a6906001600160a01b036200c8958e8d62004c79565b511662001a9c826104a05162004c79565b9a90506200c865565b50985096959291909396610640516064811015806104405262004c305760031b61039c0154986200c8e5620080b6898c62006271565b610540526000610360526000610460525b6104405162004c3057610460518a8110156200c9c1576200c92c6200c9499160006104405261039c6106405160031b0162004e91565b90546104a05160039290921b1c6001600160a01b03169062031166565b156200c968575b6200c95e6104605162004c12565b610460526200c8f6565b6000610440526200c9876104605161039c6106405160031b0162004e91565b60018060a01b0391549060031b1c166200c9a8610360516105405162004c79565b526200c9b76103605162004c12565b610360526200c950565b50979294959093985095909560005b8281106200ca6c575050506104405162004c305761054051516001600160401b038111620029ba576200ca0e8161039c6106405160031b0162004fcd565b6020610540510161039c6106405160031b01600052602060002060005b8381106200ca4e57505050506200ca429062004c12565b9492959091956200c703565b82516001600160a01b0316818301556020909201916001016200ca2b565b6200cab2906001600160a01b036200ca85828562004c79565b51166200ca99610360516105405162004c79565b526200caa86103605162004c12565b6103605262004c12565b6200c9d0565b60405162461bcd60e51b8152602060048201526035602482015260008051602062031b08833981519152604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b926020810151602681101562002942576006036200d0ed576040016200cb3560c08251015162004c22565b51936200cb4c60a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156200cbcc576200cb7b818562004c79565b5190606482101562004c30576200cbc69161039b906001600160a01b036200cba4848c62004c79565b511660005260031b0160205262000ef060406000205462007d3b838962004c79565b6200cb65565b509060005b86518110156200cc6e576200cbe7818562004c79565b51606481101562004c305761039b906001600160a01b036200cc0a848b62004c79565b511660005260031b016020526200cc2c60406000205462007da7838862004c79565b91906200cc3a828762004c79565b5190606482101562004c30576200cc689362000ef09261039b906001600160a01b036200c0d5878f62004c79565b6200cbd1565b50916200cc85919350620084c590959495620312cf565b91604051926200cc958462002a5e565b6000845260003681376000945b80518610156200b756576200ccb8868262004c79565b51610420526200ccc9855162004d95565b966000946200ccd9845162004d95565b6102e05260009460005b88518110156200cdaa578a896200cd136001600160a01b036200cd07858462004c79565b5116610420516203110f565b15806200cd63575b6200cd34575b50506200cd2e9062004c12565b6200cce3565b986200cd589162001a9c82859c62007f886200cd2e9760018060a01b039262004c79565b9790508a896200cd21565b505050606461042051101562004c30576001600160a01b036200cd87828b62004c79565b511660005261039b6104205160031b016020528a8960406000205415156200cd1b565b50909895979498969291939660005b88518110156200ce4757606461042051101562004c30576001600160a01b03806200cde5838c62004c79565b511660005261039b6104205160031b01602052604060002054156200ce17575b506200ce119062004c12565b6200cdb9565b819b6200ce3f916200ce2e6200ce11948d62004c79565b511662001a9c826102e05162004c79565b9a906200ce05565b50985096959291909396610420516064811015806107405262004c305760031b61039c0154986200ce7d620080b6898c62006271565b6102c05260006101c0526000610600525b6107405162004c3057610600518a8110156200cf57576200cec46200cee49160006107405261039c6104205160031b0162004e91565b90546102e0516001600160a01b03939260031b9190911c83169062031166565b156200cf04575b506200cefa6106005162004c12565b610600526200ce8e565b6000610740526200cf236106005161039c6104205160031b0162004e91565b90549060031b1c166200cf3d6101c0516102c05162004c79565b526200cf4c6101c05162004c12565b6101c052386200ceeb565b50979294959093985095909560005b8281106200d002575050506107405162004c30576102c051516001600160401b038111620029ba576200cfa48161039c6104205160031b0162004fcd565b60206102c0510161039c6104205160031b01600052602060002060005b8381106200cfe457505050506200cfd89062004c12565b9492959091956200cca2565b82516001600160a01b0316818301556020909201916001016200cfc1565b6200d048906001600160a01b036200d01b828562004c79565b51166200d02f6101c0516102c05162004c79565b526200d03e6101c05162004c12565b6101c05262004c12565b6200cf66565b60405162461bcd60e51b8152602060048201526030602482015260008051602062031e6883398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062031aa88339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b602081949293940151602681101562002942576007036200d28857604001916200d11c60c08451015162004c22565b51916200d12e60a08551015162004c22565b51935151916200d146845186511462000ee962031533565b60005b84518110156200d276576001600160a01b03806200d168838862004c79565b51166000526106b8806020526200d18c60ff604060002054161562000ee962031604565b60026200d19a848862004c79565b516200d2046200d1ab868c62004c79565b519162008a978b604051966200d1c1886200299e565b60018852886200d1e88b60208b01946000865260408c0197885260608c01998a5262004c79565b511660005260205262008a8d604060002097511515886200572c565b519101556200d214828762004c79565b516106b954929116600160401b831015620029ba5760018301806106b95583101562004c30576106b960005260008051602062031ca883398151915290920180546001600160a01b0319169092179091556200d2709062004c12565b6200d149565b5094915092506200b768915062004c12565b6020810151602681101562002942576008036200d3765760c060406200d2b2920151015162004c22565b519160005b83518110156200d367576200d361906001600160a01b03806200d2db838862004c79565b51166000526106b890816020526200d304600160ff6040600020541615151462000ee962031563565b806200d311848962004c79565b5116600052816020526200d33560ff60406000205460081c161562000ee9620315cb565b6200d341838862004c79565b5116600052602052604060002061010061ff001982541617905562004c12565b6200d2b7565b50926200b76891925062004c12565b6020810151602681101562002942576009036200d4555760c060406200d3a0920151015162004c22565b519160005b83518110156200d367576200d44f906001600160a01b03806200d3c9838862004c79565b51166000526106b890816020526200d3f2600160ff6040600020541615151462000ee962031563565b806200d3ff848962004c79565b5116600052816020526200d427600160ff60406000205460081c1615151462000ee962031596565b6200d433838862004c79565b5116600052602052604060002061ff0019815416905562004c12565b6200d3a5565b602081015160268110156200294257600a036200d53d57604001906200d49160a06200d48660c08551015162004c22565b519351015162004c22565b51926200d4a6835185511462000ee962031533565b60005b83518110156200d52c576200d526906001600160a01b03806200d4cd838862004c79565b51166000526106b8806020526200d4f5600160ff6040600020541615151462000ee962031563565b6200d501838962004c79565b51916200d50f848962004c79565b511660005260205260026040600020015562004c12565b6200d4a9565b50939092506200b768915062004c12565b60208194939294015160268110156200294257600b036200d61d57604001926200d56c60c08551015162004c22565b51935151916200d584855184511462000ee962031533565b60005b85518110156200d60d576200d6079062000ef06001600160a01b03806200d5af848b62004c79565b51166000526106b8806020526200d5d7600160ff6040600020541615151462000ee962031563565b6200d5e3848962004c79565b51916200d5f1858c62004c79565b5116600052602052600160406000200162005659565b6200d587565b509350916200b768915062004c12565b909192602082015160268110156200294257600c036200d76857606060408301510151926200d64c846202c2eb565b60005b84518110156200d52c5760e06200d66f8260606040880151015162004c79565b510151156200d6f3576200d6976200d6908260606040880151015162004c79565b5162005cf2565b6106ba548060001981011162001de8576200d6b86005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de857600562008efb6200d6ed936000190162005c40565b6200d64f565b6200d7126200d70b8260606040880151015162004c79565b5162005ccf565b6106bb548060001981011162001de8576200d7336005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de857600562008efb6200d6ed936000190162005c00565b929190602081015160268110156200294257600d036200d8af576040019260206200d79860a08651015162004c22565b5194510151916200d7ad85518451146202c9e4565b60005b85518110156200d60d57806200d7cb6200d844928662004c79565b51156200d84a576200d7ee6200d7e2828962004c79565b516106ba54116202ca6d565b6200d81a60ff60056200d80d6200d806858c62004c79565b5162005c40565b50015460081c166202cac5565b6200d83260ff6005620090576200d806858c62004c79565b6005620090736200d806838a62004c79565b6200d7b0565b6200d8666200d85a828962004c79565b516106bb54116202ca6d565b6200d88560ff60056200d80d6200d87e858c62004c79565b5162005c00565b6200d89d60ff6005620090576200d87e858c62004c79565b6005620090736200d87e838a62004c79565b602081015160268110156200294257600e036200d9e5576040019260206200d8dc60a08651015162004c22565b5194510151916200d8f185518451146202c9e4565b60005b85518110156200d60d57806200d90f6200d981928662004c79565b51156200d987576200d9326200d926828962004c79565b516106ba54116202cb87565b6200d95760ff60056200d94a6200d806858c62004c79565b50015460081c166202cbe0565b6200d96f60ff6005620091af6200d806858c62004c79565b600562008efb6200d806838a62004c79565b6200d8f4565b6200d9a36200d997828962004c79565b516106bb54116202cb87565b6200d9bb60ff60056200d94a6200d87e858c62004c79565b6200d9d360ff6005620091af6200d87e858c62004c79565b600562008efb6200d87e838a62004c79565b909192602082015160268110156200294257600f036200db2257606060408301510151926200da14846202c2eb565b60005b84518110156200d52c5760e06200da378260606040880151015162004c79565b510151156200dab4576200da586200d6908260606040880151015162004c79565b6106ba548060001981011162001de8576200da796005916000190162005c40565b5001805461ff0019166101001790556106ba54906000198201821062001de8576005620090736200daae936000190162005c40565b6200da17565b6200dacc6200d70b8260606040880151015162004c79565b6106bb548060001981011162001de8576200daed6005916000190162005c00565b5001805461ff0019166101001790556106bb54906000198201821062001de8576005620090736200daae936000190162005c00565b9291906020810151602681101562002942576010036200dc675760400151926200db5560a0608086015195015162004c22565b51916200db6a855184511462000ee962031533565b60005b85518110156200d60d57806200db886200dbfd928862004c79565b516200db948162002edc565b6200dba0828762004c79565b51906200dbad8162002edc565b6200dbc46200dbbb62031666565b82151562004bdf565b6200dbcf8162002edc565b600181036200dc0357506200dbf36200dbe762031666565b61271083111562004bdf565b6107275562004c12565b6200db6d565b6200dc0e8162002edc565b600281036200dc2257506107285562004c12565b6200dc2d8162002edc565b600381036200dc4157506107295562004c12565b806200dc4f60049262002edc565b146200dc5c575062004c12565b61072a553862009e21565b6020810151602681101562002942576011036200df0a57604001906200dc9860a06200d48660c08551015162004c22565b51936200dca983518651146202c163565b60005b83518110156200dd29576200dd23906200dd036001600160a01b03806200dcd4848962004c79565b51166000526106bd90816020526200dcf76040600020546200685b868d62004c79565b939062000ee9620314e9565b6200dd0f848962004c79565b511660005260205260406000205562004c12565b6200dcac565b509350906200dd3890620311b3565b906106be54936200dd4f620080b684518762006271565b9060009260005b8781106200deca575060005b85518110156200de17576000805b8981106200ddc8575b50156200dd92575b6200dd8c9062004c12565b6200dd62565b936200dd8c906200ddbf906001600160a01b036200ddb1888a62004c79565b511662001a9c828862004c79565b9490506200dd81565b6200ddd38162004e59565b90546001600160a01b0360039290921b1c8116906200ddf3858b62004c79565b5116146200de0c576200de069062004c12565b6200dd70565b50506001386200dd79565b5095509392506200de288262004d95565b8051906001600160401b038211620029ba576020906200de488362004f74565b016106be600052602060002060005b8381106200deac575050505060005b8281106200de7c575050506200b7689062004c12565b6200dea69062000ef06001600160a01b036200de99838662004c79565b5116620019dd8362004e59565b6200de66565b82516001600160a01b0316818301556020909201916001016200de57565b936200defd6200df04916200dedf8762004e59565b905460039190911b1c6001600160a01b031662001a9c828862004c79565b9462004c12565b6200dd56565b6020819492940151602681101562002942576012036200e14e57604001906200df3e60a06200d48660c08551015162004c22565b51936200df4f83518651146202c163565b60005b83518110156200dfa3576200df9d906200dd036001600160a01b03806200df7a848962004c79565b51166000526106bd90816020526200dcf760406000205462007da7868d62004c79565b6200df52565b50935091906200dfb390620311b3565b6106be546200dfc28162004d95565b906000926000915b8083106200e075575050506200dfe08262004d95565b8051906001600160401b038211620029ba576020906200e0008362004f74565b016106be600052602060002060005b8381106200e057575050505060005b8281106200e034575050506200b7689062004c12565b6200e0519062000ef06001600160a01b036200de99838662004c79565b6200e01e565b82516001600160a01b0316818301556020909201916001016200e00f565b91956000959193959760005b85518110156200e13f576200e0968962004e59565b90546001600160a01b0360039290921b1c8116906200e0b6838962004c79565b5116146200e0cf576200e0c99062004c12565b6200e081565b509750956001959391955b806200e10e575b156200e0f9576200e0f29062004c12565b916200dfca565b936200defd6200e0f2916200dedf8762004e59565b506200e11a8162004e59565b60018060a01b0391549060031b1c166000526106bd602052604060002054156200e0e1565b5097969096959391956200e0da565b6020819493940151602681101562002942576013036200e1ef5760408091015101519160005b83518110156200d367576200e18a818562004c79565b51906106bc54600160401b811015620029ba5760018101806106bc5581101562004c30576106bc6000526200e1e99262000ef0916007027f0487500372b3cc67c23af8f14e14f40d94d05acb10821fef30e703b5df87397d016202de6d565b6200e174565b602081949392940151602681101562002942576014036200e72a57604001906200e21e60c08351015162004c22565b51936200e23560a0620077f0818651015162004c22565b51916200e24686518551146202cca5565b6200e25586518451146202cd0b565b60005b86518110156200e34b576200e26e818562004c79565b516200e27b828762004c79565b5190606482101562004c305761039e6200e29b9260031b0154906200606a565b906200e2a8838862004c79565b5191606483101562004c305761039e6200e2c79360031b01556202cdc5565b6200e2d3818562004c79565b516200e2e0828762004c79565b5190606482101562004c30576200e3099161039b906001600160a01b036200b304868d62004c79565b91906200e317828862004c79565b5190606482101562004c30576200e3459362000ef09261039b906001600160a01b036200b359878f62004c79565b6200e258565b50926200e362919250620084c590959495620312cf565b916040516200e3718162002a5e565b6000815260003681376000945b80518610156200b756576200e394868262004c79565b516107e0526200e3a5855162004d95565b966000946200e3b5845162004d95565b6105e05260009460005b88518110156200e486578a896200e3ef6001600160a01b036200e3e3858462004c79565b51166107e0516203110f565b15806200e43f575b6200e410575b50506200e40a9062004c12565b6200e3bf565b986200e4349162001a9c82859c62007f886200e40a9760018060a01b039262004c79565b9790508a896200e3fd565b50505060646107e051101562004c30576001600160a01b036200e463828b62004c79565b511660005261039b6107e05160031b016020528a8960406000205415156200e3f7565b50909895979498969291939660005b88518110156200e5235760646107e051101562004c30576001600160a01b03806200e4c1838c62004c79565b511660005261039b6107e05160031b01602052604060002054156200e4f3575b506200e4ed9062004c12565b6200e495565b819b6200e51b916200e50a6200e4ed948d62004c79565b511662001a9c826105e05162004c79565b9a906200e4e1565b509850969592919093966107e0516064811015806104e05262004c305760031b61039c0154986200e559620080b6898c62006271565b6107005260006103c0526000610820525b6104e05162004c3057610820518a8110156200e633576200e5a06200e5c09160006104e05261039c6107e05160031b0162004e91565b90546105e0516001600160a01b03939260031b9190911c83169062031166565b156200e5e0575b506200e5d66108205162004c12565b610820526200e56a565b60006104e0526200e5ff6108205161039c6107e05160031b0162004e91565b90549060031b1c166200e6196103c0516107005162004c79565b526200e6286103c05162004c12565b6103c052386200e5c7565b50979294959093985095909560005b8281106200e6de575050506104e05162004c305761070051516001600160401b038111620029ba576200e6808161039c6107e05160031b0162004fcd565b6020610700510161039c6107e05160031b01600052602060002060005b8381106200e6c057505050506200e6b49062004c12565b9492959091956200e37e565b82516001600160a01b0316818301556020909201916001016200e69d565b6200e724906001600160a01b036200e6f7828562004c79565b51166200e70b6103c0516107005162004c79565b526200e71a6103c05162004c12565b6103c05262004c12565b6200e642565b926020840151602681101562002942576015036200ed235760408401906200e75760c08351015162004c22565b51906200e76e60a0620077f0818651015162004c22565b51936200e783835185511462000ee962031533565b6200e796835186511462000ee962031533565b60005b83518110156200e7f3576200e7af818662004c79565b5190606482101562004c305761039b6200e7ed9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200e799565b509095919560005b87518110156200e921576200e811818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200e84a60406000205462007da7838962004c79565b906200e857838862004c79565b5191606483101562004c305761039b6200e88f9360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200e89b818662004c79565b51606481101562004c305761039b906001600160a01b036200e8be848c62004c79565b511660005260031b016020526200e8e06040600020546200685b838962004c79565b91906200e8ee828862004c79565b5190606482101562004c30576200e91b9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200e7fb565b50926200e939919294506200bb4e90969596620312cf565b92604051906200e9498262002a97565b6001825260203681840137516001600160a01b03166200e9698262004c22565b526000945b80518610156200b756576200e984868262004c79565b51610680526200e995855162004d95565b966000946200e9a5845162004d95565b6103405260009460005b88518110156200ea76578a896200e9df6001600160a01b036200e9d3858462004c79565b5116610680516203110f565b15806200ea2f575b6200ea00575b50506200e9fa9062004c12565b6200e9af565b986200ea249162001a9c82859c62007f886200e9fa9760018060a01b039262004c79565b9790508a896200e9ed565b505050606461068051101562004c30576001600160a01b036200ea53828b62004c79565b511660005261039b6106805160031b016020528a8960406000205415156200e9e7565b50909895979498969291939660005b88518110156200eb1a57606461068051101562004c30576001600160a01b036200eab0828b62004c79565b511660005261039b6106805160031b01602052604060002054156200eae1575b6200eadb9062004c12565b6200ea85565b996200eadb906200eb11906001600160a01b036200eb008e8d62004c79565b511662001a9c826103405162004c79565b9a90506200ead0565b50985096959291909396610680516064811015806103a05262004c305760031b61039c0154986200eb50620080b6898c62006271565b6102405260006107805260006106c0525b6103a05162004c30576106c0518a8110156200ec2c576200eb976200ebb49160006103a05261039c6106805160031b0162004e91565b90546103405160039290921b1c6001600160a01b03169062031166565b156200ebd3575b6200ebc96106c05162004c12565b6106c0526200eb61565b60006103a0526200ebf26106c05161039c6106805160031b0162004e91565b60018060a01b0391549060031b1c166200ec13610780516102405162004c79565b526200ec226107805162004c12565b610780526200ebbb565b50979294959093985095909560005b8281106200ecd7575050506103a05162004c305761024051516001600160401b038111620029ba576200ec798161039c6106805160031b0162004fcd565b6020610240510161039c6106805160031b01600052602060002060005b8381106200ecb957505050506200ecad9062004c12565b9492959091956200e96e565b82516001600160a01b0316818301556020909201916001016200ec96565b6200ed1d906001600160a01b036200ecf0828562004c79565b51166200ed04610780516102405162004c79565b526200ed136107805162004c12565b6107805262004c12565b6200ec3b565b9091926020810151602681101562002942576016036200edd55760c060406200ed50920151015162004c22565b519160005b83518110156200d367576001600160a01b036200ed73828662004c79565b5161072b54929116600160401b831015620029ba57600183018061072b5583101562004c305761072b60005260008051602062031b6883398151915290920180546001600160a01b0319169092179091556200edcf9062004c12565b6200ed55565b6020810151602681101562002942576017036200ee325760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036200eef05760c060406200ee5c920151015162004c22565b5191600160ff1961072e54161761072e5560005b83518110156200d367576001600160a01b036200ee8e828662004c79565b5161072d54929116600160401b831015620029ba57600183018061072d5583101562004c305761072d60005260008051602062031ac883398151915290920180546001600160a01b0319169092179091556200eeea9062004c12565b6200ee70565b602081949293940151602681101562002942576019036200ef18575b506200b7689062004c12565b602081015160268110156200294257601a036200f08f5760a060406200ef42920151015162004c22565b51906200ef5360038351146202c163565b6200ef5e8262004c22565b516200ef6e62009dba8462004c46565b51926200f053576200b768926001036200f04c576200ef956200eff391610729546200606a565b61072955604051906200efa88262002a26565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004bdf565b6200f0456200f00561072a5462006057565b61072a55604051906200f0188262002a97565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004bdf565b906200ef0c565b506200f045565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b602081015160268110156200294257601b036200f61c57509190610727546200f0bb62009e97620313c0565b61072a546107285411156200f0da6200f0d36203142e565b8262004bdf565b61072954906200f0eb838362005ebb565b50506200f0f762031484565b506000805b606482106200f5cd575b5050906200f1366200f13c93926200f12c6200f121620313c0565b612710861062004bdf565b62000ee96203142e565b62005ebb565b90506200f14862031484565b5060009060005b606481106200f4fa575b50906127106200f16a92046200624f565b90506200f17a6107345462004d95565b906000946000905b60648210156200f4ed578160031b9460ff61039f87015416156200f2d75760009661039a870154156200f2c657600098975b62004c305761039c8701548910156200f2ac576200f1d78961039c890162004e91565b600160a01b6001900391549060031b1c16978860005261039b8801602052604098868a60002054906200f20a9162005ebb565b9a906200f21662031484565b6200f2219162004bdf565b60009a61039a8b01546200f2359162005ebb565b91906200f24162031484565b6200f24c9162004bdf565b826000526106bf602052600020908154906200f268916200606a565b9091556200f27562031484565b6200f2809162004bdf565b6200f28c828962004c79565b526200f2989062004c12565b986200f2a49062004c12565b98976200f1b4565b929095506200f2be9196975062004c12565b90946200f182565b929095506200f2be91965062004c12565b95969392509350505b6200f2eb8262004d95565b9160009160005b8281106200f457575050506106c054916200f312620080b6848462006271565b926000906000905b8082106200f43a57505060005b8381106200f3a45750508251929150506001600160401b038211620029ba576020906200f3548362004f97565b016106c0600052602060002060005b8381106200f38657505050506200b76890600061072955600061072a556200f045565b82516001600160a01b0316818301556020909201916001016200f363565b6000805b8381106200f3f2575b50156200f3ca575b6200f3c49062004c12565b6200f327565b906200f3c4906200f3e9906001600160a01b036200823e858762004c79565b9190506200f3b9565b6001600160a01b03806200f407858862004c79565b5116906200f416838a62004c79565b5116146200f42f576200f4299062004c12565b6200f3a8565b50506001386200f3b1565b90916200824c6200f45091620098248562004e75565b906200f31a565b6000805b8581106200f4a5575b50156200f47d575b6200f4779062004c12565b6200f2f2565b926200f477906200f49c906001600160a01b036200823e878662004c79565b9390506200f46c565b6001600160a01b03806200f4ba858762004c79565b5116906200f4c9838a62004c79565b5116146200f4e2576200f4dc9062004c12565b6200f45b565b50506001386200f464565b939495929150506200f2e0565b90918160039695961b60ff61039f82015416156200f5c15761039a81015461039c8201546000928391825b8184106200f5615750505050620074b66200f558936200f55062000ef0979694620062359462005ebb565b929062005d15565b9493946200f14f565b94929462004c30576200f5ba856200f5b26200f58662000ef09861039c870162004e91565b905460039190911b1c6001600160a01b0316600090815261039b8601602052604081205490966200606a565b979062005edd565b926200f525565b5091909493946200f159565b8160039897981b60ff61039f82015416156200f61257916200a2d4620074b66200f608936200a2c862000ef09661039a6200a2be8762005e5e565b909695966200f0fc565b509695966200f106565b602081015160268110156200294257601c036200f6795760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036200f69d575b506200b768906200f045565b602081015160268110156200294257601e146200f69157602081015160268110156200294257601f036200f72d5760406200f6db9101515162004c22565b519061072c54600160401b811015620029ba57600181018061072c5581101562004c305761072c6000526200b768926200f7269160008051602062031c088339815191520162005659565b906200f691565b6020810151602681101562002942576020036200f751575b506200b768906200f726565b6020810151602681101562002942576021146200f745576020810151602681101562002942576022036200f7d757506200b7689060ff1961072e541661072e5561072d54600061072d55806200f7ab575b505b906200f745565b61072d6000526200f7d09060008051602062031ac88339815191529081019062004ed6565b386200f7a2565b6020810151602681101562002942576023036200f7fb575b506200b768906200f7a4565b6020810151602681101562002942576024146200f7ef576020810151602681101562002942576025146200f7ef579290916020840151602681101562002942576015036200fe375760408401906200f85860c08351015162004c22565b51906200f86f60a0620077f0818651015162004c22565b51936200f884835185511462000ee962031533565b6200f897835186511462000ee962031533565b60005b83518110156200f8f4576200f8b0818662004c79565b5190606482101562004c305761039b6200f8ee9260018060a01b038b511660005260031b0160205262000ef060406000205462007d3b838a62004c79565b6200f89a565b509095919560005b87518110156200fa22576200f912818662004c79565b51606481101562004c305761039b9060018060a01b0386511660005260031b016020526200f94b60406000205462007da7838962004c79565b906200f958838862004c79565b5191606483101562004c305761039b6200f9909360018060a01b0389511660005260031b0160205260406000205562000ee962031637565b6200f99c818662004c79565b51606481101562004c305761039b906001600160a01b036200f9bf848c62004c79565b511660005260031b016020526200f9e16040600020546200685b838962004c79565b91906200f9ef828862004c79565b5190606482101562004c30576200fa1c9361039b62000ef0938d6200bb148760018060a01b039262004c79565b6200f8fc565b50926200fa3a919294506200bb4e90969596620312cf565b92604051906200fa4a8262002a97565b6001825260203681840137516001600160a01b03166200fa6a8262004c22565b526000945b80518610156200fe24576200fa85868262004c79565b51610660526200fa96855162004d95565b966000946200faa6845162004d95565b6108805260009460005b88518110156200fb77578a896200fae06001600160a01b036200fad4858462004c79565b5116610660516203110f565b15806200fb30575b6200fb01575b50506200fafb9062004c12565b6200fab0565b986200fb259162001a9c82859c62007f886200fafb9760018060a01b039262004c79565b9790508a896200faee565b505050606461066051101562004c30576001600160a01b036200fb54828b62004c79565b511660005261039b6106605160031b016020528a8960406000205415156200fae8565b50909895979498969291939660005b88518110156200fc1b57606461066051101562004c30576001600160a01b036200fbb1828b62004c79565b511660005261039b6106605160031b01602052604060002054156200fbe2575b6200fbdc9062004c12565b6200fb86565b996200fbdc906200fc12906001600160a01b036200fc018e8d62004c79565b511662001a9c826108805162004c79565b9a90506200fbd1565b50985096959291909396610660516064811015806106205262004c305760031b61039c0154986200fc51620080b6898c62006271565b6105a0526000610400526000610280525b6106205162004c3057610280518a8110156200fd2d576200fc986200fcb59160006106205261039c6106605160031b0162004e91565b90546108805160039290921b1c6001600160a01b03169062031166565b156200fcd4575b6200fcca6102805162004c12565b610280526200fc62565b6000610620526200fcf36102805161039c6106605160031b0162004e91565b60018060a01b0391549060031b1c166200fd14610400516105a05162004c79565b526200fd236104005162004c12565b610400526200fcbc565b50979294959093985095909560005b8281106200fdd8575050506106205162004c30576105a051516001600160401b038111620029ba576200fd7a8161039c6106605160031b0162004fcd565b60206105a0510161039c6106605160031b01600052602060002060005b8381106200fdba57505050506200fdae9062004c12565b9492959091956200fa6f565b82516001600160a01b0316818301556020909201916001016200fd97565b6200fe1e906001600160a01b036200fdf1828562004c79565b51166200fe05610400516105a05162004c79565b526200fe146104005162004c12565b6104005262004c12565b6200fd3c565b5050939092506200b7689150906200f7ef565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b509190506200fe8482620145d6565b929060068110156200294257600281036200feb45760405162461bcd60e51b81528062004c0e60048201620075e4565b6003810362010e4357506107338054600260ff82166200fed48162002937565b1462010dfe5760ff19166002179055610738549060018201821162001de8576001820161073855610324549092600019929060005b86518110156200ff85576200ff2c846200ff24838a62004c79565b511062030c1a565b8460026200ff466200ff3f848b62004c79565b516202de4d565b500154106200ff61575b6200ff5b9062004c12565b6200ff09565b93506200ff5b60026200ff796200ff3f878a62004c79565b5001549490506200ff50565b5090936000199360005b87518110156200fffc576200ffaa856200ff24838b62004c79565b8560036200ffbd6200ff3f848c62004c79565b500154106200ffd8575b6200ffd29062004c12565b6200ff8f565b94506200ffd260036200fff06200ff3f888b62004c79565b5001549590506200ffc7565b509194600191935062010010875162004d95565b6201001c885162004d95565b62010028895162004d95565b90620100358a5162004d95565b9260405197620100458962002a09565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e08501526000610100850152016000526107366020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b8211620029ba57600184015482600186015580831062010c3f575b5060200190600184016000526020600020916000905b828210620105de57505050506040620100fe9101516002830162005659565b60208301518051906001600160401b038211620029ba576020600384019162010128848462004fcd565b0190600052602060002060005b838110620105c9575050505060408301518051906001600160401b038211620029ba57602060048401916201016b848462004fcd565b0190600052602060002060005b838110620105b4575050505060608301518051906001600160401b038211620029ba5760206005840191620101ae848462004fcd565b0190600052602060002060005b8381106201059f575050505060808301518051906001600160401b038211620029ba5760206006840191620101f1848462004fcd565b0190600052602060002060005b8381106201058a575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029425761010062010256926201025d9560ff8019855416911617835501511515906200573d565b426200606a565b90156201054a576107385460005261073660205280600760406000200155610731556201029b6107385491826000526007604060002001546200606a565b91901562010507576000526107366020528060086040600020015561073255610738546000526009604060002001600260ff1982541617905560005b82518110156201031d578062000ef0620102f662010317938662004c79565b516107385460005261073660205262006c0683600360406000200162004e91565b620102d7565b50906000905b80518210156201050357610738549182600052610736602052620103606201035382600360406000200162004e91565b90549060031b1c6202de4d565b5054936201036e8562004d95565b9460005b818110620104b857505060009260005b8651811015620104865762010398818862004c79565b51946064958681101562004c305760031b60010154620103b9838a62004c79565b51908782101562004c30576006620103d79260031b01549062005ebb565b919015620104435790620103eb916200606a565b959015620104055750620103ff9062004c12565b62010382565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152fd5b8660405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b50945092620104b09262000ef09160005261073660205262006c0683600660406000200162004e91565b909162010323565b620104fd9086600052610736602052620104ea81620104e36201035388600360406000200162004e91565b5062004e91565b90549060031b1c62001a9c828a62004c79565b62010372565b5050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620101fe565b600190602084519401938184015501620101bb565b60019060208451940193818401550162010178565b60019060208451940193818401550162010135565b805180518554602083015190916001600160a01b031690602681101562002942576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010638848462005361565b01906000526020600020906000905b83821062010c1f5750505050602081015180516001600160401b038111620029ba57602060028801926201067c838562030721565b019160005260206000209060005b8160051c811062010be35750601f198116810362010b9e575b5050506040810151805190600160401b8211620029ba57600387015482600389015580831062010b16575b50602001600387016000526020600020906000905b83821062010af557505050506060810151805190600160401b8211620029ba57600487015482600489015580831062010a74575b50602001600487016000526020600020906000905b83821062010a535750505050608081015180516001600160401b038111620029ba576020600588019262010761838562030721565b019160005260206000209060005b8160051c811062010a145750601f1981168103620109c6575b5050506006850160a08201516020815191620107a58385620053ef565b019160005260206000206000925b8284106201096257505050506007850160c08201516020815191620107d98385620053ef565b019160005260206000206000925b828410620108f5575050505060e001518051906001600160401b038211620029ba5762010827826201081d600889015462002b98565b600889016200560f565b602090601f83116001146201087a5792826009936020936001966000926201086e575b5050600019600383901b1c191690851b1760088801555b01940191019092620100df565b0151905038806201084a565b906008870160005260206000209160005b601f1985168110620108dc575083602093600196938793600997601f19811610620108c2575b505050811b01600888015562010861565b015160001960f88460031b161c19169055388080620108b1565b919260206001819286850151815501940192016201088b565b80518051906001600160401b038211620029ba5760209062010918838662004fcd565b0183600052602060002060005b83811062010944575050505060016020819201920193019290620107e7565b82516001600160a01b03168183015560209092019160010162010925565b80518051906001600160401b038211620029ba5760209062010985838662004fcd565b0183600052602060002060005b838110620109b1575050505060016020819201920193019290620107b3565b60019060208451940193818401550162010992565b60009260005b601f19831683038110620109ea57505060051c015538808062010788565b9093602062010a0a6001928488519162010a048362002edc565b6203078b565b95019101620109cc565b6000805b6020811062010a2f5750838201556001016201076f565b9490602062010a496001928885519162010a048362002edc565b9201950162010a18565b600660208262010a6760019451876200576f565b019301910190916201072c565b600681810204810362001de857600683810204830362001de8576004880160005260206000208360060281015b826006028201811062010ab657505062010717565b806000600692556000600182015562010ad2600282016200543e565b6000600382015562010ae760048201620052d3565b600060058201550162010aa1565b600760208262010b0960019451876202de6d565b01930191019091620106e3565b600781810204810362001de857600783810204830362001de8576003880160005260206000208360070281015b826007028201811062010b58575050620106ce565b8062010b6660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010b9060058201620052d3565b600060068201550162010b43565b60009260005b601f1983168303811062010bc257505060051c0155388080620106a3565b9093602062010bd96001928488511515916203078b565b9501910162010ba4565b6000805b6020811062010bfe5750838201556001016201068a565b9490602062010c156001928885511515916203078b565b9201950162010be7565b600160208262010c328394518762005659565b0193019101909162010647565b600981810204810362001de857600983810204830362001de8576001850160005260206000208360090281015b826009028201811062010c81575050620100c9565b6000815562010c936001820162005322565b62010ca86002820180549060008155620306f9565b6003810154600060038301558062010d88575b506004810154600060048301558062010d19575b508062010ce860056009930180549060008155620306f9565b62010cf660068201620053b0565b62010d0460078201620053b0565b62010d1260088201620052d3565b0162010c6c565b600681810204810362001de857600482016000526020600020906006028101905b81811062010d49575062010ccf565b806000600692556000600182015562010d65600282016200543e565b6000600382015562010d7a60048201620052d3565b600060058201550162010d3a565b600781810204810362001de857600382016000526020600020906007028101905b81811062010db8575062010cbb565b8062010dc660079262004f4d565b6000600182015560006002820155600060038201556000600482015562010df060058201620052d3565b600060068201550162010da9565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b6005919293501462010e525750565b9060008061032a54905b818110620137da575b505015620137be575b60005b602083015190815181101562010ec95762000ef06200771662010ea3620076f66020620067ee8662010ec39862004c79565b86516001600160a01b031660009081526103296020526040902062022f40565b62010e71565b505060005b6020830151805182101562010f1657620076f66020620067ee8462010ef39462004c79565b90606482101562004c305762010f1091429061032b015562004c12565b62010ece565b50506000905b602083015180518310156200a592578262010f379162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036201117a576040019062010f7860c08351015162004c22565b519362010f8f60a0620077f0818651015162004c22565b519162010fa086518551146202cca5565b62010faf86518451146202cd0b565b60005b8651811015620111015762010fc8818662004c79565b51606481101562004c3057600160ff600762010fed9360031b0154161515146202cd6d565b62010ff9818562004c79565b5162011006828762004c79565b5190606482101562004c30576006620110259260031b0154906200606a565b9062011032838862004c79565b5191606483101562004c30576006620110509360031b01556202cdc5565b6201105c818562004c79565b5162011069828762004c79565b5190606482101562004c3057620110a9916003906001600160a01b0362011091868d62004c79565b5116600052811b01602052604060002054906200606a565b9190620110b7828862004c79565b5190606482101562004c3057620110fb9362000ef0926003906001600160a01b03620110e4878f62004c79565b5116600052811b016020526040600020556202ce24565b62010fb2565b5094915091620111156201111c91620312cf565b91620311b3565b93604051926201112c8462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b662011157938762004c79565b62011138565b509450926020925062011171915062004c12565b91905062010f1c565b9091926020820151602681101562002942576002036201130b57604080920190815193845191620111b46200b7ab60a08098015162004c22565b5194835187510362007c2557835185510362007bd157835186510362007b7a575060005b8651811015620112f557620111ee818862004c79565b51606481101562004c305760ff60076201120f9260031b015416156202ce7d565b6201121b818862004c79565b51606481101562004c305760031b600701805460ff1916600117905562011243818562004c79565b5162011250828962004c79565b5190606482101562004c305760056201126d9260031b0162005659565b62011279818662004c79565b5162011286828962004c79565b51606481101562004c305760031b60010155620112a4818762004c79565b51620112b1828962004c79565b51606481101562004c305760031b60020155620112cf818862004c79565b5190606482101562004c305760006006620112ef9360031b015562004c12565b620111d8565b5095915093506020925062011171915062004c12565b92919060208101516026811015620029425760030362011338576020919262000ef062011171926202cec9565b602081015160268110156200294257600403620115db576201136260c06040830151015162004c22565b51936201137760c06040840151015162004c46565b51906201139e60a06040620113928282880151015162004c22565b51950151015162004c46565b5193620113b3875184511462000ee962031533565b620113c6875185511462000ee962031533565b620113d9875186511462000ee962031533565b60005b87518110156201144157620113f2818662004c79565b5190606482101562004c30576201143b916003906001600160a01b036201141a848d62004c79565b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b620113dc565b509095919593929360005b8351811015620115985762011462818762004c79565b51606481101562004c30576003906001600160a01b0362011484848862004c79565b5116600052811b01602052620114a560406000205462007da7838862004c79565b90620114b2838962004c79565b5191606483101562004c3057620114f5926003906001600160a01b03620114da878b62004c79565b5116600052811b0160205260406000205562000ee962031637565b62011501818762004c79565b51606481101562004c30576003906001600160a01b0362011523848c62004c79565b5116600052811b01602052620115446040600020546200685b838862004c79565b91905062011553818862004c79565b5191606483101562004c305762011592926003906001600160a01b036201157b858e62004c79565b5116600052811b0160205260406000205562004c12565b6201144c565b5093620115b29192969350620084c562007e9891620312cf565b9260005b83518110156201115d578062000ef0620079b6620115d5938762004c79565b620115b6565b92602084015160268110156200294257600503620117a4576201160660a06040860151015162004c22565b51906201161b60a06040870151015162004c46565b519282518451036200cab85760005b8351811015620116825762011640818562004c79565b5190606482101562004c305760036201167c9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6201162a565b509060005b835181101562011723576201169d818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b01602052620116d460406000205462007da7838862004c79565b9190620116e2828762004c79565b5190606482101562004c30576201171d93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b62011687565b50949250906201173390620312cf565b9060405192620117438462002a97565b6001845260203681860137516001600160a01b0316620117638462004c22565b5260405194620117738662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b66201179e938762004c79565b6201177f565b926020810151602681101562002942576006036201195957604001620117cf60c08251015162004c22565b5193620117e660a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b8651811015620118645762011815818562004c79565b5190606482101562004c30576201185e916003906001600160a01b036201183d848c62004c79565b5116600052811b0160205262000ef060406000205462007d3b838962004c79565b620117ff565b509060005b865181101562011903576201187f818562004c79565b51606481101562004c30576003906001600160a01b03620118a1848b62004c79565b5116600052811b01602052620118c260406000205462007da7838862004c79565b9190620118d0828762004c79565b5190606482101562004c3057620118fd9362000ef0926003906001600160a01b03620114da878f62004c79565b62011869565b509491620119189193506201111590620312cf565b9160405194620119288662002a5e565b60008652600036813760005b83518110156201115d578062000ef0620079b662011953938762004c79565b62011934565b60208101516026811015620029425760070362011a6b57604001926201198460c08551015162004c22565b51916201199660a08651015162004c22565b5194515191620119ae845187511462000ee962031533565b60005b84518110156201115d5762011a659062000ef06001600160a01b0380620119d9848a62004c79565b51166000528660028b62011a5562011a188762011a1081610320978860205262008a3360ff604060002054161562000ee962031604565b519362004c79565b519162008a978d6040519662011a2e886200299e565b60018852886200d1e88c60208b01946000865260408c0197885260608c01998a5262004c79565b5191015562008ab2838962004c79565b620119b1565b60208194939401516026811015620029425760080362011b025760c0604062011a98920151015162004c22565b519160005b835181101562011af05762011aea906001600160a01b038062011ac1838862004c79565b511660005261032090816020526200d304600160ff6040600020541615151462000ee962031563565b62011a9d565b50926020919250620111719062004c12565b60208101516026811015620029425760090362011b845760c0604062011b2c920151015162004c22565b519160005b835181101562011af05762011b7e906001600160a01b038062011b55838862004c79565b511660005261032090816020526200d3f2600160ff6040600020541615151462000ee962031563565b62011b31565b602081015160268110156200294257600a0362011c32576040019062011bb560a06200d48660c08551015162004c22565b519262011bca835185511462000ee962031533565b60005b835181101562011c1f5762011c19906001600160a01b038062011bf1838862004c79565b5116600052610320806020526200d4f5600160ff6040600020541615151462000ee962031563565b62011bcd565b5093620111719193506020925062004c12565b60208194939294015160268110156200294257600b0362011ce5576040019262011c6160c08551015162004c22565b519351519162011c79855184511462000ee962031533565b60005b855181101562011cd25762011ccc9062000ef06001600160a01b038062011ca4848b62004c79565b5116600052610320806020526200d5d7600160ff6040600020541615151462000ee962031563565b62011c7c565b5093509160209150620111719062004c12565b909192602082015160268110156200294257600c0362011e22576060604083015101519262011d14846202c2eb565b60005b845181101562011c1f5760e062011d378260606040880151015162004c79565b5101511562011db45762011d5862008ea78260606040880151015162004c79565b610322548060001981011162001de85762011d796005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005c20565b62011d17565b62011dcc62008f258260606040880151015162004c79565b610322548060001981011162001de85762011ded6005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562008efb62011dae936000190162005be0565b929190602081015160268110156200294257600d0362011f365760400192602062011e5260a08651015162004c22565b51945101519162011e6785518451146202c9e4565b60005b855181101562011cd2578062011e8562011ede928662004c79565b511562011ee45762011e9c6200901d828962004c79565b62011eb460ff60056200d80d6200903e858c62004c79565b62011ecc60ff6005620090576200903e858c62004c79565b6005620090736200903e838a62004c79565b62011e6a565b62011ef4620090ab828962004c79565b62011f0c60ff60056200d80d620090cc858c62004c79565b62011f2460ff600562009057620090cc858c62004c79565b600562009073620090cc838a62004c79565b602081949294015160268110156200294257600e0362011ffd5760400190602062011f6660a08451015162004c22565b51925101519362011f7b83518651146202c9e4565b60005b835181101562011cd2578062011f9962011fa5928862004c79565b5162011fab5762004c12565b62011f7e565b62011fbb62009168828762004c79565b62011fd360ff60056200d94a6200903e858a62004c79565b62011feb60ff6005620091af6200903e858a62004c79565b600562008efb6200903e838862004c79565b90602082949394015160268110156200294257600f036201213b57606060408301510151926201202d846202c2eb565b60005b845181101562011c1f5760e0620120508260606040880151015162004c79565b51015115620120cd576201207162008ea78260606040880151015162004c79565b610322548060001981011162001de857620120926005916000190162005c20565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005c20565b62012030565b620120e562008f258260606040880151015162004c79565b610322548060001981011162001de857620121066005916000190162005be0565b5001805461ff00191661010017905561032254906000198201821062001de857600562009073620120c7936000190162005be0565b90602081949394015160268110156200294257601003620121ac5760400151906201216f60a0608084015193015162004c22565b519362012184835186511462000ee962031533565b60005b835181101562011cd2578062000ef06200935a620121a6938762004c79565b62012187565b6020819492940151602681101562002942576011036201240e5760400190620121e060a06200d48660c08551015162004c22565b5193620121f183518651146202c163565b60005b83518110156201226b57620122659062000ef06001600160a01b03806201221c848962004c79565b5116600052610325806020526201223e6040600020546200685b868d62004c79565b9190926201224d868b62004c79565b511660005260205260406000205562000ee9620314e9565b620121f4565b509350906201227a90620311b3565b90610326549362012291620080b684518762006271565b9060009260005b878110620123f3575060005b85518110156201234b576000805b898110620122fc575b5015620122d4575b620122ce9062004c12565b620122a4565b93620122ce90620122f3906001600160a01b036200ddb1888a62004c79565b949050620122c3565b620123078162004de9565b90546001600160a01b0360039290921b1c81169062012327858b62004c79565b51161462012340576201233a9062004c12565b620122b2565b5050600138620122bb565b5095509392506201235c8262004d95565b8051906001600160401b038211620029ba576020906201237c8362004f2a565b01610326600052602060002060005b838110620123d5575050505060005b828110620123b2575050506201117160209162004c12565b620123cf9062000ef06001600160a01b03620019d0838662004c79565b6201239a565b82516001600160a01b0316818301556020909201916001016201238b565b936200defd62012408916200dedf8762004de9565b62012298565b6020819492940151602681101562002942576012036201265357604001906201244260a06200d48660c08551015162004c22565b51936201245383518651146202c163565b60005b8351811015620124a657620124a09062000ef06001600160a01b03806201247e848962004c79565b5116600052610325806020526201223e60406000205462007da7868d62004c79565b62012456565b5093509190620124b690620311b3565b61032654620124c58162004d95565b906000926000915b8083106201257a57505050620124e38262004d95565b8051906001600160401b038211620029ba57602090620125038362004f2a565b01610326600052602060002060005b8381106201255c575050505060005b82811062012539575050506201117160209162004c12565b620125569062000ef06001600160a01b03620019d0838662004c79565b62012521565b82516001600160a01b03168183015560209092019160010162012512565b91956000959193959760005b855181101562012644576201259b8962004de9565b90546001600160a01b0360039290921b1c811690620125bb838962004c79565b511614620125d457620125ce9062004c12565b62012586565b509750956001959391955b8062012613575b15620125fe57620125f79062004c12565b91620124cd565b936200defd620125f7916200dedf8762004de9565b506201261f8162004de9565b60018060a01b0391549060031b1c1660005261032560205260406000205415620125e6565b509796909695939195620125df565b602081015160268110156200294257601303620126ac5760408091015101519260005b84518110156201269b578062000ef0620098ce62012695938862004c79565b62012676565b509250906201117160209162004c12565b602081015160268110156200294257601403620128555760400190620126d760c08351015162004c22565b5193620126ee60a0620077f0818651015162004c22565b5191620126ff86518551146202cca5565b6201270e86518451146202cd0b565b60005b8651811015620128005762012727818562004c79565b5162012734828762004c79565b5190606482101562004c30576006620127539260031b0154906200606a565b9062012760838862004c79565b5191606483101562004c305760066201277e9360031b01556202cdc5565b6201278a818562004c79565b5162012797828762004c79565b5190606482101562004c3057620127bf916003906001600160a01b0362011091868d62004c79565b9190620127cd828862004c79565b5190606482101562004c3057620127fa9362000ef0926003906001600160a01b03620110e4878f62004c79565b62012711565b5094915091620111156201281491620312cf565b9360405192620128248462002a5e565b60008452600036813760005b83518110156201115d578062000ef0620079b66201284f938762004c79565b62012830565b6020810151602681101562002942576015036201287f576020919262000ef062011171926202cec9565b602081015160268110156200294257601603620128db5760c06040620128a9920151015162004c22565b519260005b84518110156201269b57620128d59062000ef06001600160a01b0362009b14838962004c79565b620128ae565b602081015160268110156200294257601703620129385760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601803620129a35760c0604062012962920151015162004c22565b5192600160ff196103965416176103965560005b84518110156201269b576201299d9062000ef06001600160a01b0362009be0838962004c79565b62012976565b60208193929301516026811015620029425760190362012b185760008091604082910160a08082510151805162012adf575b5050519060e082015191620129f96200685460c060018060a01b0393015162004c22565b511690602083519301915af13d1562012ad6573d9062012a198262002e73565b9162012a29604051938462002ab3565b82523d6000602084013e5b1562012a4857506201117160209162004c12565b62004c0e9062012ab56040519160008051602062031c88833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162012aa4816059946020868601910162002d20565b810103603981018452018262002ab3565b60405162461bcd60e51b815260206004820152918291602483019062002d45565b60609062012a34565b62012aea9062004c22565b515162012af9575b80620129d5565b819250620068549062012b0f9251015162004c22565b51903862012af2565b602081015160268110156200294257601a0362012bce5760a0604062012b42920151015162004c22565b5162012b5260038251146202c163565b62012b5d8162004c22565b519162012b7662012b6e8362004c46565b519262004c57565b51916200f05357602092620111719260010362009e215762012ba062012bae91610391546200606a565b6103915562000ee962031484565b62000ef062012bc06103925462006057565b6103925562000ee9620314be565b602081015160268110156200294257601b0362012ffc5750919062012bfe61038f54620061b062009e97620313c0565b505062012c0a62031484565b506000805b6064811062012fb0575b505062012c256200618c565b62012c336107345462004d95565b906000946000905b606482101562012fa3578160031b9460ff6007870154161562012d8b5760009660028701541562012d7a57600098975b62004c3057600487015489101562012d605762012c8c896004890162004e91565b9054600391821b1c6001600160a01b031660008181529189016020526040918290205491999162012cbf90889062005ebb565b9a9062012ccb62031484565b62012cd69162004bdf565b60009a60028b015462012ce99162005ebb565b919062012cf562031484565b62012d009162004bdf565b826000526103276020526000209081549062012d1c916200606a565b90915562012d2962031484565b62012d349162004bdf565b62012d40828962004c79565b5262012d4c9062004c12565b9862012d589062004c12565b989762012c6b565b9290955062012d729196975062004c12565b909462012c3b565b9290955062012d7291965062004c12565b95969392509350505b62012d9f8262004d95565b9160009160005b82811062012f0d57505050610328549162012dc6620080b6848462006271565b926000906000905b80821062012ef057505060005b83811062012e5a5750508251929150506001600160401b038211620029ba5760209062012e088362004eef565b01610328600052602060002060005b83811062012e3c57505050506201117160209160006103915560006103925562004c12565b82516001600160a01b03168183015560209092019160010162012e17565b6000805b83811062012ea8575b501562012e80575b62012e7a9062004c12565b62012ddb565b9062012e7a9062012e9f906001600160a01b036200823e858762004c79565b91905062012e6f565b6001600160a01b038062012ebd858862004c79565b51169062012ecc838a62004c79565b51161462012ee55762012edf9062004c12565b62012e5e565b505060013862012e67565b90916200824c62012f0691620098248562004dcd565b9062012dce565b6000805b85811062012f5b575b501562012f33575b62012f2d9062004c12565b62012da6565b9262012f2d9062012f52906001600160a01b036200823e878662004c79565b93905062012f22565b6001600160a01b038062012f70858762004c79565b51169062012f7f838a62004c79565b51161462012f985762012f929062004c12565b62012f11565b505060013862012f1a565b9394959291505062012d94565b8060039594951b9060ff6007830154161562012ff2576200a2d4620074b662000ef0946200a2c862012fe99560026200a2be8762005d82565b93929362012c0f565b5093929362012c19565b602081015160268110156200294257601c03620130595760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036201307f575b506201117160209162004c12565b602081015160268110156200294257601e146201307157602081015160268110156200294257601f03620130d057602091620130c86200a3b96040620111719401515162004c22565b915062013071565b602081015160268110156200294257602003620130f6575b5062011171602091620130c8565b602081015160268110156200294257602180910362013117575b50620130e8565b602082015160268110156200a53a57602203620131545750506201117160209160ff196103965416610396556201314d62004fba565b9162013110565b602082015160268110156200a53a576023036201317b575b5050620111716020916201314d565b602082015160268110156200a53a576024146201316c57602082015160268110156200a53a576025146201316c57602082959394920151906026821015620137aa57506015036200fe37576040840190620131db60c08351015162004c22565b5190620131f260a0620077f0818651015162004c22565b519362013207835185511462000ee962031533565b6201321a835186511462000ee962031533565b60005b8351811015620132755762013233818662004c79565b5190606482101562004c305760036201326f9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6201321d565b509095919560005b87518110156201339c5762013293818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b01602052620132ca60406000205462007da7838962004c79565b90620132d7838862004c79565b5191606483101562004c305760036201330d9360018060a01b03895116600052811b0160205260406000205562000ee962031637565b62013319818662004c79565b51606481101562004c30576003906001600160a01b036201333b848c62004c79565b5116600052811b016020526201335c6040600020546200685b838962004c79565b91906201336a828862004c79565b5190606482101562004c30576201339693600362000ef0938d62007e608760018060a01b039262004c79565b6201327d565b5092620133b4919294506200bb4e90969596620312cf565b9260405190620133c48262002a97565b6001825260203681840137516001600160a01b0316620133e48262004c22565b526000945b80518610156201379557620133ff868262004c79565b516102605262013410855162004d95565b9660009462013420845162004d95565b6103205260009460005b8851811015620134ef578a896201345a6001600160a01b036201344e858462004c79565b511661026051620310b9565b1580620134aa575b6201347b575b5050620134759062004c12565b6201342a565b986201349f9162001a9c82859c62007f88620134759760018060a01b039262004c79565b9790508a8962013468565b505050606461026051101562004c30576001600160a01b03620134ce828b62004c79565b5116600052600361026051811b016020528a89604060002054151562013462565b50909895979498969291939660005b88518110156201359157606461026051101562004c30576001600160a01b0362013529828b62004c79565b5116600052600361026051811b016020526040600020541562013558575b620135529062004c12565b620134fe565b99620135529062013588906001600160a01b03620135778e8d62004c79565b511662001a9c826103205162004c79565b9a905062013547565b50985096959291909396610260516064811015806101e05262004c305760031b6004015498620135c6620080b6898c62006271565b6102205260006102a0526000610560525b6101e05162004c3057610560518a811015620136a0576201360c620136299160006101e05260046102605160031b0162004e91565b90546103205160039290921b1c6001600160a01b03169062031166565b1562013648575b6201363e6105605162004c12565b61056052620135d7565b60006101e052620136666105605160046102605160031b0162004e91565b60018060a01b0391549060031b1c16620136876102a0516102205162004c79565b52620136966102a05162004c12565b6102a05262013630565b50979294959093985095909560005b82811062013749575050506101e05162004c305761022051516001600160401b038111620029ba57620136ec8160046102605160031b0162004fcd565b6020610220510160046102605160031b01600052602060002060005b8381106201372b57505050506201371f9062004c12565b949295909195620133e9565b82516001600160a01b03168183015560209092019160010162013708565b6201378f906001600160a01b0362013762828562004c79565b5116620137766102a0516102205162004c79565b52620137856102a05162004c12565b6102a05262004c12565b620136af565b5050936201117191935060209250916201316c565b634e487b7160e01b60005260045260246000fd5b8151620137d4906001600160a01b031662006647565b62010e6e565b620137e58162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462013814576201380e9062004c12565b62010e5c565b5050506001388062010e65565b82516001600160a01b0316600160401b821015620029ba57620019dd8260016201385094016106c25562004e21565b386200b0db565b620138628162004e21565b9054865160039290921b1c6001600160a01b0390811691161462013891576201388b9062004c12565b6200b0ca565b50506001386200b0d3565b82516001600160a01b0316818301556020909201916001016200b000565b82516001600160a01b0316818301556020909201916001016200aeb3565b600191820180546001600160a01b03909216848601559390910192906200ae02565b61072d600052620139219060008051602062031ac883398151915290810190830162004ed6565b386200adc3565b600180826201393982948662013d7f565b019201920191906200ad85565b61072c60005260008051602062031c08833981519152908282015b8183018110620139735750506200ad4a565b8062013981600192620052d3565b0162013961565b600191820180546001600160a01b03909216848601559390910192906200ad1b565b61072b600052620139d19060008051602062031b6883398151915290810190830162004ed6565b386200acdc565b60018091930191825493816106c301550190916200ac7f565b82516001600160a01b0316818301556020909201916001016200ab98565b62013a2a906106c26000528484600020918201910162004ed6565b386200ab88565b82516001600160a01b0316818301556020909201916001016200a9b4565b62013a6a906106b96000528484600020918201910162004ed6565b386200a9a4565b8062013a939160031b600160ff60078301541615151462013a99575062004c12565b6200a8fa565b62013aac6004820161039c830162013f18565b61039f8101600160ff1982541617905580548161039801556001810154610399820155600281015461039a82015562013aed6005820161039d830162013d7f565b61039e60068201549101553862009e21565b600660208262013b1360019451866200576f565b019201920191906200a6f7565b600681810204810362001de857600683810204830362001de8576106ba6000527f4bc0fef855e05548476b22fb01fb9c435488f87351c9bc2f734e5ca5bc2141996006840281015b826006028201811062013b7d5750506200a6e4565b806000600692556000600182015562013b99600282016200543e565b6000600382015562013bae60048201620052d3565b600060058201550162013b68565b600660208262013bd060019451866200576f565b019201920191906200a66c565b8060060290600682040362001de8578260060260068104840362001de8576000906106bb82526020822092830192015b82811062013c1d5750506200a659565b80826006925582600182015562013c37600282016200543e565b82600382015562013c4b60048201620052d3565b8260058201550162013c0d565b608460405162461bcd60e51b8152602060048201526040602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b8152602060048201526047602482015260008051602062031d2883398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b81811462010503578154916001600160401b038311620029ba5762013d41838362004fcd565b60005260206000209060005260206000208154916000925b84841062013d68575050505050565b600180919201938454928185015501929062013d59565b90808214620105035762013d94815462002b98565b906001600160401b038211620029ba57819062013dbe8262013db7865462002b98565b866200560f565b600090601f831160011462013df75760009262013deb5750508160011b916000199060031b1c1916179055565b015490503880620056a2565b81526020808220858352818320935090601f1985169083905b82821062013e4c57505090846001959493921062013e3257505050811b019055565b015460001960f88460031b161c19169055388080620056ef565b849581929585015481556001809101960194019062013e10565b818114620105035781549162013e7d838362005361565b6000526020600020906000526020600020906000905b83821062013ea15750505050565b8062013eb06001928562013d7f565b92810192918101910162013e93565b818114620105035781549162013ed68383620053ef565b6000526020600020906000526020600020906000905b83821062013efa5750505050565b8062013f096001928562013d1b565b92810192918101910162013eec565b81811462010503578154916001600160401b038311620029ba5762013f3e838362004fcd565b60005260206000209060005260206000208154916000925b84841062013f65575050505050565b600191820180546001600160a01b039092168486015593909101929062013f56565b818114620105035781549162013f9e8383620053ef565b6000526020600020906000526020600020906000905b83821062013fc25750505050565b8062013fd16001928562013f18565b92810192918101910162013fb4565b818114620105035781549162013ff78383620054f2565b6000526020600020906000526020600020906000905b8382106201401b5750505050565b80600191840362014038575b60088091019301910190916201400d565b80548455620140658280860190830160ff90620140598282541684620055d4565b5460081c1690620055ee565b6002808201549085015562014081600380830190860162013d1b565b60048085019082018082036201409a575b505062014027565b620140a59162013e66565b620140b7600580830190860162013ebf565b620140c9600680830190860162013f87565b620140db600780830190860162013d7f565b388062014092565b919062005c9657808203620140f6575050565b60ff60058062002b5a946201410f8486541682620055bb565b600185015460018201556201412b600286016002830162013fe0565b6003850154600382015562014147600486016004830162013d7f565b0192016201415982825416846200572c565b6201416b82825460081c16846200573d565b5460101c169062005755565b908082146201050357908154906000915b60648310620141975750505050565b600180919401928354948184015501919262014188565b906103225491600092602082019182515190620141cb8262002b80565b91620141db604051938462002ab3565b808352620141ec601f199162002b80565b01366020840137620142018451518462005ebb565b90156201457e57620142139062004d95565b9186938551511562014574576201422a8162004d95565b975b865151811015620143bc5760008080805b87858c888410620142d25750839450620142669392506201426091508862004c79565b6200350b565b600681101562002942576003146201428b575b50620142859062004c12565b6201422c565b6000905b8a818310620142a057505062014279565b8298620142b7620142cb9394620142c49362004c79565b5162001a9c828b62004c79565b9762004c12565b906201428f565b620142e5620142ec939285925162004c79565b51620149a3565b93909480831180620143a8575b156201435f57505091838562014355575b6006811015620029425760038f911462014335575b50506201432c9062004c12565b9190916201423d565b946201434c9162001a9c826201432c959862004c79565b93908d6201431f565b600095506201430a565b809492959195148062014394575b156201431f576006811015620029425760038f9114620143355750506201432c9062004c12565b50600681101562002942578015156201436d565b5060068610156200294257851515620142f9565b505093505090929350600093845b83518610156201450f57620143ea620143e4878662004c79565b620055ad565b9060068083101562002942576002928303620144155750506201440e909562004c12565b94620143ca565b62014425620143e4898862004c79565b92818410156200294257600180941480620144fb575b1562014450575050506201440e909562004c12565b62014465620143e48a899b9694959b62004c79565b9280841015620029425760048094149283620144cf575b5082620144a4575b505062014498575b506201440e9062004c12565b95506201440e6201448c565b909150881015620144ba57871415388062014484565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620144e65789141591386201447c565b602184634e487b7160e01b6000525260246000fd5b50818310156200294257808314156201443b565b92509290935060068210156200294257600382036201456b575b620145348162004d95565b9360005b82811062014547575050509190565b806201455862014565928462004c79565b5162001a9c828962004c79565b62014538565b50600062014529565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b906103235491600092602082019182515190620145f38262002b80565b9162014603604051938462002ab3565b80835262014614601f199162002b80565b01366020840137620146298451518462005ebb565b90156201457e576201463b9062004d95565b918693855151156201457457620146528162004d95565b975b865151811015620147ca5760008080805b87858c888410620146e05750839450620146889392506201426091508862004c79565b60068110156200294257600314620146ad575b50620146a79062004c12565b62014654565b6000905b8a818310620146c25750506201469b565b8298620142b7620146d99394620142c49362004c79565b90620146b1565b620146f3620146fa939285925162004c79565b5162014a42565b93909480831180620147b6575b156201476d57505091838562014763575b6006811015620029425760038f911462014743575b50506201473a9062004c12565b91909162014665565b946201475a9162001a9c826201473a959862004c79565b93908d6201472d565b6000955062014718565b8094929591951480620147a2575b156201472d576006811015620029425760038f9114620147435750506201473a9062004c12565b50600681101562002942578015156201477b565b506006861015620029425785151562014707565b505093505090929350600093845b8351861015620148ed57620147f2620143e4878662004c79565b90600680831015620029425760029283036201481d57505062014816909562004c12565b94620147d8565b6201482d620143e4898862004c79565b92818410156200294257600380941480620148d9575b15620148585750505062014816909562004c12565b6201486d620143e48a899b9694959b62004c79565b9280841015620029425760058094149283620148c2575b5082620148ac575b5050620148a0575b50620148169062004c12565b95506201481662014894565b909150881015620029425787141538806201488c565b908093508a10156200294257891415913862014884565b508183101562002942578083141562014843565b92509290935060068210156200294257600382036201493c575b620149128162004d95565b9360005b82811062014925575050509190565b806201455862014936928462004c79565b62014916565b50600062014907565b156201494d57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b91929060009081948294620149bd61032254841062014945565b60ff6005620149cc8562005c20565b50015460081c161562014a355782620149e9928592600162014c1c565b620149f5575b50929190565b809450600192935062014a09915062005c20565b50015490600362014a2a60ff62014a208662005c20565b5054169462005c20565b5001549138620149ef565b5050509150915080918190565b9192906000908194829462014a5c61032354841062014945565b60ff600562014a6b8562005be0565b50015460081c161562014a35578262014a879285928362014c1c565b62014a925750929190565b809450600192935062014aa6915062005be0565b50015490600362014a2a60ff62014abd8662005be0565b5054169462005be0565b9062002b5a606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262014b3e815180926020868601910162002d20565b810103604181018552018362002ab3565b606d62002b5a919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262014bc1815180926020605f8701910162002d20565b82016d016103737b2329034b73232bc1d160951b605f82015262014bef825180936020878501910162002d20565b0103604d81018552018362002ab3565b805482101562004c305760005260206000209060031b0190600090565b93929190841562014fad5762014c4661032254841062000ee962014c408662005028565b62014ac7565b62014c7d600262014c578562005c20565b500154851062000ee962014c6b8662005028565b62014c768862005028565b9062014b4f565b841562014f8e5762014cad600162014ca486600262014c9c8862005c20565b500162014bff565b50015460ff1690565b945b62014cba8662002edc565b8562014ccb57505050505050600090565b62014cd68662002edc565b60039580870362014ced5750505050505050600190565b62014cf88162002edc565b6004810362014d0d5750505050505050600090565b62014d188162002edc565b6001810362014d2e5750620031f8955062014fdd565b91959392949062014d3f8362002edc565b600280931462014d56575b50505050505050600090565b801562014f705762014d80600162014d74848662014c9c8962005c20565b50015460081c60ff1690565b935b811562014f54578562014d9b848662014c9c8562005c20565b500154965b62014dab8862004d95565b9860005b89811062014ec95750505050505062014dc88262002937565b6001820362014e2b57505050906001916000915b81831062014dea5750505090565b9091928062014e08575b62014e00909362004c12565b919062014ddc565b5062014e0062014e2362014e1d858462004c79565b51151590565b905062014df4565b62014e368262002937565b810362014e905750509060009182915b81831062014e545750505090565b909192801562014e73575b62014e6b909362004c12565b919062014e46565b5062014e6b62014e8862014e1d858462004c79565b905062014e5f565b90915062014e9e8162002937565b1462014eb257503880808080808062014d4a565b62014ec562014e1d620031f89262004c22565b1590565b808b62014f12828c8a8c8a8c1562014f335762014f08949262014efe949262014c9c62014ef69362005c20565b500162004e91565b90549060031b1c90565b8787878b62014c1c565b62014f2662014f2d9462000ef09362004c79565b9015159052565b62014daf565b62014f4e949262014efe949262014c9c62014ef69362005be0565b62014f08565b8562014f66848662014c9c8562005be0565b5001549662014da0565b62014f87600162014d74848662014c9c8962005be0565b9362014d82565b62014fa6600162014ca486600262014c9c8862005be0565b9462014caf565b62014fc661032354841062000ee962014c408662005028565b62014fd7600262014c578562005be0565b62014c7d565b93926004620150279186600014620151f557600262015002878262014c9c8562005c20565b500154955b8715620151e457600262014c9c6201501f9362005c20565b5001620035d2565b916032841115620151d857603384101580620151cc575b620151bf57609784101580620151b3575b620151a65760d38410158062015199575b6201518d5761012d8410158062015181575b62015174576101918410158062015167575b6201515a576101af841015806201514d575b62015140576101cd8410158062015133575b62015126576101f58410158062015119575b6201510c5761025984101580620150ff575b620150f157506102bd831015620150e65750505050600090565b620031f89362022e31565b9050620031f893506202a144565b506102bc841115620150cc565b50620031f893506201d479565b50610258841115620150ba565b50620031f893506202aaa8565b506101f4841115620150a8565b50620031f893506202b50b565b506101cc84111562015096565b50620031f89350620225a0565b506101ae84111562015084565b50620031f89350620273b8565b50610190841062015072565b50620031f89362015212565b5061012c84111562015060565b50620031f8935062022c1c565b5060b48411156201504f565b5050620031f8926201e0d9565b5060958411156201503e565b50620031f893620243bf565b600262014c9c6201501f9362005be0565b600262015208878262014c9c8562005be0565b5001549562015007565b9260d38114620157e15760d48114620157d45760d58114620157c75760d68114620157ba5760d78114620157ad5760d88114620157a05760d98114620157945760da8114620157875760db81146201577a5760dc81146201576e5760dd81146201575f5760de8114620157505760df8114620157435760e08114620157365760e181146201572a5760e281146201571d5760e38114620157105760e48114620157045760e58114620156f55760e68114620156e65760e78114620156d95760e88114620156cc5760e98114620156bf5760ea8114620156b25760eb8114620156a55760ec8114620156985760ed81146201568b5760ee81146201567e5760ef8114620156715760f08114620156645760f18114620156575760f281146201564a5760f381146201563d5760f48114620156305760f58114620156235760f68114620156165760f78114620156095760f88114620155fc5760f98114620155f05760fa8114620155e45760fb8114620155d85760fc8114620155cc5760fd8114620155c05760fe8114620155b45760ff8114620155a85761010081146201559c5761010181146201559057610102811462015584576101038114620155785761010481146201556c5761010581146201556057610106811462015554576101078114620155485761010881146201553c576101098114620155305761010a8114620155245761010b8114620155185761010c81146201550c5761010d8114620155005761010e8114620154f45761010f8114620154e8576101108114620154dc576101118114620154d0576101128114620154c4576101138114620154b8576101148114620154ac576101158114620154a057610116146201549557505050600090565b620031f8926201cb32565b50620031f8926201c90b565b50620031f8926201c6e4565b50620031f8926201c3e3565b50620031f8926201c1c4565b50620031f8926201bfa5565b50620031f8926201bd73565b50620031f8926201bbaa565b50620031f8926201b9e1565b50620031f8926201b7a9565b50620031f8926201b5e2565b50620031f8926201b2b7565b50620031f8926201b085565b50620031f8926201aebc565b50620031f8926201acf3565b50620031f8926201aae5565b50620031f8926201a8ad565b50620031f8926201a6e6565b50620031f8926201a3b4565b50620031f8926201a154565b50620031f89262019f83565b50620031f89262019da2565b50620031f89262019bdb565b50620031f89262019985565b50620031f892620197bc565b50620031f892620195f3565b50620031f89262019312565b50620031f89262019012565b50620031f89262018d25565b50620031f89262018a25565b50620031f89250620188a0565b50620031f892506201875b565b50620031f89250620185e9565b50620031f89250620184a4565b50620031f892506201835f565b50620031f892506201821b565b50620031f89250620180a6565b50620031f8925062017f62565b50620031f8925062017e1e565b50620031f8925062017cdd565b50620031f8925062017b9a565b50620031f8925062017a59565b50620031f8925062017910565b50620031f89250620177cc565b50620031f8925062017688565b50620031f8925062017513565b50620031f8925062017375565b50620031f8925062017232565b509050620031f89150620171d7565b509050620031f891506201717a565b50620031f89262016f3c565b50620031f8925062016dad565b50620031f8925062016c5e565b50620031f89262016a47565b50620031f892506201689f565b50620031f8925062016752565b509050620031f89150620166f7565b509050620031f891506201668a565b50620031f8926201643e565b50620031f89250620162af565b50620031f892506201615a565b50620031f89262015f2c565b50620031f8925062015d74565b50620031f8925062015c18565b50620031f8925062015b17565b50620031f89250620159ea565b50620031f89250620158e9565b50620031f8925090602001906001825151036201589057600162015806835162004c22565b515103620158365762015819906201ce37565b91901562006640576200685462015831915162004c22565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001825151036201599157600162015907835162004c22565b51510362015937576201591a906201ce37565b91901562006640576200685462015932915162004c22565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015abe57600262015a08835162004c22565b51510362015a625762015a1b906201ce37565b9015620066405762015a3262006854835162004c22565b51811015918262015a4257505090565b62015a5c91925062015a55905162004c22565b5162004c46565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362015bbf57600162015b35835162004c22565b51510362015b655762015b48906201ce37565b91901562006640576200685462015b60915162004c22565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90604001600191828251510362015d1a578262015c36835162004c22565b51510362015cc05762015c49906201d1aa565b156200663857829160009182945b62015c65575b505050905090565b805185101562015cba576001600160a01b038062015c84878462004c79565b51169062015c9762006854855162004c22565b51160362015cb25762015cab849562004c12565b9462015c57565b505091505090565b62015c5d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362015ed2578262015d92835162004c22565b51511062015e785762015da5906201d1aa565b156200663857600091835b62015dbc575b50505090565b815183101562015e7257600080855b62015df4575b501562015deb5762015de4849362004c12565b9262015db0565b50505050600090565b62015e058396949295965162004c22565b515181101562015e67576001600160a01b038062015e24888562004c79565b51169062015e388362007494875162004c22565b51161462015e5a579062015e4e84939262004c12565b90939594919262015dcb565b5091809493503862015dd1565b949390929462015dd1565b62015db6565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016100578462015f4e845162004c22565b515103620160a65762015f61906201d1aa565b1562015fff5784931562016016576000935b62015f7f575050505090565b805184101562005131576001600160a01b038062015f9e868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262015fc9888662004c79565b51166000528452600020015462015fe562006854855162004c22565b510362015fff5762015ff8859462004c12565b9362015f73565b5050505050600090565b5050505050505050600090565b6000935b62016026575050505090565b805184101562005131576001600160a01b038062016045868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016070888662004c79565b5116600052845260002001546201608c62006854855162004c22565b510362015fff576201609f859462004c12565b936201601a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016255578262016178835162004c22565b515103620161fb576201618b906201d1aa565b919091156200663857600091835b620161a75750505050600090565b8051831015620161f55783926001600160a01b0380620161c8838562004c79565b511690620161db62006854865162004c22565b511614620050f757620161ee9062004c12565b9262016199565b62015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620163e45782620162cd835162004c22565b5151106201638a57620162e0906201d1aa565b15620066385782916000935b620162fa5750505050600090565b8151841015620161f5576000835b62016322575b506201631b839462004c12565b93620162ec565b93929162016331825162004c22565b515185101562016381576001600160a01b038062016350868462004c79565b511690620163648762007494865162004c22565b51161462015cb2576201637983949562004c12565b909262016308565b9192936201630e565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016630578462016460845162004c22565b515103620165d65762016473906201d1aa565b9190911562015fff5784931562016534576000935b62016497575050505050600090565b81518410156201652e5784936001600160a01b039081620164b9828662004c79565b511660005261032080845260409060ff826000205416620164ea575b5050620164e3915062004c12565b9362016488565b8293620164fa6002948862004c79565b5116600052845260002001546201651662006854865162004c22565b51146201652657803880620164d5565b505050505090565b62015fff565b6000935b62016547575050505050600090565b81518410156201652e5784936001600160a01b03908162016569828662004c79565b51166000526106b880845260409060ff8260002054166201659a575b505062016593915062004c12565b9362016538565b8293620165aa6002948862004c79565b511660005284526000200154620165c662006854865162004c22565b5114620165265780388062016585565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62016695816201d1aa565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620166ca838762004c79565b51169083511603620166e757620166e19062004c12565b620166ab565b5050905090565b50505050600190565b62016702816201d1aa565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062016735838662004c79565b5116908351161462006625576201674c9062004c12565b62016716565b90604001600191828251510362016845578262016770835162004c22565b515103620167eb5762016783906201d233565b156200663857829160009182945b6201679e57505050905090565b805185101562015cba576001600160a01b0380620167bd878462004c79565b511690620167d062006854855162004c22565b51160362015cb257620167e4849562004c12565b9462016791565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906040016001918282515103620169ed5782620168bd835162004c22565b5151106201699357620168d0906201d233565b156200663857600091835b620168e65750505090565b815183101562015e7257600080855b62016915575b501562015deb576201690e849362004c12565b92620168db565b620169268396949295965162004c22565b515181101562016988576001600160a01b038062016945888562004c79565b511690620169598362007494875162004c22565b5116146201697b57906201696f84939262004c12565b909395949192620168f5565b50918094935038620168fb565b9493909294620168fb565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362016c04578462016a69845162004c22565b51510362016baa5762016a7c906201d233565b1562015fff5784931562016b1a576000935b62016a9a575050505090565b805184101562005131576001600160a01b038062016ab9868462004c79565b511660005261032080845260409060ff82600020541615620160095760029262016ae4888662004c79565b51166000528452600020015462016b0062006854855162004c22565b510362015fff5762016b13859462004c12565b9362016a8e565b6000935b62016b2a575050505090565b805184101562005131576001600160a01b038062016b49868462004c79565b51166000526106b880845260409060ff82600020541615620160095760029262016b74888662004c79565b51166000528452600020015462016b9062006854855162004c22565b510362015fff5762016ba3859462004c12565b9362016b1e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016d53578262016c7c835162004c22565b51510362016cf95762016c8f906201d233565b919091156200663857600091835b62016cab5750505050600090565b8051831015620161f55783926001600160a01b038062016ccc838562004c79565b51169062016cdf62006854865162004c22565b511614620050f75762016cf29062004c12565b9262016c9d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90604001600191828251510362016ee2578262016dcb835162004c22565b51511062016e885762016dde906201d233565b15620066385782916000935b62016df85750505050600090565b8151841015620161f5576000835b62016e20575b5062016e19839462004c12565b9362016dea565b93929162016e2f825162004c22565b515185101562016e7f576001600160a01b038062016e4e868462004c79565b51169062016e628762007494865162004c22565b51161462015cb25762016e7783949562004c12565b909262016e06565b91929362016e0c565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362017120578462016f5e845162004c22565b515103620170c65762016f71906201d233565b9190911562015fff5784931562017024576000935b62016f95575050505050600090565b81518410156201652e5784936001600160a01b03908162016fb7828662004c79565b511660005261032080845260409060ff82600020541662016fe8575b505062016fe1915062004c12565b9362016f86565b829362016ff86002948862004c79565b5116600052845260002001546201701462006854865162004c22565b5114620165265780388062016fd3565b6000935b62017037575050505050600090565b81518410156201652e5784936001600160a01b03908162017059828662004c79565b51166000526106b880845260409060ff8260002054166201708a575b505062017083915062004c12565b9362017028565b82936201709a6002948862004c79565b511660005284526000200154620170b662006854865162004c22565b5114620165265780388062017075565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b62017185816201d233565b9190911562006640578151156200664057600090815b8351811015620166ee576001600160a01b0380620171ba838762004c79565b51169083511603620166e757620171d19062004c12565b6201719b565b620171e2816201d233565b919091156200664057815115620066405760005b825181101562006638576001600160a01b038062017215838662004c79565b5116908351161462006625576201722c9062004c12565b620171f6565b9060200160019182825151036201731b578262017250835162004c22565b515103620172c15762017263906201d26c565b9050156200663857829160009182945b6201728057505050905090565b805185101562015cba5762017296858262004c79565b51620172a762006854845162004c22565b510362015cb257620172ba849562004c12565b9462017273565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620174b9578262017393835162004c22565b5151106201745f57620173a6906201d26c565b9050156200663857600091835b620173be5750505090565b815183101562015e7257600080855b620173ed575b501562015deb57620173e6849362004c12565b92620173b3565b620173fe8396949295965162004c22565b5151811015620174545762017414868362004c79565b51620174268262007494865162004c22565b51146201744757906201743b84939262004c12565b909395949192620173cd565b50918094935038620173d3565b9493909294620173d3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201762e57600262017532835162004c22565b515103620175d45762017545906201d26c565b9050919091156200663857829160009182945b6201756557505050905090565b815185101562015cba576201757b858362004c79565b516201758c62006854835162004c22565b51118015620175ae575b62015cb257620175a7849562004c12565b9462017558565b50620175bb858362004c79565b51620175cc62015a55835162004c22565b511062017596565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620177725782620176a6835162004c22565b5151036201771857620176b9906201d26c565b9050156200663857829160009182945b620176d657505050905090565b805185101562015cba57620176ec858262004c79565b51620176fd62006854845162004c22565b51101562015cb25762017711849562004c12565b94620176c9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620178b65782620177ea835162004c22565b5151036201785c57620177fd906201d26c565b9050156200663857829160009182945b6201781a57505050905090565b805185101562015cba5762017830858262004c79565b516201784162006854845162004c22565b51111562015cb25762017855849562004c12565b946201780d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620179ff57826201792e835162004c22565b515103620179a55762017941906201d26c565b909391501562006638578060009384925b6201796b575b5050506200685462015831915162004c22565b90919381518510156201799e576200defd62017995916201798d878562004c79565b519062006271565b91908162017952565b9362017958565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017b40578262017a77835162004c22565b51510362017ae65762017a8a906201d26c565b909391501562006638578060009384925b62017ab4575b5050506200685462015932915162004c22565b909193815185101562017adf576200defd62017ad6916201798d878562004c79565b91908162017a9b565b9362017aa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200190600190818351510362017c8357600262017bba845162004c22565b51510362017c295762017bcd906201d26c565b909150156200663857906000918183925b62017bf7575b50505062015a3262006854835162004c22565b909192825184101562017c2257620064f062017c19916201798d868662004c79565b91908062017bde565b9262017be4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017dc4578262017cfb835162004c22565b51510362017d6a5762017d0e906201d26c565b909391501562006638578060009384925b62017d38575b5050506200685462015b60915162004c22565b909193815185101562017d63576200defd62017d5a916201798d878562004c79565b91908162017d1f565b9362017d25565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362017f08578262017e3c835162004c22565b51510362017eae5762017e4f906201d26c565b90929150156200663857600091835b62017e6c5750505050600090565b8051831015620161f5578262017e8485948362004c79565b5162017e9562006854855162004c22565b5110620050f75762017ea79062004c12565b9262017e5e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201804c578262017f80835162004c22565b51510362017ff25762017f93906201d26c565b9291921562015deb57600092845b62017fb0575050505050600090565b80518410156201652e578362017fc886958462004c79565b5162017fd962006854865162004c22565b5111620165265762017feb9062004c12565b9362017fa1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620181c1576002620180c5835162004c22565b5151036201816757620180d8906201d26c565b929091921562015deb57600092845b620180f6575050505050600090565b80518410156201652e57836201810e86958562004c79565b516201811f62006854855162004c22565b5111158062018140575b6201652657620181399062004c12565b93620180e7565b506201814d818562004c79565b516201815e62015a55855162004c22565b51101562018129565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018305578262018239835162004c22565b515103620182ab576201824c906201d26c565b9291921562015deb57600092845b62018269575050505050600090565b80518410156201652e57836201828186958462004c79565b516201829262006854865162004c22565b51146201652657620182a49062004c12565b936201825a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201844a57826201837d835162004c22565b515103620183f05762018390906201d26c565b9050919091156200663857600091835b620183ae5750505050600090565b8051831015620161f55782620183c685948362004c79565b51620183d762006854855162004c22565b5110620050f757620183e99062004c12565b92620183a0565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201858f5782620184c2835162004c22565b5151036201853557620184d5906201d26c565b9050919091156200663857600091835b620184f35750505050600090565b8051831015620161f557826201850b85948362004c79565b516201851c62006854855162004c22565b5111620050f7576201852e9062004c12565b92620184e5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036201870157600262018608835162004c22565b515103620186a7576201861b906201d26c565b9050156200663857600091835b620186365750505050600090565b8151831015620161f557826201864e85948462004c79565b516201865f62006854845162004c22565b5111158062018680575b620050f757620186799062004c12565b9262018628565b506201868d818462004c79565b516201869e62015a55845162004c22565b51101562018669565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001600191828251510362018846578262018779835162004c22565b515103620187ec576201878c906201d26c565b9050919091156200663857600091835b620187aa5750505050600090565b8051831015620161f55782620187c285948362004c79565b51620187d362006854855162004c22565b5114620050f757620187e59062004c12565b926201879c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020016001918282515103620189cb5782620188be835162004c22565b5151106201897157620188d1906201d26c565b905015620066385782916000935b620188ed5750505050600090565b8151841015620161f5576000835b62018915575b506201890e839462004c12565b93620188df565b93929162018924825162004c22565b515185101562018968576201893a848262004c79565b516201894c8662007494855162004c22565b511462015cb2576201896083949562004c12565b9092620188fb565b91929362018901565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362018ccb578462018a47845162004c22565b51511062018c715762018a5a906201d233565b9290921562015fff5784931562018b6e576000935b62018a7b575050505090565b825184101562005131576001600160a01b038062018a9a868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b62018ae0575b505050501562015fff5762018ad9859462004c12565b9362018a6f565b9092989591939662018af3865162004c22565b51518a101562018b62578162018b0a8a8362004c79565b5116600052838352600285600020015462018b2b8b62007494895162004c22565b511462018b4f5762018b408798999a62004c12565b93919097999894929662018abd565b9650509396505050843880808062018ac3565b96938296995062018ac3565b6000935b62018b7e575050505090565b825184101562005131576001600160a01b038062018b9d868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b62018be3575b505050501562015fff5762018bdc859462004c12565b9362018b72565b9092989591939662018bf6865162004c22565b51518a101562018c65578162018c0d8a8362004c79565b5116600052838352600285600020015462018c2e8b62007494895162004c22565b511462018c525762018c438798999a62004c12565b93919097999894929662018bc0565b9650509396505050843880808062018bc6565b96938296995062018bc6565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362018fb8578362018d44835162004c22565b51511062018f5e5762018d57906201d233565b9490941562015fff5783921562018e695793926000905b62018d7d575050505050600090565b83518110156201652e576001600160a01b038062018d9c838762004c79565b511660005261032080875260409160ff83600020541662018dd2575b5050509362018dc983949562004c12565b90949362018d6e565b6000929190865b62018de6575b5062018db8565b90929791939662018df8865162004c22565b515189101562018e5e578162018e0f898362004c79565b5116600052838352600285600020015462018e308a62007494895162004c22565b511462018e525762018e4487989962004c12565b939190979894929862018dd9565b50505050505091505090565b969382985062018ddf565b93926000905b62018e7e575050505050600090565b83518110156201652e576001600160a01b038062018e9d838762004c79565b51166000526106b880875260409160ff83600020541662018ed3575b5050509362018eca83949562004c12565b90949362018e6f565b6000929190865b62018ee7575b5062018eb9565b90929791939662018ef9865162004c22565b515189101562018f53578162018f10898362004c79565b5116600052838352600285600020015462018f318a62007494895162004c22565b511462018e525762018f4587989962004c12565b939190979894929862018eda565b969382985062018ee0565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101906001938483515103620192b8578462019034845162004c22565b5151106201925e5762019047906201d1aa565b9290921562015fff578493156201915b576000935b62019068575050505090565b825184101562005131576001600160a01b038062019087868662004c79565b5116600052610320808452604060ff816000205416156201600957879160009384935b620190cd575b505050501562015fff57620190c6859462004c12565b936201905c565b90929895919396620190e0865162004c22565b51518a10156201914f5781620190f78a8362004c79565b51166000528383526002856000200154620191188b62007494895162004c22565b51146201913c576201912d8798999a62004c12565b939190979998949296620190aa565b96505093965050508438808080620190b0565b969382969950620190b0565b6000935b6201916b575050505090565b825184101562005131576001600160a01b03806201918a868662004c79565b51166000526106b8808452604060ff816000205416156201600957879160009384935b620191d0575b505050501562015fff57620191c9859462004c12565b936201915f565b90929895919396620191e3865162004c22565b51518a1015620192525781620191fa8a8362004c79565b511660005283835260028560002001546201921b8b62007494895162004c22565b51146201923f57620192308798999a62004c12565b939190979998949296620191ad565b96505093965050508438808080620191b3565b969382969950620191b3565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020809301600192838251510362019599578362019331835162004c22565b5151106201953f5762019344906201d1aa565b9490941562015fff578392156201944a5793926000905b6201936a575050505050600090565b83518110156201652e576001600160a01b038062019389838762004c79565b511660005261032080875260409160ff836000205416620193bf575b50505093620193b683949562004c12565b9094936201935b565b6000929190865b620193d3575b50620193a5565b909297919396620193e5865162004c22565b51518910156201943f5781620193fc898362004c79565b511660005283835260028560002001546201941d8a62007494895162004c22565b511462018e52576201943187989962004c12565b9391909798949298620193c6565b9693829850620193cc565b93926000905b6201945f575050505050600090565b83518110156201652e576001600160a01b03806201947e838762004c79565b51166000526106b880875260409160ff836000205416620194b4575b50505093620194ab83949562004c12565b90949362019450565b6000929190865b620194c8575b506201949a565b909297919396620194da865162004c22565b5151891015620195345781620194f1898362004c79565b51166000528383526002856000200154620195128a62007494895162004c22565b511462018e52576201952687989962004c12565b9391909798949298620194bb565b9693829850620194c1565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b30604482015260008051602062031da88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019762578462019615845162004c22565b515103620197085762019628906201d1aa565b1562015fff578493156201969f576000935b62019646575050505090565b805184101562005131576001600160a01b0362019664858362004c79565b511660005261032582526040600020546201968462006854855162004c22565b51101562015fff5762019698859462004c12565b936201963a565b6000935b620196af575050505090565b805184101562005131576001600160a01b03620196cd858362004c79565b51166000526106bd8252604060002054620196ed62006854855162004c22565b51101562015fff5762019701859462004c12565b93620196a3565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201992b5784620197de845162004c22565b515103620198d157620197f1906201d1aa565b1562015fff5784931562019868576000935b6201980f575050505090565b805184101562005131576001600160a01b036201982d858362004c79565b511660005261032582526040600020546201984d62006854855162004c22565b51111562015fff5762019861859462004c12565b9362019803565b6000935b62019878575050505090565b805184101562005131576001600160a01b0362019896858362004c79565b51166000526106bd8252604060002054620198b662006854855162004c22565b51111562015fff57620198ca859462004c12565b936201986c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90916020809101600193848251510362019b81576002620199a7835162004c22565b51510362019b2757620199ba906201d1aa565b9290921562015fff5784931562019a79576000935b620199db575050505090565b825184101562005131576001600160a01b0380620199fa868662004c79565b5116600052610325808352604090816000205462019a1d62006854875162004c22565b511192831562019a43575b50505062015fff5762019a3c859462004c12565b93620199cf565b9091925062019a53878762004c79565b511660005282526000205462019a6e62015a55845162004c22565b511038808062019a28565b6000935b62019a89575050505090565b825184101562005131576001600160a01b038062019aa8868662004c79565b51166000526106bd808352604090816000205462019acb62006854875162004c22565b511192831562019af1575b50505062015fff5762019aea859462004c12565b9362019a7d565b9091925062019b01878762004c79565b511660005282526000205462019b1c62015a55845162004c22565b511038808062019ad6565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019d48578462019bfd845162004c22565b51510362019cee5762019c10906201d1aa565b1562015fff5784931562019c86576000935b62019c2e575050505090565b805184101562005131576001600160a01b0362019c4c858362004c79565b5116600052610325825260406000205462019c6c62006854855162004c22565b510362015fff5762019c7f859462004c12565b9362019c22565b6000935b62019c96575050505090565b805184101562005131576001600160a01b0362019cb4858362004c79565b51166000526106bd825260406000205462019cd462006854855162004c22565b510362015fff5762019ce7859462004c12565b9362019c8a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910190600193848351510362019f29578462019dc4845162004c22565b51510362019ecf5762019dd7906201d1aa565b1562015fff5784931562019e625760009182945b62019dfc575b505050505050600090565b815185101562019e5c5785946001600160a01b0362019e1c828562004c79565b511684526103258252604084205462019e3a62006854875162004c22565b511062019e535762019e4c9062004c12565b9462019deb565b50505050505090565b62019df1565b60009182945b62019e7857505050505050600090565b815185101562019e5c5785946001600160a01b0362019e98828562004c79565b511684526106bd8252604084205462019eb662006854875162004c22565b511062019e535762019ec89062004c12565b9462019e68565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909160208091019060019384835151036201a0fa578462019fa5845162004c22565b5151036201a0a05762019fb8906201d1aa565b1562015fff578493156201a0335760009182945b62019fdc57505050505050600090565b815185101562019e5c5785946001600160a01b0362019ffc828562004c79565b51168452610325825260408420546201a01a62006854875162004c22565b511162019e53576201a02c9062004c12565b9462019fcc565b60009182945b6201a04957505050505050600090565b815185101562019e5c5785946001600160a01b036201a069828562004c79565b511684526106bd825260408420546201a08762006854875162004c22565b511162019e53576201a0999062004c12565b946201a039565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9091602080910160019384825151036201a35a5760026201a176835162004c22565b5151036201a300576201a189906201d1aa565b9190911562015fff578493156201a24d576000935b6201a1ad575050505050600090565b81518410156201652e5784936001600160a01b03806201a1ce838662004c79565b511660005261032580865260409081600020546201a1f162006854875162004c22565b51111592836201a216575b50505062016526576201a20f9062004c12565b936201a19e565b909192506201a226848762004c79565b51166000528552600020546201a24162015a55845162004c22565b5110153880806201a1fc565b6000935b6201a260575050505050600090565b81518410156201652e5784936001600160a01b03806201a281838662004c79565b51166000526106bd80865260409081600020546201a2a462006854875162004c22565b51111592836201a2c9575b50505062016526576201a2c29062004c12565b936201a251565b909192506201a2d9848762004c79565b51166000528552600020546201a2f462015a55845162004c22565b5110153880806201a2af565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201a53157836201a3d3845162004c22565b5151036201a4d757156201a45c576201a3ec906201d1aa565b156200663857829160009182945b6201a40757505050905090565b805185101562015cba576201a4316001600160a01b036201a429878462004c79565b51166201a5e7565b6201a44162006854845162004c22565b51101562015cb2576201a455849562004c12565b946201a3fa565b6201a467906201d1aa565b156200663857829160009182945b6201a48257505050905090565b805185101562015cba576201a4ac6001600160a01b036201a4a4878462004c79565b51166201a58b565b6201a4bc62006854845162004c22565b51101562015cb2576201a4d0849562004c12565b946201a475565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201a59f57505090565b90916200824c6201a5e0916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b9062006271565b906201a591565b60009081905b606482106201a5fb57505090565b90916200824c6201a633916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a5ed565b600091906201a694576000905b606482106201a65557505090565b90916200824c6201a68d916201a5d9600386811b9060018060a01b038716600052810160205260016040600020549101549062004eaa565b906201a647565b81905b606482106201a6a557505090565b90916200824c6201a6df916201a5d98560031b60018060a01b03861660005261039b81016020526103996040600020549101549062004eaa565b906201a697565b916020019060019283835151036201a85357836201a705845162004c22565b5151036201a7f957156201a786576201a71e906201d1aa565b156200663857829160009182945b6201a73957505050905090565b805185101562015cba576201a75b6001600160a01b036201a429878462004c79565b6201a76b62006854845162004c22565b51111562015cb2576201a77f849562004c12565b946201a72c565b6201a791906201d1aa565b156200663857829160009182945b6201a7ac57505050905090565b805185101562015cba576201a7ce6001600160a01b036201a4a4878462004c79565b6201a7de62006854845162004c22565b51111562015cb2576201a7f2849562004c12565b946201a79f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201aa8b5760026201a8cd845162004c22565b5151036201aa3157156201a986576201a8e6906201d1aa565b919091156200663857829160009182945b6201a90457505050905090565b815185101562015cba576001600160a01b036201a927816201a429888662004c79565b6201a93762006854845162004c22565b51119081156201a95b575b5062015cb2576201a954849562004c12565b946201a8f7565b6201a96d91506201a429878562004c79565b6201a97d62015a55835162004c22565b5110386201a942565b6201a991906201d1aa565b919091156200663857829160009182945b6201a9af57505050905090565b815185101562015cba576001600160a01b036201a9d2816201a4a4888662004c79565b6201a9e262006854845162004c22565b51119081156201aa06575b5062015cb2576201a9ff849562004c12565b946201a9a2565b6201aa1891506201a4a4878562004c79565b6201aa2862015a55835162004c22565b5110386201a9ed565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160208091019160019384845151036201ac9957846201ab06855162004c22565b5151036201ac3f57156201ab87576201ab2091506201d1aa565b156200663857829160009182945b6201ab3b57505050905090565b805185101562015cba576201ab5d6001600160a01b036201a429878462004c79565b6201ab6d62006854845162004c22565b510362015cb2576201ab80849562004c12565b946201ab2e565b6201ab92906201d1aa565b9290921562015deb57600092845b6201abac575050505090565b805184101562005131576001600160a01b036201abca858362004c79565b511660009081905b606482106201ac075750506201abed62006854845162004c22565b510362015fff576201ac00859462004c12565b936201aba0565b90916200824c6201ac38916201a5d98560031b8560005261039b81018a526103996040600020549101549062004eaa565b906201abd2565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201ae6257836201ad12845162004c22565b5151036201ae0857156201ad94576201ad2b906201d1aa565b919091156200663857600091835b6201ad475750505050600090565b8051831015620161f55783926201ad6b6001600160a01b036201a429838562004c79565b6201ad7b62006854855162004c22565b5110620050f7576201ad8d9062004c12565b926201ad39565b6201ad9f906201d1aa565b919091156200663857600091835b6201adbb5750505050600090565b8051831015620161f55783926201addf6001600160a01b036201a4a4838562004c79565b6201adef62006854855162004c22565b5110620050f7576201ae019062004c12565b926201adad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b02b57836201aedb845162004c22565b5151036201afd157156201af5d576201aef4906201d1aa565b919091156200663857600091835b6201af105750505050600090565b8051831015620161f55783926201af346001600160a01b036201a429838562004c79565b6201af4462006854855162004c22565b5111620050f7576201af569062004c12565b926201af02565b6201af68906201d1aa565b919091156200663857600091835b6201af845750505050600090565b8051831015620161f55783926201afa86001600160a01b036201a4a4838562004c79565b6201afb862006854855162004c22565b5111620050f7576201afca9062004c12565b926201af76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b25d5760026201b0a5845162004c22565b5151036201b20357156201b15b576201b0be906201d1aa565b156200663857600091835b6201b0d75750505050600090565b8151831015620161f55783926001600160a01b036201b0fc816201a429848762004c79565b6201b10c62006854855162004c22565b51111590816201b12f575b50620050f7576201b1289062004c12565b926201b0c9565b6201b14191506201a429838662004c79565b6201b15162015a55845162004c22565b511015386201b117565b6201b166906201d1aa565b156200663857600091835b6201b17f5750505050600090565b8151831015620161f55783926001600160a01b036201b1a4816201a4a4848762004c79565b6201b1b462006854855162004c22565b51111590816201b1d7575b50620050f7576201b1d09062004c12565b926201b171565b6201b1e991506201a4a4838662004c79565b6201b1f962015a55845162004c22565b511015386201b1bf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b43457836201b2d6845162004c22565b5151036201b3da57156201b35f576201b2ef906201d1aa565b156200663857829160009182945b6201b30a57505050905090565b805185101562015cba576201b3346001600160a01b036201b32c878462004c79565b51166201b4e3565b6201b34462006854845162004c22565b51101562015cb2576201b358849562004c12565b946201b2fd565b6201b36a906201d1aa565b156200663857829160009182945b6201b38557505050905090565b805185101562015cba576201b3af6001600160a01b036201b3a7878462004c79565b51166201b48e565b6201b3bf62006854845162004c22565b51101562015cb2576201b3d3849562004c12565b946201b378565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60009081905b606482106201b4a257505090565b90916200824c6201b4dc916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b494565b60009081905b606482106201b4f757505090565b90916200824c6201b52f916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b4e9565b600091906201b590576000905b606482106201b55157505090565b90916200824c6201b589916201a5d9600386811b9060018060a01b038716600052810160205260026040600020549101549062004eaa565b906201b543565b81905b606482106201b5a157505090565b90916200824c6201b5db916201a5d98560031b60018060a01b03861660005261039b810160205261039a6040600020549101549062004eaa565b906201b593565b916020019060019283835151036201b74f57836201b601845162004c22565b5151036201b6f557156201b682576201b61a906201d1aa565b156200663857829160009182945b6201b63557505050905090565b805185101562015cba576201b6576001600160a01b036201b32c878462004c79565b6201b66762006854845162004c22565b51111562015cb2576201b67b849562004c12565b946201b628565b6201b68d906201d1aa565b156200663857829160009182945b6201b6a857505050905090565b805185101562015cba576201b6ca6001600160a01b036201b3a7878462004c79565b6201b6da62006854845162004c22565b51111562015cb2576201b6ee849562004c12565b946201b69b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201b9875760026201b7c9845162004c22565b5151036201b92d57156201b882576201b7e2906201d1aa565b919091156200663857829160009182945b6201b80057505050905090565b815185101562015cba576001600160a01b036201b823816201b32c888662004c79565b6201b83362006854845162004c22565b51119081156201b857575b5062015cb2576201b850849562004c12565b946201b7f3565b6201b86991506201b32c878562004c79565b6201b87962015a55835162004c22565b5110386201b83e565b6201b88d906201d1aa565b919091156200663857829160009182945b6201b8ab57505050905090565b815185101562015cba576001600160a01b036201b8ce816201b3a7888662004c79565b6201b8de62006854845162004c22565b51119081156201b902575b5062015cb2576201b8fb849562004c12565b946201b89e565b6201b91491506201b3a7878562004c79565b6201b92462015a55835162004c22565b5110386201b8e9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020019060019283835151036201bb5057836201ba00845162004c22565b5151036201baf657156201ba82576201ba19906201d1aa565b919091156200663857600091835b6201ba355750505050600090565b8051831015620161f55783926201ba596001600160a01b036201b32c838562004c79565b6201ba6962006854855162004c22565b5110620050f7576201ba7b9062004c12565b926201ba27565b6201ba8d906201d1aa565b919091156200663857600091835b6201baa95750505050600090565b8051831015620161f55783926201bacd6001600160a01b036201b3a7838562004c79565b6201badd62006854855162004c22565b5110620050f7576201baef9062004c12565b926201ba9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9160200190600192836201bbbf845162004c22565b5151036201bd195783835151036201bcbf57156201bc4b576201bbe2906201d1aa565b919091156200663857600091835b6201bbfe5750505050600090565b8051831015620161f55783926201bc226001600160a01b036201b32c838562004c79565b6201bc3262006854855162004c22565b5111620050f7576201bc449062004c12565b926201bbf0565b6201bc56906201d1aa565b919091156200663857600091835b6201bc725750505050600090565b8051831015620161f55783926201bc966001600160a01b036201b3a7838562004c79565b6201bca662006854855162004c22565b5111620050f7576201bcb89062004c12565b926201bc64565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b916020019060026201bd86835162004c22565b5151036201bf4b5760019283835151036201bef157156201be49576201bdac906201d1aa565b156200663857600091835b6201bdc55750505050600090565b8151831015620161f55783926001600160a01b036201bdea816201b32c848762004c79565b6201bdfa62006854855162004c22565b51111590816201be1d575b50620050f7576201be169062004c12565b926201bdb7565b6201be2f91506201b32c838662004c79565b6201be3f62015a55845162004c22565b511015386201be05565b6201be54906201d1aa565b156200663857600091835b6201be6d5750505050600090565b8151831015620161f55783926001600160a01b036201be92816201b3a7848762004c79565b6201bea262006854855162004c22565b51111590816201bec5575b50620050f7576201bebe9062004c12565b926201be5f565b6201bed791506201b3a7838662004c79565b6201bee762015a55845162004c22565b511015386201bead565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060019384835151036201c16a5760026201bfc8845162004c22565b5151036201c11057156201c072576201bfe1906201d1aa565b9290921562015deb57600092845b6201bffb575050505090565b805184101562005131576201c01562006854845162004c22565b51606481101562004c30576001600160a01b036201c034868462004c79565b5116600052600390811b0182526040600020546201c05762015a55855162004c22565b51101562015fff576201c06b859462004c12565b936201bfef565b6201c07d906201d1aa565b9290921562015deb57600092845b6201c097575050505090565b805184101562005131576201c0b162006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c0d4878562004c79565b511660005260031b0182526040600020546201c0f562015a55855162004c22565b51101562015fff576201c109859462004c12565b936201c08b565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208092019060019384835151036201c3895760026201c1e7845162004c22565b5151036201c32f57156201c291576201c200906201d1aa565b9290921562015deb57600092845b6201c21a575050505090565b805184101562005131576201c23462006854845162004c22565b51606481101562004c30576001600160a01b036201c253868462004c79565b5116600052600390811b0182526040600020546201c27662015a55855162004c22565b51111562015fff576201c28a859462004c12565b936201c20e565b6201c29c906201d1aa565b9290921562015deb57600092845b6201c2b6575050505090565b805184101562005131576201c2d062006854845162004c22565b51606481101562004c305761039b906001600160a01b036201c2f3878562004c79565b511660005260031b0182526040600020546201c31462015a55855162004c22565b51111562015fff576201c328859462004c12565b936201c2aa565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101600392836201c3f9835162004c22565b5151036201c6855760019485835151036201c62b57156201c523576201c41f906201d1aa565b9390931562015fff57600093855b6201c43a57505050505090565b80518510156201c51d576201c45462006854845162004c22565b516064908181101562004c30576001600160a01b03908490826201c4798a8762004c79565b5116600052811b01865260409081600020546201c49b62015a55885162004c22565b51119283156201c4c1575b50505062019df1576201c4ba869562004c12565b946201c42d565b909192506201c4d562006854875162004c22565b519081101562004c305784916201c4ed898662004c79565b5116600052811b018552600020546201c5126201c50b855162004c22565b5162004c57565b51103880806201c4a6565b62016526565b6201c531909392936201d1aa565b9390931562015fff57600093855b6201c54c57505050505090565b80518510156201c51d576201c56662006854845162004c22565b5160648082101562004c30576001600160a01b0391826201c588898662004c79565b511660005261039b8091881b01855260409182600020546201c5af62015a55895162004c22565b51119384156201c5d6575b5050505062019df1576201c5cf869562004c12565b946201c53f565b90919293506201c5eb62006854885162004c22565b519182101562004c30576201c601898662004c79565b5116600052861b018352600020546201c61f6201c50b855162004c22565b5110388080806201c5ba565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201c6fa835162004c22565b5151036201c8b15760019384835151036201c85757156201c7b5576201c720906201d1aa565b9290921562015deb57600092845b6201c73d575050505050600090565b80518410156201652e576201c75762006854845162004c22565b5193606485101562004c305785946001600160a01b036201c779838562004c79565b5116600052600390811b0183526040600020546201c79c62015a55865162004c22565b511062016526576201c7ae9062004c12565b936201c72e565b6201c7c0906201d1aa565b9290921562015deb57600092845b6201c7dd575050505050600090565b80518410156201652e576201c7f762006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201c81d848662004c79565b511660005260031b0183526040600020546201c83e62015a55865162004c22565b511062016526576201c8509062004c12565b936201c7ce565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b919060208092019060026201c921835162004c22565b5151036201cad85760019384835151036201ca7e57156201c9dc576201c947906201d1aa565b9290921562015deb57600092845b6201c964575050505050600090565b80518410156201652e576201c97e62006854845162004c22565b5193606485101562004c305785946001600160a01b036201c9a0838562004c79565b5116600052600390811b0183526040600020546201c9c362015a55865162004c22565b511162016526576201c9d59062004c12565b936201c955565b6201c9e7906201d1aa565b9290921562015deb57600092845b6201ca04575050505050600090565b80518410156201652e576201ca1e62006854845162004c22565b5193606485101562004c3057859461039b906001600160a01b036201ca44848662004c79565b511660005260031b0183526040600020546201ca6562015a55865162004c22565b511162016526576201ca779062004c12565b936201c9f5565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b916020809101600392836201cb48835162004c22565b5151036201cdd85760019485835151036201cd7e57156201cc6d576201cb6e906201d1aa565b9390931562015fff57600093855b6201cb8c57505050505050600090565b805185101562019e5c576201cba662006854845162004c22565b51946064958681101562004c305787966001600160a01b03918590836201cbce868862004c79565b5116600052811b018752604080600020546201cbef62015a55895162004c22565b51111592836201cc14575b50505062019e53576201cc0d9062004c12565b946201cb7c565b91985091506201cc2962006854875162004c22565b519788101562004c3057889785916201cc43858762004c79565b5116600052811b018652600020546201cc616201c50b865162004c22565b5110153880806201cbfa565b6201cc7b909392936201d1aa565b9390931562015fff57600093855b6201cc9957505050505050600090565b805185101562019e5c576201ccb362006854845162004c22565b519460648087101562004c305787966001600160a01b0390816201ccd8858762004c79565b511660005261039b8091891b01865260409081600020546201ccff62015a558a5162004c22565b51111593846201cd25575b5050505062019e53576201cd1e9062004c12565b946201cc89565b9193509198506201cd3b62006854885162004c22565b519081101562004c305789986201cd53858762004c79565b5116600052871b018452600020546201cd716201c50b865162004c22565b511015388080806201cd0a565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201ce42816201cfc7565b156201cfbe576040810190606082510151511515806201cf83575b156201ce6f5750516060015151600191565b604082510151511515806201cf6a575b156201ce915750516040015151600191565b60808251015151151590816201cf50575b50156201ceb457516080015151600191565b805160c081015151156201cefb57506201ced360c08251015162004c22565b51516201cee457505b600090600090565b60c06201cef49151015162004c22565b5151600191565b602081015151156201cf135750516020015151600191565b60a0015180516201cf27575b50506201cedc565b6201cf329062004c22565b51516201cf4057806201cf1f565b60a06201cef49151015162004c22565b60209150015160268110156200294257601014386201cea2565b506020810151602681101562002942576013146201ce7f565b5060208101805160268110156200294257600c149081156201cfa7575b506201ce5d565b90505160268110156200294257600f14386201cfa0565b50600090600090565b60200180519060269081831015620029425760018093146201d1a55780518281101562002942576002146201d1a55780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760051462015db6578051838110156201d1905760061462015db6578051838110156201d1905760071462015db6578051838110156201d1905760081462015db6578051838110156201d1905760091462015db6578051838110156201d19057600a1462015db6578051838110156201d19057600b1462015db6578051838110156201d19057600c1462015db6578051838110156201d19057600d1462015db6578051838110156201d19057600e1462015db6578051838110156201d19057600f1462015db6578051838110156201d1905760101462015db6578051838110156201d1905760111462015db6578051838110156201d1905760121462015db6578051838110156201d1905760131462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db65751918210156201d17b5750601e14620031f85750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201d1b5816201cfc7565b156201d224576020810151602681101562002942576004146201d211576040015160c0015180516201d1ff57506040516201d1f08162002a5e565b60008152600036813790600090565b6201d20a9062004c22565b5190600190565b60c060406201d20a920151015162004c46565b506040516201d1f08162002a5e565b6020810151602681101562002942576004146201d25957506040516201d1f08162002a5e565b60c060406201d20a920151015162004c22565b6201d277816201d3bc565b156201d3ac57602081019081519160269081841015620029425760018094146201d3915780518281101562002942576003146201d3915780519082821015620029425760048092146201d375578051838110156201d190576005146201d375578051838110156201d190576006146201d375578051838110156201d190576014146201d375578051838110156201d190576015146201d3755751918210156201d17b5750601e146201d357575050604051906201d3348262002a5e565b60008252604051916201d3478362002a5e565b6000835260003681379190600090565b604001916201d37060a0620077f0818651015162004c22565b519190565b505050604001916201d37060a0620077f0818651015162004c22565b5050604001916201d37060a0620077f0818651015162004c22565b50604051906201d3348262002a5e565b60200180519060269081831015620029425760018093146201d1a5578051828110156200294257600214620066385780518281101562002942576003146201d1a557805190828210156200294257600480921462015db6578051838110156201d1905760141462015db6578051838110156201d1905760151462015db6578051838110156201d19057601e1462015db6578051838110156201d1905760051462015db65751918210156201d17b5750600614620031f85750600090565b916101f581146201d523576101f681146201d517576101f781146201d50b576101f881146201d4ff576101f981146201d4f3576101fa81146201d4e7576101fb81146201d4db576101fc146201d4d0575050600090565b620031f8916201df74565b50620031f8916201ddcf565b50620031f8916201dc6a565b50620031f8916201db05565b50620031f8916201d9a0565b50620031f8916201d7fb565b50620031f8916201d696565b50620031f891906020019060019182815151036201d63c57826201d548825162004c22565b5151036201d5e2576020820151602681101562002942576002036200663857600091835b6201d57a5750505050600090565b604081019260a0936201d591858251015162004c57565b51518210156201d5da57816200749487966201d5b09351015162004c57565b516201d5c162006854855162004c22565b5110620050f7576201d5d39062004c12565b926201d56c565b505062015deb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d7a157826201d6b5825162004c22565b5151036201d747576020820151602681101562002942576002036200663857600091835b6201d6e75750505050600090565b604081019260a0936201d6fe858251015162004c57565b51518210156201d5da57816200749487966201d71d9351015162004c57565b516201d72e62006854855162004c22565b5111620050f7576201d7409062004c12565b926201d6d9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201d9465760026201d81b825162004c22565b5151036201d8ec576020820151602681101562002942576002036200663857600091835b6201d84d5750505050600090565b604081019260a0936201d864858251015162004c57565b51518210156201d5da5781856201d88582620074948a998651015162004c57565b516201d89662006854885162004c22565b51111592836201d8bb575b505050620050f7576201d8b49062004c12565b926201d83f565b5101516201d8cf9250620074949062004c57565b516201d8e062015a55855162004c22565b5110158138806201d8a1565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201daab57826201d9bf825162004c22565b5151036201da51576020820151602681101562002942576002036200663857600091835b6201d9f15750505050600090565b604081019260a0936201da08858251015162004c57565b51518210156201d5da57816200749487966201da279351015162004c57565b516201da3862006854855162004c22565b5114620050f7576201da4a9062004c12565b926201d9e3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dc1057826201db24825162004c22565b5151036201dbb6576020820151602681101562002942576002036200663857600091835b6201db565750505050600090565b604081019260a0936201db6d858251015162004c68565b51518210156201d5da57816200749487966201db8c9351015162004c46565b516201db9d62006854855162004c22565b5110620050f7576201dbaf9062004c12565b926201db48565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201dd7557826201dc89825162004c22565b5151036201dd1b576020820151602681101562002942576002036200663857600091835b6201dcbb5750505050600090565b604081019260a0936201dcd2858251015162004c68565b51518210156201d5da57816200749487966201dcf19351015162004c46565b516201dd0262006854855162004c22565b5111620050f7576201dd149062004c12565b926201dcad565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201df1a5760026201ddef825162004c22565b5151036201dec0576020820151602681101562002942576002036200663857600091835b6201de215750505050600090565b604081019260a0936201de38858251015162004c68565b51518210156201d5da5781856201de5982620074948a998651015162004c46565b516201de6a62006854885162004c22565b51111592836201de8f575b505050620050f7576201de889062004c12565b926201de13565b5101516201dea39250620074949062004c46565b516201deb462015a55855162004c22565b5110158138806201de75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036201e07f57826201df93825162004c22565b5151036201e025576020820151602681101562002942576002036200663857600091835b6201dfc55750505050600090565b604081019260a0936201dfdc858251015162004c68565b51518210156201d5da57816200749487966201dffb9351015162004c46565b516201e00c62006854855162004c22565b5114620050f7576201e01e9062004c12565b926201dfb7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91603381036201e1c3575060209150016001815151036201e1735760016201e102825162004c22565b5151036201e12057620068546201e11a915162004c22565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201e2ac575060209150016001815151036201e25c5760016201e1eb825162004c22565b5151036201e20957620068546201e203915162004c22565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201e3be575060209150016001815151036201e36e5760026201e2d4825162004c22565b5151036201e314576201e2ec62006854825162004c22565b5142101590816201e2fb575090565b6201e30d915062015a55905162004c22565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201e4c2575060209150016001815151036201e4685760016201e3e6825162004c22565b5151036201e40e5762015831620068546201e401426200628d565b5050505050925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603781036201e5b9575060209150016001815151036201e55f5760016201e4ea825162004c22565b5151036201e5055762015932620068546201e401426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603881036201e6bd575060209150016001815151036201e6635760026201e5e1825162004c22565b5151036201e609576201e5f4426200628d565b505050505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603981036201e7c2575060209150016001815151036201e7685760016201e6e5825162004c22565b5151036201e70e5762015831620068546201e700426200628d565b505050509390505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603a81036201e8b9575060209150016001815151036201e85f5760016201e7ea825162004c22565b5151036201e8055762015932620068546201e700426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603b81036201e9be575060209150016001815151036201e9645760026201e8e1825162004c22565b5151036201e90a576201e8f4426200628d565b50505050905062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603c81036201eac3575060209150016001815151036201ea695760016201e9e6825162004c22565b5151036201ea0f5762015831620068546201ea01426200628d565b505050949150505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603d81036201ebba575060209150016001815151036201eb605760016201eaeb825162004c22565b5151036201eb065762015932620068546201ea01426200628d565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603e81036201ecbf575060209150016001815151036201ec655760026201ebe2825162004c22565b5151036201ec0b576201ebf5426200628d565b50505091505062015a3262006854835162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b603f81036201edc4575060209150016001815151036201ed6a5760016201ece7825162004c22565b5151036201ed105762015831620068546201ed02426200628d565b505095925050505162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040928184036201eeba575050602001906001825151036201ee625760016201edee835162004c22565b5151036201ee0a575062015932620068546201ed02426200628d565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604182036201efbc575050602001906001825151036201ef645760026201eee2835162004c22565b5151036201ef0c57506201eef6426200628d565b50509250505062015a3262006854835162004c22565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9092604284036201efd45750620031f8925062020232565b604384036201efea5750620031f892506202043c565b60448481036201f002575050620031f892506202063e565b604585036201f019575050620031f89250620208bb565b604685036201f030575050620031f8925062020abd565b604785036201f047575050620031f8925062020cbf565b604885036201f05e575050620031f8925062020fa2565b604985036201f075575050620031f89250620212ad565b604a85036201f08c575050620031f8925062021589565b604b85036201f0a3575050620031f892506202194c565b604c85036201f0ba575050620031f8925062021af5565b604d85036201f0d1575050620031f8925062021bf9565b604e85036201f0e8575050620031f8925062021d51565b604f85036201f0ff575050620031f8925062021ed0565b605085036201f116575050620031f8925062021fd4565b91909293605581146000146201f2d6575060208401926002845151036201f27e57600192836201f147865162004c46565b5151036201f227575090829160009586945b6201f174575b50505050506200685462015831915162004c46565b90919293956201f1878383015162004c22565b51518710156201f220576201f1dd9084156201f1e85762009842906201f1c160646201f1b98b620074948c5162004c22565b51106202212c565b6201a5d96201f1d68a620074948b5162004c22565b51620060e5565b93929190836201f159565b62009842906201f20460646201f1b98b620074948c5162004c22565b6201a5d96201f2198a620074948b5162004c22565b5162006113565b956201f15f565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605681036201f457575060208401926002845151036201f3ff57600192836201f300865162004c46565b5151036201f3a8575090829160009586945b6201f32d575b50505050506200685462015932915162004c46565b90919293956201f3408383015162004c22565b51518710156201f3a1576201f37a9084156201f3855762009842906201f1c160646201f3728b620074948c5162004c22565b51106202219e565b93929190836201f312565b62009842906201f20460646201f3728b620074948c5162004c22565b956201f318565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605781036201f61b575060208401946002865151036201f5c25760026201f483875162004c46565b5151036201f56a5750600092835b6201f49f8287015162004c22565b51518510156201f53057906201f4f6856201f49f9389876000146201f5005760646201f4d96200960f94620074946201f4e1945162004c22565b511062022210565b6201a5d96201f1d689620074948d5162004c22565b949091506201f491565b60646201f4d96200960f94620074946201f51b945162004c22565b6201a5d96201f21989620074948d5162004c22565b935050939250506201f54762006854835162004c46565b5181101591826201f55757505090565b62015a5c91925062015a55905162004c46565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605881036201f7d0575060208401926002845151036201f77857600192836201f649865162004c46565b5151036201f721575090829160009586945b6201f6755750505050506200685462015831915162004c46565b90919293956201f6888383015162004c22565b51518710156201f220576201f6de9084156201f6e95762009842906201f6c260646201f6ba8b620074948c5162004c22565b511062022282565b6201a5d96201f6d78a620074948b5162004c22565b5162005d82565b93929190836201f65b565b62009842906201f70560646201f6ba8b620074948c5162004c22565b6201a5d96201f71a8a620074948b5162004c22565b5162005db7565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605981036201f949575060208401926002845151036201f8f157600192836201f7fa865162004c46565b5151036201f89a575090829160009586945b6201f8265750505050506200685462015932915162004c46565b90919293956201f8398383015162004c22565b51518710156201f3a1576201f8739084156201f87e5762009842906201f6c260646201f86b8b620074948c5162004c22565b5110620222f4565b93929190836201f80c565b62009842906201f70560646201f86b8b620074948c5162004c22565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a81036201fad3575060208401946002865151036201fa7a5760026201f975875162004c46565b5151036201fa225750600092835b6201f9918287015162004c22565b51518510156201f53057906201f9e8856201f9919389876000146201f9f25760646201f9cb6200960f94620074946201f9d3945162004c22565b511062022366565b6201a5d96201f6d789620074948d5162004c22565b949091506201f983565b60646201f9cb6200960f94620074946201fa0d945162004c22565b6201a5d96201f71a89620074948d5162004c22565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b81036201fcaa575060208401926002845151036201fc5257600192836201fb01865162004c46565b5151036201fbfb575090829160009586945b6201fb2d5750505050506200685462015831915162004c46565b90919293956201fb408383015162004c22565b51518710156201f2205783156201fbaf5760646201fb71816201fb698a620074948b5162004c22565b5110620223d8565b6201fb828862007494895162004c22565b519081101562004c30576201fba4916006620098429260031b01549062006271565b93929190836201fb13565b60646201fbc7816201fb698a620074948b5162004c22565b6201fbd88862007494895162004c22565b519081101562004c30576201fba49161039e620098429260031b01549062006271565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036201fe7d575060208401926002845151036201fe2557600192836201fcd4865162004c46565b5151036201fdce575090829160009586945b6201fd005750505050506200685462015932915162004c46565b90919293956201fd138383015162004c22565b51518710156201f3a15783156201fd825760646201fd44816201fd3c8a620074948b5162004c22565b51106202244a565b6201fd558862007494895162004c22565b519081101562004c30576201fd77916006620098429260031b01549062006271565b93929190836201fce6565b60646201fd9a816201fd3c8a620074948b5162004c22565b6201fdab8862007494895162004c22565b519081101562004c30576201fd779161039e620098429260031b01549062006271565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d8196929394961460001462020054575060208401926002845151036201fffb5760026201fead855162004c46565b5151036201ffa35750600080955b6201fec98187015162004c22565b51518710156201ff8c5783156201ff3b576064916201fefb836201fef38a620074948a5162004c22565b5110620224bc565b6201ff0c8862007494885162004c22565b519283101562004c3057620142c46201ff329160066201fec99560031b01549062006271565b9691506201febb565b6064916201ff54836201fef38a620074948a5162004c22565b6201ff658862007494885162004c22565b519283101562004c3057620142c46201ff329161039e6201fec99560031b01549062006271565b509293509350506201f54762006854835162004c46565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b8352602060048401526031602484015282015260008051602062031d088339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e0362015deb576020840192600284515103620201da576001928362020081865162004c46565b51510362020183575090829160009586945b620200ae575b50505050506200685462015b60915162004c46565b9091929395620200c18383015162004c22565b51518710156202017c57831562020130576064620200f281620200ea8a620074948b5162004c22565b51106202252e565b620201038862007494895162004c22565b519081101562004c305762020125916006620098429260031b01549062006271565b939291908362020093565b60646202014881620200ea8a620074948b5162004c22565b620201598862007494895162004c22565b519081101562004c3057620201259161039e620098429260031b01549062006271565b9562020099565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062031de88339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b906040810190600182515103620203e257600162020251835162004c22565b5151036202038857602001916001835151036202032e57600162020276845162004c22565b515103620202d45715620202b05762006854620202a862015831926201a4296200685460018060a01b03925162004c22565b925162004c22565b62006854620202a862015831926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906040810190600182515103620205e45760016202045b835162004c22565b5151036202058a57602001916001835151036202053057600162020480845162004c22565b515103620204d65715620204b25762006854620202a862015932926201a4296200685460018060a01b03925162004c22565b62006854620202a862015932926201a4a46200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6040820191600183515103620208615760016202065c845162004c22565b515103620208075760200190600182515103620207ad57600262020681835162004c22565b515103620207535715620206f75760018060a01b03620206ab816201a42962006854865162004c22565b620206bb62006854845162004c22565b5111159283620206cb5750505090565b620206eb92935062015a55916201a42962006854620202a8935162004c22565b51101538808062015db6565b60018060a01b0362020713816201a4a462006854865162004c22565b6202072362006854845162004c22565b5111159283620207335750505090565b620206eb92935062015a55916201a4a462006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020a63576001620208da835162004c22565b51510362020a095760200191600183515103620209af576001620208ff845162004c22565b515103620209555715620209315762006854620202a862015831926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015831926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b90604081019060018251510362020c6557600162020adc835162004c22565b51510362020c0b576020019160018351510362020bb157600162020b01845162004c22565b51510362020b57571562020b335762006854620202a862015932926201b32c6200685460018060a01b03925162004c22565b62006854620202a862015932926201b3a76200685460018060a01b03925162004c22565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b604082019160018351510362020ed657600162020cdd845162004c22565b51510362020e7c576020019060018251510362020e2257600262020d02835162004c22565b51510362020dc8571562020d6c5760018060a01b0362020d2c816201b32c62006854865162004c22565b62020d3c62006854845162004c22565b511115928362020d4c5750505090565b620206eb92935062015a55916201b32c62006854620202a8935162004c22565b60018060a01b0362020d88816201b3a762006854865162004c22565b62020d9862006854845162004c22565b511115928362020da85750505090565b620206eb92935062015a55916201b3a762006854620202a8935162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b1562020f3857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620211e257600162020fc2845162004c22565b5151036202118957602001926001845151036202113057600262020fe7855162004c22565b515103620210d7571562021069576202101360646202100b62006854865162004c22565b511062020f30565b6202102362006854845162004c22565b5190606482101562004c3057600362015a55926201583194620210526200685460018060a01b03925162004c22565b5116600052811b0160205260002054925162004c22565b6202107f60646202100b62006854865162004c22565b6202108f62006854845162004c22565b5190606482101562004c305761039b62015a55926201583194620210bf6200685460018060a01b03925162004c22565b511660005260031b0160205260002054925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202124357565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820191600183515103620214be576001620212cd845162004c22565b5151036202146557602001926001845151036202140c576002620212f2855162004c22565b515103620213b357156202135d576202131e60646202131662006854865162004c22565b51106202123b565b6202132e62006854845162004c22565b5190606482101562004c3057600362015a55926201593294620210526200685460018060a01b03925162004c22565b6202137360646202131662006854865162004c22565b6202138362006854845162004c22565b5190606482101562004c305761039b62015a55926201593294620210bf6200685460018060a01b03925162004c22565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202151f57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031cc8833981519152606482015266662072616e676560c81b608482015260a490fd5b90604080820192600184515103620218f3576001620215a9855162004c22565b5151036202189a57602080930192600184515103620218425760039182620215d2865162004c22565b515103620217e45715620216e357620215fe6064620215f662006854875162004c22565b511062021517565b6202160e62006854855162004c22565b5191606483101562004c305760018060a01b039581876202163462006854845162004c22565b5116946000958652811b018352848420546202165562015a55885162004c22565b51111596876202166a575b5050505050505090565b90919293949596506202168262006854885162004c22565b51916064831015620216cf57916201c50b959391620216ac62006854620216bf9997955162004c22565b51168452811b0190522054925162004c22565b5110153880808080808062021660565b634e487b7160e01b86526032600452602486fd5b620216f96064620215f662006854875162004c22565b6202170962006854855162004c22565b51606481101562004c305760018060a01b0395866202172d62006854835162004c22565b511693600094855261039b8093821b018452858520546202175362015a55895162004c22565b511115978862021769575b505050505050505090565b9091929394959697506202178262006854895162004c22565b51926064841015620217d05791620217bf97959391620217ad620068546201c50b9997955162004c22565b511685521b0190522054925162004c22565b51101538808080808080806202175e565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620219f65760016202196a835162004c22565b5151036202199c57156202198a576201583162006854620202a862021ab8565b6201583162006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021a61575090565b908160031b60ff61039f820154161562021ab25762021a9f62021aac9262021a9761039962021aa594015462005da88762005fe7565b92906200607c565b62006271565b9162004c12565b62021a54565b50905090565b6000805b6064811062021ac9575090565b9060ff60078360031b01541615620061fd5762021aa562021aef916201a5d984620060e5565b62021abc565b906020019060018251510362021b9f57600162021b13835162004c22565b51510362021b45571562021b33576201593262006854620202a862021ab8565b6201593262006854620202a862021a50565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021cf757600262021c17835162004c22565b51510362021c9d571562021c615762021c2f62021ab8565b62021c3f62006854835162004c22565b511115908162021c4d575090565b905062015a5c62015a55620202a862021ab8565b62021c6b62021a50565b62021c7b62006854835162004c22565b511115908162021c89575090565b905062015a5c62015a55620202a862021a50565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b906020019060018251510362021dfb57600162021d6f835162004c22565b51510362021da1571562021d8f576201583162006854620202a862021e93565b6201583162006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b6000805b6064811062021e66575090565b9060ff61039f8360031b01541615620061fd5762021aa562021e8d916201a5d98462005e5e565b62021e59565b6000805b6064811062021ea4575090565b9060ff60078360031b01541615620061fd5762021aa562021eca916201a5d98462005d82565b62021e97565b906020019060018251510362021f7a57600162021eee835162004c22565b51510362021f20571562021f0e576201593262006854620202a862021e93565b6201593262006854620202a862021e55565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031de88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b9060200190600182515103620220d257600262021ff2835162004c22565b5151036202207857156202203c576202200a62021e93565b6202201a62006854835162004c22565b511115908162022028575090565b905062015a5c62015a55620202a862021e93565b6202204662021e55565b6202205662006854835162004c22565b511115908162022064575090565b905062015a5c62015a55620202a862021e55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031d088339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031b288339815191526064820152608490fd5b156202213457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620221a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202221857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202228a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620222fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202236e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620223e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202245257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b15620224c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b156202253657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d604482015260008051602062031ce8833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462022608576101928114620225fc576101938114620225f0576101968114620225e45761019714620225d9575050600090565b620031f89162022b3e565b50620031f89162022a59565b50620031f891620228b4565b50620031f89162022773565b50620031f891906020019060019182815151036202271957826202262d825162004c22565b515103620226bf57602082015160268110156200294257600a036200663857600091835b6202265f5750505050600090565b604081019260a09362022676858251015162004c22565b51518210156201d5da5781620074948796620226959351015162004c22565b51620226a662006854855162004c22565b5114620050f757620226b89062004c12565b9262022651565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202285a57602082015160268110156200294257600a03620066385782916000935b620227b05750505050600090565b6040810160a0620227c5818351015162004c22565b51518610156201d5da57906000855b620227f0575b505050620227e9839462004c12565b93620227a2565b620227fc855162004c22565b515181101562022854576202281a8762007494858551015162004c22565b516202282c8262007494885162004c22565b51146202284a57906202284186939262004c12565b909192620227d4565b5050505050905090565b620227da565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90602001906001918281515103620229ff576002620228d4825162004c22565b515103620229a557602082015160268110156200294257600a036200663857600091835b620229065750505050600090565b604081019260a0936202291d858251015162004c22565b51518210156201d5da5781856202293e82620074948a998651015162004c22565b516202294f62006854885162004c22565b511115928362022974575b505050620050f7576202296d9062004c12565b92620228f8565b510151620229889250620074949062004c22565b516202299962015a55855162004c22565b5110158138806202295a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600191828151510362022ae557602082015160268110156200294257600b036200663857600091835b62022a905750505050600090565b60408101515192835181101562022ade5762022ac762022ab282879662004c79565b5162022abf855162004c22565b519062031908565b620050f75762022ad79062004c12565b9262022a82565b5062015deb565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362022bc357602082015160268110156200294257600b036200663857600091835b62022b755750505050600090565b60408101515192835181101562022ade5762022bac62022b9782879662004c79565b5162022ba4855162004c22565b519062006589565b620050f75762022bbc9062004c12565b9262022b67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b916097811462022c405760981462022c35575050600090565b620031f89162022d51565b50602001805151620031f892906000190162022cf857600162022c64835162004c22565b51510362022c9e57602001516026811015620029425762006854620202a862022c8d92620316cf565b511462022c9957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062031c688339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9190916020809301600191828251510362022dd857938293946000935b62022d7d575050505050600090565b62022d89835162004c22565b51518410156201652e5781810151936026851015620029425762022dae8695620316cf565b62022dbf8262007494875162004c22565b5114620165265762022dd19062004c12565b9362022d6e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462022f34576102be811462022f28576102bf811462022f1c576102c0811462022f10576102c1811462022f04576102c2811462022ef8576102c3811462022eec576102c4811462022ee0576102c5811462022ed4576102c6811462022ec8576102c7811462022ebc576102c81462022eb157505050600090565b620031f89262024159565b50620031f89262023f5e565b50620031f89262023d59565b50620031f89262023ae9565b50620031f892620238e4565b50620031f892620236d5565b50620031f892620235b6565b50620031f8926202348f565b50620031f89262023368565b50620031f8926202320e565b50620031f892620230ba565b50620031f89262022f51565b606482101562004c30570190600090565b916020809101926001845151036202306057600162022f71855162004c22565b51510362023006571562022fcd57620202a862022fbf620158319362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b9062022f40565b90549060031b1c426200627f565b620202a862022fbf620158319362022fb8620076f6620068549560018060a01b038451166000526106c1815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602080910192600184515103620231b4576001620230da855162004c22565b5151036202315a57156202312157620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b620202a862022fbf620159329362022fb8620076f6620068549560018060a01b03845116600052610329815260406000209301620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916020809101926001845151036202330e5760026202322e855162004c22565b515103620232b45715620232805781516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b62015a3262006854835162004c22565b81516001600160a01b03166000908152610329825260409020620232709262022fbf9262022fb891620076f69101620073dc565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202343557600162023386845162004c22565b515103620233db5715620233c957620076f66020620233a69201620073dc565b606481101562004c305762006854620202a8620158319261032b0154426200627f565b620076f66020620233a69201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202355c576001620234ad845162004c22565b515103620235025715620234f057620076f66020620234cd9201620073dc565b606481101562004c305762006854620202a8620159329261032b0154426200627f565b620076f66020620234cd9201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91602001916001835151036202367b576002620235d4845162004c22565b5151036202362157156202360f57620076f66020620235f49201620073dc565b606481101562004c3057620232709061032b0154426200627f565b620076f66020620235f49201620073dc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b90929160409384820160019384825151036202388b5784620236f8835162004c22565b515103620238325795849596600014620237a4576000945b6202372057505050505050600090565b6202372c825162004c22565b515185101562019e5c57859460018060a01b03620237508262007494865162004c22565b5116600052602061032981526202378b620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b9288015162004c22565b511062019e53576202379d9062004c12565b9462023710565b6000945b620237b857505050505050600090565b620237c4825162004c22565b515185101562019e5c57859460018060a01b03620237e88262007494865162004c22565b51166000526020610329815262023819620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511062019e53576202382b9062004c12565b94620237a8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b909291604093848201600193848251510362023a90578462023907835162004c22565b51510362023a375795849596600014620239a9576000945b6202392f57505050505050600090565b6202393b825162004c22565b515185101562019e5c57859460018060a01b036202395f8262007494865162004c22565b51166000526020610329815262023990620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e5357620239a29062004c12565b946202391f565b6000945b620239bd57505050505050600090565b620239c9825162004c22565b515185101562019e5c57859460018060a01b03620239ed8262007494865162004c22565b51166000526020610329815262023a1e620068546202378162022fbf8660002062022fb8620076f6878c01620073dc565b511162019e535762023a309062004c12565b94620239ad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023d0057600262023b0c825162004c22565b51510362023ca75784959660001462023be3576000945b62023b3357505050505050600090565b62023b3f815162004c22565b515185101562019e5c57859460018060a01b0362023b638262007494855162004c22565b51166000526020610329815262023b8c62022fbf8660002062022fb8620076f6858901620073dc565b9086019062023ba062006854835162004c22565b51811015918262023bc5575b505062019e535762023bbe9062004c12565b9462023b23565b62023bd891925062015a55905162004c22565b511015388062023bac565b6000945b62023bf757505050505050600090565b62023c03815162004c22565b515185101562019e5c57859460018060a01b0362023c278262007494855162004c22565b51166000526020610329815262023c5062022fbf8660002062022fb8620076f6858901620073dc565b9086019062023c6462006854835162004c22565b51811015918262023c89575b505062019e535762023c829062004c12565b9462023be7565b62023c9c91925062015a55905162004c22565b511015388062023c70565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362023f05578462023d7b825162004c22565b51510362023eac5784959660001462023e22576000945b62023d9f57505050505090565b62023dab815162004c22565b51518510156201c51d5760018060a01b0362023dcd8662007494845162004c22565b51166000526020610329815262023e086200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b9287015162004c22565b511162019df15762023e1b869562004c12565b9462023d92565b6000945b62023e3357505050505090565b62023e3f815162004c22565b51518510156201c51d5760018060a01b0362023e618662007494845162004c22565b51166000526020610329815262023e926200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511162019df15762023ea5869562004c12565b9462023e26565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9291604080820192600193848151510362024100578462023f80825162004c22565b515103620240a7578495966000146202401d576000945b62023fa457505050505090565b62023fb0815162004c22565b51518510156201c51d5760018060a01b0362023fd28662007494845162004c22565b511660005260206103298152620240036200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df15762024016869562004c12565b9462023f97565b6000945b6202402e57505050505090565b6202403a815162004c22565b51518510156201c51d5760018060a01b036202405c8662007494845162004c22565b5116600052602061032981526202408d6200685462023dfe62022fbf8760002062022fb8620076f6878a01620073dc565b511062019df157620240a0869562004c12565b9462024021565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b92916040808201926001938481515103620243665760026202417c825162004c22565b5151036202430d578495966000146202424e576000945b620241a057505050505090565b620241ac815162004c22565b51518510156201c51d5760018060a01b03620241ce8662007494845162004c22565b511660005260206103298152620241f762022fbf8560002062022fb8620076f6858801620073dc565b908501906202420b62006854835162004c22565b51811091821562024231575b505062019df1576202422a869562004c12565b9462024193565b6202424491925062015a55905162004c22565b5110388062024217565b6000945b6202425f57505050505090565b6202426b815162004c22565b51518510156201c51d5760018060a01b036202428d8662007494845162004c22565b511660005260206106c18152620242b662022fbf8560002062022fb8620076f6858801620073dc565b90850190620242ca62006854835162004c22565b518110918215620242f0575b505062019df157620242e9869562004c12565b9462024252565b6202430391925062015a55905162004c22565b51103880620242d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b600193808503620243d75750620031f8935062024aa7565b60028103620243ed5750620031f8935062024b91565b60038103620244f7575050906040019180835151036202449b5762024413835162004c22565b5151036202443c57620244366200685460018060a01b0380935116935162004c22565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362024510575050620031f8935062024cd6565b6005810362024527575050620031f8935062024e1b565b600681036202453e575050620031f8935062024f60565b6007810362024555575050620031f893506202519c565b600881036202456c575050620031f89350620253fa565b6009810362024583575050620031f8935062025636565b600a81036202459a575050620031f8935062025866565b600b8103620245b1575050620031f8935062025b5d565b600c8103620245c8575050620031f8935062025d85565b600d8103620245df575050620031f8935062025fd1565b600e8103620245f6575050620031f89350620261c8565b600f81036202460d575050620031f893506202650d565b6010810362024624575050620031f8935062026704565b601181036202463b575050620031f8935062026824565b6012810362024652575050620031f8935062026944565b6013810362024669575050620031f8935062026ada565b6014810362024680575050620031f8935062026bfa565b6015810362024697575050620031f8935062026d1a565b60198103620246ae575050620031f8935062026ea3565b601a8103620246c5575050620031f8935062026fdb565b601b8103620246dc575050620031f8935062027113565b601c819592939495146000146202481f5750602001938085515103620247c65762024708855162004c22565b5151036202476d575060009015620247475750516001600160a01b03166000908152610327602052604090205490620158319062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201583190620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601d81036202495a5750602001938085515103620249015762024843855162004c22565b515103620248a8575060009015620248825750516001600160a01b03166000908152610327602052604090205490620159329062006854905162004c22565b90516001600160a01b031681526106bf6020526040902054906201593290620068549081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b601e810362024a8c5750602001938451510362024a335760026202497f855162004c22565b515103620249da575060009015620249bc5750516001600160a01b03166000908152610327602052604090205462015a3262006854835162004c22565b90516001600160a01b031681526106bf602052604090205462023270565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b9294509291601f141590506200663857620031f89262027282565b91909160018251510362024b38571562024b0457620031f89160018060a01b039051166000526103206020526200112762024afe62024aef6001604060002001935162004c22565b51926040519283809262002bd5565b62031908565b620031f89160018060a01b039051166000526106b86020526200112762024afe62024aef6001604060002001935162004c22565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b916020019160018351510362024c7a57600162024baf845162004c22565b51510362024c1b571562024bec57516001600160a01b031660009081526103206020526040902060020154905162015b6090620068549062004c22565b516001600160a01b031660009081526106b86020526040902060020154905162015b6090620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024dbf57600162024cf4845162004c22565b51510362024d60571562024d3157516001600160a01b03166000908152610320602052604090206002015490516201583190620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362024f0457600162024e39845162004c22565b51510362024ea5571562024e7657516001600160a01b03166000908152610320602052604090206002015490516201593290620068549062004c22565b516001600160a01b031660009081526106b8602052604090206002015490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202514057600262024f81845162004c22565b515103620250e05762024f9962006854845162004c22565b5162024faa62015a55855162004c22565b51106202505a57156202502b5760018060a01b0390818451166000526103209182825260026040600020015462024fe662006854865162004c22565b511115948562024ff857505050505090565b9091929394505116600052526202501d62015a55600260406000200154925162004c22565b511015388080808062016526565b60018060a01b0390818451166000526106b89182825260026040600020015462024fe662006854865162004c22565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202531b57620251bf835162004c22565b515115620252b3579483949560001462025243576000935b620251e6575050505050600090565b620251f2835162004c22565b51518410156201652e57849360018060a01b0383511660005261032082526002604060002001546202522a8262007494875162004c22565b511462016526576202523c9062004c12565b93620251d7565b6000935b62025256575050505050600090565b62025262835162004c22565b51518410156201652e57849360018060a01b038351166000526106b882526002604060002001546202529a8262007494875162004c22565b51146201652657620252ac9062004c12565b9362025247565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202537f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202555757600262025418845162004c22565b515103620254f7578015620254db576202544560646202543d62006854865162004c22565b511062025377565b1562025492576202545b62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201583162015a55604060002054925162004c22565b620254a262006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201583162015a55604060002054925162004c22565b620254f160646202543d62006854865162004c22565b62025445565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620255bb57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062031e08833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202579357600262025654845162004c22565b5151036202573357801562025717576202568160646202567962006854865162004c22565b5110620255b3565b15620256ce576202569762006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b016020526201593262015a55604060002054925162004c22565b620256de62006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b016020526201593262015a55604060002054925162004c22565b6202572d60646202567962006854865162004c22565b62025681565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620257f757565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b91909160208092019160018351510362025a8d57600391826202588a855162004c22565b51510362025a2a57801562025a0e57620258b76064620258af62006854875162004c22565b5110620257ef565b156202596b57620258cd62006854845162004c22565b5191606483101562004c305760018060a01b03948186825116946000958652811b01835260408420546202590662015a55875162004c22565b5111159586620259195750505050505090565b909192939495506202593062006854875162004c22565b51916064831015620216cf5751168452811b019052604090205490516202595c906201c50b9062004c22565b51101538808080808062019e53565b6202597b62006854845162004c22565b51606481101562004c305760018060a01b03948581511693600094855261039b8093821b0184526040852054620259b762015a55885162004c22565b5111159687620259cb575050505050505090565b9091929394959650620259e362006854885162004c22565b51926064841015620217d057511685521b01905260409020549051620216bf906201c50b9062004c22565b62025a246064620258af62006854875162004c22565b620258b7565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152fd5b1562025aee57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025cb457600262025b7b845162004c22565b51510362025c5a57801562025c3e5762025ba8606462025ba062006854865162004c22565b511062025ae6565b1562025bf55762025bbe62006854835162004c22565b51606481101562004c305760039160018060a01b03905116600052811b0160205262015b6062015a55604060002054925162004c22565b62025c0562006854835162004c22565b51606481101562004c305761039b9160018060a01b0390511660005260031b0160205262015b6062015a55604060002054925162004c22565b62025c54606462025ba062006854865162004c22565b62025ba8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b1562025d1657565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062031e28833981519152606482015260008051602062031ba8833981519152608482015260a490fd5b916020019160018351510362025f7757600262025da3845162004c22565b51510362025f1d57801562025f015762025dd0606462025dc862006854865162004c22565b511062025d0e565b1562025e745762025de662006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e605762025e3762006854845162004c22565b51906064821015620014905750620202a86201583192600662015a559360031b01549062005007565b634e487b7160e01b81526011600452602490fd5b62025e8462006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e605762025ed762006854845162004c22565b51906064821015620014905750620202a8620158319261039e62015a559360031b01549062005007565b62025f17606462025dc862006854865162004c22565b62025dd0565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b91602001916001835151036202616e57600262025fef845162004c22565b51510362026114571562026087576202600d62006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202605e62006854845162004c22565b51906064821015620014905750620202a86201593292600662015a559360031b01549062005007565b6202609762006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e6057620260ea62006854845162004c22565b51906064821015620014905750620202a8620159329261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90602080930191600183515103620264b3576002620261e8845162004c22565b51510362026459571562026322576202620662006854835162004c22565b516064908181101562004c305760018060a01b03948584511693600094855260038093811b0182526040852054848102908082048614901517156202630e576202625562006854885162004c22565b5185811015620217d057841b60060154620262709162005007565b6202628062015a55885162004c22565b511115968762026294575050505050505090565b9091929394959650620262ac62006854885162004c22565b519185831015620217d05751168552821b820190526040832054828102939080159085048414171562025e6057620262e962006854865162004c22565b51928310156200149057501b60060154620216bf916201c50b91620202a89162005007565b634e487b7160e01b86526011600452602486fd5b6202633262006854835162004c22565b519060648083101562004c305760018060a01b03948583511693600094855261039b809160031b018252604085205493838502948086048514901517156202630e576202638462006854885162004c22565b519484861015620217d057620263a59061039e809760031b01549062005007565b620263b562015a55895162004c22565b5111159788620263ca57505050505050505090565b909192939495969750620263e362006854895162004c22565b51918583101562026445575116865260031b0190526040832054928184029380850483149015171562025e60576202642062006854865162004c22565b519182101562001490575060031b0154620217bf916201c50b91620202a89162005007565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620266aa5760026202652b845162004c22565b515103620266505715620265c3576202654962006854835162004c22565b5190606482101562004c3057516001600160a01b03166000908152600391821b9091016020526040812054606480820292918015908404909114171562025e60576202659a62006854845162004c22565b51906064821015620014905750620202a862015b6092600662015a559360031b01549062005007565b620265d362006854835162004c22565b5190606482101562004c3057516001600160a01b0316600090815260039190911b61039b016020526040812054606480820292918015908404909114171562025e60576202662662006854845162004c22565b51906064821015620014905750620202a862015b609261039e62015a559360031b01549062005007565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620267ca57600162026722845162004c22565b515103620267705780156202675057620202a86200685491620158319360018060a01b03905116906201a63a565b505162015831906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620268ea57600162026842845162004c22565b515103620268905780156202687057620202a86200685491620159329360018060a01b03905116906201a63a565b505162015932906200685490620202a8906001600160a01b03166201a5e7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026a8057600262026963835162004c22565b51510362026a26578015620269d45782516001600160a01b03906202698b908216836201a63a565b6202699b62006854855162004c22565b5111159384620269ac575050505090565b620269c793945091620202a89162015a55935116906201a63a565b51101538808080620050f7565b5081516001600160a01b0390620269ed9082166201a5e7565b620269fd62006854845162004c22565b511115928362026a0d5750505090565b620206eb92935062015a5591620202a89151166201a5e7565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026ba057600162026af8845162004c22565b51510362026b4657801562026b2657620202a86200685491620158319360018060a01b03905116906201b536565b505162015831906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026cc057600162026c18845162004c22565b51510362026c6657801562026c4657620202a86200685491620159329360018060a01b03905116906201b536565b505162015932906200685490620202a8906001600160a01b03166201b4e3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020019060018251510362026e4957600262026d39835162004c22565b51510362026def57801562026d9d5782516001600160a01b039062026d61908216836201b536565b62026d7162006854855162004c22565b511115938462026d82575050505090565b620269c793945091620202a89162015a55935116906201b536565b5081516001600160a01b039062026db69082166201b4e3565b62026dc662006854845162004c22565b511115928362026dd65750505090565b620206eb92935062015a5591620202a89151166201b4e3565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b916020019160018351510362026f8157600162026ec1845162004c22565b51510362026f27571562026efb57516001600160a01b03166000908152610325602052604090205490516201583190620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201583190620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9160200191600183515103620270b957600162026ff9845162004c22565b5151036202705f57156202703357516001600160a01b03166000908152610325602052604090205490516201593290620068549062004c22565b516001600160a01b031660009081526106bd602052604090205490516201593290620068549062004c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031c288339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b90916020809101916001835151036202722857600262027134845162004c22565b515103620271ce5715620271a25760018060a01b039081845116600052610325918282526040600020546202716e62006854865162004c22565b51111594856202718057505050505090565b9091929394505116600052526202501d62015a55604060002054925162004c22565b60018060a01b0390818451166000526106bd918282526040600020546202716e62006854865162004c22565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062031b488339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b909160400160019283825151036202735e57839215620272fd576000925b620272ae5750505050600090565b620272ba825162004c22565b5151831015620161f557839260018060a01b038083511690620272e38362007494875162004c22565b511614620050f757620272f69062004c12565b92620272a0565b6000925b6202730f5750505050600090565b6202731b825162004c22565b5151831015620161f557839260018060a01b038083511690620273448362007494875162004c22565b511614620050f757620273579062004c12565b9262027301565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d7573742068604482015260008051602062031dc88339815191526064820152608490fd5b9161012d81146202764b5761012e81146202763f5761012f811462027633576101308114620276275761013181146202761b5761013281146202760f57610133811462027603576101348114620275f7576101358114620275eb576101368114620275df576101378114620275d3576101388114620275c7576101398114620275bb5761013a8114620275af5761013b8114620275a35761013c8114620275975761013d81146202758a5761013e81146202757d5761013f81146202757057610140811462027563576101418114620275575761014281146202754b5761014381146202753f57610144811462027533576101458114620275275761014681146202751b5761014781146202750f57610173811462027502576101748114620274f65761017514620274eb575050600090565b620031f89162029e66565b50620031f89162029ca3565b5050620031f89062029c47565b50620031f89162029af9565b50620031f891620297af565b50620031f89162029635565b50620031f891620294b4565b50620031f891620292ef565b50620031f8916202918d565b50620031f89162029012565b5050620031f89062028f0b565b5050620031f89062028df6565b5050620031f89062028cf4565b5050620031f89062028bec565b50620031f89162028a6b565b50620031f891620288ea565b50620031f89162028767565b50620031f891620285e4565b50620031f89162028463565b50620031f891620282e2565b50620031f8916202815f565b50620031f89162027fdc565b50620031f89162027e9d565b50620031f89162027d5e565b50620031f89162027c39565b50620031f89162027b15565b50620031f891620279d7565b50620031f89162027899565b50620031f89162027775565b50620031f891906020019060019182815151036202771c57602082015160268110156200294257600d0362006638576202768683926202a012565b6000935b620276985750505050600090565b620276a4825162004c22565b5151841015620161f5576000835b620276cc575b50620276c5839462004c12565b936202768a565b93929181518510156202771357620276ea8462007494835162004c22565b51620276f7868462004c79565b511462015cb2576202770b83949562004c12565b9092620276b2565b919293620276b8565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202784057602082015160268110156200294257600d036200663857620277aa83926202a012565b6000935b620277bc5750505050600090565b620277c8825162004c22565b5151841015620161f5576000835b620277f0575b50620277e9839462004c12565b93620277ae565b939291815185101562027837576202780e8462007494835162004c22565b516202781b868462004c79565b511462015cb2576202782f83949562004c12565b9092620277d6565b919293620277dc565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202797e57602082015160268110156200294257600d036200663857620278ce83926202a012565b6000925b620278dd5750505090565b620278e9825162004c22565b515183101562015e7257600080855b62027918575b501562015deb5762027911849362004c12565b92620278d2565b829593919495518110156202797357620279388662007494845162004c22565b5162027945828562004c79565b51146202796657906202795a84939262004c12565b909395949192620278f8565b50918094935038620278fe565b9493909294620278fe565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027abc57602082015160268110156200294257600d03620066385762027a0c83926202a012565b6000925b62027a1b5750505090565b62027a27825162004c22565b515183101562015e7257600080855b62027a56575b501562015deb5762027a4f849362004c12565b9262027a10565b8295939194955181101562027ab15762027a768662007494845162004c22565b5162027a83828562004c79565b511462027aa4579062027a9884939262004c12565b90939594919262027a36565b5091809493503862027a3c565b949390929462027a3c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027be057602082015160268110156200294257600e03620066385762027b4a83926202a012565b6000935b62027b5c5750505050600090565b62027b68825162004c22565b5151841015620161f5576000835b62027b90575b5062027b89839462004c12565b9362027b4e565b939291815185101562027bd75762027bae8462007494835162004c22565b5162027bbb868462004c79565b511462015cb25762027bcf83949562004c12565b909262027b76565b91929362027b7c565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362027d0457602082015160268110156200294257600e03620066385762027c6e83926202a012565b6000935b62027c805750505050600090565b62027c8c825162004c22565b5151841015620161f5576000835b62027cb4575b5062027cad839462004c12565b9362027c72565b939291815185101562027cfb5762027cd28462007494835162004c22565b5162027cdf868462004c79565b511462015cb25762027cf383949562004c12565b909262027c9a565b91929362027ca0565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027e4357602082015160268110156200294257600e03620066385762027d9383926202a012565b6000925b62027da25750505090565b62027dae825162004c22565b515183101562015e7257600080855b62027ddd575b501562015deb5762027dd6849362004c12565b9262027d97565b8295939194955181101562027e385762027dfd8662007494845162004c22565b5162027e0a828562004c79565b511462027e2b579062027e1f84939262004c12565b90939594919262027dbd565b5091809493503862027dc3565b949390929462027dc3565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362027f8257602082015160268110156200294257600e03620066385762027ed283926202a012565b6000925b62027ee15750505090565b62027eed825162004c22565b515183101562015e7257600080855b62027f1c575b501562015deb5762027f15849362004c12565b9262027ed6565b8295939194955181101562027f775762027f3c8662007494845162004c22565b5162027f49828562004c79565b511462027f6a579062027f5e84939262004c12565b90939594919262027efc565b5091809493503862027f02565b949390929462027f02565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202810557600262027ffc825162004c22565b515103620280ab57602082015160268110156200294257600d0362006638576202802783926202a012565b906000925b6202803a5750505050600090565b8151831015620161f557826202805285948462004c79565b516202806362006854845162004c22565b5111158062028084575b620050f7576202807d9062004c12565b926202802c565b5062028091818462004c79565b51620280a262015a55845162004c22565b5110156202806d565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001906001918281515103620282885760026202817f825162004c22565b5151036202822e57602082015160268110156200294257600d036200663857620281aa83926202a012565b906000925b620281bd5750505050600090565b8151831015620161f55782620281d585948462004c79565b51620281e662006854845162004c22565b5111158062028207575b620050f757620282009062004c12565b92620281af565b5062028214818462004c79565b516202822562015a55845162004c22565b511015620281f0565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202840957600262028302825162004c22565b515103620283af57602082015160268110156200294257600d0362006638576202832d83926202a012565b60009182945b6202834057505050905090565b815185101562015cba5762028356858362004c79565b516202836762006854835162004c22565b5111801562028389575b62015cb25762028382849562004c12565b9462028333565b5062028396858362004c79565b51620283a762015a55835162004c22565b511062028371565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202858a57600262028483825162004c22565b5151036202853057602082015160268110156200294257600d036200663857620284ae83926202a012565b60009182945b620284c157505050905090565b815185101562015cba57620284d7858362004c79565b51620284e862006854835162004c22565b511180156202850a575b62015cb25762028503849562004c12565b94620284b4565b5062028517858362004c79565b516202852862015a55835162004c22565b5110620284f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202870d57600262028604825162004c22565b515103620286b357602082015160268110156200294257600e0362006638576202862f83926202a012565b906000925b620286425750505050600090565b8151831015620161f557826202865a85948462004c79565b516202866b62006854845162004c22565b511115806202868c575b620050f757620286859062004c12565b9262028634565b5062028699818462004c79565b51620286aa62015a55845162004c22565b51101562028675565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b906020019060019182815151036202889057600262028787825162004c22565b5151036202883657602082015160268110156200294257600e036200663857620287b283926202a012565b906000925b620287c55750505050600090565b8151831015620161f55782620287dd85948462004c79565b51620287ee62006854845162004c22565b511115806202880f575b620050f757620288089062004c12565b92620287b7565b506202881c818462004c79565b516202882d62015a55845162004c22565b511015620287f8565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028a115760026202890a825162004c22565b515103620289b757602082015160268110156200294257600e0362006638576202893583926202a012565b60009182945b6202894857505050905090565b815185101562015cba576202895e858362004c79565b516202896f62006854835162004c22565b5111801562028991575b62015cb2576202898a849562004c12565b946202893b565b506202899e858362004c79565b51620289af62015a55835162004c22565b511062028979565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362028b9257600262028a8b825162004c22565b51510362028b3857602082015160268110156200294257600e03620066385762028ab683926202a012565b60009182945b62028ac957505050905090565b815185101562015cba5762028adf858362004c79565b5162028af062006854835162004c22565b5111801562028b12575b62015cb25762028b0b849562004c12565b9462028abc565b5062028b1f858362004c79565b5162028b3062015a55835162004c22565b511062028afa565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602080820190815160268110156200294257600d14801562028cde575b62028c905750805160268110156200294257600f1490811562028c79575b5062028c335750600090565b6000805b6060604084015101518051821015620166ee5762028c588260e09262004c79565b5101511562021ab257604062028c7060609262004c12565b91505062028c37565b90505160268110156200294257600c143862028c27565b60009150815b8160408501510151805182101562028cd45762028cb68260019262004c79565b51151503620166e75762028ccc60409162004c12565b905062028c96565b5050505050600190565b50815160268110156200294257600e1462028c09565b602080820190815160268110156200294257600d14801562028de0575b62028d9c5750805160268110156200294257600f1490811562028d85575b5062028d3b5750600090565b6000805b6060604084015101518051821015620166ee5760e062028d628360019362004c79565b51015115151462021ab257604062028d7c60609262004c12565b91505062028d3f565b90505160268110156200294257600c143862028d2f565b60009150815b8160408501510151805182101562028cd45762028dc28260019262004c79565b51151514620166e75762028dd860409162004c12565b905062028da2565b50815160268110156200294257600e1462028d11565b602080820190815160268110156200294257600d14801562028ef5575b62028ea75750805160268110156200294257600f1490811562028e90575b5062028e3d5750600090565b60005b60606040830151015180518210156200663857819060e062028e66600193849362004c79565b51015115151462028e8a5750604062028e8160609262004c12565b91505062028e40565b91505090565b90505160268110156200294257600c143862028e31565b905060005b8160408401510151805182101562015deb57819062028ecf600192839262004c79565b5115151462028eee575062028ee660409162004c12565b905062028eac565b9250505090565b50815160268110156200294257600e1462028e13565b602080820190815160268110156200294257600d14801562028ffc575b62028fb55750805160268110156200294257600f1490811562028f9e575b5062028f525750600090565b60005b6060604083015101518051821015620066385762028f768260e09262004c79565b5101511562028f9757604062028f8e60609262004c12565b91505062028f55565b5050600190565b90505160268110156200294257600c143862028f46565b905060005b8160408401510151805182101562015deb57819062028fdd600192839262004c79565b5115150362028eee575062028ff460409162004c12565b905062028fba565b50815160268110156200294257600e1462028f28565b602080920191600192838151510362029133576202903284915162004c22565b515103620290da57808201805160268110156200294257600f14159081620290c2575b506200663857600091835b6202906e5750505050600090565b60408101926060845101519384518210156201d5da57620290a96200685460a0866202909c868b9a62004c79565b5101519351015162004c22565b5114620050f757620290bb9062004c12565b9262029060565b90505160268110156200294257600c14153862029055565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202929557818301805160268110156200294257600f141590816202927d575b5062015deb5783926000945b620291d6575050505050600090565b6040810160608082510151518710156202927557906000865b6202920b575b50505062029204849562004c12565b94620291c7565b62029217855162004c22565b51518110156202926f57856202923289858551015162004c79565b510151620292468262007494885162004c22565b51146202926457906202925b87939262004c12565b909192620291ef565b505050505050905090565b620291f5565b505062015fff565b90505160268110156200294257600c141538620291bb565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092019160019283815151036202945a57600262029310825162004c22565b5151036202940057818301805160268110156200294257600f14159081620293e8575b5062015deb57600092845b6202934d575050505050600090565b60408101936060948581510151958651831015620293df578286918262029376838c9b62004c79565b5101516202938962006854895162004c22565b5111159384620293af575b505050506201652657620293a89062004c12565b936202933e565b620293bf93945051015162004c79565b510151620293d262015a55855162004c22565b5110158482388062029394565b50505062015fff565b90505160268110156200294257600c14153862029333565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b60208092016001928382515103620295dc5783620294d3835162004c22565b5151036202957d57808301805160268110156200294257600f1415908162029565575b5062015deb57600092845b62029510575050505050600090565b6060604082015101519384518110156202955e57826202953282889762004c79565b5101516202954562006854865162004c22565b51106201652657620295579062004c12565b9362029501565b5062015fff565b90505160268110156200294257600c141538620294f6565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b6020809201600192838251510362029756578362029654835162004c22565b515103620296f757808301805160268110156200294257600f14159081620296df575b5062015deb57600092845b62029691575050505050600090565b6060604082015101519384518110156202955e5782620296b382889762004c79565b510151620296c662006854865162004c22565b51116201652657620296d89062004c12565b9362029682565b90505160268110156200294257600c14153862029677565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152fd5b9060200190600191828151510362029a9f5782620297ce825162004c22565b51510362029a3f5760208201805160268110156200294257600f1415908162029a27575b5062006638576000939291825b6202980e575b50600093505050565b604081019460608087510151805183101562029a1e5762029834836202983b9262004c79565b51620055ad565b90600691828110156200294257158062029a05575b620299ab57620298696202983484838b51015162004c79565b828110156200294257861480620299eb575b620299ab57620298946202983484838b51015162004c79565b82811015620029425760028091149081620299d0575b50620299ab57620298c46202983484838b51015162004c79565b82811015620029425760038091149081620299b5575b50620299ab57620298f46202983484838b51015162004c79565b9782891015620029425760048099148062029991575b6202998657836202992392620298349251015162004c79565b908110156202997157849596506005809114908162029956575b50620050f7576202994e9062004c12565b9493620297ff565b90506202996862006854855162004c22565b5114386202993d565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b5088620299a362006854885162004c22565b51146202990a565b5093955050505050565b9050620299c762006854875162004c22565b511438620298da565b9050620299e262006854875162004c22565b511438620298aa565b5085620299fd62006854875162004c22565b51146202987b565b5062029a1662006854865162004c22565b511562029850565b50505062029805565b90505160268110156200294257600c141538620297f2565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b9060200190600191828151510362029bed5760208201805160268110156200294257600f1415908162029bd5575b50620066385782916000935b62029b415750505050600090565b6040810160608082510151518610156201d5da57906000855b62029b76575b50505062029b6f839462004c12565b9362029b33565b62029b82855162004c22565b515181101562029bcf578262029b9d88828551015162004c79565b51015162029bb18262007494885162004c22565b51146202284a579062029bc686939262004c12565b90919262029b5a565b62029b60565b90505160268110156200294257600c14153862029b27565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b602081015160268110156200294257601303620075075760005b604080830151015180518210156200663857819060c062029c86600193849362004c79565b51015115151462028e8a575062029c9d9062004c12565b62029c61565b60209182018051516000949360019390916000190162029e0c57600262029ccb845162004c22565b51510362029db257818101516026811015620029425760130362029da8576000959493929190835b62029d02575b50505050909150565b604080820190808251015180518a101562029d9f5784918262029d278c809462004c79565b51015162029d3a62006854895162004c22565b511115938462029d6f575b5050505062029d655762029d5c8495969762004c12565b96959462029cf3565b5050509150915090565b62029d7f93945051015162004c79565b51015162029d9262015a55855162004c22565b5110158288388062029d45565b50505062029cf9565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062031ae88339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f3244415252415920604482015260008051602062031d888339815191526064820152608490fd5b90602001600191828251510362029fb7578262029e84835162004c22565b51510362029f5957602081015160268110156200294257601303620066385782916000935b62029eb75750505050600090565b6040808301908082510151518610156201d5da57906000855b62029eec575b50505062029ee5839462004c12565b9362029ea9565b62029efc87848451015162004c79565b51515181101562029f535762029f248162029f1c89868651015162004c79565b515162004c79565b5162029f3562006854865162004c22565b51146202284a579062029f4a86939262004c12565b90919262029ed0565b62029ed6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b602090818101805160268110156200294257600d149081156202a12d575b506202a0525750506040516202a0468162002a5e565b60008152600036813790565b6040019160a0916202a0746202a06c848651015162004c22565b515162004d95565b93600092835b6202a089868451015162004c22565b51518110156202a0e6576202a0a381858551015162004c79565b516202a0c1575b6202a0b96202a0899162004c12565b90506202a07a565b936202a0b96202a0dc828762001a9c6202a089958c62004c79565b959150506202a0aa565b50935050506202a0f68162004d95565b9060005b8181106202a109575090925050565b806202a11a6202a127928762004c79565b5162001a9c828662004c79565b6202a0fa565b90505160268110156200294257600e14386202a030565b9161025981146202a4c05761025a81146202a3d05761025b81146202a2e05761025c81146202a1ca5761025d81146202a1be5761025e81146202a1b25761025f81146202a1a657610260146202a19b575050600090565b620031f8916202a97e565b50620031f8916202a804565b50620031f8916202a6f3565b50620031f8916202a5b0565b50602001906001825151036202a2865760026202a1e8835162004c22565b5151036202a22c57602001908151516202a20762006854835162004c22565b51111591826202a21657505090565b62015a5c91925062015a55905151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a3765760016202a2fe835162004c22565b5151036202a31c5762006854602062015b6092015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a4665760016202a3ee835162004c22565b5151036202a40c576200685460206201593292015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b50602001906001825151036202a5565760016202a4de835162004c22565b5151036202a4fc576200685460206201583192015151925162004c22565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919091602080930160019182825151036202a69957826202a5d2835162004c22565b5151036202a63f57938293946000935b6202a5f1575050505050600090565b818101519384518110156202955e576202a616620076f684620067ee848a9962004c79565b6202a62662006854865162004c22565b511462016526576202a6389062004c12565b936202a5e2565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202a7aa578293946000945b6202a71e575050505050600090565b8281018051518610156202955e576000855b6202a74b575b50506202a744849562004c12565b946202a70f565b6202a757845162004c22565b51518110156202a7a4576202a777620076f686620067ee8a865162004c79565b6202a7888262007494875162004c22565b51146202284a57906202a79c869262004c12565b90916202a730565b6202a736565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b91909160208093019060019182815151036202a92457846202a827825162004c22565b5151920191825151036202a8a95782939460009283955b6202a84d575b50505050905090565b805180518710156202a8a257620076f683620067ee896202a86e9462004c79565b6202a87f8762007494865162004c22565b51036202a899576202a892859662004c12565b956202a83e565b50505091505090565b506202a844565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b919060208091019060019182815151036202aa4e578293946000935b6202a9a6575050505090565b8281018051518510156202aa4757856000918183905b6202a9de575b5050501562015fff576202a9d7859462004c12565b936202a99a565b6202a9ea865162004c22565b51518110156202aa41576202aa0a620076f688620067ee8b865162004c79565b6202aa1b8262007494895162004c22565b51146202aa34576202aa2d9062004c12565b826202a9bc565b505090508538806202a9c2565b6202a9c2565b50620050f7565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b916101cd81146202aafa576101ce81146202aaee576101cf81146202aae2576101d0146202aad7575050600090565b620031f8916202b108565b50620031f8916202aee6565b50620031f8916202acf3565b50620031f8919060200160019182825151036202ac995760026202ab1f835162004c22565b5151036202ac3f576202ab32816202b2fb565b1562006638576202ab43906202b358565b9180939150518251036202abd457600092845b6202ab65575050505050600090565b80518410156201652e57836202ab7d86958362004c79565b516202ab8e62006854855162004c22565b5114806202abae575b62016526576202aba79062004c12565b936202ab56565b506202abbb818562004c79565b516202abcc62015a55855162004c22565b51106202ab97565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202ae8c5760026202ad12835162004c22565b5151036202ae32576202ad25816202b2fb565b1562006638576202ad36906202b358565b9180939150518251036202adc757600092845b6202ad58575050505050600090565b80518410156201652e57836202ad7086958362004c79565b516202ad8162006854855162004c22565b5114806202ada1575b62016526576202ad9a9062004c12565b936202ad49565b506202adae818562004c79565b516202adbf62015a55855162004c22565b51116202ad8a565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b0ae5760036202af05835162004c22565b5151036202b054576202af18816202b2fb565b1562006638576202af29906202b358565b9180939150518251036202afe957600092845b6202af4b575050505050600090565b80518410156201652e57836202af6386958362004c79565b516202af7462006854855162004c22565b5114806202afc2575b806202af9b575b62016526576202af949062004c12565b936202af3c565b506202afa8818562004c79565b516202afb96201c50b855162004c22565b5110156202af84565b506202afcf818562004c79565b516202afe062015a55855162004c22565b5111156202af7d565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b9060200160019182825151036202b2a15760026202b127835162004c22565b5151036202b247576202b13a816202b2fb565b1562006638576202b14b906202b358565b9180939150518251036202b1dc57600092845b6202b16d575050505050600090565b80518410156201652e57836202b18586958362004c79565b516202b19662006854855162004c22565b5114806202b1b6575b62016526576202b1af9062004c12565b936202b15e565b506202b1c3818562004c79565b516202b1d462015a55855162004c22565b51146202b19f565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062031bc88339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b6020018051602681101562002942576014149081156202b340575b81156202b329575b5062022c9957600090565b90505160268110156200294257601e14386202b31e565b8091505160268110156200294257601514906202b316565b6202b363816202b2fb565b156202b46957602081018051602681101562002942576014146202b454578051602681101562002942576015146202b41d575160268110156200294257601e146202b3eb57506040516202b3b78162002a5e565b60008152604051916202b3ca8362002a5e565b60008352604051916202b3dd8362002a5e565b600083526000368137929190565b604001906202b3ff60a08351015162004c22565b51906202b41660a06200749b818651015162004c46565b5191929190565b50604001906202b43260a08351015162004c22565b51906202b41660a06202b449818651015162004c57565b519451015162004c68565b50604001906202b3ff60a08351015162004c22565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202b5b5576101b081146202b5a9576101b181146202b59d576101b281146202b591576101b381146202b585576101b481146202b579576101b581146202b56d576101b6146202b562575050600090565b620031f8916202bffe565b50620031f8916202be59565b50620031f8916202bcf4565b50620031f8916202bb8f565b50620031f8916202ba2a565b50620031f8916202b885565b50620031f8916202b720565b50620031f891906020019060019182815151036202b6c657826202b5da825162004c22565b5151036202b66c576020820151602681101562002942576011036200663857600091835b6202b60c5750505050600090565b604081019260a0936202b623858251015162004c22565b51518210156201d5da57816200749487966202b6429351015162004c22565b516202b65362006854855162004c22565b5110620050f7576202b6659062004c12565b926202b5fe565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b82b57826202b73f825162004c22565b5151036202b7d1576020820151602681101562002942576011036200663857600091835b6202b7715750505050600090565b604081019260a0936202b788858251015162004c22565b51518210156201d5da57816200749487966202b7a79351015162004c22565b516202b7b862006854855162004c22565b5111620050f7576202b7ca9062004c12565b926202b763565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202b9d05760026202b8a5825162004c22565b5151036202b976576020820151602681101562002942576011036200663857600091835b6202b8d75750505050600090565b604081019260a0936202b8ee858251015162004c22565b51518210156201d5da5781856202b90f82620074948a998651015162004c22565b516202b92062006854885162004c22565b51111592836202b945575b505050620050f7576202b93e9062004c12565b926202b8c9565b5101516202b9599250620074949062004c22565b516202b96a62015a55855162004c22565b5110158138806202b92b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bb3557826202ba49825162004c22565b5151036202badb576020820151602681101562002942576011036200663857600091835b6202ba7b5750505050600090565b604081019260a0936202ba92858251015162004c22565b51518210156201d5da57816200749487966202bab19351015162004c22565b516202bac262006854855162004c22565b5114620050f7576202bad49062004c12565b926202ba6d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bc9a57826202bbae825162004c22565b5151036202bc40576020820151602681101562002942576012036200663857600091835b6202bbe05750505050600090565b604081019260a0936202bbf7858251015162004c22565b51518210156201d5da57816200749487966202bc169351015162004c22565b516202bc2762006854855162004c22565b5110620050f7576202bc399062004c12565b926202bbd2565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bdff57826202bd13825162004c22565b5151036202bda5576020820151602681101562002942576012036200663857600091835b6202bd455750505050600090565b604081019260a0936202bd5c858251015162004c22565b51518210156201d5da57816200749487966202bd7b9351015162004c22565b516202bd8c62006854855162004c22565b5111620050f7576202bd9e9062004c12565b926202bd37565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202bfa45760026202be79825162004c22565b5151036202bf4a576020820151602681101562002942576012036200663857600091835b6202beab5750505050600090565b604081019260a0936202bec2858251015162004c22565b51518210156201d5da5781856202bee382620074948a998651015162004c22565b516202bef462006854885162004c22565b51111592836202bf19575b505050620050f7576202bf129062004c12565b926202be9d565b5101516202bf2d9250620074949062004c22565b516202bf3e62015a55855162004c22565b5110158138806202beff565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b30604482015260008051602062031d488339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b906020019060019182815151036202c10957826202c01d825162004c22565b5151036202c0af576020820151602681101562002942576012036200663857600091835b6202c04f5750505050600090565b604081019260a0936202c066858251015162004c22565b51518210156201d5da57816200749487966202c0859351015162004c22565b516202c09662006854855162004c22565b5114620050f7576202c0a89062004c12565b926202c041565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062031be88339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062031c688339815191526064820152608490fd5b156202c16b57565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202c1ba8162002edc565b6202c1c86200dbbb62031666565b6202c1d38162002edc565b600181036202c1f157506202c1eb6200dbe762031666565b61038f55565b6202c1fc8162002edc565b600281036202c20c575061039055565b6202c2178162002edc565b600381036202c227575061039155565b806202c23560049262002edc565b146202c23e5750565b61039255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b82518110156202c9df5760e06202c307828562004c79565b510151156202c6be576202c32062029834828562004c79565b600680821015620029425760049182036202c46b575060209060016003836202c34a868962004c79565b51015106036202c3675750506202c3619062004c12565b6202c2ef565b62004c0e82846202c45060636202c3986202c391856202c388868e62004c79565b51015162005028565b9362005028565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202c3d462004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c3fd82518093601396878501910162002d20565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002ab3565b5193849362461bcd60e51b8552840152602483019062002d45565b6202c47b62029834848762004c79565b818110156201d190576001036202c58b575060209060026003836202c4a1868962004c79565b51015106036202c4b85750506202c3619062004c12565b62004c0e82846202c450605d6202c4d96202c391856202c388868e62004c79565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202c51562004ce38388016202c2b3565b0160008051602062031c4883398151915281526202c53e82518093601396878501910162002d20565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002ab3565b6202c59b62029834848762004c79565b90811015620144ba576002036202c6a2576020906003826202c5be858862004c79565b510151066202c5d45750506202c3619062004c12565b62004c0e82846202c4506202c5fa6202c5f3846202c388858d62004c79565b9262005028565b916202c69360409384519586936202c61862004ce38387016202c2b3565b0160008051602062031c4883398151915281528151906202c642826013948d868501910162002d20565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002ab3565b60405162461bcd60e51b815290819062004c0e9082016202c244565b6202c6ce62029834828562004c79565b6006908181101562002942576005036202c7e95750602060016003826202c6f6858862004c79565b51015106036202c70c57506202c3619062004c12565b62004c0e826202c7cc60526202c72d6202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202c76862004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c792826013958c878501910162002d20565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002ab3565b5192839262461bcd60e51b84526004840152602483019062002d45565b6202c7f962029834838662004c79565b9080821015620029425760039182036202c90857506002602091826202c820858862004c79565b51015106036202c83657506202c3619062004c12565b62004c0e826202c7cc605c6202c8576202c391866202c38881998c62004c79565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202c89262004ce38387016202c27c565b0160008051602062031c4883398151915281528251906202c8bc826013958c878501910162002d20565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002ab3565b6202c91862029834848762004c79565b9081101562002942576002036202c9c457602090816202c939848762004c79565b510151066202c94e57506202c3619062004c12565b62004c0e826202c7cc6202c96d6202c5f3856202c38881988b62004c79565b916202c9b560409384519788936202c98b62004ce38387016202c27c565b0160008051602062031c4883398151915281528151906202c642826013948b868501910162002d20565b03601f19810186528562002ab3565b60405162461bcd60e51b81528062004c0e600482016202c244565b509050565b156202c9ec57565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202ca7557565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202cacd57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202cb2e57565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202cb8f57565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202cbe857565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202cc4a57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202ccad57565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202cd1357565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202cd7557565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202cdcd57565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202ce2c57565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202ce8557565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202cede60c08351015162004c22565b51916202cf0060a06202cef5818451015162004c22565b519251015162004c46565b51936202cf15845183511462000ee962031533565b6202cf28845186511462000ee962031533565b60005b84518110156202cf84576202cf41818462004c79565b5190606482101562004c30576202cf7e9160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202cf2b565b5092919360005b83518110156202d0ae576202cfa1818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202cfe060406000205462007da7868962004c79565b906202cfed868a62004c79565b51918783101562004c3057846202d01a93878f5116600052811b01845260406000205562000ee962031637565b6202d026848862004c79565b518581101562004c30578290846202d03f878c62004c79565b5116600052811b0181526202d05f6040600020546200685b868962004c79565b9190926202d06e868a62004c79565b519687101562004c30576202d0a89662000ef0956202d08e888d62004c79565b5116600052811b01905260406000205562000ee96203169c565b6202cf8b565b5050620111156202d0bf91620312cf565b90604051936202d0cf8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d0f68562004c22565b526000935b81518510156202d417576202d111858362004c79565b51946202d11f845162004d95565b916000936202d12f825162004d95565b610920528496855b87518110156202d1d7576202d15e610960516202d155838b62004c79565b51168b620310b9565b15806202d1a0575b6202d17d575b6202d1779062004c12565b6202d137565b956202d1976202d17791610960516200a1478a8c62004c79565b9690506202d16c565b5060648a101562004c3057610960516202d1bb828a62004c79565b511660005260038a811b0160205260406000205415156202d166565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d270578762004c3057610960516202d214828c62004c79565b51166000528b602052604060002054156202d23b575b6202d2359062004c12565b6202d1f4565b976202d2676202d235918b6202d2568c610960519262004c79565b511662001a9c826109205162004c79565b9890506202d22a565b50949591939650985096909596806109405262004c3057600401806109805254956202d2a1620080b6868962006271565b61090052600097886109a0525b6109405162004c30576109a051888110156202d34c576202d2dd6202d2f3916000610940526109805162004e91565b6109605191549060031b1c166109205162031166565b156202d312575b6202d3086109a05162004c12565b6109a0526202d2ae565b976202d345906202d32a6109a0516109805162004e91565b6109605191549060031b1c1662001a9c826109005162004c79565b976202d2fa565b5095939096509690969391936000915b8383106202d3e657505050506109405162004c305761090051516001600160401b038111620029ba576202d394816109805162004fcd565b60206109005101610980516000526020600020600061096051905b8481106202d3cf5750505050506202d3c79062004c12565b93926202d0fb565b60019060208386511695019481850155016202d3af565b6200824c6202d41091610960516202d3ff868662004c79565b511662001a9c826109005162004c79565b916202d35c565b5050509050565b60408101906202d43360c08351015162004c22565b51916202d44a60a06202cef5818451015162004c22565b51936202d45f845183511462000ee962031533565b6202d472845186511462000ee962031533565b60005b84518110156202d4ce576202d48b818462004c79565b5190606482101562004c30576202d4c89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d475565b5092919360005b83518110156202d5de576202d4eb818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202d52a60406000205462007da7868962004c79565b906202d537868a62004c79565b51918783101562004c3057846202d56493878f5116600052811b01845260406000205562000ee962031637565b6202d570848862004c79565b518581101562004c30578290846202d589878c62004c79565b5116600052811b0181526202d5a96040600020546200685b868962004c79565b9190926202d5b8868a62004c79565b519687101562004c30576202d5d89662000ef0956202d08e888d62004c79565b6202d4d5565b5050620111156202d5ef91620312cf565b90604051936202d5ff8562002a97565b60018552602036818701376001600160a01b036109608190529051166202d6268562004c22565b526000935b81518510156202d417576202d641858362004c79565b51946202d64f845162004d95565b916000936202d65f825162004d95565b610940528496855b87518110156202d6fe576202d685610960516202d155838b62004c79565b15806202d6c7575b6202d6a4575b6202d69e9062004c12565b6202d667565b956202d6be6202d69e91610960516200a1478a8c62004c79565b9690506202d693565b5060648a101562004c3057610960516202d6e2828a62004c79565b511660005260038a811b0160205260406000205415156202d68d565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202d797578762004c3057610960516202d73b828c62004c79565b51166000528b602052604060002054156202d762575b6202d75c9062004c12565b6202d71b565b976202d78e6202d75c918b6202d77d8c610960519262004c79565b511662001a9c826109405162004c79565b9890506202d751565b50949591939650985096909596806109005262004c3057600401806109205254956202d7c8620080b6868962006271565b6109a05260009788610980525b6109005162004c305761098051888110156202d873576202d8046202d81a916000610900526109205162004e91565b6109605191549060031b1c166109405162031166565b156202d839575b6202d82f6109805162004c12565b610980526202d7d5565b976202d86c906202d851610980516109205162004e91565b6109605191549060031b1c1662001a9c826109a05162004c79565b976202d821565b5095939096509690969391936000915b8383106202d90d57505050506109005162004c30576109a051516001600160401b038111620029ba576202d8bb816109205162004fcd565b60206109a05101610920516000526020600020600061096051905b8481106202d8f65750505050506202d8ee9062004c12565b93926202d62b565b60019060208386511695019481850155016202d8d6565b6200824c6202d93791610960516202d926868662004c79565b511662001a9c826109a05162004c79565b916202d883565b60408101906202d95360c08351015162004c22565b51916202d96a60a06202cef5818451015162004c22565b51936202d97f845183511462000ee962031533565b6202d992845186511462000ee962031533565b60005b84518110156202d9ee576202d9ab818462004c79565b5190606482101562004c30576202d9e89160018060a01b03865116600052600390811b0160205262000ef060406000205462007d3b838a62004c79565b6202d995565b5092919360005b83518110156202dafe576202da0b818462004c79565b51906064918281101562004c305760018060a01b03908189511660005260039081602091811b0181526202da4a60406000205462007da7868962004c79565b906202da57868a62004c79565b51918783101562004c3057846202da8493878f5116600052811b01845260406000205562000ee962031637565b6202da90848862004c79565b518581101562004c30578290846202daa9878c62004c79565b5116600052811b0181526202dac96040600020546200685b868962004c79565b9190926202dad8868a62004c79565b519687101562004c30576202daf89662000ef0956202d08e888d62004c79565b6202d9f5565b5050620111156202db0f91620312cf565b90604051936202db1f8562002a97565b60018552602036818701376001600160a01b036109408190529051166202db468562004c22565b526000935b81518510156202d417576202db61858362004c79565b51946202db6f845162004d95565b916000936202db7f825162004d95565b6109a0528496855b87518110156202dc1e576202dba5610940516202d155838b62004c79565b15806202dbe7575b6202dbc4575b6202dbbe9062004c12565b6202db87565b956202dbde6202dbbe91610940516200a1478a8c62004c79565b9690506202dbb3565b5060648a101562004c3057610940516202dc02828a62004c79565b511660005260038a811b0160205260406000205415156202dbad565b5097939290969491959760009860648610159560031b9860038a019a5b89518110156202dca6578762004c3057610940516202dc5b828c62004c79565b51166000528b602052604060002054156202dc82575b6202dc7c9062004c12565b6202dc3b565b976202dc9d6202dc7c918b6202d9268c610940519262004c79565b9890506202dc71565b50949591939650985096909596806109005262004c3057600401806109205254956202dcd7620080b6868962006271565b6109805260009788610960525b6109005162004c305761096051888110156202dd82576202dd136202dd29916000610900526109205162004e91565b6109405191549060031b1c166109a05162031166565b156202dd48575b6202dd3e6109605162004c12565b610960526202dce4565b976202dd7b906202dd60610960516109205162004e91565b6109405191549060031b1c1662001a9c826109805162004c79565b976202dd30565b5095939096509690969391936000915b8383106202de1c57505050506109005162004c305761098051516001600160401b038111620029ba576202ddca816109205162004fcd565b60206109805101610920516000526020600020600061094051905b8481106202de055750505050506202ddfd9062004c12565b93926202db4b565b60019060208386511695019481850155016202dde5565b6200824c6202de4691610940516202de35868662004c79565b511662001a9c826109805162004c79565b916202dd92565b610324805482101562004c30576000526007602060002091020190600090565b815180519192916001600160401b038111620029ba576202de8f818562004fcd565b6020809201846000528260002060005b8381106202df06575050505060c08260069262002b5a95940151600185015560408101516002850155606081015160038501556202dee760808201511515600486016200572c565b6202defa60a08201516005860162005659565b0151151591016200572c565b825182820155918401916001016202de9f565b6103248054600160401b811015620029ba576202df3c916001820190556202de4d565b91909162005c965762002b5a916202de6d565b610394908154600160401b811015620029ba576001810180845581101562004c305762002b5a9260005260206000200162005659565b62006a176202df94916200754a565b610738805480600052610736908160205260ff60096040600020015460081c166203067d57610733600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202dff5604060002062003634565b9060008061032a54905b81811062030636575b5050156203061a575b60005b60208301519081518110156202e04c5762000ef06200771662010ea3620076f66020620067ee866202e0469862004c79565b6202e014565b505060005b602083015180518210156202e09957620076f66020620067ee846202e0769462004c79565b90606482101562004c30576202e09391429061032b015562004c12565b6202e051565b50506000905b602083015180518310156200a59257826202e0ba9162004c79565b51602081015160268110156200294257156200a54f576020810151602681101562002942576001036202e2c657604001906202e0fb60c08351015162004c22565b51936202e11260a0620077f0818651015162004c22565b51916202e12386518551146202cca5565b6202e13286518451146202cd0b565b60005b86518110156202e254576202e14b818662004c79565b51606481101562004c3057600160ff60076202e1709360031b0154161515146202cd6d565b6202e17c818562004c79565b516202e189828762004c79565b5190606482101562004c30576202e1aa906006809360031b0154906200606a565b6202e1b6848962004c79565b5192606484101562004c30576202e1d29360031b01556202cdc5565b6202e1de818562004c79565b516202e1eb828762004c79565b5190606482101562004c30576202e213916003906001600160a01b0362011091868d62004c79565b91906202e221828862004c79565b5190606482101562004c30576202e24e9362000ef0926003906001600160a01b03620110e4878f62004c79565b6202e135565b5094915091620111156202e26891620312cf565b93604051926202e2788462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202e2a3938762004c79565b6202e284565b50945092602092506202e2bd915062004c12565b9190506202e09f565b602081949293940151602681101562002942576002036202e558576040018051928351906202e2fe62007a1660a08097015162004c22565b519382518651036202e5035782518451036202e4ad5782518551036202e4545760005b86518110156202e43e576202e337818862004c79565b51606481101562004c305760ff60076202e3589260031b015416156202ce7d565b6202e364818862004c79565b51606481101562004c305760031b600701805460ff191660011790556202e38c818562004c79565b516202e399828962004c79565b5190606482101562004c305760056202e3b69260031b0162005659565b6202e3c2818662004c79565b516202e3cf828962004c79565b51606481101562004c305760031b600101556202e3ed818762004c79565b516202e3fa828962004c79565b51606481101562004c305760031b600201556202e418818862004c79565b5190606482101562004c3057600060066202e4389360031b015562004c12565b6202e321565b509591509350602092506202e2bd915062004c12565b60405162461bcd60e51b815260206004820152603c602482015260008051602062031b8883398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062031b888339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062031b888339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b92916020840151602681101562002942576003036202eb64576202e58460c06040860151015162004c22565b5160a0916202e5ad6202e59e846040890151015162004c22565b51936040880151015162004c46565b51936202e5c2835185511462000ee962031533565b6202e5d5835186511462000ee962031533565b60005b83518110156202e630576202e5ee818662004c79565b5190606482101562004c305760036202e62a9260018060a01b038b5116600052811b0160205262000ef060406000205462007d3b838a62004c79565b6202e5d8565b509095919560005b87518110156202e757576202e64e818662004c79565b51606481101562004c305760039060018060a01b03865116600052811b016020526202e68560406000205462007da7838962004c79565b906202e692838862004c79565b5191606483101562004c305760036202e6c89360018060a01b03895116600052811b0160205260406000205562000ee962031637565b6202e6d4818662004c79565b51606481101562004c30576003906001600160a01b036202e6f6848c62004c79565b5116600052811b016020526202e7176040600020546200685b838962004c79565b91906202e725828862004c79565b5190606482101562004c30576202e75193600362000ef0938d62007e608760018060a01b039262004c79565b6202e638565b50926202e76f919294506200bb4e90969596620312cf565b92604051906202e77f8262002a97565b6001825260203681840137516001600160a01b03166202e79f8262004c22565b526000945b80518610156202eb50576202e7ba868262004c79565b516108e0526202e7cb855162004d95565b966000946202e7db845162004d95565b6108c05260009460005b88518110156202e8aa578a896202e8156001600160a01b036202e809858462004c79565b51166108e051620310b9565b15806202e865575b6202e836575b50506202e8309062004c12565b6202e7e5565b986202e85a9162001a9c82859c62007f886202e8309760018060a01b039262004c79565b9790508a896202e823565b50505060646108e051101562004c30576001600160a01b036202e889828b62004c79565b511660005260036108e051811b016020528a8960406000205415156202e81d565b50909895979498969291939660005b88518110156202e94c5760646108e051101562004c30576001600160a01b036202e8e4828b62004c79565b511660005260036108e051811b01602052604060002054156202e913575b6202e90d9062004c12565b6202e8b9565b996202e90d906202e943906001600160a01b036202e9328e8d62004c79565b511662001a9c826108c05162004c79565b9a90506202e902565b509850969592919093966108e0516064811015806108805262004c305760031b60040154986202e981620080b6898c62006271565b6108a0526000610860526000610840525b6108805162004c3057610840518a8110156202ea5b576202e9c76202e9e49160006108805260046108e05160031b0162004e91565b90546108c05160039290921b1c6001600160a01b03169062031166565b156202ea03575b6202e9f96108405162004c12565b610840526202e992565b6000610880526202ea216108405160046108e05160031b0162004e91565b60018060a01b0391549060031b1c166202ea42610860516108a05162004c79565b526202ea516108605162004c12565b610860526202e9eb565b50979294959093985095909560005b8281106202eb04575050506108805162004c30576108a051516001600160401b038111620029ba576202eaa78160046108e05160031b0162004fcd565b60206108a0510160046108e05160031b01600052602060002060005b8381106202eae657505050506202eada9062004c12565b9492959091956202e7a4565b82516001600160a01b0316818301556020909201916001016202eac3565b6202eb4a906001600160a01b036202eb1d828562004c79565b51166202eb31610860516108a05162004c79565b526202eb406108605162004c12565b6108605262004c12565b6202ea6a565b5050936202e2bd9193506020925062004c12565b90926020810151602681101562002942576004036202ed975760400160c0936202eb966200bf71868451015162004c22565b51906202ebad60a0620077f0818651015162004c22565b51936202ebc2875184511462000ee962031533565b6202ebd5875185511462000ee962031533565b6202ebe8875186511462000ee962031533565b60005b87518110156202ec2f576202ec01818662004c79565b5190606482101562004c30576202ec29916003906001600160a01b036201141a848d62004c79565b6202ebeb565b509095919593929360005b83518110156202ed54576202ec50818762004c79565b51606481101562004c30576003906001600160a01b036202ec72848862004c79565b5116600052811b016020526202ec9360406000205462007da7838862004c79565b906202eca0838962004c79565b5191606483101562004c30576202ecc8926003906001600160a01b03620114da878b62004c79565b6202ecd4818762004c79565b51606481101562004c30576003906001600160a01b036202ecf6848c62004c79565b5116600052811b016020526202ed176040600020546200685b838862004c79565b9190506202ed26818862004c79565b5191606483101562004c30576202ed4e926003906001600160a01b036201157b858e62004c79565b6202ec3a565b50936202ed6e9192969350620084c562007e9891620312cf565b9260005b83518110156202e2a9578062000ef0620079b66202ed91938762004c79565b6202ed72565b926020840151602681101562002942576005036202ef525760408401906202edc960a06200852e818551015162004c22565b519282518451036200cab85760005b83518110156202ee30576202edee818562004c79565b5190606482101562004c305760036202ee2a9260018060a01b038a5116600052811b0160205262000ef060406000205462007d3b838962004c79565b6202edd8565b509060005b83518110156202eed1576202ee4b818562004c79565b51606481101562004c305760039060018060a01b03895116600052811b016020526202ee8260406000205462007da7838862004c79565b91906202ee90828762004c79565b5190606482101562004c30576202eecb93600362000ef09360018060a01b038d5116600052811b0160205260406000205562000ee962031637565b6202ee35565b50949250906202eee190620312cf565b90604051926202eef18462002a97565b6001845260203681860137516001600160a01b03166202ef118462004c22565b52604051946202ef218662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202ef4c938762004c79565b6202ef2d565b926020810151602681101562002942576006036202f0e6576040016202ef7d60c08251015162004c22565b51936202ef9460a06200852e818551015162004c22565b519285518351036200d09b5785518451036200d04e5760005b86518110156202eff1576202efc3818562004c79565b5190606482101562004c30576202efeb916003906001600160a01b036201183d848c62004c79565b6202efad565b509060005b86518110156202f090576202f00c818562004c79565b51606481101562004c30576003906001600160a01b036202f02e848b62004c79565b5116600052811b016020526202f04f60406000205462007da7838862004c79565b91906202f05d828762004c79565b5190606482101562004c30576202f08a9362000ef0926003906001600160a01b03620114da878f62004c79565b6202eff6565b5094916202f0a59193506201111590620312cf565b91604051946202f0b58662002a5e565b60008652600036813760005b83518110156202e2a9578062000ef0620079b66202f0e0938762004c79565b6202f0c1565b6020810151602681101562002942576007036202f16c57604001926202f11160c08551015162004c22565b51916202f12360a08651015162004c22565b51945151916202f13b845187511462000ee962031533565b60005b84518110156202e2a9576202f1669062000ef06001600160a01b0380620119d9848a62004c79565b6202f13e565b6020819493940151602681101562002942576008036202f1da5760c060406202f199920151015162004c22565b519160005b83518110156202f1c8576202f1c2906001600160a01b038062011ac1838862004c79565b6202f19e565b509260209192506202e2bd9062004c12565b6020810151602681101562002942576009036202f2335760c060406202f204920151015162004c22565b519160005b83518110156202f1c8576202f22d906001600160a01b038062011b55838862004c79565b6202f209565b602081015160268110156200294257600a036202f2b957604001906202f26460a06200d48660c08551015162004c22565b51926202f279835185511462000ee962031533565b60005b83518110156202f2a6576202f2a0906001600160a01b038062011bf1838862004c79565b6202f27c565b50936202e2bd9193506020925062004c12565b60208194939294015160268110156200294257600b036202f34457604001926202f2e860c08551015162004c22565b51935151916202f300855184511462000ee962031533565b60005b85518110156202f331576202f32b9062000ef06001600160a01b038062011ca4848b62004c79565b6202f303565b50935091602091506202e2bd9062004c12565b909192602082015160268110156200294257600c036202f47757606060408301510151926202f373846202c2eb565b60005b84518110156202f2a65760e06202f3968260606040880151015162004c79565b510151156202f40e576202f3b762008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f3da60059162005c20565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005c20565b6202f376565b6202f42662008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f44960059162005be0565b500161010061ff00198254161790555491828181011162001de85762008efb6005916202f408940162005be0565b929190602081015160268110156200294257600d036202f4e0576040019260206202f4a760a08651015162004c22565b5194510151916202f4bc85518451146202c9e4565b60005b85518110156202f331578062011e856202f4da928662004c79565b6202f4bf565b602081949294015160268110156200294257600e036202f549576040019060206202f51060a08451015162004c22565b5192510151936202f52583518651146202c9e4565b60005b83518110156202f331578062011f996202f543928862004c79565b6202f528565b90602082949394015160268110156200294257600f036202f67d57606060408301510151926202f579846202c2eb565b60005b84518110156202f2a65760e06202f59c8260606040880151015162004c79565b510151156202f614576202f5bd62008ea78260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f5e060059162005c20565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005c20565b6202f57c565b6202f62c62008f258260606040880151015162004c79565b610322805460001992919083810190811162001de8576202f64f60059162005be0565b500161010061ff00198254161790555491828181011162001de857620090736005916202f60e940162005be0565b906020819493940151602681101562002942576010036202f6ee5760400151906202f6b160a0608084015193015162004c22565b51936202f6c6835186511462000ee962031533565b60005b83518110156202f331578062000ef06200935a6202f6e8938762004c79565b6202f6c9565b6020819492940151602681101562002942576011036202f90757604001906202f72260a06200d48660c08551015162004c22565b51936202f73383518651146202c163565b60005b83518110156202f764576202f75e9062000ef06001600160a01b03806201221c848962004c79565b6202f736565b509350906202f77390620311b3565b9061032654936202f78a620080b684518762006271565b9060009260005b8781106202f8ec575060005b85518110156202f844576000805b8981106202f7f5575b50156202f7cd575b6202f7c79062004c12565b6202f79d565b936202f7c7906202f7ec906001600160a01b036200ddb1888a62004c79565b9490506202f7bc565b6202f8008162004de9565b90546001600160a01b0360039290921b1c8116906202f820858b62004c79565b5116146202f839576202f8339062004c12565b6202f7ab565b50506001386202f7b4565b5095509392506202f8558262004d95565b8051906001600160401b038211620029ba576020906202f8758362004f2a565b01610326600052602060002060005b8381106202f8ce575050505060005b8281106202f8ab575050506202e2bd60209162004c12565b6202f8c89062000ef06001600160a01b03620019d0838662004c79565b6202f893565b82516001600160a01b0316818301556020909201916001016202f884565b936200defd6202f901916200dedf8762004de9565b6202f791565b6020819492940151602681101562002942576012036202fb2a57604001906202f93b60a06200d48660c08551015162004c22565b51936202f94c83518651146202c163565b60005b83518110156202f97d576202f9779062000ef06001600160a01b03806201247e848962004c79565b6202f94f565b50935091906202f98d90620311b3565b610326546202f99c8162004d95565b906000926000915b8083106202fa51575050506202f9ba8262004d95565b8051906001600160401b038211620029ba576020906202f9da8362004f2a565b01610326600052602060002060005b8381106202fa33575050505060005b8281106202fa10575050506202e2bd60209162004c12565b6202fa2d9062000ef06001600160a01b03620019d0838662004c79565b6202f9f8565b82516001600160a01b0316818301556020909201916001016202f9e9565b91956000959193959760005b85518110156202fb1b576202fa728962004de9565b90546001600160a01b0360039290921b1c8116906202fa92838962004c79565b5116146202faab576202faa59062004c12565b6202fa5d565b509750956001959391955b806202faea575b156202fad5576202face9062004c12565b916202f9a4565b936200defd6202face916200dedf8762004de9565b506202faf68162004de9565b60018060a01b0391549060031b1c16600052610325602052604060002054156202fabd565b5097969096959391956202fab6565b6020810151602681101562002942576013036202fb835760408091015101519260005b84518110156202fb72578062000ef0620098ce6202fb6c938862004c79565b6202fb4d565b509250906202e2bd60209162004c12565b6020810151602681101562002942576014036202fd2c57604001906202fbae60c08351015162004c22565b51936202fbc560a0620077f0818651015162004c22565b51916202fbd686518551146202cca5565b6202fbe586518451146202cd0b565b60005b86518110156202fcd7576202fbfe818562004c79565b516202fc0b828762004c79565b5190606482101562004c305760066202fc2a9260031b0154906200606a565b906202fc37838862004c79565b5191606483101562004c305760066202fc559360031b01556202cdc5565b6202fc61818562004c79565b516202fc6e828762004c79565b5190606482101562004c30576202fc96916003906001600160a01b0362011091868d62004c79565b91906202fca4828862004c79565b5190606482101562004c30576202fcd19362000ef0926003906001600160a01b03620110e4878f62004c79565b6202fbe8565b5094915091620111156202fceb91620312cf565b93604051926202fcfb8462002a5e565b60008452600036813760005b83518110156202e2a9578062000ef0620079b66202fd26938762004c79565b6202fd07565b6020810151602681101562002942576015036202fd56576020919262000ef06202e2bd926202d93e565b6020810151602681101562002942576016036202fdb25760c060406202fd80920151015162004c22565b519260005b84518110156202fb72576202fdac9062000ef06001600160a01b0362009b14838962004c79565b6202fd85565b6020810151602681101562002942576017036202fe0f5760405162461bcd60e51b8152602060048201526029602482015260008051602062031d688339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002942576018036202fe795760c060406202fe39920151015162004c22565b51610396805460ff191660011790559260005b84518110156202fb72576202fe739062000ef06001600160a01b0362009be0838962004c79565b6202fe4c565b6020819392930151602681101562002942576019036202ff605760008091604082910160a0808251015180516202ff27575b5050519060e0820151916202fecf6200685460c060018060a01b0393015162004c22565b511690602083519301915af13d156202ff1e573d906202feef8262002e73565b916202feff604051938462002ab3565b82523d6000602084013e5b1562012a4857506202e2bd60209162004c12565b6060906202ff0a565b6202ff329062004c22565b51516202ff41575b806202feab565b81925062006854906202ff579251015162004c22565b5190386202ff3a565b602081015160268110156200294257601a036202ffe25760a060406202ff8a920151015162004c22565b516202ff9a60038251146202c163565b6202ffa58162004c22565b51916202ffb662012b6e8362004c46565b51916200f053576020926202e2bd9260010362009e215762009e019062009df46103919182546200606a565b602081015160268110156200294257601b03620303cb575091906203001261038f54620061b062009e97620313c0565b50506203001e62031484565b506000805b606481106203037f575b5050620300396200618c565b90620300486107345462004d95565b906000946000905b606482101562030373578160031b9260ff600785015416156203015b5760009660028501541562030142576000975b62004c3057600485015488101562030142576203013b62030134899a620300ae620300e59b60048a0162004e91565b60018060a01b0391549060031b1c168060005260038901602052620300d98b60406000205462005ebb565b9c9062000ee962031484565b620301286203010c6203010060009e60028d01549062005ebb565b919062000ee962031484565b8260005261032760205262009df460406000209182546200606a565b62001a9c828b62004c79565b9962004c12565b976203007f565b929093506203015391965062004c12565b909462030050565b95969392509350505b6203016f8262004d95565b9160009160005b828110620302dd57505050610328549162030196620080b6848462006271565b926000906000905b808210620302c057505060005b8381106203022a5750508251929150506001600160401b038211620029ba57602090620301d88362004eef565b01610328600052602060002060005b8381106203020c57505050506202e2bd60209160006103915560006103925562004c12565b82516001600160a01b031681830155602090920191600101620301e7565b6000805b83811062030278575b501562030250575b6203024a9062004c12565b620301ab565b906203024a906203026f906001600160a01b036200823e858762004c79565b9190506203023f565b6001600160a01b03806203028d858862004c79565b5116906203029c838a62004c79565b511614620302b557620302af9062004c12565b6203022e565b505060013862030237565b90916200824c620302d691620098248562004dcd565b906203019e565b6000805b8581106203032b575b501562030303575b620302fd9062004c12565b62030176565b92620302fd9062030322906001600160a01b036200823e878662004c79565b939050620302f2565b6001600160a01b038062030340858762004c79565b5116906203034f838a62004c79565b5116146203036857620303629062004c12565b620302e1565b5050600138620302ea565b93505092939062030164565b8060039594951b9060ff60078301541615620303c1576200a2d4620074b662000ef0946200a2c8620303b89560026200a2be8762005d82565b93929362030023565b509392936203002d565b602081015160268110156200294257601c03620304285760405162461bcd60e51b8152602060048201526029602482015260008051602062031e488339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b602081015160268110156200294257601d036203044e575b506202e2bd60209162004c12565b602081015160268110156200294257601e146203044057602081015160268110156200294257601f036203049f57602091620304976200a3b960406202e2bd9401515162004c22565b915062030440565b602081015160268110156200294257602003620304c5575b506202e2bd60209162030497565b6020810151602681101562002942576021809103620304e6575b50620304b7565b602082015160268110156200a53a57602203620305225750506202e2bd60209161039660ff1981541690556203051b62004fba565b91620304df565b602082015160268110156200a53a5760230362030549575b50506202e2bd6020916203051b565b6020820151906026821015620137aa5760248092036203056b575b506203053a565b60208301516026811015620306075760251462030564576020830151906026821015620305f35750601503620305b65750602091620305ae6202e2bd926202d93e565b913862030564565b60649060166040519162461bcd60e51b83526020600484015282015275496e76616c6964206f7065726174696f6e207479706560501b6044820152fd5b9050634e487b7160e01b6000526004526000fd5b50634e487b7160e01b6000526004526000fd5b815162030630906001600160a01b031662006647565b6202e011565b620306418162004e3d565b9054865160039290921b1c6001600160a01b0390811691161462030670576203066a9062004c12565b6202dfff565b505050600138806202e008565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062030704575050565b62002b5a91600052601f6020600020910160051c81019062004ed6565b90600160401b8111620029ba5781548183558082106203074057505050565b62002b5a92600052601f6020600020918180850160051c84019416806203076f575b500160051c019062004ed6565b600019908186019182549160200360031b1c1690553862030762565b9060ff809160031b9316831b921b19161790565b919091620307ba620307b36000946202de4d565b5062003495565b91835b83518051821015620308ac5781620307d59162004c79565b516064908181101562004c3057600390811b9660018060a01b038616600052602091880182526203081360409860018a600020549101549062005ebb565b91901562030879579062030827916200606a565b97901562030843575050506203083d9062004c12565b620307bd565b519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b505086519062461bcd60e51b82526004820152600e60248201526d706f776572206f766572666c6f7760901b6044820152fd5b509092505050565b60005b61073854908160005261073691602092808452600393604092858460002001805486101562030a1557620308f086620308fc9262004e91565b905490881b1c6202de4d565b509560ff6006809801541662030924575b50505050506203091e915062004c12565b620308b7565b816000528383526203094c620309408783886000200162004e91565b905490831b1c6202de4d565b50966203096c876001809a01549285600052878752886000200162004e91565b905490831b1c91836000528585526203098c886005896000200162004e91565b9054911b1c9060009260649283810293818504149015171562030a015790620309b59162004eaa565b10620309f9575b620309c857806203090d565b6009945060005252600020019060ff1991818382541617905561073391825416179055600061073155600061073255565b5085620309bc565b634e487b7160e01b84526011600452602484fd5b50505050505050600061073854905b81600052610736602052600380604060002001805483101562030a9a57600662030a6162030a558560ff9462004e91565b905490851b1c6202de4d565b500154161562030a955762030a768262030caa565b908110156200294257620105035762030a8f9062004c12565b62030a24565b505050565b50505060ff19906107336003838254161790556000526107366020526009604060002001908154169055565b6107385490600090828252610736916020928084526003906040908282852001549562030af38762002b80565b9662030b028451988962002ab3565b80885262030b13601f199162002b80565b013682890137845b88865282825284848720015481101562030b64579062030b598262000ef062030b478897969562030caa565b62030b53838d62004c79565b6200520e565b909192935062030b1b565b5050505090919350815b835181101562030bdb5762030b84818562004c79565b518281101562030bc757600180911462030baa575062030ba49062004c12565b62030b6e565b610733805460ff1916909117905550506107318190556107325550565b634e487b7160e01b84526021600452602484fd5b509091506107328054421060001462030c0257506107339060ff1982541617905561073155565b9050610733600160ff19825416179055816107315555565b1562030c2257565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b1562030c6f57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b61073854906000918083526107368060205282604085206003019062030cd09162004e91565b90549060031b1c62030ce2816202de4d565b5060010154938386528260205280604087206004019062030d039162004e91565b90549060031b1c928487528060205281604088206005019062030d269162004e91565b90549060031b1c948752602052604086206006019062030d469162004e91565b90549060031b1c9062030d59906202de4d565b506006015460ff1662030da5575062030d959262005da862021a9f938362030d8562030d8d9562005e85565b969062030c67565b929062030c67565b111562030d9f5790565b50600190565b6200f136925062030d959362030dbf62030d8d9362005e85565b949062030c67565b9092919262030dd7825162004d95565b60009162030de6815162004d95565b8390845b865181101562030e80576001600160a01b0362030e0d816202d155848b62004c79565b158062030e4c575b62030e2d575b5062030e279062004c12565b62030dea565b819662030e44916200823e62030e27948b62004c79565b959062030e1b565b5060648a101562004c30578062030e64838a62004c79565b511660005260038a811b01602052604060002054151562030e15565b509295919694509260005b875181101562030f0057606486101562004c30576001600160a01b038062030eb4838b62004c79565b5116600052600387811b016020526040600020541562030ee1575b5062030edb9062004c12565b62030e8b565b819562030ef8916200ddb162030edb948c62004c79565b949062030ecf565b5092509450926064831015938462004c305760049586600395861b019687549462030f30620080b6828862006271565b9460009689889a5b620310a457818b101562030fd957506000998b62030f7362030f5b838362004e91565b90546001600160a01b0392918e1b1c82168a62031166565b1562030f96575b50509062030f8b8b94939262004c12565b9a9091929362030f38565b91998c95949392909162030fac908c9062004e91565b9054908d1b1c1662030fbf828b62004c79565b5262030fcb9062004c12565b9890919293508b3862030f7a565b9697949a98505091975092506000915b8383106203107f57505050506203106a578051926001600160401b03841162031055575062031019838362004fcd565b602080910191600052806000209060005b84811062031039575050505050565b83516001600160a01b031683820155928101926001016203102a565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203109d906200824c906001600160a01b036200a147868662004c79565b9162030fe9565b603285634e487b7160e01b6000525260246000fd5b9060005b606483101562004c30576003600484821b01805483101562015fff5782620310e59162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311099062004c12565b620310bd565b9060005b606483101562004c3057600361039c84821b01805483101562015fff57826203113c9162004e91565b9054911b1c6001600160a01b03908116908316146200662557620311609062004c12565b62031113565b9060005b825181101562006638576001600160a01b038062031189838662004c79565b51169083161462006625576203119f9062004c12565b6203116a565b801562001de8576000190190565b9081519060005b60001983810184811162001de85782101562031281576001820180831162001de8575b848110620311f8575050620311f29062004c12565b620311ba565b6001600160a01b03806203120d858962004c79565b5116816203121c848a62004c79565b51161462031237575b50620312319062004c12565b620311dd565b828692960182811162001de85762031231926203127a926203125e62031273938b62004c79565b51166203126c898b62004c79565b52620311a5565b95620311a5565b9062031225565b5050906203128f8162004d95565b9060005b818110620312a2575090925050565b620312c9906001600160a01b03620312bb828862004c79565b511662001a9c828662004c79565b62031293565b80519160005b60001984810185811162001de85782101562031387576001820180831162001de8575b858110620313135750506203130d9062004c12565b620312d5565b6203131f838662004c79565b516203132c828762004c79565b511462031345575b6203133f9062004c12565b620312f8565b948181019080821162001de857620313786203137f916203136b6203133f948962004c79565b516203126c8a8a62004c79565b96620311a5565b905062031334565b50509091620313968162004d95565b9060005b818110620313a9575090925050565b806202a11a620313ba928762004c79565b6203139a565b604051620313ce816200299e565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203143c8162002a26565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620314928162002a97565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b604051620314cc8162002a97565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620314f78162002a26565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620315418162002a97565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620315718162002a97565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620315a48162002a97565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620315d98162002a97565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620316128162002a97565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b604051620316458162002a97565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b604051620316748162002a97565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b604051620316aa8162002a97565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b60268110156200294257801562007507576001811462030d9f5760028114620319025760038114620318fc5760048114620318f65760058114620318f05760068114620318ea5760078114620318e45760088114620318de5760098114620318d857600a8114620318d257600b8114620318cc57600c8114620318c657600d8114620318c057600e8114620318ba57600f8114620318b45760108114620318ae5760118114620318a85760128114620318a257601381146203189c57601481146203189657601581146203189057601681146203188a57601781146203188457601881146203187e57601981146203187857601a81146203187257601b81146203186c57601c81146203186657601d81146203186057601e81146203185a57601f81146203185457602081146203184e57602181146203184857602281146203184257602381146203183c576024811462031836576025146203183157600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200664057600090815b8351811015620166ee576001600160f81b03198062031938838762006577565b51169062031947838562006577565b511603620166e7576203195a9062004c12565b62031918565b604051906203196f8262002a26565b60288252604036602084013760005b601481106203198c57505090565b60139080820391821162001de857600382901b916001600160fd1b0381160362001de85760ff80831162001de857600192620319d59084901b6001600160a01b03861662005007565b60f081168282160391821162001de857620319f99060f41b600f60f81b1662031a62565b82841b916001600160ff1b038416840362001de85762031a369160001a62031a22848962006577565b5360f81b6001600160f81b03191662031a62565b92810180911162001de85762031a5562031a5c9360001a918662006577565b5362004c12565b6203197e565b60f81c600a81101562031a8b5760300160ff811162001de85760f81b6001600160f81b03191690565b60570160ff811162001de85760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65a4039f5a7be218ee4582681830797ad3adb3fc42221d510b404c1c20513cd5f9305d206c656e677468206973206e6f7420320000000000000000000000000000546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b617665203120656c656d656e74000000000000000000000000000000000000007420686176652074776f20656c656d656e747300000000000000000000000000f8c51ad45ec8504cc31b470490eebc0390b72c6fe329b047b8c5d2eaf5faf707546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f7420310000000000000000000000000000006506a45eb4eaa8543dde316bec7c09b25ef1e87a59a8ef880021210a26a5aa39742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f7420afaf75ed05c3fa878ca2fef6bc901427ab4ca9c5028b0bbe72a546312bd924aa2e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973745d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d706c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212201b9fa0280c35b6e081eb1f2914678c611bc8026b085956491408d50c5865193d64736f6c63430008130033", + "bytecode": "0x6080806040523462000019576203429090816200001f8239f35b600080fdfe610ba08060405260043610156200001557600080fd5b600090813560e01c908163036ee8501462002925575080630fda3e1e146200288d57806310ade3ea146200285e5780631797631d14620027d75780631c75255a146200277157806323b65c7814620026ea5780632514a6b414620024c45780632eeb063b14620022f45780633fb18aec146200228a57806356424cf4146200226b5780635c00d98714620022485780635d0b184914620002055780635f1231ea146200215e5780635f5d5f0014620020d7578063681ece9d14620020925780636c0d4fa41462001eff5780637daa10ce1462001ee25780638129fc1c1462001b1357806383e4cccf14620018aa578063864f9f7a146200186c57806386ad77e2146200150b5780638c7a63ae146200147a578063942d59fa14620012975780639f36145f1462001211578063a064c4f114620011e6578063acf80bc414620011a8578063aec2668714620010be578063aefca42a146200109d578063c41f94821462001055578063c591aa981462001007578063d5a172f21462000fdb578063d6a93c511462000f89578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e362005284565b50610c80620001f162002b40565b62000200604051809262002975565bf35b80fd5b503462000202578060031936011262000202576020613f7854604051908152f35b5060031960203682011262000e60576001600160401b036004351162000e6057606090600435360301126200020257604051620002638162002a8f565b6200027360043560040162002960565b81526004356024013560e08190526001600160401b03811162000c5457600435013660238201121562000c54576004620002b4910135806101405262002be9565b90620002c4604051928362002b1c565b6101405182526020820160a0526101405160e05160043501906024369160051b8301011162000c585760240161012052825b6101405160051b60e05160043501906024610120519183010181101562000e6857356101008190526001600160401b03811162000c5457606091013603602319011262000202576200034f604051806101805262002a8f565b6200036860246101005160e05160043501010162002960565b610180515260446101005160e05160043501010135602681101562000e605760206101805101526101005160e051600435010160648101356101605260018060401b0360648201351162000e60576101006064820135909101360360231901126200020257620003de6040518060c05262002a55565b610160516101005160e0516004350101016001600160401b0360248201351162000e6057620004179060243691818101350101620048c1565b60c05152610160516101005160e0516004350101019160448301359260018060401b03841162000c545736604385830101121562000c5457620004606024858301013562002be9565b9162000470604051938462002b1c565b6024858301013583526020830190610160516101005160e0516004350101013660446024898701013560051b81840135840101011162000e6457806044809201350101915b6044610160516101005160e0516004350101016024898701013560051b9082810135010101831015620004fd5760208091620004f1856200494c565b815201920191620004b5565b5060c051602001939093525050610160516101005160e0519395600435909401010192506001600160401b0360648401351162000c58573660436064850135850101121562000c58576024606484013584010135906200055d8262002be9565b906200056d604051928362002b1c565b828252602082016064860135610160516101005160e051600435010101013660448660051b8301011162000c5057604401905b6064870135610160516101005160e0516004350101010160448660051b820101831015620006c1576001600160401b03833511620006bd5760e08335820136036043190112620006bd5760405191620005f98362002aab565b6001600160401b03843583016044013511620006b95762000626366044863585018181013501016200495a565b835283358201606481013560208501526084810135604085015260a48101356060850152620006589060c4016200494c565b60808401526001600160401b038435830160e4013511620006b9576020928392620006a8906101049062000699368935830160e48101350160440162002ef8565b60a0850152873501016200494c565b60c0820152815201910190620005a0565b8980fd5b8880fd5b505050929493509050604060c0510152610160516101005160e0516004350101019160018060401b0360848401351162000202573660436084850135850101121562000202576200072e62000720602460848601358601013562002be9565b604051806101a05262002b1c565b6101a0516024608485013585010135905260206101a05101916084840135610160516101005160e05160043501010101366044602460848801358801013560051b8301011162000c5457604401608052925b6084810135610160516101005160e0516004350101010192608051936044602460848501358501013560051b82010185101562000c5c576001600160401b0385351162000c585761010085359091013603604319011262000c5457604051620007e98162002a55565b604485356084850135610160516101005160e05160043501010101010135600681101562000c4c578152606485356084850135610160516101005160e05160043501010101010135602082015284356084840135610160516101005160e05160043501010101019460018060401b0360848701351162000c4c573660636084880135880101121562000c4c576200088a604460848801358801013562002be9565b966200089a604051988962002b1c565b604460848801358801013588526020880190608488013583356084880135610160516101005160e051600435010101010101366064604460848c01358c01013560051b8301011162000c5057606401915b608489013584356084890135610160516101005160e0516004350101010101016064604460848c01358c01013560051b82010184101562000b36576001600160401b03843511620006bd5760c08435820136036063190112620006bd5760405190620009578262002a39565b843581016064810135835260056084909101351015620006b9578435810160848101356020840152600460a4909101351015620006b9578435810160a4810135604084015260c481013560608401526001600160401b0360e49091013511620006b957620009d2368635830160e4810135016064016200495a565b60808301526001600160401b0385358201610104013511620006b9576080853582016101048101350136036063190112620006b9576040519062000a168262002a07565b6001600160401b038635820161010481013501606401351162000b325762000a52366064610104893585019081013501818101350101620048c1565b82526001600160401b038635820161010481013501608401351162000b325762000a90368735830161010481013501608481013501606401620049c0565b60208301526001600160401b03863582016101048101350160a401351162000b325762000ad136873583016101048101350160a48101350160640162004a4b565b60408301526001600160401b03863582016101048101350160c401351162000b325760209384939092909162000b1c9036908935016101048101350160c48101350160640162002ef8565b606082015260a0820152815201920191620008eb565b8a80fd5b505096505090919295604083015260a481356084880135610160516101005160e05160043501010101010135606083015280356084870135610160516101005160e051600435010101010160018060401b0360c48201351162000c4c57610124602094939262000bb562000c33936044369160c4810135010162002ef8565b608085015262000be160e4823560848c0135610160516101005160e0516004350101010101016200494c565b60a085015262000c0e610104823560848c0135610160516101005160e0516004350101010101016200494c565b60c0850152356084890135610160516101005160e0516004350101010101016200494c565b60e0820152815201916020608051016080529262000780565b8480fd5b8780fd5b8280fd5b8380fd5b50506101a05160c0516060015250610160516101005160e05194956004359095010101929091506001600160401b0360a48401351162000e605736604360a4850135850101121562000e605762000cbd602460a48501358501013562002be9565b9062000ccd604051928362002b1c565b602460a4850135850101358252602082019060a4850135610160516101005160e05160043501010101366044602460a48901358901013560051b8301011162000c4c57604401915b610160516101005160e05160043501010160a48701359081019087016024013560051b0160440183101562000d605760058335101562000c4c57823581526020928301920162000d15565b50935050929092608060c0510152610160516101005160e05160043501010160018060401b0360c48201351162000c585762000da7906024369160c48101350101620049c0565b60c05160a00152610160516101005160e0516004350101016001600160401b0360e48201351162000c585762000de8906024369160e4810135010162004a4b565b60c080510152610160516101005160e0516004350101016001600160401b036101048201351162000c585762000e2a9060243691610104810135010162002ef8565b60e060c051015260c05160406101805101526101805160a05152602060a0510160a05260206101205101610120529091620002f6565b5080fd5b8580fd5b60208401858152849084600435604401356001600160401b03811162000e605762000e9b90600436918135010162002ef8565b604084015282516001600160a01b03919062000ef490831662000eeb62000ecc62000ec63362033d33565b62004b44565b62000ee462000ede878a511662033d33565b62004baa565b9062004c01565b90331462004c48565b8251805182101562000f61579062000f5562000f5b928462000f1884339362004ce2565b5151161462000f4e62000f2f62000ec63362033d33565b62000ee462000ede8862000f45888c5162004ce2565b51511662033d33565b9062004c48565b62004c7b565b62000ef4565b62000f8562000f7086620067d6565b60405191829160208352602083019062002dae565b0390f35b503462000202578060031936011262000202575b6103e8811062000fb3575b602090604051908152f35b60ff60078260031b0154161562000fd55762000fcf9062004c7b565b62000f9d565b62000fa8565b50346200020257806003193601126200020257613f70546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b036200103662002944565b168152613f778452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c06200107860043562006274565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b503462000202578060031936011262000202576020613f7254604051908152f35b50346200020257806003193601126200020257613f7590815491620010e38362002be9565b91620010f3604051938462002b1c565b8383526020938484018093835285832083915b838310620011705750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620011415785850386f35b9091929382806200115f600193603f198a8203018652885162002dae565b960192019601959291909262001133565b600188819260409a99979a5162001195816200118d818962002c3e565b038262002b1c565b8152019201920191909693959662001106565b50346200020257602036600319011262000202576020906040906001600160a01b03620011d462002944565b168152611f4783522054604051908152f35b5034620002025760203660031901126200020257602062001209600435620060c4565b604051908152f35b503462000202576020366003190112620002025760406200126c916004358152613f766020522062001243816200369d565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003202565b936020860152604085015262001288606085018383166200349d565b60081c16151560808301520390f35b5034620002025760208060031936011262000e6057604051620012ba8162002a72565b60405192620012c98462002a8f565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e083015280610100809301526004358152613f7683526040902091604051926200132a8462002a72565b62001335816200369d565b84526200134560038201620034ab565b848301908152926200135a60048301620034ab565b60408601908152956200137060058401620034ab565b868201908152926200138560068201620034ab565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff8816620013c1908762005277565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d01620013f29162003202565b9451601f198d8703810160408f0152956200140d9162002f50565b905191858d830301908d0152620014249162002f50565b905190838b82030160808c01526200143c9162002f50565b9051918982030160a08a0152620014539162002f50565b955160c08801525160e0870152519085016200146f916200349d565b511515908301520390f35b5034620002025760203660031901126200020257600435906103e8821015620014f7575060031b6001810154600282015491620014ed6005620014ce6006840154936200118d604051809481930162002c3e565b6040519485948552602085015260806040850152608084019062002dae565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b50346200020257806003193601126200020257611f4280546200152e8162002be9565b916200153e604051938462002b1c565b81835283526020808420849184015b83831062001718578585611f43805490620015688262002be9565b9362001578604051958662002b1c565b82855260208501918152602081209080925b848410620015c057620015b18662000f858960405193849360408552604085019062003038565b90838203602085015262003038565b604051620015ce8162002a55565b620015de60ff8554168262003574565b600184015460208201526002840154620015f88162002be9565b9062001608604051928362002b1c565b80825260208201600287018652602086209086905b83821062001695575050505060019282602092604060069501526003870154606082015260405162001658816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301930192916200158a565b60086020600192604051620016aa8162002a39565b8654815260ff85880154818116620016c28162002f45565b85840152851c16620016d481620029a0565b604082015260028701546060820152620016f160038801620034ab565b608082015262001704600488016200363b565b60a08201528152019301910190916200161d565b604051620017268162002a55565b6200173660ff8454168262003574565b60018301546020820152600283018054620017518162002be9565b9162001761604051938462002b1c565b81835289526020808a20908a9084015b838210620017e95750505050600192826020926040600695015260038601546060820152604051620017ac816200118d8160048b0162002c3e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019201920191906200154d565b60086020600192604051620017fe8162002a39565b8654815260ff85880154818116620018168162002f45565b85840152851c166200182881620029a0565b6040820152600287015460608201526200184560038801620034ab565b608082015262001858600488016200363b565b60a082015281520193019101909162001771565b50346200020257602036600319011262000202576020906040906001600160a01b036200189862002944565b168152611f4583522054604051908152f35b5034620002025760208060031936011262000e60578160043591620018ed4784111562000f4e620018db8662005091565b620018e64762005091565b9062004d2a565b33825262001958611f4580835262001931604085205486111562000f4e620019158862005091565b3388528487526200192a604089205462005091565b9062004d96565b3384528083526200194785604086205462005056565b929062000f4e620019158862005091565b3384528252806040842055156200199a575b508080809381811562001990575b3390f115620019845780f35b604051903d90823e3d90fd5b506108fc62001978565b9050611f46805491620019ad8362004dfe565b918593865b81811062001aa0575050620019c78462004dfe565b805192906001600160401b03841162001a8c579080849392620019ed8a98979662004f93565b0191865280862090865b84811062001a6d575050505050825b82811062001a165750506200196a565b9192509062001a639062000f556001600160a01b0362001a37838662004ce2565b511662001a448362004e52565b90919082549060031b9160018060a01b03809116831b921b1916179055565b9084929162001a06565b83516001600160a01b03168184015589975092810192600101620019f7565b634e487b7160e01b88526041600452602488fd5b62001aab8162004e52565b90546001600160a01b03916003913391831b1c83160362001ada575b505062001ad49062004c7b565b620019b2565b9662001b0a91839862001af162001ad49562004e52565b9054911b1c1662001b03828962004ce2565b5262004c7b565b95903862001ac7565b50346200020257806003193601126200020257613f7080546001600160a01b03191633179055613f73805460ff19166001908117909155604051909190819062001b5d8162002ac7565b5290611f428054600082558062001e79575b508252818060405162001b828162002ac7565b5262001e6557611f438054600082558062001de6575b508252612710613f745562001dd862001bb062005bbd565b836040519162001bc08362002ac7565b81835262001cc86040519162001bd68362002ac7565b8383526040519462001be88662002ac7565b8486526040519362001bfa8562002ac7565b8585526040519462001c0c8662002ac7565b8686526040519162001c1e8362002a07565b8252602097888301526040820152606094858201526040519162001c428362002a39565b8683526003888401528660408401528686840152608083015260a082015262001c6b8262004c8b565b5262001c778162004c8b565b506040519062001c878262002a55565b6004825287868301526040820152838382015260405162001ca88162002ac7565b84815260808201528660a08201528660c08201528660e082015262005cc9565b62001cd262005bbd565b60405162001ce08162002ac7565b83815260405162001cf18162002ac7565b84815260405162001d028162002ac7565b85815260405162001d138162002ac7565b8681526040519162001d258362002ac7565b8783526040519362001d378562002a07565b8452888401526040830152848201526040519162001d558362002a39565b8583526003878401528560408401528585840152608083015260a082015262001d7e8262004c8b565b5262001d8a8162004c8b565b50856040519462001d9b8662002a55565b60058652850152604084015282015260405162001db88162002ac7565b84815260808201528260a08201528260c08201528360e082015262005d15565b611388611faf55611fb05580f35b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001e1657505062001b98565b8086849255868682015562001e2e60028201620054a7565b86600382015562001e42600482016200533c565b8660058201550162001e06565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001ea957505062001b6f565b8086849255868682015562001ec160028201620054a7565b86600382015562001ed5600482016200533c565b8660058201550162001e99565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001f1c62002b40565b6040519162001f2b8362002a55565b611faf548352611fb0549060209182850152611fb1546040850152611fb254606085015260405180611fb390848254918281520191845284842090845b81811062002074575050508162001f8191038262002b1c565b6080850152611fb4805462001f968162002be9565b9162001fa6604051938462002b1c565b818352835283832083908584015b83831062002046575050505060a085015260405180928391611fb591808354928381520192855280852094905b828210620020225750505062001ffa9250038262002b1c565b60c083015260ff611fb65416151560e083015262000f85611fb7546040519384938462002e2e565b85546001600160a01b03168452600195860195879550938101939091019062001fe1565b600187819260409998995162002062816200118d818962002c3e565b81520192019201919095949562001fb4565b82546001600160a01b03168452928601926001928301920162001f68565b5034620002025760203660031901126200020257600435906103e8821015620014f75762000f85620020ca60048460031b0162002b8b565b60405191829182620029c1565b50346200020257806003193601126200020257604051611f4180548083529083526020808301937f68ffef30f3d6829c9938575e8bc340aa2a3398e927d767947dd5024d1581d59292915b8282106200213d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002122565b503462000202576020908160031936011262000202576040906200218162002944565b8160608451620021918162002a07565b82815286810183905285810182905201526001600160a01b03168152611f4083522060405190620021c28262002a07565b6200223d81549160ff83161515845260ff8585019360081c16151583526002604051916200220183620021f9816001850162002c3e565b038462002b1c565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002dae565b905160808301520390f35b503462000202576020366003190112620002025760206200120960043562005deb565b5034620002025780600319360112620002025760206200120962006172565b50346200020257604036600319011262000202576001600160401b0360043581811162000c5457620022c190369060040162002ef8565b9160243591821162000202576020620022ea84620022e3366004870162002ef8565b9062006570565b6040519015158152f35b50346200020257806003193601126200020257604051620023158162002ac7565b604051613f0383825b60648210620024ad57505050620023358162002ae3565b815260405191620023468362002a55565b613f67548352613f68549060209182850152613f69546040850152613f6a54606085015260405180613f6b90848254918281520191845284842090845b8181106200248f57505050816200239c91038262002b1c565b6080850152613f6c8054620023b18162002be9565b91620023c1604051938462002b1c565b818352835283832083908584015b83831062002461575050505060a085015260405180928391613f6d91808354928381520192855280852094905b8282106200243d57505050620024159250038262002b1c565b60c083015260ff613f6e5416151560e083015262000f85613f6f546040519384938462002e2e565b85546001600160a01b031684526001958601958795509381019390910190620023fc565b60018781926040999899516200247d816200118d818962002c3e565b815201920192019190959495620023cf565b82546001600160a01b03168452928601926001928301920162002383565b60016020819285548152019301910190916200231e565b5034620002025760208060031936011262000e6057600435620024f34782111562000f4e620018db8462005091565b33835282808080611f479485875262002538604083205482111562000f4e6200251c8462005091565b338652898b5262002531604087205462005091565b906200520b565b338252858752620025786200255282604085205462005056565b919062000f4e620025638562005091565b3387528a8c5262002531604088205462005091565b3383528688526040832055818115620026e0575b3390f115620026d5573383528152604082205415620025a9575080f35b611f48805491620025ba8362004dfe565b918493855b8181106200267b575050620025d48462004dfe565b805192906001600160401b03841162002667578190620025f48562004f58565b0191865280862090865b8481106200264b575050505050825b8281106200261b5750505080f35b620026459062000f556001600160a01b0362002638838662004ce2565b511662001a448362004e36565b6200260d565b83516001600160a01b03168382015592810192600101620025fe565b634e487b7160e01b87526041600452602487fd5b620026868162004e36565b90546001600160a01b03916003913391831b1c831603620026b5575b5050620026af9062004c7b565b620025bf565b96620026cc91839862001af1620026af9562004e36565b959038620026a2565b6040513d84823e3d90fd5b506108fc6200258c565b50346200020257806003193601126200020257604051611f4680548083529083526020808301937f721f0813146d89d6f0f0dbb1451dd10acd9dadea7c30d73459c3079bc665b9a892915b828210620027505762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002735565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000c54576103e8821015620027c3579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b50346200020257806003193601126200020257604051611f4880548083529083526020808301937f54b856f7ae688db523226c6d190d6c3f1578f46968ba7de0cc9e487420dbf24c92915b8282106200283d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002822565b50346200020257806003193601126200020257602060ff613f735416604051906200288981620029a0565b8152f35b50346200020257602090816003193601126200020257620028ad62002944565b620028b762005284565b506001600160a01b03168152611f498252604080822090519190620028dc8362002ac7565b60405193849192915b606483106200290f57610c808587620028fe8162002ae3565b815262000200604051809262002975565b60018281928654815201940192019192620028e5565b90503462000e60578160031936011262000e6057602090613f71548152f35b600435906001600160a01b03821682036200295b57565b600080fd5b35906001600160a01b03821682036200295b57565b516000915b606483106200298857505050565b6001908251815260208091019201920191906200297a565b60041115620029ab57565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b828110620029e9575050505090565b83516001600160a01b031685529381019392810192600101620029da565b608081019081106001600160401b0382111762002a2357604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762002a2357604052565b61010081019081106001600160401b0382111762002a2357604052565b61012081019081106001600160401b0382111762002a2357604052565b606081019081106001600160401b0382111762002a2357604052565b60e081019081106001600160401b0382111762002a2357604052565b602081019081106001600160401b0382111762002a2357604052565b610c8081019081106001600160401b0382111762002a2357604052565b604081019081106001600160401b0382111762002a2357604052565b601f909101601f19168101906001600160401b0382119082101762002a2357604052565b6040519062002b4f8262002ac7565b60405182611f4b6000835b6064821062002b745750505062002b718262002ae3565b52565b600160208192855481520193019101909162002b5a565b9060405191828154918282526020928383019160005283600020936000905b82821062002bc55750505062002bc39250038362002b1c565b565b85546001600160a01b03168452600195860195889550938101939091019062002baa565b6001600160401b03811162002a235760051b60200190565b90600182811c9216801562002c33575b602083101462002c1d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162002c11565b906000929180549162002c518362002c01565b91828252600193848116908160001462002cb8575060011462002c75575b50505050565b90919394506000526020928360002092846000945b83861062002ca357505050500101903880808062002c6f565b80548587018301529401938590820162002c8a565b9294505050602093945060ff191683830152151560051b0101903880808062002c6f565b90815462002cea8162002be9565b9260409362002cfc8551918262002b1c565b828152809460208092019260005281600020906000935b85851062002d2357505050505050565b6001848192845162002d3b816200118d818a62002c3e565b81520193019401939162002d13565b90815180825260208080930193019160005b82811062002d6b575050505090565b83516001600160a01b03168552938101939281019260010162002d5c565b60005b83811062002d9d5750506000910152565b818101518382015260200162002d8c565b9060209162002dc98151809281855285808601910162002d89565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002e015750505050505090565b909192939495848062002e1d83856001950387528a5162002dae565b980193019301919493929062002df0565b93929162002e4085610ca09362002975565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002ecc62002e956080840151610100610d408a0152610dc089019062002d4a565b62002eb560a085015191610cbf1992838b830301610d608c015262002dd5565b9060c08501519089830301610d808a015262002d4a565b9101511515610da0860152930152565b6001600160401b03811162002a2357601f01601f191660200190565b81601f820112156200295b5780359062002f128262002edc565b9262002f22604051948562002b1c565b828452602083830101116200295b57816000926020809301838601378301015290565b60051115620029ab57565b90815180825260208080930193019160005b82811062002f71575050505090565b83518552938101939281019260010162002f62565b90815180825260208092019182818360051b82019501936000915b84831062002fb25750505050505090565b909192939495848062002fce83856001950387528a5162002f50565b980193019301919493929062002fa1565b90815180825260208092019182818360051b82019501936000915b8483106200300b5750505050505090565b90919293949584806200302783856001950387528a5162002d4a565b980193019301919493929062002ffa565b90815180825260208092019081926005928183851b82019601946000915b84831062003068575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029ab5783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b82811062003128575050505050928291620030f260019560608085015190840152608080850151908483039085015262002dae565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062003056565b9193959680620031ee600193959761011f198b82030189528951908151815283820151620031568162002f45565b84820152878201516200316981620029a0565b88820152606090818301518282015281620031de620031cd620031bc60806200319f8189015160c080848a015288019062002f50565b9560a0809901519881880391015287519080875286019062002dd5565b888701518582038a87015262002f86565b8b8601518482038d86015262002fdf565b9301519181840391015262002dae565b970195019101918b969594939192620030bd565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620032645750505050906040620032619392015190604081840391015262002dae565b90565b858703607f19018352835180516001600160a01b0316885260208101519497939492939192906026821015620029ab57604091602084015201519060606040820152620032c08251610100606084015261016083019062002dd5565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003482575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b828110620033fd57505050506060840151838203605f190160c085015262003341925062003038565b608083015190605f198382030160e0840152602080835192838152019201906000905b808210620033d957505050620033cc8360209360e0620033b56200339d879660a060019a0151605f198683030161010087015262002f86565b60c0850151848203605f190161012086015262002fdf565b92015190610140605f198285030191015262002dae565b980194019291016200323b565b9091926020806001928651620033ef8162002f45565b815201940192019062003364565b90919293602080600192601f19868203018852885190620034666200342b835160e080855284019062002f50565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002dae565b60c0928301511515919092015297019695019392910162003318565b909192602080600192865115158152019401920190620032e2565b906003821015620029ab5752565b9060405191828154918282526020928383019160005283600020936000905b828210620034e35750505062002bc39250038362002b1c565b855484526001958601958895509381019390910190620034ca565b906040516200350d8162002aab565b60c060ff600683956200352081620034ab565b8552600181015460208601526002810154604086015260038101546060860152826004820154161515608086015260405162003565816200118d816005860162002c3e565b60a08601520154161515910152565b6006821015620029ab5752565b9081546200358f8162002be9565b926200359f604051948562002b1c565b818452600090815260208082208186015b848410620035bf575050505050565b6001838192620035cf85620034ab565b815201920193019290620035b0565b908154620035ec8162002be9565b92620035fc604051948562002b1c565b818452600090815260208082208186015b8484106200361c575050505050565b60018381926200362c8562002b8b565b8152019201930192906200360d565b90600360606040516200364e8162002a07565b6200369981956200365f8162002cdc565b83526200366f6001820162003581565b60208401526200368260028201620035de565b6040840152620021f9604051809681930162002c3e565b0152565b90604051620036ac8162002a8f565b82546001600160a01b03168152600183018054919384929091620036d08262002be9565b91620036e0604051938462002b1c565b80835260208301916000526020600020916000905b82821062003722575050505091620036996040926002946020840152620021f98451809681930162002c3e565b604051620037308162002a8f565b84546001600160a01b038116825260a01c60ff166026811015620029ab576020820152604051620037618162002a55565b6200376f6001870162002cdc565b815260028601604051808260208294549384815201906000526020600020926000905b80601f830110620046ef57620038cb945491818110620046d8575b818110620046be575b818110620046a4575b8181106200468a575b81811062004671575b81811062004657575b8181106200463d575b81811062004623575b81811062004609575b818110620045ef575b818110620045d5575b818110620045bb575b818110620045a1575b81811062004587575b8181106200456d575b81811062004553575b81811062004539575b8181106200451f575b81811062004505575b818110620044eb575b818110620044d1575b818110620044b7575b8181106200449d575b81811062004483575b81811062004469575b8181106200444f575b81811062004435575b8181106200441b575b81811062004401575b818110620043e7575b818110620043cd575b10620043bc575b50038262002b1c565b6020820152600386018054620038e18162002be9565b91620038f1604051938462002b1c565b81835260208301906000526020600020906000905b8382106200439b57505050506040820152600486018054620039288162002be9565b9162003938604051938462002b1c565b81835260208301906000526020600020906000905b8382106200423e57505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003f355784600997946020979460019a979462003ac494549181811062003f17575b81811062003ef6575b81811062003ed5575b81811062003eb4575b81811062003e94575b81811062003e73575b81811062003e52575b81811062003e31575b81811062003e10575b81811062003def575b81811062003dce575b81811062003dad575b81811062003d8c575b81811062003d6b575b81811062003d4a575b81811062003d29575b81811062003d08575b81811062003ce7575b81811062003cc6575b81811062003ca5575b81811062003c84575b81811062003c63575b81811062003c42575b81811062003c21575b81811062003c00575b81811062003bdf575b81811062003bbe575b81811062003b9d575b81811062003b7c575b81811062003b5b575b81811062003b3a575b1062003b1f5750038262002b1c565b608082015262003ad760068a0162003581565b60a082015262003aea60078a01620035de565b60c082015260405162003b06816200118d8160088e0162002c3e565b60e08201526040820152815201940191019092620036f5565b90889160f81c62003b308162002f45565b81520138620038c2565b928a8d9160ff8560f01c1662003b508162002f45565b815201930162003ab5565b928a8d9160ff8560e81c1662003b718162002f45565b815201930162003aac565b928a8d9160ff8560e01c1662003b928162002f45565b815201930162003aa3565b928a8d9160ff8560d81c1662003bb38162002f45565b815201930162003a9a565b928a8d9160ff8560d01c1662003bd48162002f45565b815201930162003a91565b928a8d9160ff8560c81c1662003bf58162002f45565b815201930162003a88565b928a8d9160ff8560c01c1662003c168162002f45565b815201930162003a7f565b928a8d9160ff8560b81c1662003c378162002f45565b815201930162003a76565b928a8d9160ff8560b01c1662003c588162002f45565b815201930162003a6d565b928a8d9160ff8560a81c1662003c798162002f45565b815201930162003a64565b928a8d9160ff8560a01c1662003c9a8162002f45565b815201930162003a5b565b928a8d9160ff8560981c1662003cbb8162002f45565b815201930162003a52565b928a8d9160ff8560901c1662003cdc8162002f45565b815201930162003a49565b928a8d9160ff8560881c1662003cfd8162002f45565b815201930162003a40565b928a8d9160ff8560801c1662003d1e8162002f45565b815201930162003a37565b928a8d9160ff8560781c1662003d3f8162002f45565b815201930162003a2e565b928a8d9160ff8560701c1662003d608162002f45565b815201930162003a25565b928a8d9160ff8560681c1662003d818162002f45565b815201930162003a1c565b928a8d9160ff8560601c1662003da28162002f45565b815201930162003a13565b928a8d9160ff8560581c1662003dc38162002f45565b815201930162003a0a565b928a8d9160ff8560501c1662003de48162002f45565b815201930162003a01565b928a8d9160ff8560481c1662003e058162002f45565b8152019301620039f8565b928a8d9160ff8560401c1662003e268162002f45565b8152019301620039ef565b928a8d9160ff8560381c1662003e478162002f45565b8152019301620039e6565b928a8d9160ff8560301c1662003e688162002f45565b8152019301620039dd565b928a8d9160ff8560281c1662003e898162002f45565b8152019301620039d4565b928a8d9160ff85831c1662003ea98162002f45565b8152019301620039cb565b928a8d9160ff8560181c1662003eca8162002f45565b8152019301620039c2565b928a8d9160ff8560101c1662003eeb8162002f45565b8152019301620039b9565b928a8d9160ff8560081c1662003f0c8162002f45565b8152019301620039b0565b928a8d9160ff851662003f2a8162002f45565b8152019301620039a7565b926001610400602092865460ff811662003f4f8162002f45565b825260ff8160081c1662003f638162002f45565b8583015260ff8160101c1662003f798162002f45565b604083015260ff8160181c1662003f908162002f45565b606083015260ff81861c1662003fa68162002f45565b608083015260ff8160281c1662003fbd8162002f45565b60a083015260ff8160301c1662003fd48162002f45565b60c083015262003fea60ff8260381c1662002f45565b60ff8160381c1660e083015260ff8160401c16620040088162002f45565b61010083015260ff8160481c16620040208162002f45565b61012083015260ff8160501c16620040388162002f45565b61014083015260ff8160581c16620040508162002f45565b61016083015260ff8160601c16620040688162002f45565b61018083015260ff8160681c16620040808162002f45565b6101a083015260ff8160701c16620040988162002f45565b6101c083015260ff8160781c16620040b08162002f45565b6101e083015260ff8160801c16620040c88162002f45565b61020083015260ff8160881c16620040e08162002f45565b61022083015260ff8160901c16620040f88162002f45565b61024083015260ff8160981c16620041108162002f45565b61026083015260ff8160a01c16620041288162002f45565b61028083015260ff8160a81c16620041408162002f45565b6102a083015260ff8160b01c16620041588162002f45565b6102c083015260ff8160b81c16620041708162002f45565b6102e083015260ff8160c01c16620041888162002f45565b61030083015260ff8160c81c16620041a08162002f45565b61032083015260ff8160d01c16620041b88162002f45565b61034083015260ff8160d81c16620041d08162002f45565b61036083015260ff8160e01c16620041e88162002f45565b61038083015260ff8160e81c16620042008162002f45565b6103a083015260ff8160f01c16620042188162002f45565b6103c083015260f81c6200422c8162002f45565b6103e08201520194019201916200397e565b6040516200424c8162002a55565b6200425c60ff8554168262003574565b60018401546020820152600284018054620042778162002be9565b9162004287604051938462002b1c565b81835260208301906000526020600020906000905b838210620043145750505050600192826020926040600695015260038701546060820152604051620042d7816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301910190916200394d565b600190602060405191620043288362002a39565b85548352838601549260ff8416620043408162002f45565b8382015260ff600894851c166200435781620029a0565b6040820152600287015460608201526200437460038801620034ab565b608082015262004387600488016200363b565b60a08201528152019301910190916200429c565b60076020600192620043ad86620034fe565b81520193019101909162003906565b60f81c1515815260200138620038c2565b92602060019160ff8560f01c1615158152019301620038bb565b92602060019160ff8560e81c1615158152019301620038b2565b92602060019160ff8560e01c1615158152019301620038a9565b92602060019160ff8560d81c1615158152019301620038a0565b92602060019160ff8560d01c161515815201930162003897565b92602060019160ff8560c81c16151581520193016200388e565b92602060019160ff8560c01c161515815201930162003885565b92602060019160ff8560b81c16151581520193016200387c565b92602060019160ff8560b01c161515815201930162003873565b92602060019160ff8560a81c16151581520193016200386a565b92602060019160ff8560a01c161515815201930162003861565b92602060019160ff8560981c161515815201930162003858565b92602060019160ff8560901c16151581520193016200384f565b92602060019160ff8560881c161515815201930162003846565b92602060019160ff8560801c16151581520193016200383d565b92602060019160ff8560781c161515815201930162003834565b92602060019160ff8560701c16151581520193016200382b565b92602060019160ff8560681c161515815201930162003822565b92602060019160ff8560601c161515815201930162003819565b92602060019160ff8560581c161515815201930162003810565b92602060019160ff8560501c161515815201930162003807565b92602060019160ff8560481c1615158152019301620037fe565b92602060019160ff8560401c1615158152019301620037f5565b92602060019160ff8560381c1615158152019301620037ec565b92602060019160ff8560301c1615158152019301620037e3565b92602060019160ff8560281c1615158152019301620037da565b92602060019160ff85831c1615158152019301620037d1565b92602060019160ff8560181c1615158152019301620037c8565b92602060019160ff8560101c1615158152019301620037bf565b92602060019160ff8560081c1615158152019301620037b6565b92602060019160ff851615158152019301620037ad565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003792565b9080601f830112156200295b57813590620048dc8262002be9565b92620048ec604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b8483106200491c5750505050505090565b82356001600160401b0381116200295b578691620049408484809489010162002ef8565b8152019201916200490b565b359081151582036200295b57565b81601f820112156200295b57803591620049748362002be9565b9262004984604051948562002b1c565b808452602092838086019260051b8201019283116200295b578301905b828210620049b0575050505090565b81358152908301908301620049a1565b9080601f830112156200295b57813590620049db8262002be9565b92620049eb604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b84831062004a1b5750505050505090565b82356001600160401b0381116200295b57869162004a3f848480948901016200495a565b81520192019162004a0a565b9080601f830112156200295b5781359162004a668362002be9565b9260409262004a788451958662002b1c565b8185526020938486019185600594851b860101948186116200295b57868101935b86851062004aac57505050505050505090565b84356001600160401b0381116200295b57820183603f820112156200295b57888101359062004adb8262002be9565b9162004aea8751938462002b1c565b808352868b8401918a1b830101918683116200295b5791878c94929593015b81811062004b2257505082935081520194019362004a99565b91938091939562004b338462002960565b8152019101918b9391949262004b09565b9062002bc3604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b99815180926020868601910162002d89565b810103602581018552018362002b1c565b9062002bc36040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004bf0815180926020868601910162002d89565b810103602081018552018362002b1c565b602062002bc391939293604051948162004c25879351809286808701910162002d89565b820162004c3b8251809386808501910162002d89565b0103808552018362002b1c565b1562004c515750565b60405162461bcd60e51b81526020600482015290819062004c7790602483019062002dae565b0390fd5b600019811462001e4f5760010190565b80511562004c995760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c995760400190565b80516002101562004c995760600190565b80516003101562004c995760800190565b805182101562004c995760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002bc3916020949360405195869262004d5a62004d4c83860162004cf7565b918281519485920162002d89565b016e0161030b732103130b630b731b29d1608d1b815262004d85825180936020878501910162002d89565b010360101981018552018362002b1c565b601962002bc3916020949360405195869262004db862004d4c83860162004cf7565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004ded825180936020878501910162002d89565b010360061981018552018362002b1c565b9062004e0a8262002be9565b62004e19604051918262002b1c565b828152809262004e2c601f199162002be9565b0190602036910137565b611f48805482101562004c995760005260206000200190600090565b611f46805482101562004c995760005260206000200190600090565b611f41805482101562004c995760005260206000200190600090565b613f02805482101562004c995760005260206000200190600090565b611f4a805482101562004c995760005260206000200190600090565b613efe805482101562004c995760005260206000200190600090565b613f00805482101562004c995760005260206000200190600090565b805482101562004c995760005260206000200190600090565b8181029291811591840414171562001e4f57565b919082549060031b91821b91600019901b1916179055565b81811062004f4b575050565b6000815560010162004f3f565b600160401b811162002a2357611f489081549080835581811062004f7b57505050565b62002bc3926000526020600020918201910162004f3f565b600160401b811162002a2357611f469081549080835581811062004f7b57505050565b8054600082558062004fc6575050565b62002bc39160005260206000209081019062004f3f565b600160401b811162002a2357613efe9081549080835581811062004f7b57505050565b600160401b811162002a2357613f009081549080835581811062004f7b57505050565b611fb58054600082558062004fc6575050565b90600160401b811162002a235781549080835581811062004f7b57505050565b919082811162005067576001920390565b50600091508190565b81156200507b570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b80821015620051fc575b506904ee2d6d415b85acef8160201b80831015620051ec575b50662386f26fc1000080831015620051dc575b506305f5e10080831015620051cc575b5061271080831015620051bc575b506064821015620051ab575b600a80921015620051a0575b600190816021818601956200512d8762002edc565b966200513d604051988962002b1c565b8088526200514e601f199162002edc565b01366020890137860101905b62005167575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200519a579190826200515a565b62005160565b916001019162005118565b91906064600291049101916200510c565b6004919392049101913862005100565b60089193920491019138620050f2565b60109193920491019138620050e2565b60209193920491019138620050cf565b604093508104915038620050b6565b601e62002bc391602094936040519586926200522d62004d4c83860162004cf7565b017f2c20616e6420776974686472617761626c65206469766964656e64733a200000815262005266825180936020878501910162002d89565b010360011981018552018362002b1c565b6003821015620029ab5752565b60405190620052938262002ac7565b60405182620052a28262002ae3565b610c8036833752565b90620052b78262002be9565b604090620052c88251918262002b1c565b8381528093620052db601f199162002be9565b019160005b838110620052ee5750505050565b6020908251620052fe8162002a55565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e0830152828601015201620052e0565b62005348815462002c01565b908162005353575050565b81601f6000931160011462005366575055565b90808391825262005387601f60208420940160051c84016001850162004f3f565b5555565b80549060008155816200539c575050565b6000526020600020908101905b818110620053b5575050565b80620053c36001926200533c565b01620053a9565b90600160401b811162002a2357815491818155828210620053ea57505050565b600052602060002091820191015b81811062005404575050565b80620054126001926200533c565b01620053f8565b80549060008155816200542a575050565b6000526020600020908101905b81811062005443575050565b806200545160019262004fb6565b0162005437565b90600160401b811162002a23578154918181558282106200547857505050565b600052602060002091820191015b81811062005492575050565b80620054a060019262004fb6565b0162005486565b805460009182815581620054ba57505050565b6001600160fd1b0382168203620055475782526020822091600391821b8301925b838110620054e95750505050565b8082600892558260018201558260028201556200550884820162004fb6565b62005516600482016200538b565b620055246005820162005419565b620055326006820162005419565b62005540600782016200533c565b01620054db565b634e487b7160e01b83526011600452602483fd5b600160401b821162002a23578054908281558183106200557a57505050565b6001600160fd1b03828116830362001e4f578316830362001e4f57600090815260208120600392831b810193831b015b838110620055b85750505050565b808260089255826001820155826002820155620055d784820162004fb6565b620055e5600482016200538b565b620055f36005820162005419565b620056016006820162005419565b6200560f600782016200533c565b01620055aa565b516006811015620029ab5790565b906006811015620029ab5760ff80198354169116179055565b90620056498162002f45565b60ff80198354169116179055565b906200566381620029a0565b61ff0082549160081b169061ff001916179055565b9190601f81116200568857505050565b62002bc3926000526020600020906020601f840160051c83019310620056b7575b601f0160051c019062004f3f565b9091508190620056a9565b81519192916001600160401b03811162002a2357620056ee81620056e7845462002c01565b8462005678565b602080601f83116001146200572d57508192939460009262005721575b50508160011b916000199060031b1c1916179055565b0151905038806200570b565b90601f198316958460005282600020926000905b8882106200577c5750508360019596971062005762575b505050811b019055565b015160001960f88460031b161c1916905538808062005758565b8060018596829496860151815501950193019062005741565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b81516006811015620029ab57620057f0908262005624565b6020820151600182015560028101604083015160208151916200581483856200555b565b01916000526020600020916000905b8282106200588757505050509060e0600562002bc3936060840151600382015562005856608085015160048301620056c2565b01916200586a60a082015115158462005795565b6200587c60c0820151151584620057a6565b0151151590620057be565b805180518555620058c760018601620058b06020840151620058a98162002f45565b826200563d565b604083015190620058c182620029a0565b62005657565b60608101516002860155608081015180519060038701906001600160401b03831162002a2357602090620058fc848462005036565b0190600052602060002060005b83811062005ba8575050505060a0015180518051906004870190602090620059328484620053ca565b01906000526020600020906000905b83821062005b885750505050600585016020820151602081519162005967838562005458565b019160005260206000206000925b82841062005b24575050505060068501604082015160208151916200599b838562005458565b019160005260206000206000925b82841062005ab75750505050606001518051906001600160401b03821162002a2357620059e982620059df600789015462002c01565b6007890162005678565b602090601f831160011462005a3c57928260089360209360019660009262005a30575b5050600019600383901b1c191690851b1760078801555b0194019101909262005823565b01519050388062005a0c565b906007870160005260206000209160005b601f198516811062005a9e575083602093600196938793600897601f1981161062005a84575b505050811b01600788015562005a23565b015160001960f88460031b161c1916905538808062005a73565b9192602060018192868501518155019401920162005a4d565b80518051906001600160401b03821162002a235760209062005ada838662005036565b0183600052602060002060005b83811062005b06575050505060016020819201920193019290620059a9565b82516001600160a01b03168183015560209092019160010162005ae7565b80518051906001600160401b03821162002a235760209062005b47838662005036565b0183600052602060002060005b83811062005b7357505050506001602081920192019301929062005975565b60019060208451940193818401550162005b54565b600160208262005b9b83945187620056c2565b0193019101909162005941565b60019060208451940193818401550162005909565b60409081519162005bce8362002b00565b60018352829160005b60208082101562005c415783516020929162005bf38262002a39565b60008252600081830152600086830152606060008184015280608084015286519062005c1f8262002a07565b808252808383015280888301528082015260a083015282880101520162005bd7565b505091925050565b611f43805482101562004c99576000526006602060002091020190600090565b613efb805482101562004c99576000526006602060002091020190600090565b611f42805482101562004c99576000526006602060002091020190600090565b613efa805482101562004c99576000526006602060002091020190600090565b611f428054600160401b81101562002a235762005cec9160018201905562005c89565b91909162005cff5762002bc391620057d8565b634e487b7160e01b600052600060045260246000fd5b611f438054600160401b81101562002a235762005cec9160018201905562005c49565b613efb8054600160401b81101562002a235762005cec9160018201905562005c69565b613efa8054600160401b81101562002a235762005cec9160018201905562005ca9565b1562005d8657565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b6103e881101562004c9957600390811b60028101549060009260049384830191825492829682849601935b85871062005e3d5750505050505050620032619162005e359162005f19565b919062005d7e565b98979091929394959862005e9f5762005e938962005e8b62005e6562000f559b9c8762004efa565b905490881b1c6001600160a01b0316600090815260208990526040812054909462006049565b9a9062005f3b565b95949392919062005e16565b603282634e487b7160e01b6000525260246000fd5b6103e881101562004c995762005e358162005edc611fba620032619460031b01549162005f9f565b9062005f19565b90811562005f1057606462005efc818402938462005070565b0362005f085760019190565b600091508190565b60019150600090565b9190821562005f315762005efc818402938462005070565b5060019150600090565b1562005f4357565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6103e8811015908162004c995790600391821b90611fbc820190815490600094611fbb869501915b83861062005fd85750505050505090565b9590919293949562004c99576200602b866200602362005ffd62000f55998962004efa565b905490861b1c6001600160a01b0316600090815260208790526040812054909462006049565b989062005f3b565b949392919062005fc7565b906001820191821062005f085760019190565b9190820191821062005f085760019190565b156200606357565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b6103e881101562004c9957600390811b60018101549060009260049384830191825492829682849601935b85871062006116575050505050505062003261916200610e9162005f19565b91906200605b565b98979091929394959862005e9f576200613e8962005e8b62005e6562000f559b9c8762004efa565b959493929190620060ef565b6103e881101562004c99576200610e8162005edc611fb9620032619460031b01549162005f9f565b611faf54620061b86200618462033793565b91620061966127109384831062004c48565b620061ae611fb254611fb054111562000f4e62033801565b611fb15462005f19565b919050620061c562033857565b5060009081925b6103e88410620061e9575b620061e493500462006236565b905090565b9160ff60078560031b015416156200622f57836200621c62006228926200621562000f55969762005deb565b9062006049565b949062000f4e62033857565b92620061cc565b91620061d7565b9080156200624e57620062499162005070565b600191565b5050600090600090565b9190820180921162001e4f57565b9190820391821162001e4f57565b906107b2906301e1853e80840483810180821162001e4f576001820181811162001e4f57604583019082821162001e4f576064620062b792049060021c62006266565b9561017183019682881162001e4f57620062d8906101908099049062006258565b9084840294848604148415171562001e4f5762015180948583029280840487149015171562001e4f576200631892620063119162006258565b9062006266565b9160049586910815958662006537575b506040516101a081016001600160401b038111828210176200652257604052600c9687825261018080366020850137601f9182620063668562004c8b565b5215620065185760ff601d5b166200637e8462004caf565b52816200638b8462004cc0565b52601e620063998462004cd1565b52825188101562006503578160a08401528251600510156200650357601e60c084015282516006101562006503578160e08401528251600710156200650357816101008401528251600810156200650357601e6101208401528251600910156200650357816101408401528251600a10156200650357601e6101608401528251600b10156200650357820152600096905b8188106200647e575b50508282049460018601809611620064695760018701809711620064695750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b9096926200648d848362004ce2565b5185810290808204871490151715620064e6578110620064fb57620064b3848362004ce2565b519085820291808304871490151715620064e657620064de91620064d79162006266565b9362004c7b565b96906200642a565b601188634e487b7160e01b6000525260246000fd5b929662006433565b603288634e487b7160e01b6000525260246000fd5b60ff601c62006372565b604187634e487b7160e01b6000525260246000fd5b90955060648606159081159162006552575b50943862006328565b90508506153862006549565b90815181101562004c99570160200190565b90815181511162006627576000905b6200658e835182519062006266565b82116200661f5760019260005b825181101562006614576001600160f81b031980620065c6620065bf848862006258565b856200655e565b511690620065d583866200655e565b511603620065ee57620065e89062004c7b565b6200659b565b5092509060005b6200660c57620066059062004c7b565b906200657f565b505050600190565b5092919091620065f5565b505050600090565b5050600090565b611f4680549190600160401b83101562002a23578262001a4491600162002bc39501905562004e52565b611f4a80549190600160401b83101562002a23578262001a4491600162002bc39501905562004ea6565b611fb5805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611fb3805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611f4180549190600160401b83101562002a23578262001a4491600162002bc39501905562004e6e565b60405190620067518262002b00565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067878262002a8f565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200696d5781620067ff88620068079362004ce2565b5101620073df565b60269283821015620029ab57601a918203620068c557876200682a915162004ce2565b51928284015190811015620029ab570362006883575093620068746200687c926200686c6200686560a0604062000f559a0151015162004c8b565b5162004c8b565b519062006049565b9590620073ed565b92620067dc565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068de81620067ff89869a979a5162004ce2565b82811015620029ab5760140362006917575050906200687462000f55956200621562006910846200687c965162004ce2565b516200743a565b6200692990620067ff85855162004ce2565b90811015620029ab5760151462006947575b506200687c9062004c7b565b906200687462006966956200621562006910846200687c965162004ce2565b906200693b565b505050909250803410600014620069e35760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007264575b50613f739182549260ff84169362006a0485620029a0565b60019480860362006a3e5750505062006a3491925062006a2e62006a2882620074d1565b620075a8565b62007632565b6200326162006742565b62006a4981620029a0565b60028114808062007257575b1562006e805750505062006a6982620074e6565b1562006e415762006a7a82620074e6565b1562006e055762006ab390602080930190600260ff8560018060a01b0362006aa3865162004c8b565b5151169460409687915162004c8b565b510151015192541662006ac681620029a0565b0362006dc55781600052613f778085528360002092613f7880549485600052875260ff86600020541662006d875783519480600052613f7693848952600396878960002001540362006d215783600052885286600020906000528752856000208960ff19825416179055886000905b62006b7f575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b6862032c82565b519162006b758362002b00565b6015835282015290565b845181101562006d1b5786825480600052858a5262006ba48389846000200162004efa565b905490891b1c908a84888b62006bbb838d62004ce2565b511562006c7957505050505062006c1e62006bfe85549283600052888d526200621562006bf087600480986000200162004efa565b9054908d1b1c918962032b6c565b9092600052878c5262006c1785858d6000200162004efa565b9062004f27565b1562006c37575062006c309062004c7b565b8962006b35565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006cb662006cc8966200621587999462006c17979860005284895262006ca987600580986000200162004efa565b9054911b1c918d62032b6c565b959097600052528c6000200162004efa565b1562006cd95762006c309062004c7b565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b3b565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e90829794959697620029a0565b600382149182806200724a575b1562006f1f5750505050505062006eb4816200754d565b1562006ecf5762006ec5906202f874565b6200326162006778565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f2a81620029a0565b81806200723c575b806200722f575b156200715957505050509060ff9062006f5162032e94565b54169062006f5f82620029a0565b81036200701d575062006f7281620074d1565b1562006f8c578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200702b600392620029a0565b146200706457505b604051620070418162002b00565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200706f816200754d565b15620070805762006ec5906202f874565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b6200716481620029a0565b82156200721a575b5050806200720c575b62007184575050505062007033565b60ff19161790556200719681620074d1565b15620071b0578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b50613f725442101562007175565b62007227919250620029a0565b38806200716c565b50613f7254421062006f39565b50613f715442101562006f32565b50613f7254421062006e9d565b50613f7154421062006a55565b60018060a01b039081845116600052611f459081602052604060002054156200735a575b62007294903462005056565b90156200731657620072b790838651166000528260205260406000205462006049565b929015620072d55784511660005260205260406000205538620069ec565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b611f4654939291906000805b8681106200739c575b506200729492939495501562007388575b905062007288565b62007396848751166200662e565b62007380565b84620073a88262004e52565b919054818b51169260031b1c1614620073cc57620073c69062004c7b565b62007366565b509394508493506001620072946200736f565b516026811015620029ab5790565b15620073f557565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007454818351015162004caf565b5151841015620074c9579262006874620074b9604094620074b185620074a986620074978b6200749e8362000f559f9e6200749790620074bf9e51015162004caf565b5162004ce2565b519451015162004cc0565b519062005f19565b9290620073ed565b62006049565b919290506200743f565b509093505050565b602001515115620074e157600190565b600090565b6020015160018151036200750a5762007503620032619162004c8b565b5162007510565b50600090565b60208101516026811015620029ab576020036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b6020015160018151036200750a576200756a620032619162004c8b565b5160208101516026811015620029ab576021036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b15620075b057565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763d8162015580565b516201507f576006811015620029ab57600381146201502657806200769a5760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200b1a25750600080611f4a54905b8181106200b15b575b5050156200b13f575b60005b6020908183015191825182101562007727576200771981611f49620076ff620076f962000f5595620067ff88620077219a62004ce2565b62033aa2565b9160018060a01b0388511660005252604060002062024340565b429162004f27565b620076c2565b50505060005b602080830151805183101562007775576200775291620067ff84620076f99362004ce2565b90606482101562004c99576200776f914290611f4b015562004c7b565b6200772d565b505050906000905b602083015180518310156200b1395782620077989162004ce2565b5160208101805160269081811015620029ab57156200b0f657815181811015620029ab57600103620079e6575050604080910190620077dc60c08351015162004c8b565b5192620077fe60a0620077f3818651015162004c8b565b519451015162004caf565b51956200780f85518551146202e0ca565b6200781e85518851146202e130565b60005b8551811015620079645762007837818662004ce2565b516103e8908181101562004c9957600160ff60076200785f9360031b0154161515146202e192565b6200786b828a62004ce2565b5162007878838862004ce2565b51908282101562004c99576006620078969260031b01549062006049565b90620078a3848962004ce2565b51918383101562004c99576006620078c09360031b01556202e1ea565b620078cc828a62004ce2565b5190620078da838862004ce2565b518181101562004c99576001600160a01b0393926200791a916003908662007903878e62004ce2565b5116600052811b0160205287600020549062006049565b62007926848a62004ce2565b519283101562004c9957600362000f55936200795e9662007948878e62004ce2565b5116600052811b0160205287600020556202e249565b62007821565b50939262007981919296506200797a90620336a2565b9262033586565b9451926200798f8462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba620079c3938762004ce2565b51878a62033195565b6200799b565b5094509260209250620079dd915062004c7b565b9190506200777d565b815181811015620029ab5760020362007c7d575050604080910180519283519562007a2b62007a1a60a08097015162004c8b565b51956200749e818651015162004caf565b5193875186510362007c2a57875184510362007bd657875185510362007b7f575060005b855181101562007b695762007a65818762004ce2565b51906103e8918281101562004c995762007a8b60ff6007809360031b015416156202e2a2565b62007a97828962004ce2565b518381101562004c995760031b01805460ff1916600117905562007abc818a62004ce2565b5162007ac9828962004ce2565b51908382101562004c9957600562007ae59260031b01620056c2565b62007af1818662004ce2565b5162007afe828962004ce2565b518381101562004c995760031b6001015562007b1b818762004ce2565b5162007b28828962004ce2565b518381101562004c995760031b6002015562007b45818862004ce2565b519182101562004c99576000600662007b639360031b015562004c7b565b62007a4f565b50955093905060209250620079dd915062004c7b565b5162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b8195939492955181811015620029ab5760030362008279575050604084019062007cac60c08351015162004c8b565b519362007cc360a0620077f3818651015162004c8b565b519362007cd8865185511462000f4e62033906565b62007ceb865186511462000f4e62033906565b60005b865181101562007d545762007d04818662004ce2565b51906103e882101562004c9957600362007d4e9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b51111562000f4e62033a0a565b62007cee565b50909493919460005b855181101562007e885762007d73818662004ce2565b51906103e88083101562004c9957600360018060a01b0393848c5116600052811b0160205262007db660406000205462007dae848962004ce2565b519062005056565b9062007dc3848a62004ce2565b51918383101562004c9957600362007df293878f5116600052811b0160205260406000205562000f4e62033a0a565b62007dfe828862004ce2565b518181101562004c99576003908462007e18858c62004ce2565b5116600052811b0160205262007e396040600020546200686c848962004ce2565b62007e45848a62004ce2565b519283101562004c9957600362000f559362007e829662007e67878e62004ce2565b5116600052811b0160205260406000205562000f4e62033a6f565b62007d5d565b5091509162007e9f62007ea69196959496620336a2565b9562033586565b926040519462007eb68662002b00565b6001865260203681880137516001600160a01b031662007ed68662004c8b565b526000905b8651821015620082645762007ef1828862004ce2565b516106c05262007f02855162004dfe565b9660009462007f12885162004dfe565b610400528594865b885181101562007fe9578a8962007f4a6001600160a01b0362007f3e858462004ce2565b51166106c0516203348a565b158062007fa3575b62007f6b575b505062007f659062004c7b565b62007f1a565b9862007f989162001b0382859c62007f8f62007f659760018060a01b039262004ce2565b51169262004ce2565b9790508a8962007f58565b5050506103e86106c051101562004c99576001600160a01b0362007fc8828b62004ce2565b511660005260036106c051811b016020528a89604060002054151562007f52565b509098949897969291939760005b88518110156200808b576103e86106c051101562004c99576001600160a01b0362008023828b62004ce2565b511660005260036106c051811b016020526040600020541562008052575b6200804c9062004c7b565b62007ff7565b996200804c9062008082906001600160a01b03620080718e8d62004ce2565b511662001b03826104005162004ce2565b9a905062008041565b5098509694939291956106c0516103e8811015806104205262004c995760031b6004015496620080c6620080c0878a62006258565b62004dfe565b996000998a6109a0525b6104205162004c99576109a0518a811015620081855762008105620081229160006104205260046106c05160031b0162004efa565b90546104005160039290921b1c6001600160a01b03169062033539565b1562008141575b620081376109a05162004c7b565b6109a052620080d0565b99808c62001b036200817e93620081656109a05160046106c05160031b0162004efa565b905460039190911b1c6001600160a01b03169262004ce2565b9962008129565b509a939794969299919850946000915b8383106200822a57505050506104205162004c99578051906001600160401b03821162002a2357602090620081d48360046106c05160031b0162005036565b0160046106c05160031b01600052602060002060005b8381106200820c5750505050620082019062004c7b565b909295919562007edb565b82516001600160a01b031681830155602090920191600101620081ea565b6200825d9062008256906001600160a01b0362008248868662004ce2565b511662001b03828962004ce2565b9262004c7b565b9162008195565b91945050620079dd9194506020925062004c7b565b8195939492955181811015620029ab5760040362008501575050604080920160c094620082ba620082ae878451015162004c8b565b51968351015162004caf565b5194620082d160a0620077f3818651015162004c8b565b5193620082e6885188511462000f4e62033906565b620082f9885185511462000f4e62033906565b6200830c885186511462000f4e62033906565b60005b8851811015620083745762008325818662004ce2565b51906103e882101562004c99576200836e916003906001600160a01b036200834e848e62004ce2565b5116600052811b0160205262000f55886000205462007d41838a62004ce2565b6200830f565b50909691959294939660005b8351811015620084b55762008396818862004ce2565b51906103e8918281101562004c99576001600160a01b039060039082620083be858a62004ce2565b5116600052811b01602052620083df8b62007dae848b600020549262004ce2565b90620083ec848c62004ce2565b51918583101562004c995760036200842593856200840b888d62004ce2565b5116600052811b016020528a6000205562000f4e62033a0a565b62008431828a62004ce2565b518381101562004c9957600390826200844b858b62004ce2565b5116600052811b016020526200846c8b6200686c848b600020549262004ce2565b9190506200847b838b62004ce2565b519384101562004c9957620084af9360039162008499858b62004ce2565b5116600052811b01602052876000205562004c7b565b62008380565b5094620084d892975062007e9f91939450620084d190620336a2565b9362033586565b9260005b8351811015620079c9578062000f55620079ba620084fb938762004ce2565b620084dc565b8195949395519080821015620029ab57600591820362008a525750505060408401906200854360a062008538818551015162004c8b565b519351015162004caf565b51928251845103620089ef5760005b8351811015620085ab5762008568818562004ce2565b51906103e882101562004c99576003620085a59260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62008552565b509060005b83518110156200864557620085c6818562004ce2565b51906103e88083101562004c9957600360018060a01b0393848b5116600052811b016020526200860160406000205462007dae848a62004ce2565b6200860d848962004ce2565b519283101562004c9957600362000f55936200863f968d5116600052811b0160205260406000205562000f4e62033a0a565b620085b0565b5094939250906200865690620336a2565b9360405193620086668562002b00565b6001855260203681870137516001600160a01b0316620086868562004c8b565b5260405192620086968462002ac7565b6000845260003681376000905b86518210156200826457620086b9828862004ce2565b5161032052620086ca855162004dfe565b96600094620086da885162004dfe565b6106a0528594865b8851811015620087a8578a89620087126001600160a01b0362008706858462004ce2565b5116610320516203348a565b158062008762575b62008733575b50506200872d9062004c7b565b620086e2565b98620087579162001b0382859c62007f8f6200872d9760018060a01b039262004ce2565b9790508a8962008720565b5050506103e861032051101562004c99576001600160a01b0362008787828b62004ce2565b5116600052600361032051811b016020528a8960406000205415156200871a565b509098949897969291939760005b88518110156200884a576103e861032051101562004c99576001600160a01b03620087e2828b62004ce2565b5116600052600361032051811b016020526040600020541562008811575b6200880b9062004c7b565b620087b6565b996200880b9062008841906001600160a01b03620088308e8d62004ce2565b511662001b03826106a05162004ce2565b9a905062008800565b509850969493929195610320516103e8811015806106805262004c995760031b60040154966200887f620080c0878a62006258565b996000998a610540525b6106805162004c9957610540518a8110156200892557620088be620088db9160006106805260046103205160031b0162004efa565b90546106a05160039290921b1c6001600160a01b03169062033539565b15620088fa575b620088f06105405162004c7b565b6105405262008889565b99808c62001b036200891e93620081656105405160046103205160031b0162004efa565b99620088e2565b509a939794969299919850946000915b838310620089ca57505050506106805162004c99578051906001600160401b03821162002a2357602090620089748360046103205160031b0162005036565b0160046103205160031b01600052602060002060005b838110620089ac5750505050620089a19062004c7b565b9092959195620086a3565b82516001600160a01b0316818301556020909201916001016200898a565b620089e89062008256906001600160a01b0362008248868662004ce2565b9162008935565b60405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029ab5760060362008cbc5750505090604080920162008a8260c08251015162004c8b565b519462008a9960a062008538818551015162004c8b565b5192865183510362008c6b57865184510362008c1f5760005b875181101562008b175762008ac8818562004ce2565b51906103e882101562004c995762008b11916003906001600160a01b0362008af1848d62004ce2565b5116600052811b0160205262000f55876000205462007d41838962004ce2565b62008ab2565b509092919260005b875181101562008bcb5762008b35818662004ce2565b516103e88082101562004c99576001600160a01b0392916003908462008b5c858e62004ce2565b5116600052811b0160205262008b7c886000205462007dae848962004ce2565b62008b88848a62004ce2565b519283101562004c9957600362000f559362008bc59662008bab8f889062004ce2565b5116600052811b01602052896000205562000f4e62033a0a565b62008b1f565b50959262008be09192506200797a90620336a2565b92519462008bee8662002ac7565b60008652600036813760005b8351811015620079c9578062000f55620079ba62008c19938762004ce2565b62008bfa565b845162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029ab5760070362008e0b5750505060408091019362008ce860c08651015162004c8b565b519262008cfa60a08751015162004c8b565b519551519162008d12855188511462000f4e62033906565b60005b855181101562007b695762008e059062000f556001600160a01b038260028862008ded8e62008de28e62008dd88f8962008d508a8562004ce2565b511660005262008d8c8962008d8481611f409a8b60205262008d7e60ff8760002054161562000f4e620339d7565b62004ce2565b519662004ce2565b51968a62008dc283519b8c9662008da38862002a07565b600188526060602089019860008a528781019b8c52019b8c5262004ce2565b5116600052602052600020975115158862005795565b51151586620057a6565b5160018501620056c2565b5191015562008dfd838a62004ce2565b511662006718565b62008d15565b825195969593949281851015620029ab57600894850362008f025750505062008e3d60c0604080950151015162004c8b565b519360005b855181101562008eed5762008ee7906001600160a01b038062008e66838a62004ce2565b5116600052611f40908160205262008ebc60ff62008e936001828c600020541615151462000f4e62033936565b8262008ea0868d62004ce2565b5116600052836020528960002054891c161562000f4e6203399e565b62008ec8838a62004ce2565b51166000526020528560002061010061ff001982541617905562004c7b565b62008e42565b509490935060209250620079dd915062004c7b565b805182811015620029ab5760090362008fd65750505062008f2c60c0604080950151015162004c8b565b519360005b855181101562008eed5762008fd090866001600160a01b038062008f56848462004ce2565b511660005262008fa96001898362008f8b87611f40978860205262008d7e8660ff8097600020541615151462000f4e62033936565b5116600052846020528a600020548a1c1615151462000f4e62033969565b62008fb5838a62004ce2565b51166000526020528560002061ff0019815416905562004c7b565b62008f31565b80979694929395975182811015620029ab57600a03620090b457505050506040809401916200901b60a06200901060c08651015162004c8b565b519451015162004c8b565b519162009030845184511462000f4e62033906565b60005b8451811015620079c957620090ae906001600160a01b038062009057838962004ce2565b5116600052611f40806020526200907e600160ff8c600020541615151462000f4e62033936565b6200908a838862004ce2565b519162009098848a62004ce2565b5116600052602052600289600020015562004c7b565b62009033565b809795975182811015620029ab57600b03620091835750505050604080920193620090e460c08651015162004c8b565b5194515191620090fc865184511462000f4e62033906565b60005b8651811015620079c9576200917d9062000f556001600160a01b038062009127848c62004ce2565b5116600052611f40806020526200914e600160ff8b600020541615151462000f4e62033936565b6200915a848962004ce2565b519162009168858d62004ce2565b511660005260205260018860002001620056c2565b620090ff565b809794959396975182811015620029ab57600c03620092da57505050604001606091828251015193620091b6856202d715565b60005b8551811015620092c45760e0620091d582878751015162004ce2565b510151156200925c57620091f9620091f282878751015162004ce2565b5162005cc9565b611f42805460001992919083810190811162001e4f576200921b8a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c89565b5001805460ff1916905562004c7b565b620091b9565b620092776200927082878751015162004ce2565b5162005d15565b611f42805460001992919083810190811162001e4f57620092998a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c49565b50959150935060209250620079dd915062004c7b565b80979695939294975182811015620029ab57600d036200942f5750506040019460206200930c60a08851015162004c8b565b5196510151916200932187518451146202de09565b60005b875181101562007b69578080878a62009342620093d1958962004ce2565b5115620093d757620093a26200938984836200937462009368620093ad98889762004ce2565b51611f4254116202de92565b62008d7e8d6200939062009389858562004ce2565b5162005c89565b509060ff9889920154901c166202deea565b50015416156202df4b565b86620093be62009389838c62004ce2565b5001805460ff1916600117905562004c7b565b62009324565b620093a262009417848362009402620093f66200941e98889762004ce2565b51611f4354116202de92565b62008d7e8d6200939062009417858562004ce2565b5162005c49565b86620093be62009417838c62004ce2565b80979493975182811015620029ab57600e03620095155750506040019160206200945e60a08551015162004c8b565b5193510151956200947384518851146202de09565b60005b845181101562007b695780620094916200949d928a62004ce2565b51620094a35762004c7b565b62009476565b620094bf620094b3828862004ce2565b51611f4254116202dfac565b6200950487620094e9620094d862009389858b62004ce2565b5060ff9283910154891c166202e005565b88620094fa62009389858b62004ce2565b500154166202e067565b866200924662009389838962004ce2565b8091929350969495965182811015620029ab57600f036200963957505060400160609182825101519362009549856202d715565b60005b8551811015620092c45760e06200956882878751015162004ce2565b51015115620095d85762009585620091f282878751015162004ce2565b611f42805460001992919083810190811162001e4f57620095a78a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c89565b6200954c565b620095ec6200927082878751015162004ce2565b611f42805460001992919083810190811162001e4f576200960e8a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c49565b80919293949695505182811015620029ab57601003620096de57505060400151906200966e60a0608084015193015162004c8b565b519362009683835186511462000f4e62033906565b60005b8351811015620096cb578062000f55620096a5620096c5938762004ce2565b51620096b18162002f45565b620096bd838a62004ce2565b51906202d5d9565b62009686565b5093509160209150620079dd9062004c7b565b809592955182811015620029ab5760110362009967575050906040809401916200971360a06200901060c08651015162004c8b565b51916200972484518451146202d58d565b60005b84518110156200979c57620097969062000f556001600160a01b03806200974f848a62004ce2565b5116600052611f4580602052620097708b600020546200686c868b62004ce2565b9190926200977f868c62004ce2565b51166000526020528a6000205562000f4e620338bc565b62009727565b5093945091620097ad915062033586565b90611f4692835494620097c6620080c085518862006258565b91600093845b88811062009927575060005b86518110156200987f576000805b8a811062009830575b501562009808575b620098029062004c7b565b620097d8565b94620098029062009827906001600160a01b0362008248898b62004ce2565b959050620097f7565b6200983b8162004e52565b90546001600160a01b0360039290921b1c8116906200985b858c62004ce2565b51161462009874576200986e9062004c7b565b620097e6565b5050600138620097ef565b50965094909350620098918362004dfe565b805191906001600160401b03831162002a2357602090620098b28462004f93565b0190600052602060002060005b83811062009909575050505060005b828110620098e657505050620079dd60209162004c7b565b620099039062000f556001600160a01b0362001a37838662004ce2565b620098ce565b82516001600160a01b031681830155602090920191600101620098bf565b946200995a62009961916200993c8862004e52565b905460039190911b1c6001600160a01b031662001b03828962004ce2565b9562004c7b565b620097cc565b805182811015620029ab5760120362009bd65750506040809401916200999860a06200901060c08651015162004c8b565b5191620099a984518451146202d58d565b60005b8451811015620099fb57620099f59062000f556001600160a01b0380620099d4848a62004ce2565b5116600052611f4580602052620097708b6000205462007dae868b62004ce2565b620099ac565b50949150929162009a0c9062033586565b90611f46805462009a1d8162004dfe565b9260009485925b80841062009ad1575050505062009a3b8362004dfe565b805191906001600160401b03831162002a235760209062009a5c8462004f93565b0190600052602060002060005b83811062009ab3575050505060005b82811062009a9057505050620079dd60209162004c7b565b62009aad9062000f556001600160a01b0362001a37838662004ce2565b62009a78565b82516001600160a01b03168183015560209092019160010162009a69565b9297600097929597949194998a5b865181101562009bc45762009af48b62004e52565b90546001600160a01b0360039290921b1c81169062009b14838a62004ce2565b51161462009b2d5762009b279062004c7b565b62009adf565b509950976001979592979491945b8062009b94575b1562009b5a5762009b539062004c7b565b9262009a24565b9562009b8d62009b539162009b6f8962004e52565b905460039190911b1c6001600160a01b031662001b03828a62004ce2565b9662004c7b565b5062009ba08162004e52565b60018060a01b0391549060031b1c16600052611f4560205282600020541562009b42565b50999890989795929794919462009b3b565b809592955182811015620029ab5760130362009c3757505060408091015101519260005b845181101562009c26578062000f5562009c1962009c20938862004ce2565b516202f808565b62009bfa565b50925090620079dd60209162004c7b565b80519180831015620029ab57601492830362009dda5750505060408091019062009c6660c08351015162004c8b565b519262009c7d60a0620077f3818651015162004c8b565b519562009c8e85518551146202e0ca565b62009c9d85518851146202e130565b60005b855181101562009d855762009cb6818962004ce2565b5162009cc3828762004ce2565b516103e8918282101562004c9957600662009ce49260031b01549062006049565b9062009cf1848962004ce2565b51918383101562004c9957600662009d0e9360031b01556202e1ea565b62009d1a828a62004ce2565b519062009d28838862004ce2565b518181101562004c99576001600160a01b03939262009d51916003908662007903878e62004ce2565b62009d5d848a62004ce2565b519283101562004c9957600362000f559362009d7f9662007948878e62004ce2565b62009ca0565b50939262009d9b919296506200797a90620336a2565b94519262009da98462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba62009dd4938762004ce2565b62009db5565b815181811015620029ab57601590810362009e0657505050506020919262000f55620079dd926202e847565b82519180831015620029ab57601692830362009e6e57505050505060c0604062009e34920151015162004c8b565b519260005b845181101562009c265762009e689062000f556001600160a01b0362009e60838962004ce2565b5116620066cd565b62009e39565b835181811015620029ab5760170362009ec75760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab5760180362009f3a57505050505060c0604062009ef2920151015162004c8b565b51611fb6805460ff191660011790559260005b845181101562009c265762009f349062000f556001600160a01b0362009f2c838962004ce2565b511662006682565b62009f05565b839796975181811015620029ab576019036200a0ae57505050505060008080604080940160a0808251015180516200a075575b5050519060e08201519162009f916200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156200a06c573d9162009fb28362002edc565b9262009fc18351948562002b1c565b83523d6000602085013e5b1562009fe1575050620079dd60209162004c7b565b62004c7792506200a04d8151926000805160206203401b833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b838501528381516200a03c816059946020868601910162002d89565b810103603981018552018362002b1c565b5162461bcd60e51b815260206004820152918291602483019062002dae565b60609162009fcc565b6200a0809062004c8b565b51516200a08f575b8062009f6d565b81925062006865906200a0a59251015162004c8b565b5190386200a088565b835181811015620029ab57601a036200a1ae57505050506200a0d960a0604080940151015162004c8b565b51906200a0ea60038351146202d58d565b6200a0f58262004c8b565b51926200a10e6200a1068462004caf565b519362004cc0565b51926200a17457505091620079dd916001602094146000146200a16d576200a14d906200a140611fb191825462006049565b90915562000f4e62033857565b62000f55611fb26200a160815462006036565b90915562000f4e62033891565b5062004c7b565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b9091928094505181811015620029ab57601b036200a64357505050505091906200a1ee611faf54620061966200a1e362033793565b612710831062004c48565b50506200a1fa62033857565b506000805b6103e881106200a5d2575b50506200a21662006172565b6200a224613f745462004dfe565b9060009485935b6103e88510156200a5c55760ff60078660031b015416156200a3845760009560028660031b0154156200a37557869796975b62004c995760048660031b01548810156200a35c576200a285886004600389901b0162004efa565b600160a01b6001900391549060031b1c1696876000528660031b600301602052604097858960002054906200a2ba9162005f19565b99906200a2c662033857565b6200a2d19162004c48565b6000998960031b600201546200a2e79162005f19565b91906200a2f362033857565b6200a2fe9162004c48565b828b52611f476020528a20908154906200a3189162006049565b9091556200a32562033857565b6200a3309162004c48565b6200a33c828862004ce2565b526200a3489062004c7b565b976200a3549062004c7b565b97966200a25d565b91946200a36c9196975062004c7b565b9390946200a22b565b91946200a36c91965062004c7b565b949592915092505b6200a3978262004dfe565b91600091825b8281106200a52f57505050611f48908154926200a3bf620080c0858462006258565b9360009081905b8082106200a4f457505060005b8381106200a4505750508351939150506001600160401b03831162002a23576020906200a4008462004f58565b0190600052602060002060005b8381106200a4325750505050620079dd6020916000611fb1556000611fb25562004c7b565b82516001600160a01b0316818301556020909201916001016200a40d565b6000805b8381106200a4ac575b50156200a476575b6200a4709062004c7b565b6200a3d3565b906200a470906200a4a3906001600160a01b036200a495858762004ce2565b511662001b03828a62004ce2565b9190506200a465565b6001600160a01b03806200a4c1858862004ce2565b5116906200a4d0838b62004ce2565b5116146200a4e9576200a4e39062004c7b565b6200a454565b50506001386200a45d565b9091620082566200a528916200a50a8562004e36565b905460039190911b1c6001600160a01b031662001b03828b62004ce2565b906200a3c6565b6000805b8581106200a57d575b50156200a555575b6200a54f9062004c7b565b6200a39d565b926200a54f906200a574906001600160a01b0362008248878662004ce2565b9390506200a544565b6001600160a01b03806200a592858762004ce2565b5116906200a5a1838a62004ce2565b5116146200a5ba576200a5b49062004c7b565b6200a533565b50506001386200a53c565b949592915092506200a38c565b806003959394951b9060ff600783015416156200a638576200a622620074b962000f55946200a6166200a62e9560026200a60c8762005deb565b9101549062005f19565b929062000f4e62033857565b939062000f4e62033857565b939291936200a1ff565b50939291936200a20a565b835181811015620029ab57601c036200a69c5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab57601d036200a6c2575b5050505050620079dd60209162004c7b565b8397959694975181811015620029ab57601e036200af2d5750505050604084019060a0906200a6f5828451015162004c8b565b51516200a706838551015162004caf565b5151036200aeb0576200a71d828451015162004c8b565b51516200a72e838551015162004cc0565b5151036200ae34576200a745828451015162004c8b565b51946200a756838551015162004caf565b51916200a7876200a76b858751015162004cc0565b51946200a77c818851015162004c8b565b519651015162004caf565b51958551875103620089ef5760005b86518110156200a7ef576200a7ac818862004ce2565b51906103e882101562004c995760036200a7e99260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b6200a796565b5090969192939660005b86518110156200a898576200a80f818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b016020526200a84760406000205462007dae838b62004ce2565b91906200a855828a62004ce2565b51906103e882101562004c99576200a89293600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b6200a7f9565b5093979550936200a8ac90969296620336a2565b96604051966200a8bc8862002b00565b60018852602036818a013786516001600160a01b03166200a8dd8962004c8b565b52604051966200a8ed8862002ac7565b600088526000610720525b895161072051908110156200acb5576200a913908b62004ce2565b516103a0526200a924885162004dfe565b996000976200a9348b5162004dfe565b610a60528897895b8b518110156200aa02578d8c6200a96c6001600160a01b036200a960858462004ce2565b51166103a0516203348a565b15806200a9bc575b6200a98d575b50506200a9879062004c7b565b6200a93c565b9b6200a9b19162001b0382859f62007f8f6200a9879760018060a01b039262004ce2565b9a90508d8c6200a97a565b5050506103e86103a051101562004c99576001600160a01b036200a9e1828e62004ce2565b511660005260036103a051811b016020528d8c60406000205415156200a974565b50909b989a99949691929395979b60005b8b518110156200aaa7576103e86103a051101562004c99576001600160a01b036200aa3f828e62004ce2565b511660005260036103a051811b01602052604060002054156200aa6e575b6200aa689062004c7b565b6200aa13565b9c6200aa9e6200aa68918f6200aa8d8f9160018060a01b039262004ce2565b511662001b0382610a605162004ce2565b9d90506200aa5d565b509a9b50989596919396949092946103a051996103e88b10159b8c62004c99578d9b60031b600401549d6200aadd908f62006258565b6200aae89062004dfe565b610340526000610a00528c6000610500525b62004c9957610500519c8e8e10156200abb857506200ab466200ab2960009e60046103a05160031b0162004efa565b9054610a605160039290921b1c6001600160a01b03169062033539565b156200ab66575b8c6200ab5c6105005162004c7b565b610500526200aafa565b6200ab7e6105005160046103a05160031b0162004efa565b60018060a01b0391549060031b1c166200ab9f610a00516103405162004ce2565b526200abae610a005162004c7b565b610a00526200ab4d565b939d509396999094979b50999094979960005b8281106200ac695750505062004c995761034051516001600160401b03811162002a23576200ac048160046103a05160031b0162005036565b602061034051019060046103a05160031b0160005260206000209160005b8281106200ac4b57505050506200ac3c6107205162004c7b565b6107205295989094986200a8f8565b81516001600160a01b0316818501556020909101906001016200ac22565b6200acaf906001600160a01b036200ac82828562004ce2565b51166200ac96610a00516103405162004ce2565b526200aca5610a005162004c7b565b610a005262004c7b565b6200abcb565b5094929750929750939450600094855b87518110156200ad35576200acf86200acf06200ace3838962004ce2565b51620074a9848d62004ce2565b91906202f637565b806200ad11575b506200ad0b9062004c7b565b6200acc5565b906200ad266200ad2e986200ad0b9362006049565b98906202f684565b906200acff565b509650945092909150806200ad59575b5050620079dd6020915b913880806200a6b0565b6200ad8c9060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b92906202f6dd565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106200adea575b505091620079dd91602093156200adce575b50916200ad45565b516200ade3906001600160a01b03166200662e565b386200adc6565b6200adf58162004e52565b9054855160039290921b1c6001600160a01b039081169116146200ae24576200ae1e9062004c7b565b6200adab565b506001915082905060206200adb4565b60405162461bcd60e51b815260206004820152605960248201526000805160206203413b83398151915260448201527f642070726963654172726179206973206e6f7420657175616c2061742042415460648201527810d217d095549397d513d2d15394d7d0539117d49151955391603a1b608482015260a490fd5b60405162461bcd60e51b815260206004820152605a60248201526000805160206203413b83398151915260448201527f6420616d6f756e744172726179206973206e6f7420657175616c2061742042416064820152791510d217d095549397d513d2d15394d7d0539117d4915195539160321b608482015260a490fd5b8397949695975181811015620029ab57601f036200af7157505050506020916200af6b6200af646040620079dd9401515162004c8b565b516202f83e565b6200ad4f565b835181811015620029ab576020036200af97575b5050505050620079dd6020916200ad4f565b835181811015620029ab5760218091036200afb4575b506200af85565b8451828110156200b0e1576022036200aff457505050505050620079dd602091611fb660ff1981541690556200afe962005023565b91388080806200afad565b8451828110156200b0e1576023036200b01b575b505050505050620079dd6020916200afe9565b845194828610156200b0e15760248096036200b039575b506200b008565b8051838110156200b0cd576025146200b0325751918210156200b0b95750036200b07d5750506020916200b071620079dd926202e847565b9138808080806200b032565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200b155906001600160a01b031662006658565b620076bf565b6200b1668162004ea6565b9054855160039290921b1c6001600160a01b039081169116146200b195576200b18f9062004c7b565b620076ad565b50505060013880620076b6565b600281036200b1c65760405162461bcd60e51b81528062004c7760048201620075e7565b6001146200b1d15750565b6200b1df611f4354620052ab565b805190600160401b821162002a2357613efb5482613efb5580831062014fab575b50602001613efb60005260206000206000915b83831062014f8a575050505060005b611f43548110156200b25b578062000f556200b2426200b2559362005c49565b506200b24e8362005c69565b90620154b5565b6200b222565b506200b26a611f4254620052ab565b805190600160401b821162002a2357613efa5482613efa5580831062014eee575b50602001613efa60005260206000206000915b83831062014ecd575050505060005b611f42548110156200b2df578062000f556200b2cd6200b2d99362005c89565b506200b24e8362005ca9565b6200b2ad565b5060005b6103e8811015806200b49057600160ff611fbf8460031b0154161515146200b318575b506200b3129062004c7b565b6200b2e3565b916000835b62004c9957611fbc8360031b01548110156200b387576200b37e929350600092816200b3528593611fbc8860031b0162004efa565b9054600391821b1c6001600160a01b031660009081529087901b611fbb01602052604081205562004c7b565b9093926200b31d565b5091604051906200b3988262002ac7565b6000825262004c99578051906001600160401b03821162002a23576020906200b3c983611fbc8660031b0162005036565b01611fbc8360031b01600052602060002060005b8381106200b47257505050611fbf600383901b908101805460ff191690556000611fb88201819055611fb98201819055611fba8201819055611fbd90910180546200b3129493506200b42f9062002c01565b601f908181116200b450575b5050556000611fbe8260031b0155906200b306565b6200b46a9183855260208520910160051c81019062004f3f565b38806200b43b565b82516001600160a01b0316818301556020909201916001016200b3dd565b505060005b6103e8811062014e3f575060005b611f41548110156200b4fe57806200b4bf6200b4f89262004e6e565b60018060a01b0391549060031b1c16600052613ef860205260006002604082208281556200b4f0600182016200533c565b015562004c7b565b6200b4a3565b506200b50d611f415462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613ef95483613ef95580841062014e1d575b5001613ef9600052602060002060005b83811062014dff575050505060005b611f41548110156200b5d1576200b5768162004e6e565b9054613ef95460039290921b1c6001600160a01b0316919081101562004c9957613ef9600052600080516020620340db833981519152810180546001600160a01b0319169092179091556200b5cb9062004c7b565b6200b55f565b509060005b611f41548110156200b69057806200b5f26200b6459262004e6e565b9060018060a01b03918291549060031b1c16600052611f40602052604080600020916200b61f8462004e6e565b90549060031b1c16600052613ef8602052600020908082036200b64b575b505062004c7b565b6200b5d6565b600280916200b67160ff6200b664818454168762005795565b825460081c1685620057a6565b6200b683600182016001860162015151565b015491015538806200b63d565b5060005b613f02548110156200b6e257806200b6b06200b6dc9262004e8a565b60018060a01b0391549060031b1c16600052613f0160205262000f556040600020606481019062004f3f565b6200b694565b506200b6f1611f4a5462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613f025483613f025580841062014ddd575b5001613f02600052602060002060005b83811062014dbf575050505060005b611f4a548110156200b786578062000f556200b7636200b7809362004ea6565b905460039190911b1c6001600160a01b031662001a448362004e8a565b6200b743565b5060005b611f4a548110156200b81157806200b7a66200b7f89262004ea6565b9060018060a01b03918291549060031b1c16600052611f49602052604080600020916200b7d38462004ea6565b90549060031b1c16600052613f01602052600020908082036200b7fe57505062004c7b565b6200b78a565b6200b8099162015549565b38806200b63d565b50611f4b80546000905b6064821062014da6575050611faf54613f675550611fb054613f6855611fb154613f6955611fb254613f6a55611fb3546001600160401b03811162002a2357600160401b811162002a2357613f6b5481613f6b5580821062014d78575b50613f6b60009081527f0c040229f6fc4874d4176ee508a0872dc89a48e51cc9b61a792006f29e062754805460008051602062033ebb83398151915291905b84841062014d56575050505050611fb454600160401b811162002a2357613f6c5481613f6c5580821062014d14575b50613f6c600090815260008051602062033efb8339815191527fcdf85548d0b3537a0f46212d2994f9493fe1dfa88d3af4ddb0cac3c506fd3f595b83831062014cf6575050611fb5549150506001600160401b03811162002a2357600160401b811162002a2357613f6d5481613f6d5580821062014cc8575b50613f6d60009081527f70c3d981fef3a436e3d026045c487f2278cccbfa7f9e11fbd3c1406b0017bd5d8054600080516020620340bb83398151915291905b84841062014ca657505050505060ff611fb65416151560ff8019613f6e5416911617613f6e5560005b613efe548110156200ba1157806200b9e36200ba0b9262004ec2565b905460039190911b1c6001600160a01b03166000908152613efd602052604081205562004c7b565b6200b9c7565b506200ba20611f465462004dfe565b8051906001600160401b03821162002a23576020906200ba408362004fdd565b01613efe600052602060002060005b83811062014c88575050505060005b611f46548110156200baa1578062000f556200ba7e6200ba9b9362004e52565b905460039190911b1c6001600160a01b031662001a448362004ec2565b6200ba5e565b5060005b611f46548110156200bb1057806200bac16200bb0a9262004e52565b9060018060a01b03918291549060031b1c16600052611f4560205260408060002054916200baef8462004e52565b90549060031b1c16600052613efd6020526000205562004c7b565b6200baa5565b5060005b613f00548110156200bb5e57806200bb306200bb589262004ede565b905460039190911b1c6001600160a01b03166000908152613eff602052604081205562004c7b565b6200bb14565b506200bb6d611f485462004dfe565b8051906001600160401b03821162002a23576020906200bb8d8362005000565b01613f00600052602060002060005b83811062014c6a575050505060005b611f48548110156200bbee578062000f556200bbcb6200bbe89362004e36565b905460039190911b1c6001600160a01b031662001a448362004ede565b6200bbab565b5060005b611f48548110156200bc5d57806200bc0e6200bc579262004e36565b9060018060a01b03918291549060031b1c16600052611f4760205260408060002054916200bc3c8462004e36565b90549060031b1c16600052613eff6020526000205562004c7b565b6200bbf2565b50613f02546000805b82811062014c25575b501562014bef575b5060005b60208301519081518110156200bcd35762000f55620077196200bcad620076f96020620067ff866200bccd9862004ce2565b86516001600160a01b03166000908152613f016020526040902062024340565b6200bc7b565b505060005b602083015180518210156200bd2057620076f96020620067ff846200bcfd9462004ce2565b90606482101562004c99576200bd1a914290613f03015562004c7b565b6200bcd8565b5050906000905b60208101518051831015620106d857826200bd429162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036200c31457604001906200bd8360c08351015162004c8b565b51936200bd9a60a0620077f3818651015162004c8b565b51916200bdab86518551146202e0ca565b6200bdba86518451146202e130565b60005b86518110156200bf18576200bdd3818662004ce2565b516103e881101562004c9957600160ff611fbf6200bdfa9360031b0154161515146202e192565b6200be06818562004ce2565b516200be13828762004ce2565b51906103e882101562004c9957611fbe6200be349260031b01549062006049565b906200be41838862004ce2565b51916103e883101562004c9957611fbe6200be619360031b01556202e1ea565b6200be6d818562004ce2565b516200be7a828762004ce2565b51906103e882101562004c99576200bebd91611fbb906001600160a01b036200bea4868d62004ce2565b511660005260031b016020526040600020549062006049565b91906200becb828862004ce2565b51906103e882101562004c99576200bf129362000f5592611fbb906001600160a01b036200befa878f62004ce2565b511660005260031b016020526040600020556202e249565b6200bdbd565b50926200bf2f919250620084d190959495620336a2565b916040516200bf3e8162002ac7565b6000815260003681376000945b80518610156200c2fa576200bf61868262004ce2565b516104e0526200bf72855162004dfe565b966000946200bf82845162004dfe565b6105805260009460005b88518110156200c054578a896200bfbc6001600160a01b036200bfb0858462004ce2565b51166104e051620334e1565b15806200c00c575b6200bfdd575b50506200bfd79062004c7b565b6200bf8c565b986200c0019162001b0382859c62007f8f6200bfd79760018060a01b039262004ce2565b9790508a896200bfca565b5050506103e86104e051101562004c99576001600160a01b036200c031828b62004ce2565b5116600052611fbb6104e05160031b016020528a8960406000205415156200bfc4565b50909895979498969291939660005b88518110156200c0f2576103e86104e051101562004c99576001600160a01b03806200c090838c62004ce2565b5116600052611fbb6104e05160031b01602052604060002054156200c0c2575b506200c0bc9062004c7b565b6200c063565b819b6200c0ea916200c0d96200c0bc948d62004ce2565b511662001b03826105805162004ce2565b9a906200c0b0565b509850969592919093966104e0516103e8811015806103c05262004c995760031b611fbc0154986200c129620080c0898c62006258565b6107605260006101e05260006105e0525b6103c05162004c99576105e0518a8110156200c203576200c1706200c1909160006103c052611fbc6104e05160031b0162004efa565b9054610580516001600160a01b03939260031b9190911c83169062033539565b156200c1b0575b506200c1a66105e05162004c7b565b6105e0526200c13a565b60006103c0526200c1cf6105e051611fbc6104e05160031b0162004efa565b90549060031b1c166200c1e96101e0516107605162004ce2565b526200c1f86101e05162004c7b565b6101e052386200c197565b50979294959093985095909560005b8281106200c2ae575050506103c05162004c995761076051516001600160401b03811162002a23576200c25081611fbc6104e05160031b0162005036565b60206107605101611fbc6104e05160031b01600052602060002060005b8381106200c29057505050506200c2849062004c7b565b9492959091956200bf4b565b82516001600160a01b0316818301556020909201916001016200c26d565b6200c2f4906001600160a01b036200c2c7828562004ce2565b51166200c2db6101e0516107605162004ce2565b526200c2ea6101e05162004c7b565b6101e05262004c7b565b6200c212565b5050939092506200c30c915062004c7b565b90916200bd27565b9060208294939401516026811015620029ab576002036200c4cb576040809201908151938451916200c36b6200c34f60a08098015162004c8b565b51966200c360818751015162004caf565b519551015162004cc0565b5194835187510362007c2a57835185510362007bd657835186510362007b7f575060005b86518110156200c4b8576200c3a5818862004ce2565b516103e881101562004c995760ff611fbf6200c3c89260031b015416156202e2a2565b6200c3d4818862004ce2565b516103e881101562004c995760031b611fbf01805460ff191660011790556200c3fe818562004ce2565b516200c40b828962004ce2565b51906103e882101562004c9957611fbd6200c42a9260031b01620056c2565b6200c436818662004ce2565b516200c443828962004ce2565b516103e881101562004c995760031b611fb901556200c463818762004ce2565b516200c470828962004ce2565b516103e881101562004c995760031b611fba01556200c490818862004ce2565b51906103e882101562004c99576000611fbe6200c4b29360031b015562004c7b565b6200c38f565b509592509350506200c30c915062004c7b565b90929160208401516026811015620029ab576003036200caf15760408401906200c4fa60c08351015162004c8b565b51906200c51160a0620077f3818651015162004c8b565b51936200c526835185511462000f4e62033906565b6200c539835186511462000f4e62033906565b60005b83518110156200c597576200c552818662004ce2565b51906103e882101562004c9957611fbb6200c5919260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200c53c565b509095919560005b87518110156200c6e5576200c5b5818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200c5ef60406000205462007dae838962004ce2565b906200c5fc838862004ce2565b51916103e883101562004c9957611fbb6200c6359360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200c641818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200c665848c62004ce2565b511660005260031b016020526200c6876040600020546200686c838962004ce2565b91906200c695828862004ce2565b51906103e882101562004c99576200c6df93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b511660005260031b0160205260406000205562000f4e62033a6f565b6200c59f565b50926200c704919294506200c6fd90969596620336a2565b9462033586565b92604051906200c7148262002b00565b6001825260203681840137516001600160a01b03166200c7348262004c8b565b526000945b80518610156200c2fa576200c74f868262004ce2565b51610740526200c760855162004dfe565b966000946200c770845162004dfe565b6108405260009460005b88518110156200c842578a896200c7aa6001600160a01b036200c79e858462004ce2565b511661074051620334e1565b15806200c7fa575b6200c7cb575b50506200c7c59062004c7b565b6200c77a565b986200c7ef9162001b0382859c62007f8f6200c7c59760018060a01b039262004ce2565b9790508a896200c7b8565b5050506103e861074051101562004c99576001600160a01b036200c81f828b62004ce2565b5116600052611fbb6107405160031b016020528a8960406000205415156200c7b2565b50909895979498969291939660005b88518110156200c8e7576103e861074051101562004c99576001600160a01b036200c87d828b62004ce2565b5116600052611fbb6107405160031b01602052604060002054156200c8ae575b6200c8a89062004c7b565b6200c851565b996200c8a8906200c8de906001600160a01b036200c8cd8e8d62004ce2565b511662001b03826108405162004ce2565b9a90506200c89d565b50985096959291909396610740516103e8811015806102405262004c995760031b611fbc0154986200c91e620080c0898c62006258565b6105c05260006103005260006101c0525b6102405162004c99576101c0518a8110156200c9fa576200c9656200c98291600061024052611fbc6107405160031b0162004efa565b90546108405160039290921b1c6001600160a01b03169062033539565b156200c9a1575b6200c9976101c05162004c7b565b6101c0526200c92f565b6000610240526200c9c06101c051611fbc6107405160031b0162004efa565b60018060a01b0391549060031b1c166200c9e1610300516105c05162004ce2565b526200c9f06103005162004c7b565b610300526200c989565b50979294959093985095909560005b8281106200caa5575050506102405162004c99576105c051516001600160401b03811162002a23576200ca4781611fbc6107405160031b0162005036565b60206105c05101611fbc6107405160031b01600052602060002060005b8381106200ca8757505050506200ca7b9062004c7b565b9492959091956200c739565b82516001600160a01b0316818301556020909201916001016200ca64565b6200caeb906001600160a01b036200cabe828562004ce2565b51166200cad2610300516105c05162004ce2565b526200cae16103005162004c7b565b6103005262004c7b565b6200ca09565b909260208101516026811015620029ab576004036200d11e5760400160c0936200cb2f6200cb23868451015162004c8b565b51958351015162004caf565b51906200cb4660a0620077f3818651015162004c8b565b51936200cb5b875184511462000f4e62033906565b6200cb6e875185511462000f4e62033906565b6200cb81875186511462000f4e62033906565b60005b87518110156200cbec576200cb9a818662004ce2565b51906103e882101562004c99576200cbe691611fbb906001600160a01b036200cbc4848d62004ce2565b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200cb84565b509095919593929360005b83518110156200cd4f576200cc0d818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200cc31848862004ce2565b511660005260031b016020526200cc5360406000205462007dae838862004ce2565b906200cc60838962004ce2565b51916103e883101562004c99576200cca692611fbb906001600160a01b036200cc8a878b62004ce2565b511660005260031b0160205260406000205562000f4e62033a0a565b6200ccb2818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ccd6848c62004ce2565b511660005260031b016020526200ccf86040600020546200686c838862004ce2565b9190506200cd07818862004ce2565b51916103e883101562004c99576200cd4992611fbb906001600160a01b036200cd31858e62004ce2565b511660005260031b0160205260406000205562004c7b565b6200cbf7565b5091936200cd6b91935062007e9f620084d191979697620336a2565b6000945b80518610156200c2fa576200cd85868262004ce2565b516107a0526200cd96855162004dfe565b966000946200cda6845162004dfe565b6105605260009460005b88518110156200ce78578a896200cde06001600160a01b036200cdd4858462004ce2565b51166107a051620334e1565b15806200ce30575b6200ce01575b50506200cdfb9062004c7b565b6200cdb0565b986200ce259162001b0382859c62007f8f6200cdfb9760018060a01b039262004ce2565b9790508a896200cdee565b5050506103e86107a051101562004c99576001600160a01b036200ce55828b62004ce2565b5116600052611fbb6107a05160031b016020528a8960406000205415156200cde8565b50909895979498969291939660005b88518110156200cf16576103e86107a051101562004c99576001600160a01b03806200ceb4838c62004ce2565b5116600052611fbb6107a05160031b01602052604060002054156200cee6575b506200cee09062004c7b565b6200ce87565b819b6200cf0e916200cefd6200cee0948d62004ce2565b511662001b03826105605162004ce2565b9a906200ced4565b509850969592919093966107a0516103e8811015806102c05262004c995760031b611fbc0154986200cf4d620080c0898c62006258565b6104405260006108205260006106e0525b6102c05162004c99576106e0518a8110156200d027576200cf946200cfb49160006102c052611fbc6107a05160031b0162004efa565b9054610560516001600160a01b03939260031b9190911c83169062033539565b156200cfd4575b506200cfca6106e05162004c7b565b6106e0526200cf5e565b60006102c0526200cff36106e051611fbc6107a05160031b0162004efa565b90549060031b1c166200d00d610820516104405162004ce2565b526200d01c6108205162004c7b565b61082052386200cfbb565b50979294959093985095909560005b8281106200d0d2575050506102c05162004c995761044051516001600160401b03811162002a23576200d07481611fbc6107a05160031b0162005036565b60206104405101611fbc6107a05160031b01600052602060002060005b8381106200d0b457505050506200d0a89062004c7b565b9492959091956200cd6f565b82516001600160a01b0316818301556020909201916001016200d091565b6200d118906001600160a01b036200d0eb828562004ce2565b51166200d0ff610820516104405162004ce2565b526200d10e6108205162004c7b565b6108205262004c7b565b6200d036565b60208193929301516026811015620029ab576005036200d148579062000f556200c30c926202ed18565b6020819492939401516026811015620029ab576006036200d734576040016200d17660c08251015162004c8b565b51936200d18d60a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b86518110156200d20e576200d1bc818562004ce2565b51906103e882101562004c99576200d20891611fbb906001600160a01b036200d1e6848c62004ce2565b511660005260031b0160205262000f5560406000205462007d41838962004ce2565b6200d1a6565b509060005b86518110156200d2b2576200d229818562004ce2565b516103e881101562004c9957611fbb906001600160a01b036200d24d848b62004ce2565b511660005260031b016020526200d26f60406000205462007dae838862004ce2565b91906200d27d828762004ce2565b51906103e882101562004c99576200d2ac9362000f5592611fbb906001600160a01b036200cc8a878f62004ce2565b6200d213565b50916200d2c9919350620084d190959495620336a2565b91604051926200d2d98462002ac7565b6000845260003681376000945b80518610156200c2fa576200d2fc868262004ce2565b516108e0526200d30d855162004dfe565b966000946200d31d845162004dfe565b6104605260009460005b88518110156200d3ef578a896200d3576001600160a01b036200d34b858462004ce2565b51166108e051620334e1565b15806200d3a7575b6200d378575b50506200d3729062004c7b565b6200d327565b986200d39c9162001b0382859c62007f8f6200d3729760018060a01b039262004ce2565b9790508a896200d365565b5050506103e86108e051101562004c99576001600160a01b036200d3cc828b62004ce2565b5116600052611fbb6108e05160031b016020528a8960406000205415156200d35f565b50909895979498969291939660005b88518110156200d48d576103e86108e051101562004c99576001600160a01b03806200d42b838c62004ce2565b5116600052611fbb6108e05160031b01602052604060002054156200d45d575b506200d4579062004c7b565b6200d3fe565b819b6200d485916200d4746200d457948d62004ce2565b511662001b03826104605162004ce2565b9a906200d44b565b509850969592919093966108e0516103e8811015806102805262004c995760031b611fbc0154986200d4c4620080c0898c62006258565b610260526000610960526000610780525b6102805162004c9957610780518a8110156200d59e576200d50b6200d52b91600061028052611fbc6108e05160031b0162004efa565b9054610460516001600160a01b03939260031b9190911c83169062033539565b156200d54b575b506200d5416107805162004c7b565b610780526200d4d5565b6000610280526200d56a61078051611fbc6108e05160031b0162004efa565b90549060031b1c166200d584610960516102605162004ce2565b526200d5936109605162004c7b565b61096052386200d532565b50979294959093985095909560005b8281106200d649575050506102805162004c995761026051516001600160401b03811162002a23576200d5eb81611fbc6108e05160031b0162005036565b60206102605101611fbc6108e05160031b01600052602060002060005b8381106200d62b57505050506200d61f9062004c7b565b9492959091956200d2e6565b82516001600160a01b0316818301556020909201916001016200d608565b6200d68f906001600160a01b036200d662828562004ce2565b51166200d676610960516102605162004ce2565b526200d6856109605162004c7b565b6109605262004c7b565b6200d5ad565b60405162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b6020819492939401516026811015620029ab576007036200d8cf57604001916200d76360c08451015162004c8b565b51916200d77560a08551015162004c8b565b51935151916200d78d845186511462000f4e62033906565b60005b84518110156200d8bd576001600160a01b03806200d7af838862004ce2565b5116600052613ef8806020526200d7d360ff604060002054161562000f4e620339d7565b60026200d7e1848862004ce2565b516200d84b6200d7f2868c62004ce2565b519162008de28b604051966200d8088862002a07565b60018852886200d82f8b60208b01946000865260408c0197885260608c01998a5262004ce2565b511660005260205262008dd86040600020975115158862005795565b519101556200d85b828762004ce2565b51613ef954929116600160401b83101562002a23576001830180613ef95583101562004c9957613ef9600052600080516020620340db83398151915290920180546001600160a01b0319169092179091556200d8b79062004c7b565b6200d790565b5094915092506200c30c915062004c7b565b60208101516026811015620029ab576008036200d9bd5760c060406200d8f9920151015162004c8b565b519160005b83518110156200d9ae576200d9a8906001600160a01b03806200d922838862004ce2565b5116600052613ef890816020526200d94b600160ff6040600020541615151462000f4e62033936565b806200d958848962004ce2565b5116600052816020526200d97c60ff60406000205460081c161562000f4e6203399e565b6200d988838862004ce2565b5116600052602052604060002061010061ff001982541617905562004c7b565b6200d8fe565b50926200c30c91925062004c7b565b60208101516026811015620029ab576009036200da9c5760c060406200d9e7920151015162004c8b565b519160005b83518110156200d9ae576200da96906001600160a01b03806200da10838862004ce2565b5116600052613ef890816020526200da39600160ff6040600020541615151462000f4e62033936565b806200da46848962004ce2565b5116600052816020526200da6e600160ff60406000205460081c1615151462000f4e62033969565b6200da7a838862004ce2565b5116600052602052604060002061ff0019815416905562004c7b565b6200d9ec565b60208101516026811015620029ab57600a036200db8457604001906200dad860a06200dacd60c08551015162004c8b565b519351015162004c8b565b51926200daed835185511462000f4e62033906565b60005b83518110156200db73576200db6d906001600160a01b03806200db14838862004ce2565b5116600052613ef8806020526200db3c600160ff6040600020541615151462000f4e62033936565b6200db48838962004ce2565b51916200db56848962004ce2565b511660005260205260026040600020015562004c7b565b6200daf0565b50939092506200c30c915062004c7b565b6020819493929401516026811015620029ab57600b036200dc6457604001926200dbb360c08551015162004c8b565b51935151916200dbcb855184511462000f4e62033906565b60005b85518110156200dc54576200dc4e9062000f556001600160a01b03806200dbf6848b62004ce2565b5116600052613ef8806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6200dc2a848962004ce2565b51916200dc38858c62004ce2565b51166000526020526001604060002001620056c2565b6200dbce565b509350916200c30c915062004c7b565b90919260208201516026811015620029ab57600c036200ddaf57606060408301510151926200dc93846202d715565b60005b84518110156200db735760e06200dcb68260606040880151015162004ce2565b510151156200dd3a576200dcde6200dcd78260606040880151015162004ce2565b5162005d5b565b613efa548060001981011162001e4f576200dcff6005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620092466200dd34936000190162005ca9565b6200dc96565b6200dd596200dd528260606040880151015162004ce2565b5162005d38565b613efb548060001981011162001e4f576200dd7a6005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620092466200dd34936000190162005c69565b92919060208101516026811015620029ab57600d036200def6576040019260206200dddf60a08651015162004c8b565b5194510151916200ddf485518451146202de09565b60005b85518110156200dc5457806200de126200de8b928662004ce2565b51156200de91576200de356200de29828962004ce2565b51613efa54116202de92565b6200de6160ff60056200de546200de4d858c62004ce2565b5162005ca9565b50015460081c166202deea565b6200de7960ff6005620093a26200de4d858c62004ce2565b6005620093be6200de4d838a62004ce2565b6200ddf7565b6200dead6200dea1828962004ce2565b51613efb54116202de92565b6200decc60ff60056200de546200dec5858c62004ce2565b5162005c69565b6200dee460ff6005620093a26200dec5858c62004ce2565b6005620093be6200dec5838a62004ce2565b60208101516026811015620029ab57600e036200e02c576040019260206200df2360a08651015162004c8b565b5194510151916200df3885518451146202de09565b60005b85518110156200dc5457806200df566200dfc8928662004ce2565b51156200dfce576200df796200df6d828962004ce2565b51613efa54116202dfac565b6200df9e60ff60056200df916200de4d858c62004ce2565b50015460081c166202e005565b6200dfb660ff6005620094fa6200de4d858c62004ce2565b6005620092466200de4d838a62004ce2565b6200df3b565b6200dfea6200dfde828962004ce2565b51613efb54116202dfac565b6200e00260ff60056200df916200dec5858c62004ce2565b6200e01a60ff6005620094fa6200dec5858c62004ce2565b6005620092466200dec5838a62004ce2565b90919260208201516026811015620029ab57600f036200e16957606060408301510151926200e05b846202d715565b60005b84518110156200db735760e06200e07e8260606040880151015162004ce2565b510151156200e0fb576200e09f6200dcd78260606040880151015162004ce2565b613efa548060001981011162001e4f576200e0c06005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620093be6200e0f5936000190162005ca9565b6200e05e565b6200e1136200dd528260606040880151015162004ce2565b613efb548060001981011162001e4f576200e1346005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620093be6200e0f5936000190162005c69565b92919060208101516026811015620029ab576010036200e2ae5760400151926200e19c60a0608086015195015162004c8b565b51916200e1b1855184511462000f4e62033906565b60005b85518110156200dc5457806200e1cf6200e244928862004ce2565b516200e1db8162002f45565b6200e1e7828762004ce2565b51906200e1f48162002f45565b6200e20b6200e20262033a39565b82151562004c48565b6200e2168162002f45565b600181036200e24a57506200e23a6200e22e62033a39565b61271083111562004c48565b613f675562004c7b565b6200e1b4565b6200e2558162002f45565b600281036200e2695750613f685562004c7b565b6200e2748162002f45565b600381036200e2885750613f695562004c7b565b806200e29660049262002f45565b146200e2a3575062004c7b565b613f6a55386200a16d565b60208101516026811015620029ab576011036200e55157604001906200e2df60a06200dacd60c08551015162004c8b565b51936200e2f083518651146202d58d565b60005b83518110156200e370576200e36a906200e34a6001600160a01b03806200e31b848962004ce2565b5116600052613efd90816020526200e33e6040600020546200686c868d62004ce2565b939062000f4e620338bc565b6200e356848962004ce2565b511660005260205260406000205562004c7b565b6200e2f3565b509350906200e37f9062033586565b90613efe54936200e396620080c084518762006258565b9060009260005b8781106200e511575060005b85518110156200e45e576000805b8981106200e40f575b50156200e3d9575b6200e3d39062004c7b565b6200e3a9565b936200e3d3906200e406906001600160a01b036200e3f8888a62004ce2565b511662001b03828862004ce2565b9490506200e3c8565b6200e41a8162004ec2565b90546001600160a01b0360039290921b1c8116906200e43a858b62004ce2565b5116146200e453576200e44d9062004c7b565b6200e3b7565b50506001386200e3c0565b5095509392506200e46f8262004dfe565b8051906001600160401b03821162002a23576020906200e48f8362004fdd565b01613efe600052602060002060005b8381106200e4f3575050505060005b8281106200e4c3575050506200c30c9062004c7b565b6200e4ed9062000f556001600160a01b036200e4e0838662004ce2565b511662001a448362004ec2565b6200e4ad565b82516001600160a01b0316818301556020909201916001016200e49e565b936200e5446200e54b916200e5268762004ec2565b905460039190911b1c6001600160a01b031662001b03828862004ce2565b9462004c7b565b6200e39d565b60208194929401516026811015620029ab576012036200e79557604001906200e58560a06200dacd60c08551015162004c8b565b51936200e59683518651146202d58d565b60005b83518110156200e5ea576200e5e4906200e34a6001600160a01b03806200e5c1848962004ce2565b5116600052613efd90816020526200e33e60406000205462007dae868d62004ce2565b6200e599565b50935091906200e5fa9062033586565b613efe546200e6098162004dfe565b906000926000915b8083106200e6bc575050506200e6278262004dfe565b8051906001600160401b03821162002a23576020906200e6478362004fdd565b01613efe600052602060002060005b8381106200e69e575050505060005b8281106200e67b575050506200c30c9062004c7b565b6200e6989062000f556001600160a01b036200e4e0838662004ce2565b6200e665565b82516001600160a01b0316818301556020909201916001016200e656565b91956000959193959760005b85518110156200e786576200e6dd8962004ec2565b90546001600160a01b0360039290921b1c8116906200e6fd838962004ce2565b5116146200e716576200e7109062004c7b565b6200e6c8565b509750956001959391955b806200e755575b156200e740576200e7399062004c7b565b916200e611565b936200e5446200e739916200e5268762004ec2565b506200e7618162004ec2565b60018060a01b0391549060031b1c16600052613efd602052604060002054156200e728565b5097969096959391956200e721565b60208194939401516026811015620029ab576013036200e8365760408091015101519160005b83518110156200d9ae576200e7d1818562004ce2565b5190613efc54600160401b81101562002a23576001810180613efc5581101562004c9957613efc6000526200e8309262000f55916007027f6710e0bb821cd3dfcfba05f5136082a6d0bca8d604d6d14bfd93de2dd49659d2016202f75c565b6200e7bb565b6020819493929401516026811015620029ab576014036200ed7857604001906200e86560c08351015162004c8b565b51936200e87c60a0620077f3818651015162004c8b565b51916200e88d86518551146202e0ca565b6200e89c86518451146202e130565b60005b86518110156200e996576200e8b5818562004ce2565b516200e8c2828762004ce2565b51906103e882101562004c9957611fbe6200e8e39260031b01549062006049565b906200e8f0838862004ce2565b51916103e883101562004c9957611fbe6200e9109360031b01556202e1ea565b6200e91c818562004ce2565b516200e929828762004ce2565b51906103e882101562004c99576200e95391611fbb906001600160a01b036200bea4868d62004ce2565b91906200e961828862004ce2565b51906103e882101562004c99576200e9909362000f5592611fbb906001600160a01b036200befa878f62004ce2565b6200e89f565b50926200e9ad919250620084d190959495620336a2565b916040516200e9bc8162002ac7565b6000815260003681376000945b80518610156200c2fa576200e9df868262004ce2565b516107e0526200e9f0855162004dfe565b966000946200ea00845162004dfe565b6108805260009460005b88518110156200ead2578a896200ea3a6001600160a01b036200ea2e858462004ce2565b51166107e051620334e1565b15806200ea8a575b6200ea5b575b50506200ea559062004c7b565b6200ea0a565b986200ea7f9162001b0382859c62007f8f6200ea559760018060a01b039262004ce2565b9790508a896200ea48565b5050506103e86107e051101562004c99576001600160a01b036200eaaf828b62004ce2565b5116600052611fbb6107e05160031b016020528a8960406000205415156200ea42565b50909895979498969291939660005b88518110156200eb70576103e86107e051101562004c99576001600160a01b03806200eb0e838c62004ce2565b5116600052611fbb6107e05160031b01602052604060002054156200eb40575b506200eb3a9062004c7b565b6200eae1565b819b6200eb68916200eb576200eb3a948d62004ce2565b511662001b03826108805162004ce2565b9a906200eb2e565b509850969592919093966107e0516103e8811015806108005262004c995760031b611fbc0154986200eba7620080c0898c62006258565b6102005260006106005260006103e0525b6108005162004c99576103e0518a8110156200ec81576200ebee6200ec0e91600061080052611fbc6107e05160031b0162004efa565b9054610880516001600160a01b03939260031b9190911c83169062033539565b156200ec2e575b506200ec246103e05162004c7b565b6103e0526200ebb8565b6000610800526200ec4d6103e051611fbc6107e05160031b0162004efa565b90549060031b1c166200ec67610600516102005162004ce2565b526200ec766106005162004c7b565b61060052386200ec15565b50979294959093985095909560005b8281106200ed2c575050506108005162004c995761020051516001600160401b03811162002a23576200ecce81611fbc6107e05160031b0162005036565b60206102005101611fbc6107e05160031b01600052602060002060005b8381106200ed0e57505050506200ed029062004c7b565b9492959091956200e9c9565b82516001600160a01b0316818301556020909201916001016200eceb565b6200ed72906001600160a01b036200ed45828562004ce2565b51166200ed59610600516102005162004ce2565b526200ed686106005162004c7b565b6106005262004c7b565b6200ec90565b9260208401516026811015620029ab576015036200f3795760408401906200eda560c08351015162004c8b565b51906200edbc60a0620077f3818651015162004c8b565b51936200edd1835185511462000f4e62033906565b6200ede4835186511462000f4e62033906565b60005b83518110156200ee42576200edfd818662004ce2565b51906103e882101562004c9957611fbb6200ee3c9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200ede7565b509095919560005b87518110156200ef74576200ee60818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200ee9a60406000205462007dae838962004ce2565b906200eea7838862004ce2565b51916103e883101562004c9957611fbb6200eee09360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200eeec818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ef10848c62004ce2565b511660005260031b016020526200ef326040600020546200686c838962004ce2565b91906200ef40828862004ce2565b51906103e882101562004c99576200ef6e93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b6200ee4a565b50926200ef8c919294506200c6fd90969596620336a2565b92604051906200ef9c8262002b00565b6001825260203681840137516001600160a01b03166200efbc8262004c8b565b526000945b80518610156200c2fa576200efd7868262004ce2565b51610380526200efe8855162004dfe565b966000946200eff8845162004dfe565b6105a05260009460005b88518110156200f0ca578a896200f0326001600160a01b036200f026858462004ce2565b511661038051620334e1565b15806200f082575b6200f053575b50506200f04d9062004c7b565b6200f002565b986200f0779162001b0382859c62007f8f6200f04d9760018060a01b039262004ce2565b9790508a896200f040565b5050506103e861038051101562004c99576001600160a01b036200f0a7828b62004ce2565b5116600052611fbb6103805160031b016020528a8960406000205415156200f03a565b50909895979498969291939660005b88518110156200f16f576103e861038051101562004c99576001600160a01b036200f105828b62004ce2565b5116600052611fbb6103805160031b01602052604060002054156200f136575b6200f1309062004c7b565b6200f0d9565b996200f130906200f166906001600160a01b036200f1558e8d62004ce2565b511662001b03826105a05162004ce2565b9a90506200f125565b50985096959291909396610380516103e8811015806103605262004c995760031b611fbc0154986200f1a6620080c0898c62006258565b6107c0526000610640526000610700525b6103605162004c9957610700518a8110156200f282576200f1ed6200f20a91600061036052611fbc6103805160031b0162004efa565b90546105a05160039290921b1c6001600160a01b03169062033539565b156200f229575b6200f21f6107005162004c7b565b610700526200f1b7565b6000610360526200f24861070051611fbc6103805160031b0162004efa565b60018060a01b0391549060031b1c166200f269610640516107c05162004ce2565b526200f2786106405162004c7b565b610640526200f211565b50979294959093985095909560005b8281106200f32d575050506103605162004c99576107c051516001600160401b03811162002a23576200f2cf81611fbc6103805160031b0162005036565b60206107c05101611fbc6103805160031b01600052602060002060005b8381106200f30f57505050506200f3039062004c7b565b9492959091956200efc1565b82516001600160a01b0316818301556020909201916001016200f2ec565b6200f373906001600160a01b036200f346828562004ce2565b51166200f35a610640516107c05162004ce2565b526200f3696106405162004c7b565b6106405262004c7b565b6200f291565b90919260208101516026811015620029ab576016036200f42b5760c060406200f3a6920151015162004c8b565b519160005b83518110156200d9ae576001600160a01b036200f3c9828662004ce2565b51613f6b54929116600160401b83101562002a23576001830180613f6b5583101562004c9957613f6b60005260008051602062033ebb83398151915290920180546001600160a01b0319169092179091556200f4259062004c7b565b6200f3ab565b60208101516026811015620029ab576017036200f4885760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab576018036200f5465760c060406200f4b2920151015162004c8b565b5191600160ff19613f6e541617613f6e5560005b83518110156200d9ae576001600160a01b036200f4e4828662004ce2565b51613f6d54929116600160401b83101562002a23576001830180613f6d5583101562004c9957613f6d600052600080516020620340bb83398151915290920180546001600160a01b0319169092179091556200f5409062004c7b565b6200f4c6565b6020819492939401516026811015620029ab576019036200f56e575b506200c30c9062004c7b565b60208101516026811015620029ab57601a036200f6e55760a060406200f598920151015162004c8b565b51906200f5a960038351146202d58d565b6200f5b48262004c8b565b516200f5c46200a1068462004caf565b51926200f6a9576200c30c926001036200f6a2576200f5eb6200f64991613f695462006049565b613f6955604051906200f5fe8262002a8f565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004c48565b6200f69b6200f65b613f6a5462006036565b613f6a55604051906200f66e8262002b00565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004c48565b906200f562565b506200f69b565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b036200fc7557509190613f67546200f7116200a1e362033793565b613f6a54613f685411156200f7306200f72962033801565b8262004c48565b613f6954906200f741838362005f19565b50506200f74d62033857565b506000805b6103e882106200fc26575b5050906200f78d6200f79393926200f7836200f77862033793565b612710861062004c48565b62000f4e62033801565b62005f19565b90506200f79f62033857565b5060009060005b6103e881106200fb53575b50906127106200f7c2920462006236565b90506200f7d2613f745462004dfe565b906000946000905b6103e88210156200fb46578160031b9460ff611fbf87015416156200f93057600096611fba870154156200f91f57600098975b62004c9957611fbc8701548910156200f905576200f83089611fbc890162004efa565b600160a01b6001900391549060031b1c169788600052611fbb8801602052604098868a60002054906200f8639162005f19565b9a906200f86f62033857565b6200f87a9162004c48565b60009a611fba8b01546200f88e9162005f19565b91906200f89a62033857565b6200f8a59162004c48565b82600052613eff602052600020908154906200f8c19162006049565b9091556200f8ce62033857565b6200f8d99162004c48565b6200f8e5828962004ce2565b526200f8f19062004c7b565b986200f8fd9062004c7b565b98976200f80d565b929095506200f9179196975062004c7b565b90946200f7da565b929095506200f91791965062004c7b565b95969392509350505b6200f9448262004dfe565b9160009160005b8281106200fab057505050613f0054916200f96b620080c0848462006258565b926000906000905b8082106200fa9357505060005b8381106200f9fd5750508251929150506001600160401b03821162002a23576020906200f9ad8362005000565b01613f00600052602060002060005b8381106200f9df57505050506200c30c906000613f69556000613f6a556200f69b565b82516001600160a01b0316818301556020909201916001016200f9bc565b6000805b8381106200fa4b575b50156200fa23575b6200fa1d9062004c7b565b6200f980565b906200fa1d906200fa42906001600160a01b0362008248858762004ce2565b9190506200fa12565b6001600160a01b03806200fa60858862004ce2565b5116906200fa6f838a62004ce2565b5116146200fa88576200fa829062004c7b565b6200fa01565b50506001386200fa0a565b9091620082566200faa99162009b6f8562004ede565b906200f973565b6000805b8581106200fafe575b50156200fad6575b6200fad09062004c7b565b6200f94b565b926200fad0906200faf5906001600160a01b0362008248878662004ce2565b9390506200fac5565b6001600160a01b03806200fb13858762004ce2565b5116906200fb22838a62004ce2565b5116146200fb3b576200fb359062004c7b565b6200fab4565b50506001386200fabd565b939495929150506200f939565b90918160039695961b60ff611fbf82015416156200fc1a57611fba810154611fbc8201546000928391825b8184106200fbba5750505050620074b96200fbb1936200fba962000f559796946200621c9462005f19565b929062005d7e565b9493946200f7a6565b94929462004c99576200fc13856200fc0b6200fbdf62000f5598611fbc870162004efa565b905460039190911b1c6001600160a01b03166000908152611fbb86016020526040812054909662006049565b979062005f3b565b926200fb7e565b5091909493946200f7b1565b8160039897981b60ff611fbf82015416156200fc6b57916200a622620074b96200fc61936200a61662000f5596611fba6200a60c8762005eb4565b909695966200f752565b509695966200f75d565b60208101516026811015620029ab57601c036200fcd25760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d036200fcf6575b506200c30c906200f69b565b91929060208301516026811015620029ab57601e036200ff0d576200fd2360a06040850151015162004c8b565b51516200fd3860a06040860151015162004caf565b5151036200aeb0576200fd5360a06040850151015162004c8b565b51516200fd6860a06040860151015162004cc0565b5151036200ae34576200fd8360a06040850151015162004c8b565b51926200fd9860a06040830151015162004caf565b51916200fdad60a06040840151015162004cc0565b51956200fdba836202ed18565b60009460005b87518110156200fe13576200fdde6200acf06200ace3838962004ce2565b806200fdf7575b506200fdf19062004c7b565b6200fdc0565b906200ad266200fe0c986200fdf19362006049565b906200fde5565b5096509450915091806200fe31575b506200c30c91505b906200fcea565b6200fe5c9060018060a01b038451166000526200ad84613efd91826020526040600020549062006049565b60018060a01b03845116600052602052604060002055600091600092613efe54935b8481106200fec8575b506200fe2257516001600160a01b031691600160401b81101562002a23576200c30c9262001a448260016200fec19401613efe5562004ec2565b386200fe22565b6200fed38162004ec2565b9054845160039290921b1c6001600160a01b039081169116146200ff02576200fefc9062004c7b565b6200fe7e565b50506001386200fe87565b90929160208101516026811015620029ab57601f036200ff885760406200ff379101515162004c8b565b5190613f6c54600160401b81101562002a23576001810180613f6c5581101562004c9957613f6c6000526200c30c926200ff829160008051602062033efb83398151915201620056c2565b6200fe2a565b60208101516026811015620029ab576020036200ffac575b506200c30c906200fe2a565b60208101516026811015620029ab576021146200ffa05760208101516026811015620029ab576022036201003257506200c30c9060ff19613f6e5416613f6e55613f6d546000613f6d558062010006575b505b906200ffa0565b613f6d6000526201002b90600080516020620340bb8339815191529081019062004f3f565b386200fffd565b60208101516026811015620029ab5760230362010056575b506200c30c906200ffff565b60208101516026811015620029ab576024146201004a5760208101516026811015620029ab576025146201004a5792909160208401516026811015620029ab576015036201069a576040840190620100b360c08351015162004c8b565b5190620100ca60a0620077f3818651015162004c8b565b5193620100df835185511462000f4e62033906565b620100f2835186511462000f4e62033906565b60005b835181101562010150576201010b818662004ce2565b51906103e882101562004c9957611fbb6201014a9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b620100f5565b509095919560005b875181101562010282576201016e818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b01602052620101a860406000205462007dae838962004ce2565b90620101b5838862004ce2565b51916103e883101562004c9957611fbb620101ee9360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b620101fa818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036201021e848c62004ce2565b511660005260031b01602052620102406040600020546200686c838962004ce2565b91906201024e828862004ce2565b51906103e882101562004c99576201027c93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b62010158565b50926201029a919294506200c6fd90969596620336a2565b9260405190620102aa8262002b00565b6001825260203681840137516001600160a01b0316620102ca8262004c8b565b526000945b80518610156201068757620102e5868262004ce2565b51610ac052620102f6855162004dfe565b9660009462010306845162004dfe565b6109205260009460005b8851811015620103d8578a89620103406001600160a01b0362010334858462004ce2565b5116610ac051620334e1565b158062010390575b62010361575b50506201035b9062004c7b565b62010310565b98620103859162001b0382859c62007f8f6201035b9760018060a01b039262004ce2565b9790508a896201034e565b5050506103e8610ac051101562004c99576001600160a01b03620103b5828b62004ce2565b5116600052611fbb610ac05160031b016020528a89604060002054151562010348565b50909895979498969291939660005b88518110156201047d576103e8610ac051101562004c99576001600160a01b0362010413828b62004ce2565b5116600052611fbb610ac05160031b016020526040600020541562010444575b6201043e9062004c7b565b620103e7565b996201043e9062010474906001600160a01b03620104638e8d62004ce2565b511662001b03826109205162004ce2565b9a905062010433565b50985096959291909396610ac0516103e8811015806106205262004c995760031b611fbc015498620104b4620080c0898c62006258565b6109005260006109e0526000610480525b6106205162004c9957610480518a8110156201059057620104fb6201051891600061062052611fbc610ac05160031b0162004efa565b90546109205160039290921b1c6001600160a01b03169062033539565b1562010537575b6201052d6104805162004c7b565b61048052620104c5565b6000610620526201055661048051611fbc610ac05160031b0162004efa565b60018060a01b0391549060031b1c16620105776109e0516109005162004ce2565b52620105866109e05162004c7b565b6109e0526201051f565b50979294959093985095909560005b8281106201063b575050506106205162004c995761090051516001600160401b03811162002a2357620105dd81611fbc610ac05160031b0162005036565b60206109005101611fbc610ac05160031b01600052602060002060005b8381106201061d5750505050620106119062004c7b565b949295909195620102cf565b82516001600160a01b031681830155602090920191600101620105fa565b62010681906001600160a01b0362010654828562004ce2565b5116620106686109e0516109005162004ce2565b52620106776109e05162004c7b565b6109e05262004c7b565b6201059f565b5050939092506200c30c9150906201004a565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b50919050620106e782620159a8565b92906006811015620029ab5760028103620107175760405162461bcd60e51b81528062004c7760048201620075e7565b60038103620116ab5750613f738054600260ff82166201073781620029a0565b14620116665760ff19166002179055613f78549060018201821162001e4f5760018201613f7855611f44549092600019929060005b8651811015620107e8576201078f8462010787838a62004ce2565b511062032fe8565b846002620107a9620107a2848b62004ce2565b516202f73c565b50015410620107c4575b620107be9062004c7b565b6201076c565b9350620107be6002620107dc620107a2878a62004ce2565b500154949050620107b3565b5090936000199360005b87518110156201085f576201080d8562010787838b62004ce2565b85600362010820620107a2848c62004ce2565b500154106201083b575b620108359062004c7b565b620107f2565b945062010835600362010853620107a2888b62004ce2565b5001549590506201082a565b509194600191935062010873875162004dfe565b6201087f885162004dfe565b6201088b895162004dfe565b90620108988a5162004dfe565b9260405197620108a88962002a72565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e0850152600061010085015201600052613f766020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b821162002a23576001840154826001860155808310620114a7575b5060200190600184016000526020600020916000905b82821062010e42575050505060406201096191015160028301620056c2565b60208301518051906001600160401b03821162002a2357602060038401916201098b848462005036565b0190600052602060002060005b83811062010e2d575050505060408301518051906001600160401b03821162002a235760206004840191620109ce848462005036565b0190600052602060002060005b83811062010e18575050505060608301518051906001600160401b03821162002a23576020600584019162010a11848462005036565b0190600052602060002060005b83811062010e03575050505060808301518051906001600160401b03821162002a23576020600684019162010a54848462005036565b0190600052602060002060005b83811062010dee575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029ab5761010062010ab99262010ac09560ff801985541691161783550151151590620057a6565b4262006049565b901562010dae57613f7854600052613f7660205280600760406000200155613f715562010afe613f7854918260005260076040600020015462006049565b91901562010d6b57600052613f7660205280600860406000200155613f7255613f78546000526009604060002001600260ff1982541617905560005b825181101562010b80578062000f5562010b5962010b7a938662004ce2565b51613f7854600052613f7660205262006c1783600360406000200162004efa565b62010b3a565b506000915b805183101562010d6657613f78549283600052613f7660205262010bc262010bb582600360406000200162004efa565b90549060031b1c6202f73c565b50549162010bd08362004dfe565b9260005b81811062010d1b5750506000906000915b845183101562010cea5762010bfb838662004ce2565b516103e8908181101562004c995760031b6001015462010c1c858862004ce2565b519182101562004c9957600662010c399260031b01549062005f19565b901562010ca65762010c4b9162006049565b92901562010c655762010c5e9062004c7b565b9162010be5565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b909562010d14945062000f559250600052613f7660205262006c1783600660406000200162004efa565b9162010b85565b62010d609087600052613f7660205262010d4d8162010d4662010bb588600360406000200162004efa565b5062004efa565b90549060031b1c62001b03828862004ce2565b62010bd4565b509050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b60019060208451940193818401550162010a61565b60019060208451940193818401550162010a1e565b600190602084519401938184015501620109db565b60019060208451940193818401550162010998565b805180518554602083015190916001600160a01b0316906026811015620029ab576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010e9c8484620053ca565b01906000526020600020906000905b838210620114875750505050602081015180516001600160401b03811162002a23576020600288019262010ee0838562032aee565b019160005260206000209060005b8160051c81106201144b5750601f198116810362011406575b5050506040810151805190600160401b821162002a235760038701548260038901558083106201137e575b50602001600387016000526020600020906000905b8382106201135d57505050506060810151805190600160401b821162002a23576004870154826004890155808310620112dc575b50602001600487016000526020600020906000905b838210620112bb5750505050608081015180516001600160401b03811162002a23576020600588019262010fc5838562032aee565b019160005260206000209060005b8160051c81106201127c5750601f198116928382036201122d575b505050506006850160a082015160208151916201100c838562005458565b019160005260206000206000925b828410620111c957505050506007850160c0820151602081519162011040838562005458565b019160005260206000206000925b8284106201115c575050505060e001518051906001600160401b03821162002a23576201108e8262011084600889015462002c01565b6008890162005678565b602090601f8311600114620110e1579282600993602093600196600092620110d5575b5050600019600383901b1c191690851b1760088801555b0194019101909262010942565b015190503880620110b1565b906008870160005260206000209160005b601f198516811062011143575083602093600196938793600997601f1981161062011129575b505050811b016008880155620110c8565b015160001960f88460031b161c1916905538808062011118565b91926020600181928685015181550194019201620110f2565b80518051906001600160401b03821162002a23576020906201117f838662005036565b0183600052602060002060005b838110620111ab5750505050600160208192019201930192906201104e565b82516001600160a01b0316818301556020909201916001016201118c565b80518051906001600160401b03821162002a2357602090620111ec838662005036565b0183600052602060002060005b838110620112185750505050600160208192019201930192906201101a565b600190602084519401938184015501620111f9565b6000936000905b8084038210620112505750505060051c01553880808062010fee565b909194602062011271600192858951916201126b8362002f45565b62032b58565b960192019062011234565b6000805b602081106201129757508382015560010162010fd3565b94906020620112b1600192888551916201126b8362002f45565b9201950162011280565b6006602082620112cf6001945187620057d8565b0193019101909162010f90565b600681810204810362001e4f57600683810204830362001e4f576004880160005260206000208360060281015b82600602820181106201131e57505062010f7b565b80600060069255600060018201556201133a60028201620054a7565b600060038201556201134f600482016200533c565b600060058201550162011309565b60076020826201137160019451876202f75c565b0193019101909162010f47565b600781810204810362001e4f57600783810204830362001e4f576003880160005260206000208360070281015b8260070282018110620113c057505062010f32565b80620113ce60079262004fb6565b60006001820155600060028201556000600382015560006004820155620113f8600582016200533c565b6000600682015501620113ab565b60009260005b601f198316830381106201142a57505060051c015538808062010f07565b909360206201144160019284885115159162032b58565b950191016201140c565b6000805b602081106201146657508382015560010162010eee565b949060206201147d60019288855115159162032b58565b920195016201144f565b60016020826201149a83945187620056c2565b0193019101909162010eab565b600981810204810362001e4f57600983810204830362001e4f576001850160005260206000208360090281015b8260090282018110620114e95750506201092c565b60008155620114fb600182016200538b565b62011510600282018054906000815562032ac6565b60038101546000600383015580620115f0575b506004810154600060048301558062011581575b5080620115506005600993018054906000815562032ac6565b6201155e6006820162005419565b6201156c6007820162005419565b6201157a600882016200533c565b01620114d4565b600681810204810362001e4f57600482016000526020600020906006028101905b818110620115b1575062011537565b8060006006925560006001820155620115cd60028201620054a7565b60006003820155620115e2600482016200533c565b6000600582015501620115a2565b600781810204810362001e4f57600382016000526020600020906007028101905b81811062011620575062011523565b806201162e60079262004fb6565b6000600182015560006002820155600060038201556000600482015562011658600582016200533c565b600060068201550162011611565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b60059192935014620116ba5750565b90600080611f4a54905b81811062014ba8575b50501562014b8c575b60005b6020830151908151811015620117315762000f55620077196201170b620076f96020620067ff866201172b9862004ce2565b86516001600160a01b03166000908152611f496020526040902062024340565b620116d9565b505060005b602083015180518210156201177e57620076f96020620067ff846201175b9462004ce2565b90606482101562004c995762011778914290611f4b015562004c7b565b62011736565b50506000905b602083015180518310156200b13957826201179f9162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab57600103620119e75760400190620117e060c08351015162004c8b565b5193620117f760a0620077f3818651015162004c8b565b51916201180886518551146202e0ca565b6201181786518451146202e130565b60005b86518110156201196e5762011830818662004ce2565b516103e881101562004c9957600160ff6007620118569360031b0154161515146202e192565b62011862818562004ce2565b516201186f828762004ce2565b51906103e882101562004c995760066201188f9260031b01549062006049565b906201189c838862004ce2565b51916103e883101562004c99576006620118bb9360031b01556202e1ea565b620118c7818562004ce2565b51620118d4828762004ce2565b51906103e882101562004c995762011915916003906001600160a01b03620118fd868d62004ce2565b5116600052811b016020526040600020549062006049565b919062011923828862004ce2565b51906103e882101562004c9957620119689362000f55926003906001600160a01b0362011951878f62004ce2565b5116600052811b016020526040600020556202e249565b6201181a565b5094915091620119826201198991620336a2565b9162033586565b9360405192620119998462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba620119c4938762004ce2565b620119a5565b5094509260209250620119de915062004c7b565b91905062011784565b6020819492939401516026811015620029ab5760020362011c7f5760400180519283519062011a1f62007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b865181101562011b655762011a58818862004ce2565b516103e881101562004c995760ff600762011a7a9260031b015416156202e2a2565b62011a86818862004ce2565b516103e881101562004c995760031b600701805460ff1916600117905562011aaf818562004ce2565b5162011abc828962004ce2565b51906103e882101562004c9957600562011ada9260031b01620056c2565b62011ae6818662004ce2565b5162011af3828962004ce2565b516103e881101562004c995760031b6001015562011b12818762004ce2565b5162011b1f828962004ce2565b516103e881101562004c995760031b6002015562011b3e818862004ce2565b51906103e882101562004c99576000600662011b5f9360031b015562004c7b565b62011a42565b50959150935060209250620119de915062004c7b565b60405162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b6020819493929401516026811015620029ab5760030362011cad576020919262000f55620119de926202e2ee565b60208101516026811015620029ab5760040362011f555762011cd760c06040830151015162004c8b565b519362011cec60c06040840151015162004caf565b519062011d1360a0604062011d078282880151015162004c8b565b51950151015162004caf565b519362011d28875184511462000f4e62033906565b62011d3b875185511462000f4e62033906565b62011d4e875186511462000f4e62033906565b60005b875181101562011db75762011d67818662004ce2565b51906103e882101562004c995762011db1916003906001600160a01b0362011d90848d62004ce2565b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62011d51565b509095919593929360005b835181101562011f125762011dd8818762004ce2565b516103e881101562004c99576003906001600160a01b0362011dfb848862004ce2565b5116600052811b0160205262011e1c60406000205462007dae838862004ce2565b9062011e29838962004ce2565b51916103e883101562004c995762011e6d926003906001600160a01b0362011e52878b62004ce2565b5116600052811b0160205260406000205562000f4e62033a0a565b62011e79818762004ce2565b516103e881101562004c99576003906001600160a01b0362011e9c848c62004ce2565b5116600052811b0160205262011ebd6040600020546200686c838862004ce2565b91905062011ecc818862004ce2565b51916103e883101562004c995762011f0c926003906001600160a01b0362011ef5858e62004ce2565b5116600052811b0160205260406000205562004c7b565b62011dc2565b509362011f2c9192969350620084d162007e9f91620336a2565b9260005b8351811015620119ca578062000f55620079ba62011f4f938762004ce2565b62011f30565b929060208401516026811015620029ab57600503620124c25762011f8160a06040860151015162004c8b565b519062011f9660a06040870151015162004caf565b51928251845103620089ef5760005b835181101562011ffe5762011fbb818562004ce2565b51906103e882101562004c9957600362011ff89260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62011fa5565b509060005b8351811015620120a15762012019818562004ce2565b516103e881101562004c995760039060018060a01b03895116600052811b016020526201205160406000205462007dae838862004ce2565b91906201205f828762004ce2565b51906103e882101562004c99576201209b93600362000f559360018060a01b038d5116600052811b0160205260406000205562000f4e62033a0a565b62012003565b5091620120b29194959350620336a2565b9260405192620120c28462002b00565b6001845260203681860137516001600160a01b0316620120e28462004c8b565b5260405192620120f28462002ac7565b6000845260003681376000945b8051861015620124ae5762012115868262004ce2565b516102a05262012126855162004dfe565b9660009462012136845162004dfe565b610a205260009460005b885181101562012206578a89620121706001600160a01b0362012164858462004ce2565b51166102a0516203348a565b1580620121c0575b62012191575b50506201218b9062004c7b565b62012140565b98620121b59162001b0382859c62007f8f6201218b9760018060a01b039262004ce2565b9790508a896201217e565b5050506103e86102a051101562004c99576001600160a01b03620121e5828b62004ce2565b511660005260036102a051811b016020528a89604060002054151562012178565b50909895979498969291939660005b8851811015620122a9576103e86102a051101562004c99576001600160a01b0362012241828b62004ce2565b511660005260036102a051811b016020526040600020541562012270575b6201226a9062004c7b565b62012215565b996201226a90620122a0906001600160a01b036201228f8e8d62004ce2565b511662001b0382610a205162004ce2565b9a90506201225f565b509850969592919093966102a0516103e8811015806108605262004c995760031b6004015498620122df620080c0898c62006258565b6104c0526000610aa05260006104a0525b6108605162004c99576104a0518a811015620123b95762012325620123429160006108605260046102a05160031b0162004efa565b9054610a205160039290921b1c6001600160a01b03169062033539565b1562012361575b620123576104a05162004c7b565b6104a052620122f0565b6000610860526201237f6104a05160046102a05160031b0162004efa565b60018060a01b0391549060031b1c16620123a0610aa0516104c05162004ce2565b52620123af610aa05162004c7b565b610aa05262012349565b50979294959093985095909560005b82811062012462575050506108605162004c99576104c051516001600160401b03811162002a2357620124058160046102a05160031b0162005036565b60206104c0510160046102a05160031b01600052602060002060005b838110620124445750505050620124389062004c7b565b949295909195620120ff565b82516001600160a01b03168183015560209092019160010162012421565b620124a8906001600160a01b036201247b828562004ce2565b51166201248f610aa0516104c05162004ce2565b526201249e610aa05162004c7b565b610aa05262004c7b565b620123c8565b505093620119de9193506020925062004c7b565b909260208101516026811015620029ab576006036201267b57604001620124ee60c08251015162004c8b565b51936201250560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620125845762012534818562004ce2565b51906103e882101562004c99576201257e916003906001600160a01b036201255d848c62004ce2565b5116600052811b0160205262000f5560406000205462007d41838962004ce2565b6201251e565b509060005b865181101562012625576201259f818562004ce2565b516103e881101562004c99576003906001600160a01b03620125c2848b62004ce2565b5116600052811b01602052620125e360406000205462007dae838862004ce2565b9190620125f1828762004ce2565b51906103e882101562004c99576201261f9362000f55926003906001600160a01b0362011e52878f62004ce2565b62012589565b5094916201263a9193506201198290620336a2565b91604051946201264a8662002ac7565b60008652600036813760005b8351811015620119ca578062000f55620079ba62012675938762004ce2565b62012656565b60208101516026811015620029ab576007036201278d5760400192620126a660c08551015162004c8b565b5191620126b860a08651015162004c8b565b5194515191620126d0845187511462000f4e62033906565b60005b8451811015620119ca57620127879062000f556001600160a01b0380620126fb848a62004ce2565b51166000528660028b620127776201273a876201273281611f40978860205262008d7e60ff604060002054161562000f4e620339d7565b519362004ce2565b519162008de28d60405196620127508862002a07565b60018852886200d82f8c60208b01946000865260408c0197885260608c01998a5262004ce2565b5191015562008dfd838962004ce2565b620126d3565b60208194939401516026811015620029ab57600803620128245760c06040620127ba920151015162004c8b565b519160005b835181101562012812576201280c906001600160a01b0380620127e3838862004ce2565b5116600052611f4090816020526200d94b600160ff6040600020541615151462000f4e62033936565b620127bf565b50926020919250620119de9062004c7b565b60208101516026811015620029ab57600903620128a65760c060406201284e920151015162004c8b565b519160005b83518110156201281257620128a0906001600160a01b038062012877838862004ce2565b5116600052611f4090816020526200da39600160ff6040600020541615151462000f4e62033936565b62012853565b60208101516026811015620029ab57600a03620129545760400190620128d760a06200dacd60c08551015162004c8b565b5192620128ec835185511462000f4e62033906565b60005b835181101562012941576201293b906001600160a01b038062012913838862004ce2565b5116600052611f40806020526200db3c600160ff6040600020541615151462000f4e62033936565b620128ef565b5093620119de9193506020925062004c7b565b6020819493929401516026811015620029ab57600b0362012a0757604001926201298360c08551015162004c8b565b51935151916201299b855184511462000f4e62033906565b60005b8551811015620129f457620129ee9062000f556001600160a01b0380620129c6848b62004ce2565b5116600052611f40806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6201299e565b5093509160209150620119de9062004c7b565b90919260208201516026811015620029ab57600c0362012b44576060604083015101519262012a36846202d715565b60005b8451811015620129415760e062012a598260606040880151015162004ce2565b5101511562012ad65762012a7a620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012a9b6005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c89565b62012a39565b62012aee620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012b0f6005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c49565b92919060208101516026811015620029ab57600d0362012c585760400192602062012b7460a08651015162004c8b565b51945101519162012b8985518451146202de09565b60005b8551811015620129f4578062012ba762012c00928662004ce2565b511562012c065762012bbe62009368828962004ce2565b62012bd660ff60056200de5462009389858c62004ce2565b62012bee60ff6005620093a262009389858c62004ce2565b6005620093be62009389838a62004ce2565b62012b8c565b62012c16620093f6828962004ce2565b62012c2e60ff60056200de5462009417858c62004ce2565b62012c4660ff6005620093a262009417858c62004ce2565b6005620093be62009417838a62004ce2565b60208194929401516026811015620029ab57600e0362012d1f5760400190602062012c8860a08451015162004c8b565b51925101519362012c9d83518651146202de09565b60005b8351811015620129f4578062012cbb62012cc7928862004ce2565b5162012ccd5762004c7b565b62012ca0565b62012cdd620094b3828762004ce2565b62012cf560ff60056200df9162009389858a62004ce2565b62012d0d60ff6005620094fa62009389858a62004ce2565b60056200924662009389838862004ce2565b9060208294939401516026811015620029ab57600f0362012e5d576060604083015101519262012d4f846202d715565b60005b8451811015620129415760e062012d728260606040880151015162004ce2565b5101511562012def5762012d93620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012db46005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c89565b62012d52565b62012e07620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012e286005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c49565b9060208194939401516026811015620029ab5760100362012ece57604001519062012e9160a0608084015193015162004c8b565b519362012ea6835186511462000f4e62033906565b60005b8351811015620129f4578062000f55620096a562012ec8938762004ce2565b62012ea9565b60208194929401516026811015620029ab5760110362013130576040019062012f0260a06200dacd60c08551015162004c8b565b519362012f1383518651146202d58d565b60005b835181101562012f8d5762012f879062000f556001600160a01b038062012f3e848962004ce2565b5116600052611f458060205262012f606040600020546200686c868d62004ce2565b91909262012f6f868b62004ce2565b511660005260205260406000205562000f4e620338bc565b62012f16565b5093509062012f9c9062033586565b90611f46549362012fb3620080c084518762006258565b9060009260005b87811062013115575060005b85518110156201306d576000805b8981106201301e575b501562012ff6575b62012ff09062004c7b565b62012fc6565b9362012ff09062013015906001600160a01b036200e3f8888a62004ce2565b94905062012fe5565b620130298162004e52565b90546001600160a01b0360039290921b1c81169062013049858b62004ce2565b51161462013062576201305c9062004c7b565b62012fd4565b505060013862012fdd565b5095509392506201307e8262004dfe565b8051906001600160401b03821162002a23576020906201309e8362004f93565b01611f46600052602060002060005b838110620130f7575050505060005b828110620130d457505050620119de60209162004c7b565b620130f19062000f556001600160a01b0362001a37838662004ce2565b620130bc565b82516001600160a01b031681830155602090920191600101620130ad565b936200e5446201312a916200e5268762004e52565b62012fba565b60208194929401516026811015620029ab576012036201337557604001906201316460a06200dacd60c08551015162004c8b565b51936201317583518651146202d58d565b60005b8351811015620131c857620131c29062000f556001600160a01b0380620131a0848962004ce2565b5116600052611f458060205262012f6060406000205462007dae868d62004ce2565b62013178565b5093509190620131d89062033586565b611f4654620131e78162004dfe565b906000926000915b8083106201329c57505050620132058262004dfe565b8051906001600160401b03821162002a2357602090620132258362004f93565b01611f46600052602060002060005b8381106201327e575050505060005b8281106201325b57505050620119de60209162004c7b565b620132789062000f556001600160a01b0362001a37838662004ce2565b62013243565b82516001600160a01b03168183015560209092019160010162013234565b91956000959193959760005b85518110156201336657620132bd8962004e52565b90546001600160a01b0360039290921b1c811690620132dd838962004ce2565b511614620132f657620132f09062004c7b565b620132a8565b509750956001959391955b8062013335575b156201332057620133199062004c7b565b91620131ef565b936200e54462013319916200e5268762004e52565b50620133418162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562013308565b50979690969593919562013301565b60208101516026811015620029ab57601303620133ce5760408091015101519260005b8451811015620133bd578062000f5562009c19620133b7938862004ce2565b62013398565b50925090620119de60209162004c7b565b60208101516026811015620029ab576014036201357b5760400190620133f960c08351015162004c8b565b51936201341060a0620077f3818651015162004c8b565b51916201342186518551146202e0ca565b6201343086518451146202e130565b60005b8651811015620135265762013449818562004ce2565b5162013456828762004ce2565b51906103e882101562004c99576006620134769260031b01549062006049565b9062013483838862004ce2565b51916103e883101562004c99576006620134a29360031b01556202e1ea565b620134ae818562004ce2565b51620134bb828762004ce2565b51906103e882101562004c9957620134e4916003906001600160a01b03620118fd868d62004ce2565b9190620134f2828862004ce2565b51906103e882101562004c9957620135209362000f55926003906001600160a01b0362011951878f62004ce2565b62013433565b5094915091620119826201353a91620336a2565b93604051926201354a8462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba62013575938762004ce2565b62013556565b60208101516026811015620029ab57601503620135a5576020919262000f55620119de926202e2ee565b60208101516026811015620029ab57601603620136015760c06040620135cf920151015162004c8b565b519260005b8451811015620133bd57620135fb9062000f556001600160a01b0362009e60838962004ce2565b620135d4565b60208101516026811015620029ab576017036201365e5760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601803620136c95760c0604062013688920151015162004c8b565b5192600160ff19611fb6541617611fb65560005b8451811015620133bd57620136c39062000f556001600160a01b0362009f2c838962004ce2565b6201369c565b60208193929301516026811015620029ab57601903620137b15760008080604080940160a08082510151805162013778575b5050519060e0820151916201371f6200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156201376f573d91620137408362002edc565b926201374f8351948562002b1c565b83523d6000602085013e5b1562009fe1575050620119de60209162004c7b565b6060916201375a565b620137839062004c8b565b515162013792575b80620136fb565b8192506200686590620137a89251015162004c8b565b5190386201378b565b60208101516026811015620029ab57601a03620138a757620137dc60a0604080930151015162004c8b565b51620137ec60038251146202d58d565b620137f78162004c8b565b519162013810620138088362004caf565b519262004cc0565b51916201386d575091620119de916001602094146000146200a16d576201383f6201384d91611fb15462006049565b611fb15562000f4e62033857565b62000f556201385f611fb25462006036565b611fb25562000f4e62033891565b5162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b0362013cd757509190620138d7611faf54620061966200a1e362033793565b5050620138e362033857565b506000805b6103e8811062013c8b575b5050620138ff62006172565b6201390d613f745462004dfe565b906000946000905b6103e882101562013c7e578160031b9460ff6007870154161562013a665760009660028701541562013a5557600098975b62004c9957600487015489101562013a3b5762013967896004890162004efa565b9054600391821b1c6001600160a01b03166000818152918901602052604091829020549199916201399a90889062005f19565b9a90620139a662033857565b620139b19162004c48565b60009a60028b0154620139c49162005f19565b9190620139d062033857565b620139db9162004c48565b82600052611f4760205260002090815490620139f79162006049565b90915562013a0462033857565b62013a0f9162004c48565b62013a1b828962004ce2565b5262013a279062004c7b565b9862013a339062004c7b565b989762013946565b9290955062013a4d9196975062004c7b565b909462013915565b9290955062013a4d91965062004c7b565b95969392509350505b62013a7a8262004dfe565b9160009160005b82811062013be857505050611f48549162013aa1620080c0848462006258565b926000906000905b80821062013bcb57505060005b83811062013b355750508251929150506001600160401b03821162002a235760209062013ae38362004f58565b01611f48600052602060002060005b83811062013b175750505050620119de6020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162013af2565b6000805b83811062013b83575b501562013b5b575b62013b559062004c7b565b62013ab6565b9062013b559062013b7a906001600160a01b0362008248858762004ce2565b91905062013b4a565b6001600160a01b038062013b98858862004ce2565b51169062013ba7838a62004ce2565b51161462013bc05762013bba9062004c7b565b62013b39565b505060013862013b42565b90916200825662013be19162009b6f8562004e36565b9062013aa9565b6000805b85811062013c36575b501562013c0e575b62013c089062004c7b565b62013a81565b9262013c089062013c2d906001600160a01b0362008248878662004ce2565b93905062013bfd565b6001600160a01b038062013c4b858762004ce2565b51169062013c5a838a62004ce2565b51161462013c735762013c6d9062004c7b565b62013bec565b505060013862013bf5565b9394959291505062013a6f565b8060039594951b9060ff6007830154161562013ccd576200a622620074b962000f55946200a61662013cc49560026200a60c8762005deb565b939293620138e8565b50939293620138f3565b60208101516026811015620029ab57601c0362013d345760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d0362013d5a575b50620119de60209162004c7b565b92909160208401516026811015620029ab57601e036201447c57604084019060a09062013d8b828451015162004c8b565b515162013d9c838551015162004caf565b5151036200aeb05762013db3828451015162004c8b565b515162013dc4838551015162004cc0565b5151036200ae345762013ddb828451015162004c8b565b519462013dec838551015162004caf565b519162013e016200a76b858751015162004cc0565b51958551875103620089ef5760005b865181101562013e695762013e26818862004ce2565b51906103e882101562004c9957600362013e639260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b62013e10565b5090969192939660005b865181101562013f125762013e89818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b0160205262013ec160406000205462007dae838b62004ce2565b919062013ecf828a62004ce2565b51906103e882101562004c995762013f0c93600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b62013e73565b509396929795509362013f2590620336a2565b966040519662013f358862002b00565b60018852602036818a013786516001600160a01b031662013f568962004c8b565b526040519662013f668862002ac7565b600088526000610660525b89516106605190811015620143235762013f8c908b62004ce2565b516109c05262013f9d885162004dfe565b9960009762013fad8b5162004dfe565b6109405260009760005b8b518110156201407d578d8c62013fe76001600160a01b0362013fdb858462004ce2565b51166109c0516203348a565b158062014037575b62014008575b5050620140029062004c7b565b62013fb7565b9b6201402c9162001b0382859f62007f8f620140029760018060a01b039262004ce2565b9a90508d8c62013ff5565b5050506103e86109c051101562004c99576001600160a01b036201405c828e62004ce2565b511660005260036109c051811b016020528d8c604060002054151562013fef565b50909b989a99949691929395979b60005b8b5181101562014122576103e86109c051101562004c99576001600160a01b03620140ba828e62004ce2565b511660005260036109c051811b0160205260406000205415620140e9575b620140e39062004c7b565b6201408e565b9c62014119620140e3918f620141088f9160018060a01b039262004ce2565b511662001b03826109405162004ce2565b9d9050620140d8565b509b509895909294969193966109c051996103e88b10159c8d62004c995762014159620080c060048f9e60031b01549e8f62006258565b6108c05260006108a0528d60009e5b62004c99578d8f101562014227575060009d620141b0620141938260046109c05160031b0162004efa565b90546109405160039290921b1c6001600160a01b03169062033539565b15620141ca575b620141c38f9162004c7b565b9e62014168565b620141c39e5060009e8f91620141ea8160046109c05160031b0162004efa565b60018060a01b0391549060031b1c166201420b6108a0516108c05162004ce2565b526201421a6108a05162004c7b565b6108a052915050620141b7565b9396999b929d509396999094979b5060005b828110620142d75750505062004c99576108c051516001600160401b03811162002a2357620142728160046109c05160031b0162005036565b60206108c051019060046109c05160031b0160005260206000209160005b828110620142b95750505050620142aa6106605162004c7b565b61066052959890949862013f71565b81516001600160a01b03168185015560209091019060010162014290565b6201431d906001600160a01b03620142f0828562004ce2565b5116620143046108a0516108c05162004ce2565b52620143136108a05162004c7b565b6108a05262004c7b565b62014239565b509492975094955091965060009460005b87518110156201438757620143526200acf06200ace3838962004ce2565b806201436b575b50620143659062004c7b565b62014334565b906200ad266201438098620143659362006049565b9062014359565b50965094509290915080620143a9575b5050620119de6020915b915062013d4c565b620143d49060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b60018060a01b03835116600052602052604060002055600080611f4654905b81811062014432575b505091620119de916020931562014416575b509162014397565b516201442b906001600160a01b03166200662e565b386201440e565b6201443d8162004e52565b9054855160039290921b1c6001600160a01b039081169116146201446c57620144669062004c7b565b620143f3565b50600191508290506020620143fc565b91909260208101516026811015620029ab57601f03620144b757602091620144b16200af646040620119de9401515162004c8b565b620143a1565b60208101516026811015620029ab57602003620144dd575b50620119de602091620143a1565b60208101516026811015620029ab57602114620144cf5760208101516026811015620029ab57602203620145315750620119de60209160ff19611fb65416611fb6556201452962005023565b9150620144cf565b60208101516026811015620029ab5760230362014557575b50620119de60209162014529565b60208101516026811015620029ab57602414620145495760208101516026811015620029ab57602514620145495792909160208401516026811015620029ab576015036201069a576040840190620145b460c08351015162004c8b565b5190620145cb60a0620077f3818651015162004c8b565b5193620145e0835185511462000f4e62033906565b620145f3835186511462000f4e62033906565b60005b83518110156201464f576201460c818662004ce2565b51906103e882101562004c99576003620146499260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b620145f6565b509095919560005b87518110156201477a576201466d818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620146a560406000205462007dae838962004ce2565b90620146b2838862004ce2565b51916103e883101562004c99576003620146e99360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b620146f5818662004ce2565b516103e881101562004c99576003906001600160a01b0362014718848c62004ce2565b5116600052811b01602052620147396040600020546200686c838962004ce2565b919062014747828862004ce2565b51906103e882101562004c99576201477493600362000f55938d62007e678760018060a01b039262004ce2565b62014657565b509262014792919294506200c6fd90969596620336a2565b9260405190620147a28262002b00565b6001825260203681840137516001600160a01b0316620147c28262004c8b565b526000945b805186101562014b7657620147dd868262004ce2565b51610a4052620147ee855162004dfe565b96600094620147fe845162004dfe565b6109805260009460005b8851811015620148ce578a89620148386001600160a01b036201482c858462004ce2565b5116610a40516203348a565b158062014888575b62014859575b5050620148539062004c7b565b62014808565b986201487d9162001b0382859c62007f8f620148539760018060a01b039262004ce2565b9790508a8962014846565b5050506103e8610a4051101562004c99576001600160a01b03620148ad828b62004ce2565b51166000526003610a4051811b016020528a89604060002054151562014840565b50909895979498969291939660005b885181101562014971576103e8610a4051101562004c99576001600160a01b0362014909828b62004ce2565b51166000526003610a4051811b016020526040600020541562014938575b620149329062004c7b565b620148dd565b99620149329062014968906001600160a01b03620149578e8d62004ce2565b511662001b03826109805162004ce2565b9a905062014927565b50985096959291909396610a40516103e8811015806102e05262004c995760031b6004015498620149a7620080c0898c62006258565b610220526000610a80526000610520525b6102e05162004c9957610520518a81101562014a8157620149ed62014a0a9160006102e0526004610a405160031b0162004efa565b90546109805160039290921b1c6001600160a01b03169062033539565b1562014a29575b62014a1f6105205162004c7b565b61052052620149b8565b60006102e05262014a47610520516004610a405160031b0162004efa565b60018060a01b0391549060031b1c1662014a68610a80516102205162004ce2565b5262014a77610a805162004c7b565b610a805262014a11565b50979294959093985095909560005b82811062014b2a575050506102e05162004c995761022051516001600160401b03811162002a235762014acd816004610a405160031b0162005036565b602061022051016004610a405160031b01600052602060002060005b83811062014b0c575050505062014b009062004c7b565b949295909195620147c7565b82516001600160a01b03168183015560209092019160010162014ae9565b62014b70906001600160a01b0362014b43828562004ce2565b511662014b57610a80516102205162004ce2565b5262014b66610a805162004c7b565b610a805262004c7b565b62014a90565b505093620119de91935060209250915062014549565b815162014ba2906001600160a01b031662006658565b620116d6565b62014bb38162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462014be25762014bdc9062004c7b565b620116c4565b50505060013880620116cd565b82516001600160a01b0316600160401b82101562002a235762001a4482600162014c1e9401613f025562004e8a565b386200bc77565b62014c308162004e8a565b9054865160039290921b1c6001600160a01b0390811691161462014c5f5762014c599062004c7b565b6200bc66565b50506001386200bc6f565b82516001600160a01b0316818301556020909201916001016200bb9c565b82516001600160a01b0316818301556020909201916001016200ba4f565b600191820180546001600160a01b03909216848601559390910192906200b99e565b613f6d60005262014cef90600080516020620340bb83398151915290810190830162004f3f565b386200b95f565b6001808262014d0782948662015151565b019201920191906200b921565b613f6c60005260008051602062033efb833981519152908282015b818301811062014d415750506200b8e6565b8062014d4f6001926200533c565b0162014d2f565b600191820180546001600160a01b03909216848601559390910192906200b8b7565b613f6b60005262014d9f9060008051602062033ebb83398151915290810190830162004f3f565b386200b878565b6001809193019182549381613f0301550190916200b81b565b82516001600160a01b0316818301556020909201916001016200b734565b62014df890613f026000528484600020918201910162004f3f565b386200b724565b82516001600160a01b0316818301556020909201916001016200b550565b62014e3890613ef96000528484600020918201910162004f3f565b386200b540565b8062014e619160031b600160ff60078301541615151462014e67575062004c7b565b6200b495565b62014e7a60048201611fbc8301620152ea565b611fbf8101600160ff19825416179055805481611fb801556001810154611fb98201556002810154611fba82015562014ebb60058201611fbd830162015151565b611fbe6006820154910155386200a16d565b600660208262014ee16001945186620057d8565b019201920191906200b29e565b600681810204810362001e4f57600683810204830362001e4f57613efa6000527f2dfc264c6ecd0c6ea7ea3726867a09cc7eed901a6e437c010038bab559d48ed86006840281015b826006028201811062014f4b5750506200b28b565b806000600692556000600182015562014f6760028201620054a7565b6000600382015562014f7c600482016200533c565b600060058201550162014f36565b600660208262014f9e6001945186620057d8565b019201920191906200b213565b8060060290600682040362001e4f578260060260068104840362001e4f57600090613efb82526020822092830192015b82811062014feb5750506200b200565b8082600692558260018201556201500560028201620054a7565b82600382015562015019600482016200533c565b8260058201550162014fdb565b608460405162461bcd60e51b815260206004820152604060248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b8181146201514d578154916001600160401b03831162002a23576201510f838362005036565b60005260206000209060005260206000208154916000925b84841062015136575050505050565b600180919201938454928185015501929062015127565b5050565b908082146201514d5762015166815462002c01565b906001600160401b03821162002a23578190620151908262015189865462002c01565b8662005678565b600090601f8311600114620151c957600092620151bd5750508160011b916000199060031b1c1916179055565b0154905038806200570b565b81526020808220858352818320935090601f1985169083905b8282106201521e5750509084600195949392106201520457505050811b019055565b015460001960f88460031b161c1916905538808062005758565b8495819295850154815560018091019601940190620151e2565b8181146201514d578154916201524f8383620053ca565b6000526020600020906000526020600020906000905b838210620152735750505050565b80620152826001928562015151565b92810192918101910162015265565b8181146201514d57815491620152a8838362005458565b6000526020600020906000526020600020906000905b838210620152cc5750505050565b80620152db60019285620150e9565b928101929181019101620152be565b8181146201514d578154916001600160401b03831162002a235762015310838362005036565b60005260206000209060005260206000208154916000925b84841062015337575050505050565b600191820180546001600160a01b039092168486015593909101929062015328565b8181146201514d5781549162015370838362005458565b6000526020600020906000526020600020906000905b838210620153945750505050565b80620153a360019285620152ea565b92810192918101910162015386565b8181146201514d57815491620153c983836200555b565b6000526020600020906000526020600020906000905b838210620153ed5750505050565b8060019184036201540a575b6008809101930191019091620153df565b80548455620154378280860190830160ff906201542b82825416846200563d565b5460081c169062005657565b60028082015490850155620154536003808301908601620150e9565b60048085019082018082036201546c575b5050620153f9565b620154779162015238565b62015489600580830190860162015291565b6201549b600680830190860162015359565b620154ad600780830190860162015151565b388062015464565b919062005cff57808203620154c8575050565b60ff60058062002bc394620154e1848654168262005624565b60018501546001820155620154fd6002860160028301620153b2565b6003850154600382015562015519600486016004830162015151565b0192016201552b828254168462005795565b6201553d82825460081c1684620057a6565b5460101c1690620057be565b908082146201514d57908154906000915b60648310620155695750505050565b60018091940192835494818401550191926201555a565b90611f4254916000926020820191825151906201559d8262002be9565b91620155ad604051938462002b1c565b808352620155be601f199162002be9565b01366020840137620155d38451518462005f19565b90156201595057620155e59062004dfe565b918693855151156201594657620155fc8162004dfe565b975b8651518110156201578e5760008080805b87858c888410620156a45750839450620156389392506201563291508862004ce2565b62003574565b6006811015620029ab576003146201565d575b50620156579062004c7b565b620155fe565b6000905b8a818310620156725750506201564b565b8298620156896201569d9394620156969362004ce2565b5162001b03828b62004ce2565b9762004c7b565b9062015661565b620156b7620156be939285925162004ce2565b5162015d75565b939094808311806201577a575b156201573157505091838562015727575b6006811015620029ab5760038f911462015707575b5050620156fe9062004c7b565b9190916201560f565b946201571e9162001b0382620156fe959862004ce2565b93908d620156f1565b60009550620156dc565b809492959195148062015766575b15620156f1576006811015620029ab5760038f911462015707575050620156fe9062004c7b565b506006811015620029ab578015156201573f565b506006861015620029ab57851515620156cb565b505093505090929350600093845b8351861015620158e157620157bc620157b6878662004ce2565b62005616565b90600680831015620029ab576002928303620157e7575050620157e0909562004c7b565b946201579c565b620157f7620157b6898862004ce2565b9281841015620029ab57600180941480620158cd575b156201582257505050620157e0909562004c7b565b62015837620157b68a899b9694959b62004ce2565b9280841015620029ab5760048094149283620158a1575b508262015876575b50506201586a575b50620157e09062004c7b565b9550620157e06201585e565b9091508810156201588c57871415388062015856565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620158b85789141591386201584e565b602184634e487b7160e01b6000525260246000fd5b5081831015620029ab57808314156201580d565b9250929093506006821015620029ab57600382036201593d575b620159068162004dfe565b9360005b82811062015919575050509190565b806201592a62015937928462004ce2565b5162001b03828962004ce2565b6201590a565b506000620158fb565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b90611f435491600092602082019182515190620159c58262002be9565b91620159d5604051938462002b1c565b808352620159e6601f199162002be9565b01366020840137620159fb8451518462005f19565b9015620159505762015a0d9062004dfe565b91869385515115620159465762015a248162004dfe565b975b86515181101562015b9c5760008080805b87858c88841062015ab2575083945062015a5a9392506201563291508862004ce2565b6006811015620029ab5760031462015a7f575b5062015a799062004c7b565b62015a26565b6000905b8a81831062015a9457505062015a6d565b82986201568962015aab9394620156969362004ce2565b9062015a83565b62015ac562015acc939285925162004ce2565b5162015e14565b9390948083118062015b88575b1562015b3f57505091838562015b35575b6006811015620029ab5760038f911462015b15575b505062015b0c9062004c7b565b91909162015a37565b9462015b2c9162001b038262015b0c959862004ce2565b93908d62015aff565b6000955062015aea565b809492959195148062015b74575b1562015aff576006811015620029ab5760038f911462015b1557505062015b0c9062004c7b565b506006811015620029ab5780151562015b4d565b506006861015620029ab5785151562015ad9565b505093505090929350600093845b835186101562015cbf5762015bc4620157b6878662004ce2565b90600680831015620029ab57600292830362015bef57505062015be8909562004c7b565b9462015baa565b62015bff620157b6898862004ce2565b9281841015620029ab5760038094148062015cab575b1562015c2a5750505062015be8909562004c7b565b62015c3f620157b68a899b9694959b62004ce2565b9280841015620029ab576005809414928362015c94575b508262015c7e575b505062015c72575b5062015be89062004c7b565b955062015be862015c66565b909150881015620029ab57871415388062015c5e565b908093508a1015620029ab57891415913862015c56565b5081831015620029ab578083141562015c15565b9250929093506006821015620029ab576003820362015d0e575b62015ce48162004dfe565b9360005b82811062015cf7575050509190565b806201592a62015d08928462004ce2565b62015ce8565b50600062015cd9565b1562015d1f57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9192906000908194829462015d8f611f4254841062015d17565b60ff600562015d9e8562005c89565b50015460081c161562015e07578262015dbb928592600162015fee565b62015dc7575b50929190565b809450600192935062015ddb915062005c89565b50015490600362015dfc60ff62015df28662005c89565b5054169462005c89565b500154913862015dc1565b5050509150915080918190565b9192906000908194829462015e2e611f4354841062015d17565b60ff600562015e3d8562005c49565b50015460081c161562015e07578262015e599285928362015fee565b62015e645750929190565b809450600192935062015e78915062005c49565b50015490600362015dfc60ff62015e8f8662005c49565b5054169462005c49565b9062002bc3606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262015f10815180926020868601910162002d89565b810103604181018552018362002b1c565b606d62002bc3919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262015f93815180926020605f8701910162002d89565b82016d016103737b2329034b73232bc1d160951b605f82015262015fc1825180936020878501910162002d89565b0103604d81018552018362002b1c565b805482101562004c995760005260206000209060031b0190600090565b9392919084156201637f5762016018611f4254841062000f4e620160128662005091565b62015e99565b6201604f6002620160298562005c89565b500154851062000f4e6201603d8662005091565b620160488862005091565b9062015f21565b841562016360576201607f6001620160768660026201606e8862005c89565b500162015fd1565b50015460ff1690565b945b6201608c8662002f45565b856201609d57505050505050600090565b620160a88662002f45565b600395808703620160bf5750505050505050600190565b620160ca8162002f45565b60048103620160df5750505050505050600090565b620160ea8162002f45565b60018103620161005750620032619550620163af565b919593929490620161118362002f45565b600280931462016128575b50505050505050600090565b801562016342576201615260016201614684866201606e8962005c89565b50015460081c60ff1690565b935b81156201632657856201616d84866201606e8562005c89565b500154965b6201617d8862004dfe565b9860005b8981106201629b575050505050506201619a82620029a0565b60018203620161fd57505050906001916000915b818310620161bc5750505090565b90919280620161da575b620161d2909362004c7b565b9190620161ae565b50620161d2620161f5620161ef858462004ce2565b51151590565b9050620161c6565b6201620882620029a0565b8103620162625750509060009182915b818310620162265750505090565b909192801562016245575b6201623d909362004c7b565b919062016218565b506201623d6201625a620161ef858462004ce2565b905062016231565b9091506201627081620029a0565b14620162845750388080808080806201611c565b62016297620161ef620032619262004c8b565b1590565b808b620162e4828c8a8c8a8c156201630557620162da9492620162d094926201606e620162c89362005c89565b500162004efa565b90549060031b1c90565b8787878b62015fee565b620162f8620162ff9462000f559362004ce2565b9015159052565b62016181565b620163209492620162d094926201606e620162c89362005c49565b620162da565b856201633884866201606e8562005c49565b5001549662016172565b6201635960016201614684866201606e8962005c49565b9362016154565b620163786001620160768660026201606e8862005c49565b9462016081565b62016398611f4354841062000f4e620160128662005091565b620163a96002620160298562005c49565b6201604f565b93926004620163f99186600014620165c7576002620163d487826201606e8562005c89565b500154955b8715620165b65760026201606e620163f19362005c89565b50016200363b565b916032841115620165aa576033841015806201659e575b620165915760978410158062016585575b620165785760d3841015806201656b575b6201655f5761012d8410158062016553575b62016546576101918410158062016539575b6201652c576101af841015806201651f575b62016512576101cd8410158062016505575b620164f8576101f584101580620164eb575b620164de5761025984101580620164d1575b620164c357506102bd831015620164b85750505050600090565b620032619362024231565b90506200326193506202b56e565b506102bc8411156201649e565b506200326193506201e816565b506102588411156201648c565b506200326193506202bed2565b506101f48411156201647a565b506200326193506202c935565b506101cc84111562016468565b50620032619350620239a0565b506101ae84111562016456565b50620032619350620287e2565b50610190841062016444565b506200326193620165e4565b5061012c84111562016432565b506200326193506202401c565b5060b484111562016421565b505062003261926201f476565b50609584111562016410565b506200326193620257bf565b60026201606e620163f19362005c49565b6002620165da87826201606e8562005c49565b50015495620163d9565b9260d3811462016bb35760d4811462016ba65760d5811462016b995760d6811462016b8c5760d7811462016b7f5760d8811462016b725760d9811462016b665760da811462016b595760db811462016b4c5760dc811462016b405760dd811462016b315760de811462016b225760df811462016b155760e0811462016b085760e1811462016afc5760e2811462016aef5760e3811462016ae25760e4811462016ad65760e5811462016ac75760e6811462016ab85760e7811462016aab5760e8811462016a9e5760e9811462016a915760ea811462016a845760eb811462016a775760ec811462016a6a5760ed811462016a5d5760ee811462016a505760ef811462016a435760f0811462016a365760f1811462016a295760f2811462016a1c5760f3811462016a0f5760f4811462016a025760f58114620169f55760f68114620169e85760f78114620169db5760f88114620169ce5760f98114620169c25760fa8114620169b65760fb8114620169aa5760fc81146201699e5760fd8114620169925760fe8114620169865760ff81146201697a5761010081146201696e57610101811462016962576101028114620169565761010381146201694a5761010481146201693e57610105811462016932576101068114620169265761010781146201691a5761010881146201690e576101098114620169025761010a8114620168f65761010b8114620168ea5761010c8114620168de5761010d8114620168d25761010e8114620168c65761010f8114620168ba576101108114620168ae576101118114620168a2576101128114620168965761011381146201688a5761011481146201687e5761011581146201687257610116146201686757505050600090565b62003261926201decd565b5062003261926201dca4565b5062003261926201da7b565b5062003261926201d778565b5062003261926201d557565b5062003261926201d336565b5062003261926201d104565b5062003261926201cf3b565b5062003261926201cd72565b5062003261926201cb3a565b5062003261926201c973565b5062003261926201c644565b5062003261926201c412565b5062003261926201c249565b5062003261926201c080565b5062003261926201bebb565b5062003261926201bc83565b5062003261926201babc565b5062003261926201b786565b5062003261926201b526565b5062003261926201b355565b5062003261926201b174565b5062003261926201afad565b5062003261926201ad57565b5062003261926201ab8e565b5062003261926201a9c5565b5062003261926201a6e4565b5062003261926201a3e4565b5062003261926201a0f7565b50620032619262019df7565b5062003261925062019c72565b5062003261925062019b2d565b50620032619250620199bb565b5062003261925062019876565b5062003261925062019731565b50620032619250620195ed565b5062003261925062019478565b5062003261925062019334565b50620032619250620191f0565b50620032619250620190af565b5062003261925062018f6c565b5062003261925062018e2b565b5062003261925062018ce2565b5062003261925062018b9e565b5062003261925062018a5a565b50620032619250620188e5565b5062003261925062018747565b5062003261925062018604565b509050620032619150620185a9565b5090506200326191506201854c565b5062003261926201830e565b506200326192506201817f565b5062003261925062018030565b50620032619262017e19565b5062003261925062017c71565b5062003261925062017b24565b50905062003261915062017ac9565b50905062003261915062017a5c565b50620032619262017810565b5062003261925062017681565b506200326192506201752c565b506200326192620172fe565b5062003261925062017146565b5062003261925062016fea565b5062003261925062016ee9565b5062003261925062016dbc565b5062003261925062016cbb565b50620032619250906020019060018251510362016c6257600162016bd8835162004c8b565b51510362016c085762016beb906201e1d4565b91901562006627576200686562016c03915162004c8b565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016d6357600162016cd9835162004c8b565b51510362016d095762016cec906201e1d4565b91901562006627576200686562016d04915162004c8b565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016e9057600262016dda835162004c8b565b51510362016e345762016ded906201e1d4565b9015620066275762016e0462006865835162004c8b565b51811015918262016e1457505090565b62016e2e91925062016e27905162004c8b565b5162004caf565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016f9157600162016f07835162004c8b565b51510362016f375762016f1a906201e1d4565b91901562006627576200686562016f32915162004c8b565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906040016001918282515103620170ec578262017008835162004c8b565b51510362017092576201701b906201e547565b156200661f57829160009182945b62017037575b505050905090565b80518510156201708c576001600160a01b038062017056878462004ce2565b5116906201706962006865855162004c8b565b51160362017084576201707d849562004c7b565b9462017029565b505091505090565b6201702f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620172a4578262017164835162004c8b565b5151106201724a5762017177906201e547565b156200661f57600091835b6201718e575b50505090565b81518310156201724457600080855b620171c6575b5015620171bd57620171b6849362004c7b565b9262017182565b50505050600090565b620171d78396949295965162004c8b565b515181101562017239576001600160a01b0380620171f6888562004ce2565b5116906201720a8362007497875162004c8b565b5116146201722c57906201722084939262004c7b565b9093959491926201719d565b50918094935038620171a3565b9493909294620171a3565b62017188565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620174d2578462017320845162004c8b565b515103620174785762017333906201e547565b15620173d157849315620173e8576000935b62017351575050505090565b80518410156200519a576001600160a01b038062017370868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db576002926201739b888662004ce2565b511660005284526000200154620173b762006865855162004c8b565b5103620173d157620173ca859462004c7b565b9362017345565b5050505050600090565b5050505050505050600090565b6000935b620173f8575050505090565b80518410156200519a576001600160a01b038062017417868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017442888662004ce2565b5116600052845260002001546201745e62006865855162004c8b565b5103620173d15762017471859462004c7b565b93620173ec565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201762757826201754a835162004c8b565b515103620175cd576201755d906201e547565b919091156200661f57600091835b620175795750505050600090565b8051831015620175c75783926001600160a01b03806201759a838562004ce2565b511690620175ad62006865865162004c8b565b5116146200516057620175c09062004c7b565b926201756b565b620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620177b657826201769f835162004c8b565b5151106201775c57620176b2906201e547565b156200661f5782916000935b620176cc5750505050600090565b8151841015620175c7576000835b620176f4575b50620176ed839462004c7b565b93620176be565b93929162017703825162004c8b565b515185101562017753576001600160a01b038062017722868462004ce2565b511690620177368762007497865162004c8b565b51161462017084576201774b83949562004c7b565b9092620176da565b919293620176e0565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017a02578462017832845162004c8b565b515103620179a85762017845906201e547565b91909115620173d15784931562017906576000935b62017869575050505050600090565b8151841015620179005784936001600160a01b0390816201788b828662004ce2565b5116600052611f4080845260409060ff826000205416620178bc575b5050620178b5915062004c7b565b936201785a565b8293620178cc6002948862004ce2565b511660005284526000200154620178e862006865865162004c8b565b5114620178f857803880620178a7565b505050505090565b620173d1565b6000935b62017919575050505050600090565b8151841015620179005784936001600160a01b0390816201793b828662004ce2565b5116600052613ef880845260409060ff8260002054166201796c575b505062017965915062004c7b565b936201790a565b82936201797c6002948862004ce2565b5116600052845260002001546201799862006865865162004c8b565b5114620178f85780388062017957565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62017a67816201e547565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b038062017a9c838762004ce2565b5116908351160362017ab95762017ab39062004c7b565b62017a7d565b5050905090565b50505050600190565b62017ad4816201e547565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b038062017b07838662004ce2565b511690835116146200660c5762017b1e9062004c7b565b62017ae8565b90604001600191828251510362017c17578262017b42835162004c8b565b51510362017bbd5762017b55906201e5d0565b156200661f57829160009182945b62017b7057505050905090565b80518510156201708c576001600160a01b038062017b8f878462004ce2565b51169062017ba262006865855162004c8b565b511603620170845762017bb6849562004c7b565b9462017b63565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90604001600191828251510362017dbf578262017c8f835162004c8b565b51511062017d655762017ca2906201e5d0565b156200661f57600091835b62017cb85750505090565b81518310156201724457600080855b62017ce7575b5015620171bd5762017ce0849362004c7b565b9262017cad565b62017cf88396949295965162004c8b565b515181101562017d5a576001600160a01b038062017d17888562004ce2565b51169062017d2b8362007497875162004c8b565b51161462017d4d579062017d4184939262004c7b565b90939594919262017cc7565b5091809493503862017ccd565b949390929462017ccd565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017fd6578462017e3b845162004c8b565b51510362017f7c5762017e4e906201e5d0565b15620173d15784931562017eec576000935b62017e6c575050505090565b80518410156200519a576001600160a01b038062017e8b868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db5760029262017eb6888662004ce2565b51166000528452600020015462017ed262006865855162004c8b565b5103620173d15762017ee5859462004c7b565b9362017e60565b6000935b62017efc575050505090565b80518410156200519a576001600160a01b038062017f1b868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017f46888662004ce2565b51166000528452600020015462017f6262006865855162004c8b565b5103620173d15762017f75859462004c7b565b9362017ef0565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201812557826201804e835162004c8b565b515103620180cb5762018061906201e5d0565b919091156200661f57600091835b6201807d5750505050600090565b8051831015620175c75783926001600160a01b03806201809e838562004ce2565b511690620180b162006865865162004c8b565b5116146200516057620180c49062004c7b565b926201806f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620182b457826201819d835162004c8b565b5151106201825a57620181b0906201e5d0565b156200661f5782916000935b620181ca5750505050600090565b8151841015620175c7576000835b620181f2575b50620181eb839462004c7b565b93620181bc565b93929162018201825162004c8b565b515185101562018251576001600160a01b038062018220868462004ce2565b511690620182348762007497865162004c8b565b51161462017084576201824983949562004c7b565b9092620181d8565b919293620181de565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620184f2578462018330845162004c8b565b515103620184985762018343906201e5d0565b91909115620173d157849315620183f6576000935b62018367575050505050600090565b8151841015620179005784936001600160a01b03908162018389828662004ce2565b5116600052611f4080845260409060ff826000205416620183ba575b5050620183b3915062004c7b565b9362018358565b8293620183ca6002948862004ce2565b511660005284526000200154620183e662006865865162004c8b565b5114620178f857803880620183a5565b6000935b62018409575050505050600090565b8151841015620179005784936001600160a01b0390816201842b828662004ce2565b5116600052613ef880845260409060ff8260002054166201845c575b505062018455915062004c7b565b93620183fa565b82936201846c6002948862004ce2565b5116600052845260002001546201848862006865865162004c8b565b5114620178f85780388062018447565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62018557816201e5d0565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b03806201858c838762004ce2565b5116908351160362017ab957620185a39062004c7b565b6201856d565b620185b4816201e5d0565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b0380620185e7838662004ce2565b511690835116146200660c57620185fe9062004c7b565b620185c8565b906020016001918282515103620186ed578262018622835162004c8b565b515103620186935762018635906201e609565b9050156200661f57829160009182945b6201865257505050905090565b80518510156201708c5762018668858262004ce2565b516201867962006865845162004c8b565b510362017084576201868c849562004c7b565b9462018645565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201888b578262018765835162004c8b565b515110620188315762018778906201e609565b9050156200661f57600091835b620187905750505090565b81518310156201724457600080855b620187bf575b5015620171bd57620187b8849362004c7b565b9262018785565b620187d08396949295965162004c8b565b51518110156201882657620187e6868362004ce2565b51620187f88262007497865162004c8b565b51146201881957906201880d84939262004c7b565b9093959491926201879f565b50918094935038620187a5565b9493909294620187a5565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018a0057600262018904835162004c8b565b515103620189a65762018917906201e609565b9050919091156200661f57829160009182945b6201893757505050905090565b81518510156201708c576201894d858362004ce2565b516201895e62006865835162004c8b565b5111801562018980575b620170845762018979849562004c7b565b946201892a565b506201898d858362004ce2565b516201899e62016e27835162004c8b565b511062018968565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018b44578262018a78835162004c8b565b51510362018aea5762018a8b906201e609565b9050156200661f57829160009182945b62018aa857505050905090565b80518510156201708c5762018abe858262004ce2565b5162018acf62006865845162004c8b565b511015620170845762018ae3849562004c7b565b9462018a9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018c88578262018bbc835162004c8b565b51510362018c2e5762018bcf906201e609565b9050156200661f57829160009182945b62018bec57505050905090565b80518510156201708c5762018c02858262004ce2565b5162018c1362006865845162004c8b565b511115620170845762018c27849562004c7b565b9462018bdf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018dd1578262018d00835162004c8b565b51510362018d775762018d13906201e609565b90939150156200661f578060009384925b62018d3d575b5050506200686562016c03915162004c8b565b909193815185101562018d70576200e54462018d679162018d5f878562004ce2565b519062006258565b91908162018d24565b9362018d2a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018f12578262018e49835162004c8b565b51510362018eb85762018e5c906201e609565b90939150156200661f578060009384925b62018e86575b5050506200686562016d04915162004c8b565b909193815185101562018eb1576200e54462018ea89162018d5f878562004ce2565b91908162018e6d565b9362018e73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019081835151036201905557600262018f8c845162004c8b565b51510362018ffb5762018f9f906201e609565b909150156200661f57906000918183925b62018fc9575b50505062016e0462006865835162004c8b565b909192825184101562018ff457620064d762018feb9162018d5f868662004ce2565b91908062018fb0565b9262018fb6565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620191965782620190cd835162004c8b565b5151036201913c57620190e0906201e609565b90939150156200661f578060009384925b6201910a575b5050506200686562016f32915162004c8b565b909193815185101562019135576200e5446201912c9162018d5f878562004ce2565b919081620190f1565b93620190f7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620192da57826201920e835162004c8b565b515103620192805762019221906201e609565b90929150156200661f57600091835b6201923e5750505050600090565b8051831015620175c757826201925685948362004ce2565b516201926762006865855162004c8b565b51106200516057620192799062004c7b565b9262019230565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201941e578262019352835162004c8b565b515103620193c45762019365906201e609565b92919215620171bd57600092845b62019382575050505050600090565b80518410156201790057836201939a86958462004ce2565b51620193ab62006865865162004c8b565b5111620178f857620193bd9062004c7b565b9362019373565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201959357600262019497835162004c8b565b5151036201953957620194aa906201e609565b9290919215620171bd57600092845b620194c8575050505050600090565b8051841015620179005783620194e086958562004ce2565b51620194f162006865855162004c8b565b5111158062019512575b620178f8576201950b9062004c7b565b93620194b9565b506201951f818562004ce2565b516201953062016e27855162004c8b565b511015620194fb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620196d757826201960b835162004c8b565b5151036201967d576201961e906201e609565b92919215620171bd57600092845b6201963b575050505050600090565b80518410156201790057836201965386958462004ce2565b516201966462006865865162004c8b565b5114620178f857620196769062004c7b565b936201962c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201981c57826201974f835162004c8b565b515103620197c25762019762906201e609565b9050919091156200661f57600091835b620197805750505050600090565b8051831015620175c757826201979885948362004ce2565b51620197a962006865855162004c8b565b51106200516057620197bb9062004c7b565b9262019772565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019961578262019894835162004c8b565b5151036201990757620198a7906201e609565b9050919091156200661f57600091835b620198c55750505050600090565b8051831015620175c75782620198dd85948362004ce2565b51620198ee62006865855162004c8b565b51116200516057620199009062004c7b565b92620198b7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019ad3576002620199da835162004c8b565b51510362019a7957620199ed906201e609565b9050156200661f57600091835b62019a085750505050600090565b8151831015620175c7578262019a2085948462004ce2565b5162019a3162006865845162004c8b565b5111158062019a52575b620051605762019a4b9062004c7b565b92620199fa565b5062019a5f818462004ce2565b5162019a7062016e27845162004c8b565b51101562019a3b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019c18578262019b4b835162004c8b565b51510362019bbe5762019b5e906201e609565b9050919091156200661f57600091835b62019b7c5750505050600090565b8051831015620175c7578262019b9485948362004ce2565b5162019ba562006865855162004c8b565b5114620051605762019bb79062004c7b565b9262019b6e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019d9d578262019c90835162004c8b565b51511062019d435762019ca3906201e609565b9050156200661f5782916000935b62019cbf5750505050600090565b8151841015620175c7576000835b62019ce7575b5062019ce0839462004c7b565b9362019cb1565b93929162019cf6825162004c8b565b515185101562019d3a5762019d0c848262004ce2565b5162019d1e8662007497855162004c8b565b5114620170845762019d3283949562004c7b565b909262019ccd565b91929362019cd3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a09d578462019e19845162004c8b565b5151106201a0435762019e2c906201e5d0565b92909215620173d15784931562019f40576000935b62019e4d575050505090565b82518410156200519a576001600160a01b038062019e6c868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b62019eb2575b5050505015620173d15762019eab859462004c7b565b9362019e41565b9092989591939662019ec5865162004c8b565b51518a101562019f34578162019edc8a8362004ce2565b5116600052838352600285600020015462019efd8b62007497895162004c8b565b511462019f215762019f128798999a62004c7b565b93919097999894929662019e8f565b9650509396505050843880808062019e95565b96938296995062019e95565b6000935b62019f50575050505090565b82518410156200519a576001600160a01b038062019f6f868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b62019fb5575b5050505015620173d15762019fae859462004c7b565b9362019f44565b9092989591939662019fc8865162004c8b565b51518a10156201a037578162019fdf8a8362004ce2565b511660005283835260028560002001546201a0008b62007497895162004c8b565b51146201a024576201a0158798999a62004c7b565b93919097999894929662019f92565b9650509396505050843880808062019f98565b96938296995062019f98565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a38a57836201a116835162004c8b565b5151106201a330576201a129906201e5d0565b94909415620173d1578392156201a23b5793926000905b6201a14f575050505050600090565b835181101562017900576001600160a01b03806201a16e838762004ce2565b5116600052611f4080875260409160ff8360002054166201a1a4575b505050936201a19b83949562004c7b565b9094936201a140565b6000929190865b6201a1b8575b506201a18a565b9092979193966201a1ca865162004c8b565b51518910156201a23057816201a1e1898362004ce2565b511660005283835260028560002001546201a2028a62007497895162004c8b565b51146201a224576201a21687989962004c7b565b93919097989492986201a1ab565b50505050505091505090565b96938298506201a1b1565b93926000905b6201a250575050505050600090565b835181101562017900576001600160a01b03806201a26f838762004ce2565b5116600052613ef880875260409160ff8360002054166201a2a5575b505050936201a29c83949562004c7b565b9094936201a241565b6000929190865b6201a2b9575b506201a28b565b9092979193966201a2cb865162004c8b565b51518910156201a32557816201a2e2898362004ce2565b511660005283835260028560002001546201a3038a62007497895162004c8b565b51146201a224576201a31787989962004c7b565b93919097989492986201a2ac565b96938298506201a2b2565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a68a57846201a406845162004c8b565b5151106201a630576201a419906201e547565b92909215620173d1578493156201a52d576000935b6201a43a575050505090565b82518410156200519a576001600160a01b03806201a459868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b6201a49f575b5050505015620173d1576201a498859462004c7b565b936201a42e565b909298959193966201a4b2865162004c8b565b51518a10156201a52157816201a4c98a8362004ce2565b511660005283835260028560002001546201a4ea8b62007497895162004c8b565b51146201a50e576201a4ff8798999a62004c7b565b9391909799989492966201a47c565b965050939650505084388080806201a482565b9693829699506201a482565b6000935b6201a53d575050505090565b82518410156200519a576001600160a01b03806201a55c868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b6201a5a2575b5050505015620173d1576201a59b859462004c7b565b936201a531565b909298959193966201a5b5865162004c8b565b51518a10156201a62457816201a5cc8a8362004ce2565b511660005283835260028560002001546201a5ed8b62007497895162004c8b565b51146201a611576201a6028798999a62004c7b565b9391909799989492966201a57f565b965050939650505084388080806201a585565b9693829699506201a585565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a96b57836201a703835162004c8b565b5151106201a911576201a716906201e547565b94909415620173d1578392156201a81c5793926000905b6201a73c575050505050600090565b835181101562017900576001600160a01b03806201a75b838762004ce2565b5116600052611f4080875260409160ff8360002054166201a791575b505050936201a78883949562004c7b565b9094936201a72d565b6000929190865b6201a7a5575b506201a777565b9092979193966201a7b7865162004c8b565b51518910156201a81157816201a7ce898362004ce2565b511660005283835260028560002001546201a7ef8a62007497895162004c8b565b51146201a224576201a80387989962004c7b565b93919097989492986201a798565b96938298506201a79e565b93926000905b6201a831575050505050600090565b835181101562017900576001600160a01b03806201a850838762004ce2565b5116600052613ef880875260409160ff8360002054166201a886575b505050936201a87d83949562004c7b565b9094936201a822565b6000929190865b6201a89a575b506201a86c565b9092979193966201a8ac865162004c8b565b51518910156201a90657816201a8c3898362004ce2565b511660005283835260028560002001546201a8e48a62007497895162004c8b565b51146201a224576201a8f887989962004c7b565b93919097989492986201a88d565b96938298506201a893565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201ab3457846201a9e7845162004c8b565b5151036201aada576201a9fa906201e547565b15620173d1578493156201aa71576000935b6201aa18575050505090565b80518410156200519a576001600160a01b036201aa36858362004ce2565b5116600052611f4582526040600020546201aa5662006865855162004c8b565b511015620173d1576201aa6a859462004c7b565b936201aa0c565b6000935b6201aa81575050505090565b80518410156200519a576001600160a01b036201aa9f858362004ce2565b5116600052613efd82526040600020546201aabf62006865855162004c8b565b511015620173d1576201aad3859462004c7b565b936201aa75565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201acfd57846201abb0845162004c8b565b5151036201aca3576201abc3906201e547565b15620173d1578493156201ac3a576000935b6201abe1575050505090565b80518410156200519a576001600160a01b036201abff858362004ce2565b5116600052611f4582526040600020546201ac1f62006865855162004c8b565b511115620173d1576201ac33859462004c7b565b936201abd5565b6000935b6201ac4a575050505090565b80518410156200519a576001600160a01b036201ac68858362004ce2565b5116600052613efd82526040600020546201ac8862006865855162004c8b565b511115620173d1576201ac9c859462004c7b565b936201ac3e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201af535760026201ad79835162004c8b565b5151036201aef9576201ad8c906201e547565b92909215620173d1578493156201ae4b576000935b6201adad575050505090565b82518410156200519a576001600160a01b03806201adcc868662004ce2565b5116600052611f4580835260409081600020546201adef62006865875162004c8b565b51119283156201ae15575b505050620173d1576201ae0e859462004c7b565b936201ada1565b909192506201ae25878762004ce2565b51166000528252600020546201ae4062016e27845162004c8b565b51103880806201adfa565b6000935b6201ae5b575050505090565b82518410156200519a576001600160a01b03806201ae7a868662004ce2565b5116600052613efd80835260409081600020546201ae9d62006865875162004c8b565b51119283156201aec3575b505050620173d1576201aebc859462004c7b565b936201ae4f565b909192506201aed3878762004ce2565b51166000528252600020546201aeee62016e27845162004c8b565b51103880806201aea8565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b11a57846201afcf845162004c8b565b5151036201b0c0576201afe2906201e547565b15620173d1578493156201b058576000935b6201b000575050505090565b80518410156200519a576001600160a01b036201b01e858362004ce2565b5116600052611f4582526040600020546201b03e62006865855162004c8b565b5103620173d1576201b051859462004c7b565b936201aff4565b6000935b6201b068575050505090565b80518410156200519a576001600160a01b036201b086858362004ce2565b5116600052613efd82526040600020546201b0a662006865855162004c8b565b5103620173d1576201b0b9859462004c7b565b936201b05c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b2fb57846201b196845162004c8b565b5151036201b2a1576201b1a9906201e547565b15620173d1578493156201b2345760009182945b6201b1ce575b505050505050600090565b81518510156201b22e5785946001600160a01b036201b1ee828562004ce2565b51168452611f45825260408420546201b20c62006865875162004c8b565b51106201b225576201b21e9062004c7b565b946201b1bd565b50505050505090565b6201b1c3565b60009182945b6201b24a57505050505050600090565b81518510156201b22e5785946001600160a01b036201b26a828562004ce2565b51168452613efd825260408420546201b28862006865875162004c8b565b51106201b225576201b29a9062004c7b565b946201b23a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b4cc57846201b377845162004c8b565b5151036201b472576201b38a906201e547565b15620173d1578493156201b4055760009182945b6201b3ae57505050505050600090565b81518510156201b22e5785946001600160a01b036201b3ce828562004ce2565b51168452611f45825260408420546201b3ec62006865875162004c8b565b51116201b225576201b3fe9062004c7b565b946201b39e565b60009182945b6201b41b57505050505050600090565b81518510156201b22e5785946001600160a01b036201b43b828562004ce2565b51168452613efd825260408420546201b45962006865875162004c8b565b51116201b225576201b46b9062004c7b565b946201b40b565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201b72c5760026201b548835162004c8b565b5151036201b6d2576201b55b906201e547565b91909115620173d1578493156201b61f576000935b6201b57f575050505050600090565b8151841015620179005784936001600160a01b03806201b5a0838662004ce2565b5116600052611f4580865260409081600020546201b5c362006865875162004c8b565b51111592836201b5e8575b505050620178f8576201b5e19062004c7b565b936201b570565b909192506201b5f8848762004ce2565b51166000528552600020546201b61362016e27845162004c8b565b5110153880806201b5ce565b6000935b6201b632575050505050600090565b8151841015620179005784936001600160a01b03806201b653838662004ce2565b5116600052613efd80865260409081600020546201b67662006865875162004c8b565b51111592836201b69b575b505050620178f8576201b6949062004c7b565b936201b623565b909192506201b6ab848762004ce2565b51166000528552600020546201b6c662016e27845162004c8b565b5110153880806201b681565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201b90357836201b7a5845162004c8b565b5151036201b8a957156201b82e576201b7be906201e547565b156200661f57829160009182945b6201b7d957505050905090565b80518510156201708c576201b8036001600160a01b036201b7fb878462004ce2565b51166201b9ba565b6201b81362006865845162004c8b565b51101562017084576201b827849562004c7b565b946201b7cc565b6201b839906201e547565b156200661f57829160009182945b6201b85457505050905090565b80518510156201708c576201b87e6001600160a01b036201b876878462004ce2565b51166201b95d565b6201b88e62006865845162004c8b565b51101562017084576201b8a2849562004c7b565b946201b847565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201b97257505090565b9091620082566201b9b3916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b9062006258565b906201b963565b60009081905b6103e882106201b9cf57505090565b9091620082566201ba07916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201b9c0565b600091906201ba69576000905b6103e882106201ba2a57505090565b9091620082566201ba62916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201ba1b565b81905b6103e882106201ba7b57505090565b9091620082566201bab5916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b906201ba6c565b916020019060019283835151036201bc2957836201badb845162004c8b565b5151036201bbcf57156201bb5c576201baf4906201e547565b156200661f57829160009182945b6201bb0f57505050905090565b80518510156201708c576201bb316001600160a01b036201b7fb878462004ce2565b6201bb4162006865845162004c8b565b51111562017084576201bb55849562004c7b565b946201bb02565b6201bb67906201e547565b156200661f57829160009182945b6201bb8257505050905090565b80518510156201708c576201bba46001600160a01b036201b876878462004ce2565b6201bbb462006865845162004c8b565b51111562017084576201bbc8849562004c7b565b946201bb75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201be615760026201bca3845162004c8b565b5151036201be0757156201bd5c576201bcbc906201e547565b919091156200661f57829160009182945b6201bcda57505050905090565b81518510156201708c576001600160a01b036201bcfd816201b7fb888662004ce2565b6201bd0d62006865845162004c8b565b51119081156201bd31575b5062017084576201bd2a849562004c7b565b946201bccd565b6201bd4391506201b7fb878562004ce2565b6201bd5362016e27835162004c8b565b5110386201bd18565b6201bd67906201e547565b919091156200661f57829160009182945b6201bd8557505050905090565b81518510156201708c576001600160a01b036201bda8816201b876888662004ce2565b6201bdb862006865845162004c8b565b51119081156201bddc575b5062017084576201bdd5849562004c7b565b946201bd78565b6201bdee91506201b876878562004ce2565b6201bdfe62016e27835162004c8b565b5110386201bdc3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c02657836201beda845162004c8b565b5151036201bfcc57156201bf5a576201bef3906201e547565b156200661f57829160009182945b6201bf0e57505050905090565b80518510156201708c576201bf306001600160a01b036201b7fb878462004ce2565b6201bf4062006865845162004c8b565b510362017084576201bf53849562004c7b565b946201bf01565b6201bf65906201e547565b156200661f57829160009182945b6201bf8057505050905090565b80518510156201708c576201bfa26001600160a01b036201b876878462004ce2565b6201bfb262006865845162004c8b565b510362017084576201bfc5849562004c7b565b946201bf73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c1ef57836201c09f845162004c8b565b5151036201c19557156201c121576201c0b8906201e547565b919091156200661f57600091835b6201c0d45750505050600090565b8051831015620175c75783926201c0f86001600160a01b036201b7fb838562004ce2565b6201c10862006865855162004c8b565b511062005160576201c11a9062004c7b565b926201c0c6565b6201c12c906201e547565b919091156200661f57600091835b6201c1485750505050600090565b8051831015620175c75783926201c16c6001600160a01b036201b876838562004ce2565b6201c17c62006865855162004c8b565b511062005160576201c18e9062004c7b565b926201c13a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c3b857836201c268845162004c8b565b5151036201c35e57156201c2ea576201c281906201e547565b919091156200661f57600091835b6201c29d5750505050600090565b8051831015620175c75783926201c2c16001600160a01b036201b7fb838562004ce2565b6201c2d162006865855162004c8b565b511162005160576201c2e39062004c7b565b926201c28f565b6201c2f5906201e547565b919091156200661f57600091835b6201c3115750505050600090565b8051831015620175c75783926201c3356001600160a01b036201b876838562004ce2565b6201c34562006865855162004c8b565b511162005160576201c3579062004c7b565b926201c303565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c5ea5760026201c432845162004c8b565b5151036201c59057156201c4e8576201c44b906201e547565b156200661f57600091835b6201c4645750505050600090565b8151831015620175c75783926001600160a01b036201c489816201b7fb848762004ce2565b6201c49962006865855162004c8b565b51111590816201c4bc575b5062005160576201c4b59062004c7b565b926201c456565b6201c4ce91506201b7fb838662004ce2565b6201c4de62016e27845162004c8b565b511015386201c4a4565b6201c4f3906201e547565b156200661f57600091835b6201c50c5750505050600090565b8151831015620175c75783926001600160a01b036201c531816201b876848762004ce2565b6201c54162006865855162004c8b565b51111590816201c564575b5062005160576201c55d9062004c7b565b926201c4fe565b6201c57691506201b876838662004ce2565b6201c58662016e27845162004c8b565b511015386201c54c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c7c157836201c663845162004c8b565b5151036201c76757156201c6ec576201c67c906201e547565b156200661f57829160009182945b6201c69757505050905090565b80518510156201708c576201c6c16001600160a01b036201c6b9878462004ce2565b51166201c871565b6201c6d162006865845162004c8b565b51101562017084576201c6e5849562004c7b565b946201c68a565b6201c6f7906201e547565b156200661f57829160009182945b6201c71257505050905090565b80518510156201708c576201c73c6001600160a01b036201c734878462004ce2565b51166201c81b565b6201c74c62006865845162004c8b565b51101562017084576201c760849562004c7b565b946201c705565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201c83057505090565b9091620082566201c86a916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c821565b60009081905b6103e882106201c88657505090565b9091620082566201c8be916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c877565b600091906201c920576000905b6103e882106201c8e157505090565b9091620082566201c919916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c8d2565b81905b6103e882106201c93257505090565b9091620082566201c96c916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c923565b916020019060019283835151036201cae057836201c992845162004c8b565b5151036201ca8657156201ca13576201c9ab906201e547565b156200661f57829160009182945b6201c9c657505050905090565b80518510156201708c576201c9e86001600160a01b036201c6b9878462004ce2565b6201c9f862006865845162004c8b565b51111562017084576201ca0c849562004c7b565b946201c9b9565b6201ca1e906201e547565b156200661f57829160009182945b6201ca3957505050905090565b80518510156201708c576201ca5b6001600160a01b036201c734878462004ce2565b6201ca6b62006865845162004c8b565b51111562017084576201ca7f849562004c7b565b946201ca2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cd185760026201cb5a845162004c8b565b5151036201ccbe57156201cc13576201cb73906201e547565b919091156200661f57829160009182945b6201cb9157505050905090565b81518510156201708c576001600160a01b036201cbb4816201c6b9888662004ce2565b6201cbc462006865845162004c8b565b51119081156201cbe8575b5062017084576201cbe1849562004c7b565b946201cb84565b6201cbfa91506201c6b9878562004ce2565b6201cc0a62016e27835162004c8b565b5110386201cbcf565b6201cc1e906201e547565b919091156200661f57829160009182945b6201cc3c57505050905090565b81518510156201708c576001600160a01b036201cc5f816201c734888662004ce2565b6201cc6f62006865845162004c8b565b51119081156201cc93575b5062017084576201cc8c849562004c7b565b946201cc2f565b6201cca591506201c734878562004ce2565b6201ccb562016e27835162004c8b565b5110386201cc7a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cee157836201cd91845162004c8b565b5151036201ce8757156201ce13576201cdaa906201e547565b919091156200661f57600091835b6201cdc65750505050600090565b8051831015620175c75783926201cdea6001600160a01b036201c6b9838562004ce2565b6201cdfa62006865855162004c8b565b511062005160576201ce0c9062004c7b565b926201cdb8565b6201ce1e906201e547565b919091156200661f57600091835b6201ce3a5750505050600090565b8051831015620175c75783926201ce5e6001600160a01b036201c734838562004ce2565b6201ce6e62006865855162004c8b565b511062005160576201ce809062004c7b565b926201ce2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9160200190600192836201cf50845162004c8b565b5151036201d0aa5783835151036201d05057156201cfdc576201cf73906201e547565b919091156200661f57600091835b6201cf8f5750505050600090565b8051831015620175c75783926201cfb36001600160a01b036201c6b9838562004ce2565b6201cfc362006865855162004c8b565b511162005160576201cfd59062004c7b565b926201cf81565b6201cfe7906201e547565b919091156200661f57600091835b6201d0035750505050600090565b8051831015620175c75783926201d0276001600160a01b036201c734838562004ce2565b6201d03762006865855162004c8b565b511162005160576201d0499062004c7b565b926201cff5565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b916020019060026201d117835162004c8b565b5151036201d2dc5760019283835151036201d28257156201d1da576201d13d906201e547565b156200661f57600091835b6201d1565750505050600090565b8151831015620175c75783926001600160a01b036201d17b816201c6b9848762004ce2565b6201d18b62006865855162004c8b565b51111590816201d1ae575b5062005160576201d1a79062004c7b565b926201d148565b6201d1c091506201c6b9838662004ce2565b6201d1d062016e27845162004c8b565b511015386201d196565b6201d1e5906201e547565b156200661f57600091835b6201d1fe5750505050600090565b8151831015620175c75783926001600160a01b036201d223816201c734848762004ce2565b6201d23362006865855162004c8b565b51111590816201d256575b5062005160576201d24f9062004c7b565b926201d1f0565b6201d26891506201c734838662004ce2565b6201d27862016e27845162004c8b565b511015386201d23e565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060019384835151036201d4fd5760026201d359845162004c8b565b5151036201d4a357156201d404576201d372906201e547565b92909215620171bd57600092845b6201d38c575050505090565b80518410156200519a576201d3a662006865845162004c8b565b516103e881101562004c99576001600160a01b036201d3c6868462004ce2565b5116600052600390811b0182526040600020546201d3e962016e27855162004c8b565b511015620173d1576201d3fd859462004c7b565b936201d380565b6201d40f906201e547565b92909215620171bd57600092845b6201d429575050505090565b80518410156200519a576201d44362006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d467878562004ce2565b511660005260031b0182526040600020546201d48862016e27855162004c8b565b511015620173d1576201d49c859462004c7b565b936201d41d565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208092019060019384835151036201d71e5760026201d57a845162004c8b565b5151036201d6c457156201d625576201d593906201e547565b92909215620171bd57600092845b6201d5ad575050505090565b80518410156200519a576201d5c762006865845162004c8b565b516103e881101562004c99576001600160a01b036201d5e7868462004ce2565b5116600052600390811b0182526040600020546201d60a62016e27855162004c8b565b511115620173d1576201d61e859462004c7b565b936201d5a1565b6201d630906201e547565b92909215620171bd57600092845b6201d64a575050505090565b80518410156200519a576201d66462006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d688878562004ce2565b511660005260031b0182526040600020546201d6a962016e27855162004c8b565b511115620173d1576201d6bd859462004c7b565b936201d63e565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101600392836201d78e835162004c8b565b5151036201da1c5760019485835151036201d9c257156201d8b9576201d7b4906201e547565b93909315620173d157600093855b6201d7cf57505050505090565b80518510156201d8b3576201d7e962006865845162004c8b565b516103e8908181101562004c99576001600160a01b03908490826201d80f8a8762004ce2565b5116600052811b01865260409081600020546201d83162016e27885162004c8b565b51119283156201d857575b5050506201b1c3576201d850869562004c7b565b946201d7c2565b909192506201d86b62006865875162004c8b565b519081101562004c995784916201d883898662004ce2565b5116600052811b018552600020546201d8a86201d8a1855162004c8b565b5162004cc0565b51103880806201d83c565b620178f8565b6201d8c7909392936201e547565b93909315620173d157600093855b6201d8e257505050505090565b80518510156201d8b3576201d8fc62006865845162004c8b565b516103e88082101562004c99576001600160a01b0391826201d91f898662004ce2565b5116600052611fbb8091881b01855260409182600020546201d94662016e27895162004c8b565b51119384156201d96d575b505050506201b1c3576201d966869562004c7b565b946201d8d5565b90919293506201d98262006865885162004c8b565b519182101562004c99576201d998898662004ce2565b5116600052861b018352600020546201d9b66201d8a1855162004c8b565b5110388080806201d951565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201da91835162004c8b565b5151036201dc4a5760019384835151036201dbf057156201db4d576201dab7906201e547565b92909215620171bd57600092845b6201dad4575050505050600090565b805184101562017900576201daee62006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201db11838562004ce2565b5116600052600390811b0183526040600020546201db3462016e27865162004c8b565b5110620178f8576201db469062004c7b565b936201dac5565b6201db58906201e547565b92909215620171bd57600092845b6201db75575050505050600090565b805184101562017900576201db8f62006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dbb6848662004ce2565b511660005260031b0183526040600020546201dbd762016e27865162004c8b565b5110620178f8576201dbe99062004c7b565b936201db66565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060026201dcba835162004c8b565b5151036201de735760019384835151036201de1957156201dd76576201dce0906201e547565b92909215620171bd57600092845b6201dcfd575050505050600090565b805184101562017900576201dd1762006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201dd3a838562004ce2565b5116600052600390811b0183526040600020546201dd5d62016e27865162004c8b565b5111620178f8576201dd6f9062004c7b565b936201dcee565b6201dd81906201e547565b92909215620171bd57600092845b6201dd9e575050505050600090565b805184101562017900576201ddb862006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dddf848662004ce2565b511660005260031b0183526040600020546201de0062016e27865162004c8b565b5111620178f8576201de129062004c7b565b936201dd8f565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b916020809101600392836201dee3835162004c8b565b5151036201e1755760019485835151036201e11b57156201e009576201df09906201e547565b93909315620173d157600093855b6201df2757505050505050600090565b80518510156201b22e576201df4162006865845162004c8b565b51946103e8958681101562004c995787966001600160a01b03918590836201df6a868862004ce2565b5116600052811b018752604080600020546201df8b62016e27895162004c8b565b51111592836201dfb0575b5050506201b225576201dfa99062004c7b565b946201df17565b91985091506201dfc562006865875162004c8b565b519788101562004c9957889785916201dfdf858762004ce2565b5116600052811b018652600020546201dffd6201d8a1865162004c8b565b5110153880806201df96565b6201e017909392936201e547565b93909315620173d157600093855b6201e03557505050505050600090565b80518510156201b22e576201e04f62006865845162004c8b565b51946103e88087101562004c995787966001600160a01b0390816201e075858762004ce2565b5116600052611fbb8091891b01865260409081600020546201e09c62016e278a5162004c8b565b51111593846201e0c2575b505050506201b225576201e0bb9062004c7b565b946201e025565b9193509198506201e0d862006865885162004c8b565b519081101562004c995789986201e0f0858762004ce2565b5116600052871b018452600020546201e10e6201d8a1865162004c8b565b511015388080806201e0a7565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201e1df816201e364565b156201e35b576040810190606082510151511515806201e320575b156201e20c5750516060015151600191565b604082510151511515806201e307575b156201e22e5750516040015151600191565b60808251015151151590816201e2ed575b50156201e25157516080015151600191565b805160c081015151156201e29857506201e27060c08251015162004c8b565b51516201e28157505b600090600090565b60c06201e2919151015162004c8b565b5151600191565b602081015151156201e2b05750516020015151600191565b60a0015180516201e2c4575b50506201e279565b6201e2cf9062004c8b565b51516201e2dd57806201e2bc565b60a06201e2919151015162004c8b565b6020915001516026811015620029ab57601014386201e23f565b5060208101516026811015620029ab576013146201e21c565b506020810180516026811015620029ab57600c149081156201e344575b506201e1fa565b9050516026811015620029ab57600f14386201e33d565b50600090600090565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146201e54257805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760051462017188578051838110156201e52d5760061462017188578051838110156201e52d5760071462017188578051838110156201e52d5760081462017188578051838110156201e52d5760091462017188578051838110156201e52d57600a1462017188578051838110156201e52d57600b1462017188578051838110156201e52d57600c1462017188578051838110156201e52d57600d1462017188578051838110156201e52d57600e1462017188578051838110156201e52d57600f1462017188578051838110156201e52d5760101462017188578051838110156201e52d5760111462017188578051838110156201e52d5760121462017188578051838110156201e52d5760131462017188578051838110156201e52d5760141462017188578051838110156201e52d57601514620171885751918210156201e5185750601e14620032615750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201e552816201e364565b156201e5c15760208101516026811015620029ab576004146201e5ae576040015160c0015180516201e59c57506040516201e58d8162002ac7565b60008152600036813790600090565b6201e5a79062004c8b565b5190600190565b60c060406201e5a7920151015162004caf565b506040516201e58d8162002ac7565b60208101516026811015620029ab576004146201e5f657506040516201e58d8162002ac7565b60c060406201e5a7920151015162004c8b565b6201e614816201e759565b156201e74957602081019081519160269081841015620029ab5760018094146201e72e57805182811015620029ab576003146201e72e5780519082821015620029ab5760048092146201e712578051838110156201e52d576005146201e712578051838110156201e52d576006146201e712578051838110156201e52d576014146201e712578051838110156201e52d576015146201e7125751918210156201e5185750601e146201e6f4575050604051906201e6d18262002ac7565b60008252604051916201e6e48362002ac7565b6000835260003681379190600090565b604001916201e70d60a0620077f3818651015162004c8b565b519190565b505050604001916201e70d60a0620077f3818651015162004c8b565b5050604001916201e70d60a0620077f3818651015162004c8b565b50604051906201e6d18262002ac7565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146200661f57805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760141462017188578051838110156201e52d5760151462017188578051838110156201e52d57601e1462017188578051838110156201e52d57600514620171885751918210156201e5185750600614620032615750600090565b916101f581146201e8c0576101f681146201e8b4576101f781146201e8a8576101f881146201e89c576101f981146201e890576101fa81146201e884576101fb81146201e878576101fc146201e86d575050600090565b62003261916201f311565b5062003261916201f16c565b5062003261916201f007565b5062003261916201eea2565b5062003261916201ed3d565b5062003261916201eb98565b5062003261916201ea33565b506200326191906020019060019182815151036201e9d957826201e8e5825162004c8b565b5151036201e97f5760208201516026811015620029ab576002036200661f57600091835b6201e9175750505050600090565b604081019260a0936201e92e858251015162004cc0565b51518210156201e97757816200749787966201e94d9351015162004cc0565b516201e95e62006865855162004c8b565b511062005160576201e9709062004c7b565b926201e909565b5050620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201eb3e57826201ea52825162004c8b565b5151036201eae45760208201516026811015620029ab576002036200661f57600091835b6201ea845750505050600090565b604081019260a0936201ea9b858251015162004cc0565b51518210156201e97757816200749787966201eaba9351015162004cc0565b516201eacb62006865855162004c8b565b511162005160576201eadd9062004c7b565b926201ea76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ece35760026201ebb8825162004c8b565b5151036201ec895760208201516026811015620029ab576002036200661f57600091835b6201ebea5750505050600090565b604081019260a0936201ec01858251015162004cc0565b51518210156201e9775781856201ec2282620074978a998651015162004cc0565b516201ec3362006865885162004c8b565b51111592836201ec58575b50505062005160576201ec519062004c7b565b926201ebdc565b5101516201ec6c9250620074979062004cc0565b516201ec7d62016e27855162004c8b565b5110158138806201ec3e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ee4857826201ed5c825162004c8b565b5151036201edee5760208201516026811015620029ab576002036200661f57600091835b6201ed8e5750505050600090565b604081019260a0936201eda5858251015162004cc0565b51518210156201e97757816200749787966201edc49351015162004cc0565b516201edd562006865855162004c8b565b511462005160576201ede79062004c7b565b926201ed80565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201efad57826201eec1825162004c8b565b5151036201ef535760208201516026811015620029ab576002036200661f57600091835b6201eef35750505050600090565b604081019260a0936201ef0a858251015162004cd1565b51518210156201e97757816200749787966201ef299351015162004caf565b516201ef3a62006865855162004c8b565b511062005160576201ef4c9062004c7b565b926201eee5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f11257826201f026825162004c8b565b5151036201f0b85760208201516026811015620029ab576002036200661f57600091835b6201f0585750505050600090565b604081019260a0936201f06f858251015162004cd1565b51518210156201e97757816200749787966201f08e9351015162004caf565b516201f09f62006865855162004c8b565b511162005160576201f0b19062004c7b565b926201f04a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f2b75760026201f18c825162004c8b565b5151036201f25d5760208201516026811015620029ab576002036200661f57600091835b6201f1be5750505050600090565b604081019260a0936201f1d5858251015162004cd1565b51518210156201e9775781856201f1f682620074978a998651015162004caf565b516201f20762006865885162004c8b565b51111592836201f22c575b50505062005160576201f2259062004c7b565b926201f1b0565b5101516201f2409250620074979062004caf565b516201f25162016e27855162004c8b565b5110158138806201f212565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f41c57826201f330825162004c8b565b5151036201f3c25760208201516026811015620029ab576002036200661f57600091835b6201f3625750505050600090565b604081019260a0936201f379858251015162004cd1565b51518210156201e97757816200749787966201f3989351015162004caf565b516201f3a962006865855162004c8b565b511462005160576201f3bb9062004c7b565b926201f354565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91603381036201f560575060209150016001815151036201f5105760016201f49f825162004c8b565b5151036201f4bd57620068656201f4b7915162004c8b565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201f649575060209150016001815151036201f5f95760016201f588825162004c8b565b5151036201f5a657620068656201f5a0915162004c8b565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201f75b575060209150016001815151036201f70b5760026201f671825162004c8b565b5151036201f6b1576201f68962006865825162004c8b565b5142101590816201f698575090565b6201f6aa915062016e27905162004c8b565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201f85f575060209150016001815151036201f8055760016201f783825162004c8b565b5151036201f7ab5762016c03620068656201f79e4262006274565b5050505050925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603781036201f956575060209150016001815151036201f8fc5760016201f887825162004c8b565b5151036201f8a25762016d04620068656201f79e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603881036201fa5a575060209150016001815151036201fa005760026201f97e825162004c8b565b5151036201f9a6576201f9914262006274565b505050505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603981036201fb5f575060209150016001815151036201fb055760016201fa82825162004c8b565b5151036201faab5762016c03620068656201fa9d4262006274565b505050509390505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603a81036201fc56575060209150016001815151036201fbfc5760016201fb87825162004c8b565b5151036201fba25762016d04620068656201fa9d4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603b81036201fd5b575060209150016001815151036201fd015760026201fc7e825162004c8b565b5151036201fca7576201fc914262006274565b50505050905062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603c81036201fe60575060209150016001815151036201fe065760016201fd83825162004c8b565b5151036201fdac5762016c03620068656201fd9e4262006274565b505050949150505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603d81036201ff57575060209150016001815151036201fefd5760016201fe88825162004c8b565b5151036201fea35762016d04620068656201fd9e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603e81036202005c57506020915001600181515103620200025760026201ff7f825162004c8b565b5151036201ffa8576201ff924262006274565b50505091505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603f810362020161575060209150016001815151036202010757600162020084825162004c8b565b515103620200ad5762016c03620068656202009f4262006274565b505095925050505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040928184036202025757505060200190600182515103620201ff5760016202018b835162004c8b565b515103620201a7575062016d04620068656202009f4262006274565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604182036202035957505060200190600182515103620203015760026202027f835162004c8b565b515103620202a95750620202934262006274565b50509250505062016e0462006865835162004c8b565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b909260428403620203715750620032619250620215e3565b60438403620203875750620032619250620217ed565b60448481036202039f575050620032619250620219ef565b60458503620203b657505062003261925062021c6c565b60468503620203cd57505062003261925062021e6e565b60478503620203e457505062003261925062022070565b60488503620203fb57505062003261925062022353565b604985036202041257505062003261925062022660565b604a8503620204295750506200326192506202293e565b604b85036202044057505062003261925062022d06565b604c85036202045757505062003261925062022eb1565b604d85036202046e57505062003261925062022fb5565b604e8503620204855750506200326192506202310d565b604f85036202049c5750506200326192506202328e565b60508503620204b357505062003261925062023392565b919092936055811460001462020675575060208401926002845151036202061d5760019283620204e4865162004caf565b515103620205c6575090829160009586945b62020511575b50505050506200686562016c03915162004caf565b9091929395620205248383015162004c8b565b5151871015620205bf576202057b908415620205865762009b8d906202055f6103e8620205578b620074978c5162004c8b565b51106202352c565b6201b9ac620205748a620074978b5162004c8b565b51620060c4565b9392919083620204f6565b62009b8d90620205a36103e8620205578b620074978c5162004c8b565b6201b9ac620205b88a620074978b5162004c8b565b516200614a565b95620204fc565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b60568103620207f857506020840192600284515103620207a057600192836202069f865162004caf565b51510362020749575090829160009586945b620206cc575b50505050506200686562016d04915162004caf565b9091929395620206df8383015162004c8b565b515187101562020742576202071a908415620207255762009b8d906202055f6103e8620207128b620074978c5162004c8b565b51106202359e565b9392919083620206b1565b62009b8d90620205a36103e8620207128b620074978c5162004c8b565b95620206b7565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9194909160578103620209be575060208401946002865151036202096557600262020824875162004caf565b5151036202090d5750600092835b620208408287015162004c8b565b5151851015620208d35790620208988562020840938987600014620208a2576103e86202087b6200995a946200749762020883945162004c8b565b511062023610565b6201b9ac6202057489620074978d5162004c8b565b9490915062020832565b6103e86202087b6200995a9462007497620208be945162004c8b565b6201b9ac620205b889620074978d5162004c8b565b93505093925050620208ea62006865835162004caf565b518110159182620208fa57505090565b62016e2e91925062016e27905162004caf565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b909491906058810362020b755750602084019260028451510362020b1d5760019283620209ec865162004caf565b51510362020ac6575090829160009586945b62020a185750505050506200686562016c03915162004caf565b909192939562020a2b8383015162004c8b565b5151871015620205bf5762020a8290841562020a8d5762009b8d9062020a666103e862020a5e8b620074978c5162004c8b565b511062023682565b6201b9ac62020a7b8a620074978b5162004c8b565b5162005deb565b9392919083620209fe565b62009b8d9062020aaa6103e862020a5e8b620074978c5162004c8b565b6201b9ac62020abf8a620074978b5162004c8b565b5162005eb4565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b6059810362020cf05750602084019260028451510362020c98576001928362020b9f865162004caf565b51510362020c41575090829160009586945b62020bcb5750505050506200686562016d04915162004caf565b909192939562020bde8383015162004c8b565b5151871015620207425762020c1990841562020c245762009b8d9062020a666103e862020c118b620074978c5162004c8b565b5110620236f4565b939291908362020bb1565b62009b8d9062020aaa6103e862020c118b620074978c5162004c8b565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a810362020e7c5750602084019460028651510362020e2357600262020d1c875162004caf565b51510362020dcb5750600092835b62020d388287015162004c8b565b5151851015620208d3579062020d908562020d3893898760001462020d9a576103e862020d736200995a946200749762020d7b945162004c8b565b511062023766565b6201b9ac62020a7b89620074978d5162004c8b565b9490915062020d2a565b6103e862020d736200995a946200749762020db6945162004c8b565b6201b9ac62020abf89620074978d5162004c8b565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b8103620210555750602084019260028451510362020ffd576001928362020eaa865162004caf565b51510362020fa6575090829160009586945b62020ed65750505050506200686562016c03915162004caf565b909192939562020ee98383015162004c8b565b5151871015620205bf57831562020f59576103e862020f1b8162020f138a620074978b5162004c8b565b5110620237d8565b62020f2c8862007497895162004c8b565b519081101562004c995762020f4e91600662009b8d9260031b01549062006258565b939291908362020ebc565b6103e862020f728162020f138a620074978b5162004c8b565b62020f838862007497895162004c8b565b519081101562004c995762020f4e91611fbe62009b8d9260031b01549062006258565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036202122a57506020840192600284515103620211d257600192836202107f865162004caf565b5151036202117b575090829160009586945b620210ab5750505050506200686562016d04915162004caf565b9091929395620210be8383015162004c8b565b5151871015620207425783156202112e576103e8620210f081620210e88a620074978b5162004c8b565b51106202384a565b620211018862007497895162004c8b565b519081101562004c99576202112391600662009b8d9260031b01549062006258565b939291908362021091565b6103e86202114781620210e88a620074978b5162004c8b565b620211588862007497895162004c8b565b519081101562004c99576202112391611fbe62009b8d9260031b01549062006258565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d819692939496146000146202140357506020840192600284515103620213aa5760026202125a855162004caf565b515103620213525750600080955b620212768187015162004c8b565b51518710156202133b578315620212e9576103e891620212a983620212a18a620074978a5162004c8b565b5110620238bc565b620212ba8862007497885162004c8b565b519283101562004c995762015696620212e0916006620212769560031b01549062006258565b96915062021268565b6103e8916202130383620212a18a620074978a5162004c8b565b620213148862007497885162004c8b565b519283101562004c995762015696620212e091611fbe620212769560031b01549062006258565b50929350935050620208ea62006865835162004caf565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e03620171bd5760208401926002845151036202158b576001928362021430865162004caf565b51510362021534575090829160009586945b6202145d575b50505050506200686562016f32915162004caf565b9091929395620214708383015162004c8b565b51518710156202152d578315620214e0576103e8620214a2816202149a8a620074978b5162004c8b565b51106202392e565b620214b38862007497895162004c8b565b519081101562004c9957620214d591600662009b8d9260031b01549062006258565b939291908362021442565b6103e8620214f9816202149a8a620074978b5162004c8b565b6202150a8862007497895162004c8b565b519081101562004c9957620214d591611fbe62009b8d9260031b01549062006258565b9562021448565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9060408101906001825151036202179357600162021602835162004c8b565b515103620217395760200191600183515103620216df57600162021627845162004c8b565b5151036202168557156202166157620068656202165962016c03926201b7fb6200686560018060a01b03925162004c8b565b925162004c8b565b620068656202165962016c03926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906040810190600182515103620219955760016202180c835162004c8b565b5151036202193b5760200191600183515103620218e157600162021831845162004c8b565b5151036202188757156202186357620068656202165962016d04926201b7fb6200686560018060a01b03925162004c8b565b620068656202165962016d04926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604082019160018351510362021c1257600162021a0d845162004c8b565b51510362021bb8576020019060018251510362021b5e57600262021a32835162004c8b565b51510362021b04571562021aa85760018060a01b0362021a5c816201b7fb62006865865162004c8b565b62021a6c62006865845162004c8b565b511115928362021a7c5750505090565b62021a9c92935062016e27916201b7fb6200686562021659935162004c8b565b51101538808062017188565b60018060a01b0362021ac4816201b87662006865865162004c8b565b62021ad462006865845162004c8b565b511115928362021ae45750505090565b62021a9c92935062016e27916201b8766200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b90604081019060018251510362021e1457600162021c8b835162004c8b565b51510362021dba576020019160018351510362021d6057600162021cb0845162004c8b565b51510362021d06571562021ce257620068656202165962016c03926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016c03926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060408101906001825151036202201657600162021e8d835162004c8b565b51510362021fbc576020019160018351510362021f6257600162021eb2845162004c8b565b51510362021f08571562021ee457620068656202165962016d04926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016d04926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040820191600183515103620222875760016202208e845162004c8b565b5151036202222d5760200190600182515103620221d3576002620220b3835162004c8b565b5151036202217957156202211d5760018060a01b03620220dd816201c6b962006865865162004c8b565b620220ed62006865845162004c8b565b5111159283620220fd5750505090565b62021a9c92935062016e27916201c6b96200686562021659935162004c8b565b60018060a01b0362022139816201c73462006865865162004c8b565b6202214962006865845162004c8b565b5111159283620221595750505090565b62021a9c92935062016e27916201c7346200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620222e957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202259557600162022373845162004c8b565b5151036202253c5760200192600184515103620224e357600262022398855162004c8b565b5151036202248a57156202241b576103e890620223c782620223bf62006865875162004c8b565b5110620222e1565b620223d762006865855162004c8b565b519182101562004c9957600362016e279262016c0394620224046200686560018060a01b03925162004c8b565b5116600052811b0160205260002054925162004c8b565b6103e8906202243482620223bf62006865875162004c8b565b6202244462006865855162004c8b565b519182101562004c9957611fbb62016e279262016c0394620224726200686560018060a01b03925162004c8b565b511660005260031b0160205260002054925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620225f657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202287357600162022680845162004c8b565b5151036202281a5760200192600184515103620227c1576002620226a5855162004c8b565b51510362022768571562022711576103e890620226d482620226cc62006865875162004c8b565b5110620225ee565b620226e462006865855162004c8b565b519182101562004c9957600362016e279262016d0494620224046200686560018060a01b03925162004c8b565b6103e8906202272a82620226cc62006865875162004c8b565b6202273a62006865855162004c8b565b519182101562004c9957611fbb62016e279262016d0494620224726200686560018060a01b03925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620228d457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b9060408082019260018451510362022cad5760016202295e855162004c8b565b51510362022c545760208093019260018451510362022bfc576003918262022987865162004c8b565b51510362022b9e571562022a9a576103e891620229b683620229ae62006865885162004c8b565b5110620228cc565b620229c662006865865162004c8b565b51928084101562004c995760018060a01b038281620229ea620068658b5162004c8b565b5116956000968752811b0184528585205462022a0b62016e27895162004c8b565b511115978862022a21575b505050505050505090565b90919293949596975062022a3a62006865895162004c8b565b519283101562022a8657916201d8a195939162022a626200686562022a759997955162004c8b565b51168452811b0190522054925162004c8b565b511015388080808080808062022a16565b634e487b7160e01b86526032600452602486fd5b6103e862022ab281620229ae62006865885162004c8b565b62022ac262006865865162004c8b565b51908082101562004c995760018060a01b03938462022ae6620068658a5162004c8b565b5116946000958652611fbb8094831b0185528686205462022b0c62016e278a5162004c8b565b511115988962022b23575b50505050505050505090565b9091929394959697985062022b3d620068658a5162004c8b565b519384101562022b8a579162022b789795939162022b66620068656201d8a19997955162004c8b565b511685521b0190522054925162004c8b565b51101538808080808080808062022b17565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906020019060018251510362022db057600162022d24835162004c8b565b51510362022d56571562022d445762016c03620068656202165962022e73565b62016c03620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062022e1c575090565b908160031b60ff611fbf820154161562022e6d5762022e5a62022e679262022e52611fb962022e6094015462005edc8762005f9f565b92906200605b565b62006258565b9162004c7b565b62022e0e565b50905090565b6000805b6103e8811062022e85575090565b9060ff60078360031b01541615620061e45762022e6062022eab916201b9ac84620060c4565b62022e77565b906020019060018251510362022f5b57600162022ecf835162004c8b565b51510362022f01571562022eef5762016d04620068656202165962022e73565b62016d04620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620230b357600262022fd3835162004c8b565b5151036202305957156202301d5762022feb62022e73565b62022ffb62006865835162004c8b565b511115908162023009575090565b905062016e2e62016e276202165962022e73565b6202302762022e0a565b6202303762006865835162004c8b565b511115908162023045575090565b905062016e2e62016e276202165962022e0a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620231b75760016202312b835162004c8b565b5151036202315d57156202314b5762016c03620068656202165962023250565b62016c03620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062023223575090565b9060ff611fbf8360031b01541615620061e45762022e606202324a916201b9ac8462005eb4565b62023215565b6000805b6103e8811062023262575090565b9060ff60078360031b01541615620061e45762022e6062023288916201b9ac8462005deb565b62023254565b906020019060018251510362023338576001620232ac835162004c8b565b515103620232de5715620232cc5762016d04620068656202165962023250565b62016d04620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620234d2576002620233b0835162004c8b565b515103620234785715620233fa57620233c862023250565b620233d862006865835162004c8b565b5111159081620233e6575090565b905062016e2e62016e276202165962023250565b6202340462023211565b6202341462006865835162004c8b565b511115908162023422575090565b60009150815b6103e8811062023444575b5062016e2762016e2e915162004c8b565b9160ff611fbf8460031b015416156202347157620082566202346b916201b9ac8562005eb4565b62023428565b9162023433565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b156202353457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620235a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202361857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202368a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620236fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202376e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620237e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202385257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620238c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202393657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462023a08576101928114620239fc576101938114620239f0576101968114620239e45761019714620239d9575050600090565b620032619162023f3e565b50620032619162023e59565b50620032619162023cb4565b50620032619162023b73565b5062003261919060200190600191828151510362023b19578262023a2d825162004c8b565b51510362023abf5760208201516026811015620029ab57600a036200661f57600091835b62023a5f5750505050600090565b604081019260a09362023a76858251015162004c8b565b51518210156201e977578162007497879662023a959351015162004c8b565b5162023aa662006865855162004c8b565b5114620051605762023ab89062004c7b565b9262023a51565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023c5a5760208201516026811015620029ab57600a036200661f5782916000935b62023bb05750505050600090565b6040810160a062023bc5818351015162004c8b565b51518610156201e97757906000855b62023bf0575b50505062023be9839462004c7b565b9362023ba2565b62023bfc855162004c8b565b515181101562023c545762023c1a8762007497858551015162004c8b565b5162023c2c8262007497885162004c8b565b511462023c4a579062023c4186939262004c7b565b90919262023bd4565b5050505050905090565b62023bda565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023dff57600262023cd4825162004c8b565b51510362023da55760208201516026811015620029ab57600a036200661f57600091835b62023d065750505050600090565b604081019260a09362023d1d858251015162004c8b565b51518210156201e97757818562023d3e82620074978a998651015162004c8b565b5162023d4f62006865885162004c8b565b511115928362023d74575b505050620051605762023d6d9062004c7b565b9262023cf8565b51015162023d889250620074979062004c8b565b5162023d9962016e27855162004c8b565b51101581388062023d5a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600191828151510362023ee55760208201516026811015620029ab57600b036200661f57600091835b62023e905750505050600090565b60408101515192835181101562023ede5762023ec762023eb282879662004ce2565b5162023ebf855162004c8b565b519062033cdb565b620051605762023ed79062004c7b565b9262023e82565b50620171bd565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362023fc35760208201516026811015620029ab57600b036200661f57600091835b62023f755750505050600090565b60408101515192835181101562023ede5762023fac62023f9782879662004ce2565b5162023fa4855162004c8b565b519062006570565b620051605762023fbc9062004c7b565b9262023f67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9160978114620240405760981462024035575050600090565b620032619162024151565b5060200180515162003261929060001901620240f857600162024064835162004c8b565b5151036202409e57602001516026811015620029ab5762006865620216596202408d9262033aa2565b51146202409957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b91909160208093016001918282515103620241d857938293946000935b6202417d575050505050600090565b62024189835162004c8b565b5151841015620179005781810151936026851015620029ab57620241ae869562033aa2565b620241bf8262007497875162004c8b565b5114620178f857620241d19062004c7b565b936202416e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462024334576102be811462024328576102bf81146202431c576102c0811462024310576102c1811462024304576102c28114620242f8576102c38114620242ec576102c48114620242e0576102c58114620242d4576102c68114620242c8576102c78114620242bc576102c814620242b157505050600090565b620032619262025559565b5062003261926202535e565b50620032619262025159565b50620032619262024ee9565b50620032619262024ce4565b50620032619262024ad5565b506200326192620249b6565b5062003261926202488f565b50620032619262024768565b5062003261926202460e565b506200326192620244ba565b50620032619262024351565b606482101562004c99570190600090565b916020809101926001845151036202446057600162024371855162004c8b565b515103620244065715620243cd5762021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b9062024340565b90549060031b1c4262006266565b62021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052613f01815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602080910192600184515103620245b4576001620244da855162004c8b565b5151036202455a5715620245215762021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b62021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101926001845151036202470e5760026202462e855162004c8b565b515103620246b45715620246805781516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b62016e0462006865835162004c8b565b81516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202483557600162024786845162004c8b565b515103620247db5715620247c957620076f96020620247a69201620073df565b606481101562004c9957620068656202165962016c0392611f4b01544262006266565b620076f96020620247a69201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202495c576001620248ad845162004c8b565b515103620249025715620248f057620076f96020620248cd9201620073df565b606481101562004c9957620068656202165962016d0492611f4b01544262006266565b620076f96020620248cd9201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019160018351510362024a7b576002620249d4845162004c8b565b51510362024a21571562024a0f57620076f96020620249f49201620073df565b606481101562004c99576202467090611f4b01544262006266565b620076f96020620249f49201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024c8b578462024af8835162004c8b565b51510362024c32579584959660001462024ba4576000945b62024b2057505050505050600090565b62024b2c825162004c8b565b51518510156201b22e57859460018060a01b0362024b508262007497865162004c8b565b51166000526020611f49815262024b8b6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b9288015162004c8b565b51106201b2255762024b9d9062004c7b565b9462024b10565b6000945b62024bb857505050505050600090565b62024bc4825162004c8b565b51518510156201b22e57859460018060a01b0362024be88262007497865162004c8b565b51166000526020611f49815262024c196200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51106201b2255762024c2b9062004c7b565b9462024ba8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024e90578462024d07835162004c8b565b51510362024e37579584959660001462024da9576000945b62024d2f57505050505050600090565b62024d3b825162004c8b565b51518510156201b22e57859460018060a01b0362024d5f8262007497865162004c8b565b51166000526020611f49815262024d906200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024da29062004c7b565b9462024d1f565b6000945b62024dbd57505050505050600090565b62024dc9825162004c8b565b51518510156201b22e57859460018060a01b0362024ded8262007497865162004c8b565b51166000526020611f49815262024e1e6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024e309062004c7b565b9462024dad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202510057600262024f0c825162004c8b565b515103620250a75784959660001462024fe3576000945b62024f3357505050505050600090565b62024f3f815162004c8b565b51518510156201b22e57859460018060a01b0362024f638262007497855162004c8b565b51166000526020611f49815262024f8c620243bf86600020620243b8620076f9858901620073df565b9086019062024fa062006865835162004c8b565b51811015918262024fc5575b50506201b2255762024fbe9062004c7b565b9462024f23565b62024fd891925062016e27905162004c8b565b511015388062024fac565b6000945b62024ff757505050505050600090565b62025003815162004c8b565b51518510156201b22e57859460018060a01b03620250278262007497855162004c8b565b51166000526020611f49815262025050620243bf86600020620243b8620076f9858901620073df565b908601906202506462006865835162004c8b565b51811015918262025089575b50506201b22557620250829062004c7b565b9462024fe7565b6202509c91925062016e27905162004c8b565b511015388062025070565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202530557846202517b825162004c8b565b515103620252ac5784959660001462025222576000945b6202519f57505050505090565b620251ab815162004c8b565b51518510156201d8b35760018060a01b03620251cd8662007497845162004c8b565b51166000526020611f4981526202520862006865620251fe620243bf87600020620243b8620076f9878a01620073df565b9287015162004c8b565b51116201b1c3576202521b869562004c7b565b9462025192565b6000945b6202523357505050505090565b6202523f815162004c8b565b51518510156201d8b35760018060a01b03620252618662007497845162004c8b565b51166000526020611f4981526202529262006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51116201b1c357620252a5869562004c7b565b9462025226565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9291604080820192600193848151510362025500578462025380825162004c8b565b515103620254a7578495966000146202541d576000945b620253a457505050505090565b620253b0815162004c8b565b51518510156201d8b35760018060a01b03620253d28662007497845162004c8b565b51166000526020611f4981526202540362006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c35762025416869562004c7b565b9462025397565b6000945b6202542e57505050505090565b6202543a815162004c8b565b51518510156201d8b35760018060a01b036202545c8662007497845162004c8b565b51166000526020611f4981526202548d62006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c357620254a0869562004c7b565b9462025421565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b92916040808201926001938481515103620257665760026202557c825162004c8b565b5151036202570d578495966000146202564e576000945b620255a057505050505090565b620255ac815162004c8b565b51518510156201d8b35760018060a01b03620255ce8662007497845162004c8b565b51166000526020611f498152620255f7620243bf85600020620243b8620076f9858801620073df565b908501906202560b62006865835162004c8b565b51811091821562025631575b50506201b1c3576202562a869562004c7b565b9462025593565b6202564491925062016e27905162004c8b565b5110388062025617565b6000945b6202565f57505050505090565b6202566b815162004c8b565b51518510156201d8b35760018060a01b036202568d8662007497845162004c8b565b51166000526020613f018152620256b6620243bf85600020620243b8620076f9858801620073df565b90850190620256ca62006865835162004c8b565b518110918215620256f0575b50506201b1c357620256e9869562004c7b565b9462025652565b6202570391925062016e27905162004c8b565b51103880620256d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600193808503620257d7575062003261935062025ea7565b60028103620257ed575062003261935062025f91565b60038103620258f7575050906040019180835151036202589b5762025813835162004c8b565b5151036202583c57620258366200686560018060a01b0380935116935162004c8b565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362025910575050620032619350620260d6565b60058103620259275750506200326193506202621b565b600681036202593e57505062003261935062026360565b60078103620259555750506200326193506202659c565b600881036202596c575050620032619350620267fa565b600981036202598357505062003261935062026a3a565b600a81036202599a57505062003261935062026c6e565b600b8103620259b157505062003261935062026f70565b600c8103620259c85750506200326193506202719c565b600d8103620259df575050620032619350620273ec565b600e8103620259f6575050620032619350620275e5565b600f810362025a0d57505062003261935062027935565b6010810362025a2457505062003261935062027b2e565b6011810362025a3b57505062003261935062027c4e565b6012810362025a5257505062003261935062027d6e565b6013810362025a6957505062003261935062027f04565b6014810362025a8057505062003261935062028024565b6015810362025a9757505062003261935062028144565b6019810362025aae575050620032619350620282cd565b601a810362025ac557505062003261935062028405565b601b810362025adc5750506200326193506202853d565b601c8195929394951460001462025c1f575060200193808551510362025bc65762025b08855162004c8b565b51510362025b6d57506000901562025b475750516001600160a01b03166000908152611f4760205260409020549062016c039062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016c0390620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601d810362025d5a575060200193808551510362025d015762025c43855162004c8b565b51510362025ca857506000901562025c825750516001600160a01b03166000908152611f4760205260409020549062016d049062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016d0490620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601e810362025e8c5750602001938451510362025e3357600262025d7f855162004c8b565b51510362025dda57506000901562025dbc5750516001600160a01b03166000908152611f47602052604090205462016e0462006865835162004c8b565b90516001600160a01b03168152613eff602052604090205462024670565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b9294509291601f141590506200661f576200326192620286ac565b91909160018251510362025f38571562025f0457620032619160018060a01b03905116600052611f406020526200118d62025efe62025eef6001604060002001935162004c8b565b51926040519283809262002c3e565b62033cdb565b620032619160018060a01b03905116600052613ef86020526200118d62025efe62025eef6001604060002001935162004c8b565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b91602001916001835151036202607a57600162025faf845162004c8b565b5151036202601b571562025fec57516001600160a01b03166000908152611f406020526040902060020154905162016f3290620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016f3290620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9160200191600183515103620261bf576001620260f4845162004c8b565b5151036202616057156202613157516001600160a01b03166000908152611f406020526040902060020154905162016c0390620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b91602001916001835151036202630457600162026239845162004c8b565b515103620262a557156202627657516001600160a01b03166000908152611f406020526040902060020154905162016d0490620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202654057600262026381845162004c8b565b515103620264e0576202639962006865845162004c8b565b51620263aa62016e27855162004c8b565b51106202645a57156202642b5760018060a01b039081845116600052611f4091828252600260406000200154620263e662006865865162004c8b565b5111159485620263f857505050505090565b9091929394505116600052526202641d62016e27600260406000200154925162004c8b565b5110153880808080620178f8565b60018060a01b039081845116600052613ef891828252600260406000200154620263e662006865865162004c8b565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202671b57620265bf835162004c8b565b515115620266b3579483949560001462026643576000935b620265e6575050505050600090565b620265f2835162004c8b565b51518410156201790057849360018060a01b03835116600052611f4082526002604060002001546202662a8262007497875162004c8b565b5114620178f8576202663c9062004c7b565b93620265d7565b6000935b62026656575050505050600090565b62026662835162004c8b565b51518410156201790057849360018060a01b03835116600052613ef882526002604060002001546202669a8262007497875162004c8b565b5114620178f857620266ac9062004c7b565b9362026647565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202677f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202695b57600262026818845162004c8b565b515103620268fb578015620268de57620268466103e86202683e62006865865162004c8b565b511062026777565b1562026894576202685c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016c0362016e27604060002054925162004c8b565b620268a462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016c0362016e27604060002054925162004c8b565b620268f56103e86202683e62006865865162004c8b565b62026846565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620269bf57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b916020019160018351510362026b9b57600262026a58845162004c8b565b51510362026b3b57801562026b1e5762026a866103e862026a7e62006865865162004c8b565b5110620269b7565b1562026ad45762026a9c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016d0462016e27604060002054925162004c8b565b62026ae462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016d0462016e27604060002054925162004c8b565b62026b356103e862026a7e62006865865162004c8b565b62026a86565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b1562026bff57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b91909160208092019160018351510362026ea0576003918262026c92855162004c8b565b51510362026e3d57801562026e205762026cc06103e862026cb862006865875162004c8b565b511062026bf7565b1562026d7b5762026cd662006865845162004c8b565b51916103e88084101562004c995785516001600160a01b03908116600090815294831b830184526040852054865162026d149062016e279062004c8b565b511115968762026d29575b5050505050505090565b909192939495965062026d4162006865885162004c8b565b519283101562022a865751168452811b0190526040902054905162026d6b906201d8a19062004c8b565b5110153880808080808062026d1f565b62026d8b62006865845162004c8b565b516103e88082101562004c995760018060a01b039384875116946000958652611fbb8094831b018552604086205462026dc962016e27895162004c8b565b511115978862026dde57505050505050505090565b90919293949596975062026df762006865895162004c8b565b519384101562022b8a57511685521b0190526040902054905162022a75906201d8a19062004c8b565b62026e376103e862026cb862006865875162004c8b565b62026cc0565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b1562026f0157565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b9160200191600183515103620270cb57600262026f8e845162004c8b565b51510362027071578015620270545762026fbc6103e862026fb462006865865162004c8b565b511062026ef9565b156202700a5762026fd262006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016f3262016e27604060002054925162004c8b565b6202701a62006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016f3262016e27604060002054925162004c8b565b6202706b6103e862026fb462006865865162004c8b565b62026fbc565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b156202712d57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b916020019160018351510362027392576002620271ba845162004c8b565b515103620273385780156202731b57620271e86103e8620271e062006865865162004c8b565b511062027125565b156202728d57620271fe62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202725262006865855162004c8b565b5191821015620014f757506202165962016c0392600662016e279360031b01549062005070565b634e487b7160e01b81526011600452602490fd5b6202729d62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb01602052604082205460648082029391801590850490911417156202727957620272f362006865855162004c8b565b5191821015620014f757506202165962016c0392611fbe62016e279360031b01549062005070565b620273326103e8620271e062006865865162004c8b565b620271e8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b91602001916001835151036202758b5760026202740a845162004c8b565b515103620275315715620274a3576202742862006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202747c62006865855162004c8b565b5191821015620014f757506202165962016d0492600662016e279360031b01549062005070565b620274b362006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb016020526040822054606480820293918015908504909114171562027279576202750962006865855162004c8b565b5191821015620014f757506202165962016d0492611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90602080930191600183515103620278db57600262027605845162004c8b565b51510362027881571562027745576202762362006865835162004c8b565b516103e8908181101562004c995760018060a01b03948584511693600094855260038093811b018252604085205460648102908082046064149015171562027731576202767562006865885162004c8b565b518581101562022b8a57841b60060154620276909162005070565b620276a062016e27885162004c8b565b5111159687620276b4575050505050505090565b9091929394959650620276cc62006865885162004c8b565b51918583101562022b8a5751168552821b820190526040832054606480820294918015908604909114171562027279576202770c62006865865162004c8b565b5192831015620014f757501b6006015462026d6b916201d8a191620216599162005070565b634e487b7160e01b86526011600452602486fd5b6202775562006865835162004c8b565b51906103e88083101562004c995760018060a01b039485835116936000948552611fbb809160031b0182526040852054936064850294808604606414901517156202773157620277aa62006865885162004c8b565b51948486101562022b8a57620277cb90611fbe809760031b01549062005070565b620277db62016e27895162004c8b565b5111159788620277f057505050505050505090565b9091929394959697506202780962006865895162004c8b565b5191858310156202786d575116865260031b01905260408320549260648402938085046064149015171562027279576202784862006865865162004c8b565b5191821015620014f7575060031b015462022a75916201d8a191620216599162005070565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027ad457600262027953845162004c8b565b51510362027a7a5715620279ec576202797162006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b909201602052604082205460648082029391801590850490911417156202727957620279c562006865855162004c8b565b5191821015620014f757506202165962016f3292600662016e279360031b01549062005070565b620279fc62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620272795762027a5262006865855162004c8b565b5191821015620014f757506202165962016f3292611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027bf457600162027b4c845162004c8b565b51510362027b9a57801562027b7a5762021659620068659162016c039360018060a01b03905116906201ba0e565b505162016c0390620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027d1457600162027c6c845162004c8b565b51510362027cba57801562027c9a5762021659620068659162016d049360018060a01b03905116906201ba0e565b505162016d0490620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916020019060018251510362027eaa57600262027d8d835162004c8b565b51510362027e5057801562027dfe5782516001600160a01b039062027db5908216836201ba0e565b62027dc562006865855162004c8b565b511115938462027dd6575050505090565b62027df193945091620216599162016e27935116906201ba0e565b5110153880808062005160565b5081516001600160a01b039062027e179082166201b9ba565b62027e2762006865845162004c8b565b511115928362027e375750505090565b62021a9c92935062016e2791620216599151166201b9ba565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027fca57600162027f22845162004c8b565b51510362027f7057801562027f505762021659620068659162016c039360018060a01b03905116906201c8c5565b505162016c0390620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620280ea57600162028042845162004c8b565b51510362028090578015620280705762021659620068659162016d049360018060a01b03905116906201c8c5565b505162016d0490620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602001906001825151036202827357600262028163835162004c8b565b51510362028219578015620281c75782516001600160a01b03906202818b908216836201c8c5565b6202819b62006865855162004c8b565b5111159384620281ac575050505090565b62027df193945091620216599162016e27935116906201c8c5565b5081516001600160a01b0390620281e09082166201c871565b620281f062006865845162004c8b565b5111159283620282005750505090565b62021a9c92935062016e2791620216599151166201c871565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620283ab576001620282eb845162004c8b565b5151036202835157156202832557516001600160a01b03166000908152611f456020526040902054905162016c0390620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620284e357600162028423845162004c8b565b5151036202848957156202845d57516001600160a01b03166000908152611f456020526040902054905162016d0490620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602080910191600183515103620286525760026202855e845162004c8b565b515103620285f85715620285cc5760018060a01b039081845116600052611f45918282526040600020546202859862006865865162004c8b565b5111159485620285aa57505050505090565b9091929394505116600052526202641d62016e27604060002054925162004c8b565b60018060a01b039081845116600052613efd918282526040600020546202859862006865865162004c8b565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916040016001928382515103620287885783921562028727576000925b620286d85750505050600090565b620286e4825162004c8b565b5151831015620175c757839260018060a01b0380835116906202870d8362007497875162004c8b565b5116146200516057620287209062004c7b565b92620286ca565b6000925b620287395750505050600090565b62028745825162004c8b565b5151831015620175c757839260018060a01b0380835116906202876e8362007497875162004c8b565b5116146200516057620287819062004c7b565b926202872b565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9161012d811462028a755761012e811462028a695761012f811462028a5d57610130811462028a5157610131811462028a4557610132811462028a3957610133811462028a2d57610134811462028a2157610135811462028a1557610136811462028a09576101378114620289fd576101388114620289f1576101398114620289e55761013a8114620289d95761013b8114620289cd5761013c8114620289c15761013d8114620289b45761013e8114620289a75761013f81146202899a5761014081146202898d5761014181146202898157610142811462028975576101438114620289695761014481146202895d5761014581146202895157610146811462028945576101478114620289395761017381146202892c57610174811462028920576101751462028915575050600090565b62003261916202b290565b5062003261916202b0cd565b505062003261906202b071565b5062003261916202af23565b5062003261916202abd9565b5062003261916202aa5f565b5062003261916202a8de565b5062003261916202a719565b5062003261916202a5b7565b5062003261916202a43c565b505062003261906202a335565b505062003261906202a220565b505062003261906202a11e565b505062003261906202a016565b50620032619162029e95565b50620032619162029d14565b50620032619162029b91565b50620032619162029a0e565b5062003261916202988d565b5062003261916202970c565b50620032619162029589565b50620032619162029406565b506200326191620292c7565b50620032619162029188565b50620032619162029063565b50620032619162028f3f565b50620032619162028e01565b50620032619162028cc3565b50620032619162028b9f565b5062003261919060200190600191828151510362028b465760208201516026811015620029ab57600d036200661f5762028ab083926202b43c565b6000935b62028ac25750505050600090565b62028ace825162004c8b565b5151841015620175c7576000835b62028af6575b5062028aef839462004c7b565b9362028ab4565b939291815185101562028b3d5762028b148462007497835162004c8b565b5162028b21868462004ce2565b5114620170845762028b3583949562004c7b565b909262028adc565b91929362028ae2565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028c6a5760208201516026811015620029ab57600d036200661f5762028bd483926202b43c565b6000935b62028be65750505050600090565b62028bf2825162004c8b565b5151841015620175c7576000835b62028c1a575b5062028c13839462004c7b565b9362028bd8565b939291815185101562028c615762028c388462007497835162004c8b565b5162028c45868462004ce2565b5114620170845762028c5983949562004c7b565b909262028c00565b91929362028c06565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028da85760208201516026811015620029ab57600d036200661f5762028cf883926202b43c565b6000925b62028d075750505090565b62028d13825162004c8b565b51518310156201724457600080855b62028d42575b5015620171bd5762028d3b849362004c7b565b9262028cfc565b8295939194955181101562028d9d5762028d628662007497845162004c8b565b5162028d6f828562004ce2565b511462028d90579062028d8484939262004c7b565b90939594919262028d22565b5091809493503862028d28565b949390929462028d28565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028ee65760208201516026811015620029ab57600d036200661f5762028e3683926202b43c565b6000925b62028e455750505090565b62028e51825162004c8b565b51518310156201724457600080855b62028e80575b5015620171bd5762028e79849362004c7b565b9262028e3a565b8295939194955181101562028edb5762028ea08662007497845162004c8b565b5162028ead828562004ce2565b511462028ece579062028ec284939262004c7b565b90939594919262028e60565b5091809493503862028e66565b949390929462028e66565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202900a5760208201516026811015620029ab57600e036200661f5762028f7483926202b43c565b6000935b62028f865750505050600090565b62028f92825162004c8b565b5151841015620175c7576000835b62028fba575b5062028fb3839462004c7b565b9362028f78565b9392918151851015620290015762028fd88462007497835162004c8b565b5162028fe5868462004ce2565b5114620170845762028ff983949562004c7b565b909262028fa0565b91929362028fa6565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202912e5760208201516026811015620029ab57600e036200661f576202909883926202b43c565b6000935b620290aa5750505050600090565b620290b6825162004c8b565b5151841015620175c7576000835b620290de575b50620290d7839462004c7b565b936202909c565b93929181518510156202912557620290fc8462007497835162004c8b565b5162029109868462004ce2565b511462017084576202911d83949562004c7b565b9092620290c4565b919293620290ca565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202926d5760208201516026811015620029ab57600e036200661f57620291bd83926202b43c565b6000925b620291cc5750505090565b620291d8825162004c8b565b51518310156201724457600080855b62029207575b5015620171bd5762029200849362004c7b565b92620291c1565b829593919495518110156202926257620292278662007497845162004c8b565b5162029234828562004ce2565b51146202925557906202924984939262004c7b565b909395949192620291e7565b50918094935038620291ed565b9493909294620291ed565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620293ac5760208201516026811015620029ab57600e036200661f57620292fc83926202b43c565b6000925b6202930b5750505090565b62029317825162004c8b565b51518310156201724457600080855b62029346575b5015620171bd576202933f849362004c7b565b9262029300565b82959391949551811015620293a157620293668662007497845162004c8b565b5162029373828562004ce2565b51146202939457906202938884939262004c7b565b90939594919262029326565b509180949350386202932c565b94939092946202932c565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202952f57600262029426825162004c8b565b515103620294d55760208201516026811015620029ab57600d036200661f576202945183926202b43c565b906000925b620294645750505050600090565b8151831015620175c757826202947c85948462004ce2565b516202948d62006865845162004c8b565b51111580620294ae575b6200516057620294a79062004c7b565b9262029456565b50620294bb818462004ce2565b51620294cc62016e27845162004c8b565b51101562029497565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620296b2576002620295a9825162004c8b565b515103620296585760208201516026811015620029ab57600d036200661f57620295d483926202b43c565b906000925b620295e75750505050600090565b8151831015620175c75782620295ff85948462004ce2565b516202961062006865845162004c8b565b5111158062029631575b62005160576202962a9062004c7b565b92620295d9565b506202963e818462004ce2565b516202964f62016e27845162004c8b565b5110156202961a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620298335760026202972c825162004c8b565b515103620297d95760208201516026811015620029ab57600d036200661f576202975783926202b43c565b60009182945b6202976a57505050905090565b81518510156201708c5762029780858362004ce2565b516202979162006865835162004c8b565b51118015620297b3575b6201708457620297ac849562004c7b565b946202975d565b50620297c0858362004ce2565b51620297d162016e27835162004c8b565b51106202979b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620299b4576002620298ad825162004c8b565b5151036202995a5760208201516026811015620029ab57600d036200661f57620298d883926202b43c565b60009182945b620298eb57505050905090565b81518510156201708c5762029901858362004ce2565b516202991262006865835162004c8b565b5111801562029934575b62017084576202992d849562004c7b565b94620298de565b5062029941858362004ce2565b516202995262016e27835162004c8b565b51106202991c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029b3757600262029a2e825162004c8b565b51510362029add5760208201516026811015620029ab57600e036200661f5762029a5983926202b43c565b906000925b62029a6c5750505050600090565b8151831015620175c7578262029a8485948462004ce2565b5162029a9562006865845162004c8b565b5111158062029ab6575b620051605762029aaf9062004c7b565b9262029a5e565b5062029ac3818462004ce2565b5162029ad462016e27845162004c8b565b51101562029a9f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029cba57600262029bb1825162004c8b565b51510362029c605760208201516026811015620029ab57600e036200661f5762029bdc83926202b43c565b906000925b62029bef5750505050600090565b8151831015620175c7578262029c0785948462004ce2565b5162029c1862006865845162004c8b565b5111158062029c39575b620051605762029c329062004c7b565b9262029be1565b5062029c46818462004ce2565b5162029c5762016e27845162004c8b565b51101562029c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029e3b57600262029d34825162004c8b565b51510362029de15760208201516026811015620029ab57600e036200661f5762029d5f83926202b43c565b60009182945b62029d7257505050905090565b81518510156201708c5762029d88858362004ce2565b5162029d9962006865835162004c8b565b5111801562029dbb575b620170845762029db4849562004c7b565b9462029d65565b5062029dc8858362004ce2565b5162029dd962016e27835162004c8b565b511062029da3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029fbc57600262029eb5825162004c8b565b51510362029f625760208201516026811015620029ab57600e036200661f5762029ee083926202b43c565b60009182945b62029ef357505050905090565b81518510156201708c5762029f09858362004ce2565b5162029f1a62006865835162004c8b565b5111801562029f3c575b620170845762029f35849562004c7b565b9462029ee6565b5062029f49858362004ce2565b5162029f5a62016e27835162004c8b565b511062029f24565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208082019081516026811015620029ab57600d1480156202a108575b6202a0ba575080516026811015620029ab57600f149081156202a0a3575b506202a05d5750600090565b6000805b606060408401510151805182101562017ac0576202a0828260e09262004ce2565b5101511562022e6d5760406202a09a60609262004c7b565b9150506202a061565b9050516026811015620029ab57600c14386202a051565b60009150815b816040850151015180518210156202a0fe576202a0e08260019262004ce2565b5115150362017ab9576202a0f660409162004c7b565b90506202a0c0565b5050505050600190565b5081516026811015620029ab57600e146202a033565b60208082019081516026811015620029ab57600d1480156202a20a575b6202a1c6575080516026811015620029ab57600f149081156202a1af575b506202a1655750600090565b6000805b606060408401510151805182101562017ac05760e06202a18c8360019362004ce2565b51015115151462022e6d5760406202a1a660609262004c7b565b9150506202a169565b9050516026811015620029ab57600c14386202a159565b60009150815b816040850151015180518210156202a0fe576202a1ec8260019262004ce2565b5115151462017ab9576202a20260409162004c7b565b90506202a1cc565b5081516026811015620029ab57600e146202a13b565b60208082019081516026811015620029ab57600d1480156202a31f575b6202a2d1575080516026811015620029ab57600f149081156202a2ba575b506202a2675750600090565b60005b60606040830151015180518210156200661f57819060e06202a290600193849362004ce2565b5101511515146202a2b4575060406202a2ab60609262004c7b565b9150506202a26a565b91505090565b9050516026811015620029ab57600c14386202a25b565b905060005b81604084015101518051821015620171bd5781906202a2f9600192839262004ce2565b511515146202a31857506202a31060409162004c7b565b90506202a2d6565b9250505090565b5081516026811015620029ab57600e146202a23d565b60208082019081516026811015620029ab57600d1480156202a426575b6202a3df575080516026811015620029ab57600f149081156202a3c8575b506202a37c5750600090565b60005b60606040830151015180518210156200661f576202a3a08260e09262004ce2565b510151156202a3c15760406202a3b860609262004c7b565b9150506202a37f565b5050600190565b9050516026811015620029ab57600c14386202a370565b905060005b81604084015101518051821015620171bd5781906202a407600192839262004ce2565b511515036202a31857506202a41e60409162004c7b565b90506202a3e4565b5081516026811015620029ab57600e146202a352565b60208092019160019283815151036202a55d576202a45c84915162004c8b565b5151036202a5045780820180516026811015620029ab57600f141590816202a4ec575b506200661f57600091835b6202a4985750505050600090565b60408101926060845101519384518210156201e977576202a4d36200686560a0866202a4c6868b9a62004ce2565b5101519351015162004c8b565b511462005160576202a4e59062004c7b565b926202a48a565b9050516026811015620029ab57600c1415386202a47f565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a6bf5781830180516026811015620029ab57600f141590816202a6a7575b50620171bd5783926000945b6202a600575050505050600090565b6040810160608082510151518710156202a69f57906000865b6202a635575b5050506202a62e849562004c7b565b946202a5f1565b6202a641855162004c8b565b51518110156202a69957856202a65c89858551015162004ce2565b5101516202a6708262007497885162004c8b565b51146202a68e57906202a68587939262004c7b565b9091926202a619565b505050505050905090565b6202a61f565b5050620173d1565b9050516026811015620029ab57600c1415386202a5e5565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a8845760026202a73a825162004c8b565b5151036202a82a5781830180516026811015620029ab57600f141590816202a812575b50620171bd57600092845b6202a777575050505050600090565b604081019360609485815101519586518310156202a80957828691826202a7a0838c9b62004ce2565b5101516202a7b362006865895162004c8b565b51111593846202a7d9575b50505050620178f8576202a7d29062004c7b565b936202a768565b6202a7e993945051015162004ce2565b5101516202a7fc62016e27855162004c8b565b511015848238806202a7be565b505050620173d1565b9050516026811015620029ab57600c1415386202a75d565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b602080920160019283825151036202aa0657836202a8fd835162004c8b565b5151036202a9a75780830180516026811015620029ab57600f141590816202a98f575b50620171bd57600092845b6202a93a575050505050600090565b6060604082015101519384518110156202a98857826202a95c82889762004ce2565b5101516202a96f62006865865162004c8b565b5110620178f8576202a9819062004c7b565b936202a92b565b50620173d1565b9050516026811015620029ab57600c1415386202a920565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b602080920160019283825151036202ab8057836202aa7e835162004c8b565b5151036202ab215780830180516026811015620029ab57600f141590816202ab09575b50620171bd57600092845b6202aabb575050505050600090565b6060604082015101519384518110156202a98857826202aadd82889762004ce2565b5101516202aaf062006865865162004c8b565b5111620178f8576202ab029062004c7b565b936202aaac565b9050516026811015620029ab57600c1415386202aaa1565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b906020019060019182815151036202aec957826202abf8825162004c8b565b5151036202ae69576020820180516026811015620029ab57600f141590816202ae51575b506200661f576000939291825b6202ac38575b50600093505050565b60408101946060808751015180518310156202ae48576202ac5e836202ac659262004ce2565b5162005616565b9060069182811015620029ab5715806202ae2f575b6202add5576202ac936202ac5e84838b51015162004ce2565b82811015620029ab578614806202ae15575b6202add5576202acbe6202ac5e84838b51015162004ce2565b82811015620029ab57600280911490816202adfa575b506202add5576202acee6202ac5e84838b51015162004ce2565b82811015620029ab57600380911490816202addf575b506202add5576202ad1e6202ac5e84838b51015162004ce2565b9782891015620029ab576004809914806202adbb575b6202adb057836202ad4d926202ac5e9251015162004ce2565b908110156202ad9b5784959650600580911490816202ad80575b5062005160576202ad789062004c7b565b94936202ac29565b90506202ad9262006865855162004c8b565b5114386202ad67565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b50886202adcd62006865885162004c8b565b51146202ad34565b5093955050505050565b90506202adf162006865875162004c8b565b5114386202ad04565b90506202ae0c62006865875162004c8b565b5114386202acd4565b50856202ae2762006865875162004c8b565b51146202aca5565b506202ae4062006865865162004c8b565b51156202ac7a565b5050506202ac2f565b9050516026811015620029ab57600c1415386202ac1c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202b017576020820180516026811015620029ab57600f141590816202afff575b506200661f5782916000935b6202af6b5750505050600090565b6040810160608082510151518610156201e97757906000855b6202afa0575b5050506202af99839462004c7b565b936202af5d565b6202afac855162004c8b565b51518110156202aff957826202afc788828551015162004ce2565b5101516202afdb8262007497885162004c8b565b511462023c4a57906202aff086939262004c7b565b9091926202af84565b6202af8a565b9050516026811015620029ab57600c1415386202af51565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208101516026811015620029ab576013036200750a5760005b604080830151015180518210156200661f57819060c06202b0b0600193849362004ce2565b5101511515146202a2b457506202b0c79062004c7b565b6202b08b565b6020918201805151600094936001939091600019016202b2365760026202b0f5845162004c8b565b5151036202b1dc57818101516026811015620029ab576013036202b1d2576000959493929190835b6202b12c575b50505050909150565b604080820190808251015180518a10156202b1c9578491826202b1518c809462004ce2565b5101516202b16462006865895162004c8b565b51111593846202b199575b505050506202b18f576202b1868495969762004c7b565b9695946202b11d565b5050509150915090565b6202b1a993945051015162004ce2565b5101516202b1bc62016e27855162004c8b565b511015828838806202b16f565b5050506202b123565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200160019182825151036202b3e157826202b2ae835162004c8b565b5151036202b3835760208101516026811015620029ab576013036200661f5782916000935b6202b2e15750505050600090565b6040808301908082510151518610156201e97757906000855b6202b316575b5050506202b30f839462004c7b565b936202b2d3565b6202b32687848451015162004ce2565b5151518110156202b37d576202b34e816202b34689868651015162004ce2565b515162004ce2565b516202b35f62006865865162004c8b565b511462023c4a57906202b37486939262004c7b565b9091926202b2fa565b6202b300565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b60209081810180516026811015620029ab57600d149081156202b557575b506202b47c5750506040516202b4708162002ac7565b60008152600036813790565b6040019160a0916202b49e6202b496848651015162004c8b565b515162004dfe565b93600092835b6202b4b3868451015162004c8b565b51518110156202b510576202b4cd81858551015162004ce2565b516202b4eb575b6202b4e36202b4b39162004c7b565b90506202b4a4565b936202b4e36202b506828762001b036202b4b3958c62004ce2565b959150506202b4d4565b50935050506202b5208162004dfe565b9060005b8181106202b533575090925050565b806202b5446202b551928762004ce2565b5162001b03828662004ce2565b6202b524565b9050516026811015620029ab57600e14386202b45a565b9161025981146202b8ea5761025a81146202b7fa5761025b81146202b70a5761025c81146202b5f45761025d81146202b5e85761025e81146202b5dc5761025f81146202b5d057610260146202b5c5575050600090565b62003261916202bda8565b5062003261916202bc2e565b5062003261916202bb1d565b5062003261916202b9da565b50602001906001825151036202b6b05760026202b612835162004c8b565b5151036202b65657602001908151516202b63162006865835162004c8b565b51111591826202b64057505090565b62016e2e91925062016e27905151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b7a05760016202b728835162004c8b565b5151036202b7465762006865602062016f3292015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b8905760016202b818835162004c8b565b5151036202b8365762006865602062016d0492015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b9805760016202b908835162004c8b565b5151036202b9265762006865602062016c0392015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919091602080930160019182825151036202bac357826202b9fc835162004c8b565b5151036202ba6957938293946000935b6202ba1b575050505050600090565b818101519384518110156202a988576202ba40620076f984620067ff848a9962004ce2565b6202ba5062006865865162004c8b565b5114620178f8576202ba629062004c7b565b936202ba0c565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202bbd4578293946000945b6202bb48575050505050600090565b8281018051518610156202a988576000855b6202bb75575b50506202bb6e849562004c7b565b946202bb39565b6202bb81845162004c8b565b51518110156202bbce576202bba1620076f986620067ff8a865162004ce2565b6202bbb28262007497875162004c8b565b511462023c4a57906202bbc6869262004c7b565b90916202bb5a565b6202bb60565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91909160208093019060019182815151036202bd4e57846202bc51825162004c8b565b5151920191825151036202bcd35782939460009283955b6202bc77575b50505050905090565b805180518710156202bccc57620076f983620067ff896202bc989462004ce2565b6202bca98762007497865162004c8b565b51036202bcc3576202bcbc859662004c7b565b956202bc68565b50505091505090565b506202bc6e565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202be78578293946000935b6202bdd0575050505090565b8281018051518510156202be7157856000918183905b6202be08575b50505015620173d1576202be01859462004c7b565b936202bdc4565b6202be14865162004c8b565b51518110156202be6b576202be34620076f988620067ff8b865162004ce2565b6202be458262007497895162004c8b565b51146202be5e576202be579062004c7b565b826202bde6565b505090508538806202bdec565b6202bdec565b5062005160565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916101cd81146202bf24576101ce81146202bf18576101cf81146202bf0c576101d0146202bf01575050600090565b62003261916202c532565b5062003261916202c310565b5062003261916202c11d565b5062003261919060200160019182825151036202c0c35760026202bf49835162004c8b565b5151036202c069576202bf5c816202c725565b156200661f576202bf6d906202c782565b9180939150518251036202bffe57600092845b6202bf8f575050505050600090565b80518410156201790057836202bfa786958362004ce2565b516202bfb862006865855162004c8b565b5114806202bfd8575b620178f8576202bfd19062004c7b565b936202bf80565b506202bfe5818562004ce2565b516202bff662016e27855162004c8b565b51106202bfc1565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c2b65760026202c13c835162004c8b565b5151036202c25c576202c14f816202c725565b156200661f576202c160906202c782565b9180939150518251036202c1f157600092845b6202c182575050505050600090565b80518410156201790057836202c19a86958362004ce2565b516202c1ab62006865855162004c8b565b5114806202c1cb575b620178f8576202c1c49062004c7b565b936202c173565b506202c1d8818562004ce2565b516202c1e962016e27855162004c8b565b51116202c1b4565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c4d85760036202c32f835162004c8b565b5151036202c47e576202c342816202c725565b156200661f576202c353906202c782565b9180939150518251036202c41357600092845b6202c375575050505050600090565b80518410156201790057836202c38d86958362004ce2565b516202c39e62006865855162004c8b565b5114806202c3ec575b806202c3c5575b620178f8576202c3be9062004c7b565b936202c366565b506202c3d2818562004ce2565b516202c3e36201d8a1855162004c8b565b5110156202c3ae565b506202c3f9818562004ce2565b516202c40a62016e27855162004c8b565b5111156202c3a7565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c6cb5760026202c551835162004c8b565b5151036202c671576202c564816202c725565b156200661f576202c575906202c782565b9180939150518251036202c60657600092845b6202c597575050505050600090565b80518410156201790057836202c5af86958362004ce2565b516202c5c062006865855162004c8b565b5114806202c5e0575b620178f8576202c5d99062004c7b565b936202c588565b506202c5ed818562004ce2565b516202c5fe62016e27855162004c8b565b51146202c5c9565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60200180516026811015620029ab576014149081156202c76a575b81156202c753575b506202409957600090565b9050516026811015620029ab57601e14386202c748565b809150516026811015620029ab57601514906202c740565b6202c78d816202c725565b156202c893576020810180516026811015620029ab576014146202c87e5780516026811015620029ab576015146202c84757516026811015620029ab57601e146202c81557506040516202c7e18162002ac7565b60008152604051916202c7f48362002ac7565b60008352604051916202c8078362002ac7565b600083526000368137929190565b604001906202c82960a08351015162004c8b565b51906202c84060a06200749e818651015162004caf565b5191929190565b50604001906202c85c60a08351015162004c8b565b51906202c84060a06202c873818651015162004cc0565b519451015162004cd1565b50604001906202c82960a08351015162004c8b565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202c9df576101b081146202c9d3576101b181146202c9c7576101b281146202c9bb576101b381146202c9af576101b481146202c9a3576101b581146202c997576101b6146202c98c575050600090565b62003261916202d428565b5062003261916202d283565b5062003261916202d11e565b5062003261916202cfb9565b5062003261916202ce54565b5062003261916202ccaf565b5062003261916202cb4a565b506200326191906020019060019182815151036202caf057826202ca04825162004c8b565b5151036202ca965760208201516026811015620029ab576011036200661f57600091835b6202ca365750505050600090565b604081019260a0936202ca4d858251015162004c8b565b51518210156201e97757816200749787966202ca6c9351015162004c8b565b516202ca7d62006865855162004c8b565b511062005160576202ca8f9062004c7b565b926202ca28565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cc5557826202cb69825162004c8b565b5151036202cbfb5760208201516026811015620029ab576011036200661f57600091835b6202cb9b5750505050600090565b604081019260a0936202cbb2858251015162004c8b565b51518210156201e97757816200749787966202cbd19351015162004c8b565b516202cbe262006865855162004c8b565b511162005160576202cbf49062004c7b565b926202cb8d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cdfa5760026202cccf825162004c8b565b5151036202cda05760208201516026811015620029ab576011036200661f57600091835b6202cd015750505050600090565b604081019260a0936202cd18858251015162004c8b565b51518210156201e9775781856202cd3982620074978a998651015162004c8b565b516202cd4a62006865885162004c8b565b51111592836202cd6f575b50505062005160576202cd689062004c7b565b926202ccf3565b5101516202cd839250620074979062004c8b565b516202cd9462016e27855162004c8b565b5110158138806202cd55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cf5f57826202ce73825162004c8b565b5151036202cf055760208201516026811015620029ab576011036200661f57600091835b6202cea55750505050600090565b604081019260a0936202cebc858251015162004c8b565b51518210156201e97757816200749787966202cedb9351015162004c8b565b516202ceec62006865855162004c8b565b511462005160576202cefe9062004c7b565b926202ce97565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d0c457826202cfd8825162004c8b565b5151036202d06a5760208201516026811015620029ab576012036200661f57600091835b6202d00a5750505050600090565b604081019260a0936202d021858251015162004c8b565b51518210156201e97757816200749787966202d0409351015162004c8b565b516202d05162006865855162004c8b565b511062005160576202d0639062004c7b565b926202cffc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d22957826202d13d825162004c8b565b5151036202d1cf5760208201516026811015620029ab576012036200661f57600091835b6202d16f5750505050600090565b604081019260a0936202d186858251015162004c8b565b51518210156201e97757816200749787966202d1a59351015162004c8b565b516202d1b662006865855162004c8b565b511162005160576202d1c89062004c7b565b926202d161565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d3ce5760026202d2a3825162004c8b565b5151036202d3745760208201516026811015620029ab576012036200661f57600091835b6202d2d55750505050600090565b604081019260a0936202d2ec858251015162004c8b565b51518210156201e9775781856202d30d82620074978a998651015162004c8b565b516202d31e62006865885162004c8b565b51111592836202d343575b50505062005160576202d33c9062004c7b565b926202d2c7565b5101516202d3579250620074979062004c8b565b516202d36862016e27855162004c8b565b5110158138806202d329565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d53357826202d447825162004c8b565b5151036202d4d95760208201516026811015620029ab576012036200661f57600091835b6202d4795750505050600090565b604081019260a0936202d490858251015162004c8b565b51518210156201e97757816200749787966202d4af9351015162004c8b565b516202d4c062006865855162004c8b565b511462005160576202d4d29062004c7b565b926202d46b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b156202d59557565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202d5e48162002f45565b6202d5f26200e20262033a39565b6202d5fd8162002f45565b600181036202d61b57506202d6156200e22e62033a39565b611faf55565b6202d6268162002f45565b600281036202d6365750611fb055565b6202d6418162002f45565b600381036202d6515750611fb155565b806202d65f60049262002f45565b146202d6685750565b611fb255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b825181101562010d665760e06202d731828562004ce2565b510151156202dae8576202d74a6202ac5e828562004ce2565b600680821015620029ab5760049182036202d895575060209060016003836202d774868962004ce2565b51015106036202d7915750506202d78b9062004c7b565b6202d719565b62004c7782846202d87a60636202d7c26202d7bb856202d7b2868e62004ce2565b51015162005091565b9362005091565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202d7fe62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d82782518093601396878501910162002d89565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002b1c565b5193849362461bcd60e51b8552840152602483019062002dae565b6202d8a56202ac5e848762004ce2565b818110156201e52d576001036202d9b5575060209060026003836202d8cb868962004ce2565b51015106036202d8e25750506202d78b9062004c7b565b62004c7782846202d87a605d6202d9036202d7bb856202d7b2868e62004ce2565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202d93f62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d96882518093601396878501910162002d89565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002b1c565b6202d9c56202ac5e848762004ce2565b908110156201588c576002036202dacc576020906003826202d9e8858862004ce2565b510151066202d9fe5750506202d78b9062004c7b565b62004c7782846202d87a6202da246202da1d846202d7b2858d62004ce2565b9262005091565b916202dabd60409384519586936202da4262004d4c8387016202d6dd565b0160008051602062033fdb83398151915281528151906202da6c826013948d868501910162002d89565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002b1c565b60405162461bcd60e51b815290819062004c779082016202d66e565b6202daf86202ac5e828562004ce2565b60069081811015620029ab576005036202dc135750602060016003826202db20858862004ce2565b51015106036202db3657506202d78b9062004c7b565b62004c77826202dbf660526202db576202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202db9262004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dbbc826013958c878501910162002d89565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002b1c565b5192839262461bcd60e51b84526004840152602483019062002dae565b6202dc236202ac5e838662004ce2565b9080821015620029ab5760039182036202dd3257506002602091826202dc4a858862004ce2565b51015106036202dc6057506202d78b9062004c7b565b62004c77826202dbf6605c6202dc816202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202dcbc62004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dce6826013958c878501910162002d89565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002b1c565b6202dd426202ac5e848762004ce2565b90811015620029ab576002036202ddee57602090816202dd63848762004ce2565b510151066202dd7857506202d78b9062004c7b565b62004c77826202dbf66202dd976202da1d856202d7b281988b62004ce2565b916202dddf60409384519788936202ddb562004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528151906202da6c826013948b868501910162002d89565b03601f19810186528562002b1c565b60405162461bcd60e51b81528062004c77600482016202d66e565b156202de1157565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202de9a57565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202def257565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202df5357565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202dfb457565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202e00d57565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202e06f57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202e0d257565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202e13857565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202e19a57565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202e1f257565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202e25157565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202e2aa57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202e30360c08351015162004c8b565b51916202e32560a06202e31a818451015162004c8b565b519251015162004caf565b51936202e33a845183511462000f4e62033906565b6202e34d845186511462000f4e62033906565b60005b84518110156202e3aa576202e366818462004ce2565b51906103e882101562004c99576202e3a49160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e350565b5092919360005b83518110156202e4d5576202e3c7818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e40760406000205462007dae868962004ce2565b906202e414868a62004ce2565b51918783101562004c9957846202e44193878f5116600052811b01845260406000205562000f4e62033a0a565b6202e44d848862004ce2565b518581101562004c99578290846202e466878c62004ce2565b5116600052811b0181526202e4866040600020546200686c868962004ce2565b9190926202e495868a62004ce2565b519687101562004c99576202e4cf9662000f55956202e4b5888d62004ce2565b5116600052811b01905260406000205562000f4e62033a6f565b6202e3b1565b5050620119826202e4e691620336a2565b90604051936202e4f68562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202e51d8562004c8b565b526000935b81518510156202e840576202e538858362004ce2565b51946202e546845162004dfe565b916000936202e556825162004dfe565b610b00528496855b87518110156202e5ff576202e585610ae0516202e57c838b62004ce2565b51168b6203348a565b15806202e5c7575b6202e5a4575b6202e59e9062004c7b565b6202e55e565b956202e5be6202e59e91610ae0516200a4958a8c62004ce2565b9690506202e593565b506103e88a101562004c9957610ae0516202e5e3828a62004ce2565b511660005260038a811b0160205260406000205415156202e58d565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202e699578762004c9957610ae0516202e63d828c62004ce2565b51166000528b602052604060002054156202e664575b6202e65e9062004c7b565b6202e61d565b976202e6906202e65e918b6202e67f8c610ae0519262004ce2565b511662001b0382610b005162004ce2565b9890506202e653565b5094959193965098509690959680610b405262004c995760040180610b805254956202e6ca620080c0868962006258565b610b205260009788610b60525b610b405162004c9957610b6051888110156202e775576202e7066202e71c916000610b4052610b805162004efa565b610ae05191549060031b1c16610b005162033539565b156202e73b575b6202e731610b605162004c7b565b610b60526202e6d7565b976202e76e906202e753610b6051610b805162004efa565b610ae05191549060031b1c1662001b0382610b205162004ce2565b976202e723565b5095939096509690969391936000915b8383106202e80f5750505050610b405162004c9957610b2051516001600160401b03811162002a23576202e7bd81610b805162005036565b6020610b205101610b805160005260206000206000610ae051905b8481106202e7f85750505050506202e7f09062004c7b565b93926202e522565b60019060208386511695019481850155016202e7d8565b620082566202e83991610ae0516202e828868662004ce2565b511662001b0382610b205162004ce2565b916202e785565b5050509050565b60408101906202e85c60c08351015162004c8b565b51916202e87360a06202e31a818451015162004c8b565b51936202e888845183511462000f4e62033906565b6202e89b845186511462000f4e62033906565b60005b84518110156202e8f8576202e8b4818462004ce2565b51906103e882101562004c99576202e8f29160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e89e565b5092919360005b83518110156202ea09576202e915818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e95560406000205462007dae868962004ce2565b906202e962868a62004ce2565b51918783101562004c9957846202e98f93878f5116600052811b01845260406000205562000f4e62033a0a565b6202e99b848862004ce2565b518581101562004c99578290846202e9b4878c62004ce2565b5116600052811b0181526202e9d46040600020546200686c868962004ce2565b9190926202e9e3868a62004ce2565b519687101562004c99576202ea039662000f55956202e4b5888d62004ce2565b6202e8ff565b5050620119826202ea1a91620336a2565b90604051936202ea2a8562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202ea518562004c8b565b526000935b81518510156202e840576202ea6c858362004ce2565b51946202ea7a845162004dfe565b916000936202ea8a825162004dfe565b610b00528496855b87518110156202eb2a576202eab0610ae0516202e57c838b62004ce2565b15806202eaf2575b6202eacf575b6202eac99062004c7b565b6202ea92565b956202eae96202eac991610ae0516200a4958a8c62004ce2565b9690506202eabe565b506103e88a101562004c9957610ae0516202eb0e828a62004ce2565b511660005260038a811b0160205260406000205415156202eab8565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202ebb3578762004c9957610ae0516202eb68828c62004ce2565b51166000528b602052604060002054156202eb8f575b6202eb899062004c7b565b6202eb48565b976202ebaa6202eb89918b6202e67f8c610ae0519262004ce2565b9890506202eb7e565b5094959193965098509690959680610b805262004c995760040180610b605254956202ebe4620080c0868962006258565b610b205260009788610b40525b610b805162004c9957610b4051888110156202ec5e576202e7066202ec20916000610b8052610b605162004efa565b156202ec3f575b6202ec35610b405162004c7b565b610b40526202ebf1565b976202ec57906202e753610b4051610b605162004efa565b976202ec27565b5095939096509690969391936000915b8383106202ecf85750505050610b805162004c9957610b2051516001600160401b03811162002a23576202eca681610b605162005036565b6020610b205101610b605160005260206000206000610ae051905b8481106202ece15750505050506202ecd99062004c7b565b93926202ea56565b60019060208386511695019481850155016202ecc1565b620082566202ed1191610ae0516202e828868662004ce2565b916202ec6e565b90604082016202ed3260a06202e31a818451015162004c8b565b51908051825103620089ef5760005b81518110156202ed9c576202ed57818362004ce2565b51906103e882101562004c9957611fbb6202ed969260018060a01b0388511660005260031b0160205262000f5560406000205462007d41838762004ce2565b6202ed41565b5092909260005b81518110156202ee3e576202edb9818362004ce2565b51906103e88083101562004c995760018060a01b039081865116600052611fbb60039481602091871b0181526202edfb60406000205462007dae878d62004ce2565b9290936202ee0a878a62004ce2565b519081101562004c99576202ee389762000f55968b51166000521b01905260406000205562000f4e62033a0a565b6202eda3565b506202ee4c919350620336a2565b604051926202ee5b8462002b00565b60018452602036818601376001600160a01b03610b808190529051166202ee828462004c8b565b52604051906202ee928262002ac7565b6000825260003681376000935b81518510156202e840576202eeb5858362004ce2565b51946202eec3845162004dfe565b916000936202eed3825162004dfe565b610b20528496855b87518110156202ef7e576202ef02610b80516202eef9838b62004ce2565b51168b620334e1565b15806202ef44575b6202ef21575b6202ef1b9062004c7b565b6202eedb565b956202ef3b6202ef1b91610b80516200a4958a8c62004ce2565b9690506202ef10565b506103e88a101562004c9957610b80516202ef60828a62004ce2565b5116600052611fbb8a60031b0160205260406000205415156202ef0a565b509793929096949195976000986103e88610159560031b98611fbb8a019a5b89518110156202f008578762004c9957610b80516202efbd828c62004ce2565b51166000528b602052604060002054156202efe4575b6202efde9062004c7b565b6202ef9d565b976202efff6202efde918b6202e8288c610b80519262004ce2565b9890506202efd3565b5094959193965098509690959680610b405262004c9957611fbc0180610b005254956202f03a620080c0868962006258565b610b605260009788610ae0525b610b405162004c9957610ae051888110156202f0e5576202f0766202f08c916000610b4052610b005162004efa565b610b805191549060031b1c16610b205162033539565b156202f0ab575b6202f0a1610ae05162004c7b565b610ae0526202f047565b976202f0de906202f0c3610ae051610b005162004efa565b610b805191549060031b1c1662001b0382610b605162004ce2565b976202f093565b5095939096509690969391936000915b8383106202f17f5750505050610b405162004c9957610b6051516001600160401b03811162002a23576202f12d81610b005162005036565b6020610b605101610b005160005260206000206000610b8051905b8481106202f1685750505050506202f1609062004c7b565b93926202ee9f565b60019060208386511695019481850155016202f148565b620082566202f1a991610b80516202f198868662004ce2565b511662001b0382610b605162004ce2565b916202f0f5565b9060408201916202f1cb60a0620077f3818651015162004c8b565b51928051845103620089ef5760005b81518110156202f234576202f1f0818362004ce2565b51906103e882101562004c99576202f22e9160018060a01b03855116600052600390811b0160205262000f5560406000205462007d41838962004ce2565b6202f1da565b5060005b81518110156202f2d2576202f24e818362004ce2565b51906103e8918281101562004c995760018060a01b03908186511660005260039081602091811b0181526202f28e60406000205462007dae868c62004ce2565b9190926202f29d868962004ce2565b519687101562004c99576202f2cc9662000f55958a5116600052811b01905260406000205562000f4e62033a0a565b6202f238565b506202f2e0919350620336a2565b604051926202f2ef8462002b00565b60018452602036818601376001600160a01b03610b208190529051166202f3168462004c8b565b52604051906202f3268262002ac7565b6000825260003681376000935b81518510156202e840576202f349858362004ce2565b51946202f357845162004dfe565b916000936202f367825162004dfe565b610b00528496855b87518110156202f407576202f38d610b20516202e57c838b62004ce2565b15806202f3cf575b6202f3ac575b6202f3a69062004c7b565b6202f36f565b956202f3c66202f3a691610b20516200a4958a8c62004ce2565b9690506202f39b565b506103e88a101562004c9957610b20516202f3eb828a62004ce2565b511660005260038a811b0160205260406000205415156202f395565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202f490578762004c9957610b20516202f445828c62004ce2565b51166000528b602052604060002054156202f46c575b6202f4669062004c7b565b6202f425565b976202f4876202f466918b6202e67f8c610b20519262004ce2565b9890506202f45b565b5094959193965098509690959680610b605262004c995760040180610ae05254956202f4c1620080c0868962006258565b610b805260009788610b40525b610b605162004c9957610b4051888110156202f56c576202f4fd6202f513916000610b6052610ae05162004efa565b610b205191549060031b1c16610b005162033539565b156202f532575b6202f528610b405162004c7b565b610b40526202f4ce565b976202f565906202f54a610b4051610ae05162004efa565b610b205191549060031b1c1662001b0382610b805162004ce2565b976202f51a565b5095939096509690969391936000915b8383106202f6065750505050610b605162004c9957610b8051516001600160401b03811162002a23576202f5b481610ae05162005036565b6020610b805101610ae05160005260206000206000610b2051905b8481106202f5ef5750505050506202f5e79062004c7b565b93926202f333565b60019060208386511695019481850155016202f5cf565b620082566202f63091610b20516202f61f868662004ce2565b511662001b0382610b805162004ce2565b916202f57c565b156202f63f57565b60405162461bcd60e51b815260206004820152601d60248201527f54686520726566756e6420616d6f756e74206973206f766572666c6f770000006044820152606490fd5b156202f68c57565b60405162461bcd60e51b815260206004820152602360248201527f54686520746f74616c20726566756e6420616d6f756e74206973206f766572666044820152626c6f7760e81b6064820152608490fd5b156202f6e557565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20776974686472617761626c6520616d6f756e74206973604482015268206f766572666c6f7760b81b6064820152608490fd5b611f44805482101562004c99576000526007602060002091020190600090565b815180519192916001600160401b03811162002a23576202f77e818562005036565b6020809201846000528260002060005b8381106202f7f5575050505060c08260069262002bc395940151600185015560408101516002850155606081015160038501556202f7d6608082015115156004860162005795565b6202f7e960a082015160058601620056c2565b01511515910162005795565b825182820155918401916001016202f78e565b611f448054600160401b81101562002a23576202f82b916001820190556202f73c565b91909162005cff5762002bc3916202f75c565b611fb4908154600160401b81101562002a23576001810180845581101562004c995762002bc392600052602060002001620056c2565b62006a286202f883916200754d565b613f78805480600052613f76908160205260ff60096040600020015460081c1662032a4a57613f73600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202f8e460406000206200369d565b90600080611f4a54905b81811062032a03575b505015620329e7575b60005b60208301519081518110156202f93b5762000f55620077196201170b620076f96020620067ff866202f9359862004ce2565b6202f903565b505060005b602083015180518210156202f98857620076f96020620067ff846202f9659462004ce2565b90606482101562004c99576202f982914290611f4b015562004c7b565b6202f940565b50506000905b602083015180518310156200b13957826202f9a99162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036202fbba57604001906202f9ea60c08351015162004c8b565b51936202fa0160a0620077f3818651015162004c8b565b51916202fa1286518551146202e0ca565b6202fa2186518451146202e130565b60005b86518110156202fb48576202fa3a818662004ce2565b516103e881101562004c9957600160ff60076202fa609360031b0154161515146202e192565b6202fa6c818562004ce2565b516202fa79828762004ce2565b51906103e882101562004c99576202fa9b906006809360031b01549062006049565b6202faa7848962004ce2565b51926103e884101562004c99576202fac49360031b01556202e1ea565b6202fad0818562004ce2565b516202fadd828762004ce2565b51906103e882101562004c99576202fb06916003906001600160a01b03620118fd868d62004ce2565b91906202fb14828862004ce2565b51906103e882101562004c99576202fb429362000f55926003906001600160a01b0362011951878f62004ce2565b6202fa24565b5094915091620119826202fb5c91620336a2565b93604051926202fb6c8462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6202fb97938762004ce2565b6202fb78565b50945092602092506202fbb1915062004c7b565b9190506202f98e565b6020819492939401516026811015620029ab576002036202fd4e576040018051928351906202fbf262007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b86518110156202fd38576202fc2b818862004ce2565b516103e881101562004c995760ff60076202fc4d9260031b015416156202e2a2565b6202fc59818862004ce2565b516103e881101562004c995760031b600701805460ff191660011790556202fc82818562004ce2565b516202fc8f828962004ce2565b51906103e882101562004c995760056202fcad9260031b01620056c2565b6202fcb9818662004ce2565b516202fcc6828962004ce2565b516103e881101562004c995760031b600101556202fce5818762004ce2565b516202fcf2828962004ce2565b516103e881101562004c995760031b600201556202fd11818862004ce2565b51906103e882101562004c9957600060066202fd329360031b015562004c7b565b6202fc15565b509591509350602092506202fbb1915062004c7b565b929160208401516026811015620029ab5760030362030362576202fd7a60c06040860151015162004c8b565b5160a0916202fda36202fd94846040890151015162004c8b565b51936040880151015162004caf565b51936202fdb8835185511462000f4e62033906565b6202fdcb835186511462000f4e62033906565b60005b83518110156202fe27576202fde4818662004ce2565b51906103e882101562004c995760036202fe219260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b6202fdce565b509095919560005b87518110156202ff52576202fe45818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526202fe7d60406000205462007dae838962004ce2565b906202fe8a838862004ce2565b51916103e883101562004c995760036202fec19360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b6202fecd818662004ce2565b516103e881101562004c99576003906001600160a01b036202fef0848c62004ce2565b5116600052811b016020526202ff116040600020546200686c838962004ce2565b91906202ff1f828862004ce2565b51906103e882101562004c99576202ff4c93600362000f55938d62007e678760018060a01b039262004ce2565b6202fe2f565b50926202ff6a919294506200c6fd90969596620336a2565b92604051906202ff7a8262002b00565b6001825260203681840137516001600160a01b03166202ff9a8262004c8b565b526000945b80518610156203034e576202ffb5868262004ce2565b51610960526202ffc6855162004dfe565b966000946202ffd6845162004dfe565b610a005260009460005b8851811015620300a6578a89620300106001600160a01b0362030004858462004ce2565b5116610960516203348a565b158062030060575b62030031575b50506203002b9062004c7b565b6202ffe0565b98620300559162001b0382859c62007f8f6203002b9760018060a01b039262004ce2565b9790508a896203001e565b5050506103e861096051101562004c99576001600160a01b0362030085828b62004ce2565b5116600052600361096051811b016020528a89604060002054151562030018565b50909895979498969291939660005b885181101562030149576103e861096051101562004c99576001600160a01b03620300e1828b62004ce2565b5116600052600361096051811b016020526040600020541562030110575b6203010a9062004c7b565b620300b5565b996203010a9062030140906001600160a01b036203012f8e8d62004ce2565b511662001b0382610a005162004ce2565b9a9050620300ff565b50985096959291909396610960516103e8811015806109805262004c995760031b60040154986203017f620080c0898c62006258565b610a40526000610ac0526000610aa0525b6109805162004c9957610aa0518a8110156203025957620301c5620301e29160006109805260046109605160031b0162004efa565b9054610a005160039290921b1c6001600160a01b03169062033539565b1562030201575b620301f7610aa05162004c7b565b610aa05262030190565b6000610980526203021f610aa05160046109605160031b0162004efa565b60018060a01b0391549060031b1c1662030240610ac051610a405162004ce2565b526203024f610ac05162004c7b565b610ac052620301e9565b50979294959093985095909560005b82811062030302575050506109805162004c9957610a4051516001600160401b03811162002a2357620302a58160046109605160031b0162005036565b6020610a40510160046109605160031b01600052602060002060005b838110620302e45750505050620302d89062004c7b565b9492959091956202ff9f565b82516001600160a01b031681830155602090920191600101620302c1565b62030348906001600160a01b036203031b828562004ce2565b51166203032f610ac051610a405162004ce2565b526203033e610ac05162004c7b565b610ac05262004c7b565b62030268565b5050936202fbb19193506020925062004c7b565b909260208101516026811015620029ab576004036203059a5760400160c093620303946200cb23868451015162004c8b565b5190620303ab60a0620077f3818651015162004c8b565b5193620303c0875184511462000f4e62033906565b620303d3875185511462000f4e62033906565b620303e6875186511462000f4e62033906565b60005b87518110156203042e57620303ff818662004ce2565b51906103e882101562004c995762030428916003906001600160a01b0362011d90848d62004ce2565b620303e9565b509095919593929360005b835181101562030557576203044f818762004ce2565b516103e881101562004c99576003906001600160a01b0362030472848862004ce2565b5116600052811b016020526203049360406000205462007dae838862004ce2565b90620304a0838962004ce2565b51916103e883101562004c9957620304c9926003906001600160a01b0362011e52878b62004ce2565b620304d5818762004ce2565b516103e881101562004c99576003906001600160a01b03620304f8848c62004ce2565b5116600052811b01602052620305196040600020546200686c838862004ce2565b91905062030528818862004ce2565b51916103e883101562004c995762030551926003906001600160a01b0362011ef5858e62004ce2565b62030439565b5093620305719192969350620084d162007e9f91620336a2565b9260005b83518110156202fb9d578062000f55620079ba62030594938762004ce2565b62030575565b60208101516026811015620029ab57600503620305c4576020919262000f556202fbb1926202f1b0565b60208101516026811015620029ab576006036203075a57604001620305ee60c08251015162004c8b565b51936203060560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620306635762030634818562004ce2565b51906103e882101562004c99576203065d916003906001600160a01b036201255d848c62004ce2565b6203061e565b509060005b865181101562030704576203067e818562004ce2565b516103e881101562004c99576003906001600160a01b03620306a1848b62004ce2565b5116600052811b01602052620306c260406000205462007dae838862004ce2565b9190620306d0828762004ce2565b51906103e882101562004c9957620306fe9362000f55926003906001600160a01b0362011e52878f62004ce2565b62030668565b509491620307199193506201198290620336a2565b9160405194620307298662002ac7565b60008652600036813760005b83518110156202fb9d578062000f55620079ba62030754938762004ce2565b62030735565b60208101516026811015620029ab57600703620307e057604001926203078560c08551015162004c8b565b51916203079760a08651015162004c8b565b5194515191620307af845187511462000f4e62033906565b60005b84518110156202fb9d57620307da9062000f556001600160a01b0380620126fb848a62004ce2565b620307b2565b60208194939401516026811015620029ab576008036203084e5760c060406203080d920151015162004c8b565b519160005b83518110156203083c5762030836906001600160a01b0380620127e3838862004ce2565b62030812565b509260209192506202fbb19062004c7b565b60208101516026811015620029ab57600903620308a75760c0604062030878920151015162004c8b565b519160005b83518110156203083c57620308a1906001600160a01b038062012877838862004ce2565b6203087d565b60208101516026811015620029ab57600a036203092d5760400190620308d860a06200dacd60c08551015162004c8b565b5192620308ed835185511462000f4e62033906565b60005b83518110156203091a5762030914906001600160a01b038062012913838862004ce2565b620308f0565b50936202fbb19193506020925062004c7b565b6020819493929401516026811015620029ab57600b03620309b857604001926203095c60c08551015162004c8b565b519351519162030974855184511462000f4e62033906565b60005b8551811015620309a5576203099f9062000f556001600160a01b0380620129c6848b62004ce2565b62030977565b50935091602091506202fbb19062004c7b565b90919260208201516026811015620029ab57600c0362030aeb5760606040830151015192620309e7846202d715565b60005b84518110156203091a5760e062030a0a8260606040880151015162004ce2565b5101511562030a825762030a2b620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030a4e60059162005c89565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c89565b620309ea565b62030a9a620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030abd60059162005c49565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c49565b92919060208101516026811015620029ab57600d0362030b545760400192602062030b1b60a08651015162004c8b565b51945101519162030b3085518451146202de09565b60005b8551811015620309a5578062012ba762030b4e928662004ce2565b62030b33565b60208194929401516026811015620029ab57600e0362030bbd5760400190602062030b8460a08451015162004c8b565b51925101519362030b9983518651146202de09565b60005b8351811015620309a5578062012cbb62030bb7928862004ce2565b62030b9c565b9060208294939401516026811015620029ab57600f0362030cf1576060604083015101519262030bed846202d715565b60005b84518110156203091a5760e062030c108260606040880151015162004ce2565b5101511562030c885762030c31620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030c5460059162005c89565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c89565b62030bf0565b62030ca0620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030cc360059162005c49565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c49565b9060208194939401516026811015620029ab5760100362030d6257604001519062030d2560a0608084015193015162004c8b565b519362030d3a835186511462000f4e62033906565b60005b8351811015620309a5578062000f55620096a562030d5c938762004ce2565b62030d3d565b60208194929401516026811015620029ab5760110362030f7b576040019062030d9660a06200dacd60c08551015162004c8b565b519362030da783518651146202d58d565b60005b835181101562030dd85762030dd29062000f556001600160a01b038062012f3e848962004ce2565b62030daa565b5093509062030de79062033586565b90611f46549362030dfe620080c084518762006258565b9060009260005b87811062030f60575060005b855181101562030eb8576000805b89811062030e69575b501562030e41575b62030e3b9062004c7b565b62030e11565b9362030e3b9062030e60906001600160a01b036200e3f8888a62004ce2565b94905062030e30565b62030e748162004e52565b90546001600160a01b0360039290921b1c81169062030e94858b62004ce2565b51161462030ead5762030ea79062004c7b565b62030e1f565b505060013862030e28565b50955093925062030ec98262004dfe565b8051906001600160401b03821162002a235760209062030ee98362004f93565b01611f46600052602060002060005b83811062030f42575050505060005b82811062030f1f575050506202fbb160209162004c7b565b62030f3c9062000f556001600160a01b0362001a37838662004ce2565b62030f07565b82516001600160a01b03168183015560209092019160010162030ef8565b936200e54462030f75916200e5268762004e52565b62030e05565b60208194929401516026811015620029ab576012036203119e576040019062030faf60a06200dacd60c08551015162004c8b565b519362030fc083518651146202d58d565b60005b835181101562030ff15762030feb9062000f556001600160a01b0380620131a0848962004ce2565b62030fc3565b5093509190620310019062033586565b611f4654620310108162004dfe565b906000926000915b808310620310c5575050506203102e8262004dfe565b8051906001600160401b03821162002a23576020906203104e8362004f93565b01611f46600052602060002060005b838110620310a7575050505060005b82811062031084575050506202fbb160209162004c7b565b620310a19062000f556001600160a01b0362001a37838662004ce2565b6203106c565b82516001600160a01b0316818301556020909201916001016203105d565b91956000959193959760005b85518110156203118f57620310e68962004e52565b90546001600160a01b0360039290921b1c81169062031106838962004ce2565b5116146203111f57620311199062004c7b565b620310d1565b509750956001959391955b806203115e575b156203114957620311429062004c7b565b9162031018565b936200e54462031142916200e5268762004e52565b506203116a8162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562031131565b5097969096959391956203112a565b60208101516026811015620029ab57601303620311f75760408091015101519260005b8451811015620311e6578062000f5562009c19620311e0938862004ce2565b620311c1565b509250906202fbb160209162004c7b565b60208101516026811015620029ab57601403620313a457604001906203122260c08351015162004c8b565b51936203123960a0620077f3818651015162004c8b565b51916203124a86518551146202e0ca565b6203125986518451146202e130565b60005b86518110156203134f5762031272818562004ce2565b516203127f828762004ce2565b51906103e882101562004c995760066203129f9260031b01549062006049565b90620312ac838862004ce2565b51916103e883101562004c99576006620312cb9360031b01556202e1ea565b620312d7818562004ce2565b51620312e4828762004ce2565b51906103e882101562004c99576203130d916003906001600160a01b03620118fd868d62004ce2565b91906203131b828862004ce2565b51906103e882101562004c9957620313499362000f55926003906001600160a01b0362011951878f62004ce2565b6203125c565b5094915091620119826203136391620336a2565b9360405192620313738462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6203139e938762004ce2565b6203137f565b929060208401516026811015620029ab5760150362031966576040840190620313d260c08351015162004c8b565b5190620313e960a0620077f3818651015162004c8b565b5193620313fe835185511462000f4e62033906565b62031411835186511462000f4e62033906565b60005b83518110156203146d576203142a818662004ce2565b51906103e882101562004c99576003620314679260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62031414565b509095919560005b875181101562031598576203148b818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620314c360406000205462007dae838962004ce2565b90620314d0838862004ce2565b51916103e883101562004c99576003620315079360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62031513818662004ce2565b516103e881101562004c99576003906001600160a01b0362031536848c62004ce2565b5116600052811b01602052620315576040600020546200686c838962004ce2565b919062031565828862004ce2565b51906103e882101562004c99576203159293600362000f55938d62007e678760018060a01b039262004ce2565b62031475565b5092620315b0919294506200c6fd90969596620336a2565b9260405190620315c08262002b00565b6001825260203681840137516001600160a01b0316620315e08262004c8b565b526000945b80518610156203034e57620315fb868262004ce2565b51610900526203160c855162004dfe565b966000946203161c845162004dfe565b610a205260009460005b8851811015620316ec578a89620316566001600160a01b036203164a858462004ce2565b5116610900516203348a565b1580620316a6575b62031677575b5050620316719062004c7b565b62031626565b986203169b9162001b0382859c62007f8f620316719760018060a01b039262004ce2565b9790508a8962031664565b5050506103e861090051101562004c99576001600160a01b03620316cb828b62004ce2565b5116600052600361090051811b016020528a8960406000205415156203165e565b50909895979498969291939660005b88518110156203177e576103e861090051101562004c99576001600160a01b0362031727828b62004ce2565b5116600052600361090051811b016020526040600020541562031756575b620317509062004c7b565b620316fb565b99620317509062031775906001600160a01b036201228f8e8d62004ce2565b9a905062031745565b50985096959291909396610900516103e8811015806109205262004c995760031b6004015498620317b4620080c0898c62006258565b6108c0526000610940526000610a60525b6109205162004c9957610a60518a811015620318715762012325620317fa9160006109205260046109005160031b0162004efa565b1562031819575b6203180f610a605162004c7b565b610a6052620317c5565b60006109205262031837610a605160046109005160031b0162004efa565b60018060a01b0391549060031b1c1662031858610940516108c05162004ce2565b52620318676109405162004c7b565b6109405262031801565b50979294959093985095909560005b8281106203191a575050506109205162004c99576108c051516001600160401b03811162002a2357620318bd8160046109005160031b0162005036565b60206108c0510160046109005160031b01600052602060002060005b838110620318fc5750505050620318f09062004c7b565b949295909195620315e5565b82516001600160a01b031681830155602090920191600101620318d9565b62031960906001600160a01b0362031933828562004ce2565b511662031947610940516108c05162004ce2565b52620319566109405162004c7b565b6109405262004c7b565b62031880565b909260208101516026811015620029ab57601603620319c45760c0604062031992920151015162004c8b565b519260005b8451811015620311e657620319be9062000f556001600160a01b0362009e60838962004ce2565b62031997565b60208101516026811015620029ab5760170362031a215760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab5760180362031a8b5760c0604062031a4b920151015162004c8b565b51611fb6805460ff191660011790559260005b8451811015620311e65762031a859062000f556001600160a01b0362009f2c838962004ce2565b62031a5e565b60208193929301516026811015620029ab5760190362031c005760008091604082910160a08082510151805162031bc7575b5050519060e08201519162031ae16200686560c060018060a01b0393015162004c8b565b511690602083519301915af13d1562031bbe573d9062031b018262002edc565b9162031b11604051938462002b1c565b82523d6000602084013e5b1562031b3057506202fbb160209162004c7b565b62004c779062031b9d604051916000805160206203401b833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162031b8c816059946020868601910162002d89565b810103603981018452018262002b1c565b60405162461bcd60e51b815260206004820152918291602483019062002dae565b60609062031b1c565b62031bd29062004c8b565b515162031be1575b8062031abd565b819250620068659062031bf79251015162004c8b565b51903862031bda565b60208101516026811015620029ab57601a0362031c825760a0604062031c2a920151015162004c8b565b5162031c3a60038251146202d58d565b62031c458162004c8b565b519162031c56620138088362004caf565b51916200f6a9576020926202fbb1926001036200a16d576200a14d906200a140611fb191825462006049565b60208101516026811015620029ab57601b036203206d5750919062031cb2611faf54620061966200a1e362033793565b505062031cbe62033857565b506000805b6103e8811062032021575b505062031cda62006172565b9062031ce9613f745462004dfe565b906000946000905b6103e882101562032015578160031b9260ff6007850154161562031dfd5760009660028501541562031de4576000975b62004c9957600485015488101562031de45762031ddd62031dd6899a62031d5062031d879b60048a0162004efa565b60018060a01b0391549060031b1c16806000526003890160205262031d7b8b60406000205462005f19565b9c9062000f4e62033857565b62031dca62031dae62031da260009e60028d01549062005f19565b919062000f4e62033857565b82600052611f476020526200a140604060002091825462006049565b62001b03828b62004ce2565b9962004c7b565b9762031d21565b9290935062031df591965062004c7b565b909462031cf1565b95969392509350505b62031e118262004dfe565b9160009160005b82811062031f7f57505050611f48549162031e38620080c0848462006258565b926000906000905b80821062031f6257505060005b83811062031ecc5750508251929150506001600160401b03821162002a235760209062031e7a8362004f58565b01611f48600052602060002060005b83811062031eae57505050506202fbb16020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162031e89565b6000805b83811062031f1a575b501562031ef2575b62031eec9062004c7b565b62031e4d565b9062031eec9062031f11906001600160a01b0362008248858762004ce2565b91905062031ee1565b6001600160a01b038062031f2f858862004ce2565b51169062031f3e838a62004ce2565b51161462031f575762031f519062004c7b565b62031ed0565b505060013862031ed9565b90916200825662031f789162009b6f8562004e36565b9062031e40565b6000805b85811062031fcd575b501562031fa5575b62031f9f9062004c7b565b62031e18565b9262031f9f9062031fc4906001600160a01b0362008248878662004ce2565b93905062031f94565b6001600160a01b038062031fe2858762004ce2565b51169062031ff1838a62004ce2565b5116146203200a57620320049062004c7b565b62031f83565b505060013862031f8c565b93505092939062031e06565b8060039594951b9060ff6007830154161562032063576200a622620074b962000f55946200a6166203205a9560026200a60c8762005deb565b93929362031cc3565b5093929362031cce565b60208101516026811015620029ab57601c03620320ca5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d03620320f0575b506202fbb160209162004c7b565b919060208301516026811015620029ab57601e03620322d157604083019060a09362032120858451015162004c8b565b515162032131868551015162004caf565b5151036200aeb05762032148858451015162004c8b565b515162032159868551015162004cc0565b5151036200ae34576203217462007a1a868551015162004c8b565b519362032181826202f1b0565b60009660005b8751811015620321ef57620321b26200acf0620321a5838962004ce2565b51620074a9848b62004ce2565b80620321cb575b50620321c59062004c7b565b62032187565b90620321e0620321e89a620321c59362006049565b9a906202f684565b90620321b9565b5096929450945091508062032211575b50506202fbb16020915b9150620320e2565b6203223d60018060a01b0391828451166000526200ad84611f4591826020526040600020549062006049565b82845116600052602052604060002055600080611f4654905b81811062032290575b505091602093916202fbb193156203227b575b505091620321ff565b620322889151166200662e565b388062032272565b836203229c8262004e52565b90549060031b1c168486511614620322bf57620322b99062004c7b565b62032256565b50600191508290506202fbb16203225f565b909160208101516026811015620029ab57601f036203230b57602091620323056200af6460406202fbb19401515162004c8b565b62032209565b60208101516026811015620029ab5760200362032331575b506202fbb160209162032209565b60208101516026811015620029ab57602180910362032352575b5062032323565b602082015160268110156200b0e1576022036203238e5750506202fbb1602091611fb660ff1981541690556203238762005023565b916203234b565b602082015160268110156200b0e157602303620323b5575b50506202fbb160209162032387565b602082015160268110156200b0e157602414620323a657602082015160268110156200b0e157602514620323a657602082959394920151906026821015620329d357506015036201069a5760408401906203241560c08351015162004c8b565b51906203242c60a0620077f3818651015162004c8b565b519362032441835185511462000f4e62033906565b62032454835186511462000f4e62033906565b60005b8351811015620324b0576203246d818662004ce2565b51906103e882101562004c99576003620324aa9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62032457565b509095919560005b8751811015620325db57620324ce818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526203250660406000205462007dae838962004ce2565b9062032513838862004ce2565b51916103e883101562004c995760036203254a9360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62032556818662004ce2565b516103e881101562004c99576003906001600160a01b0362032579848c62004ce2565b5116600052811b016020526203259a6040600020546200686c838962004ce2565b9190620325a8828862004ce2565b51906103e882101562004c9957620325d593600362000f55938d62007e678760018060a01b039262004ce2565b620324b8565b5092620325f3919294506200c6fd90969596620336a2565b9260405190620326038262002b00565b6001825260203681840137516001600160a01b0316620326238262004c8b565b526000945b8051861015620329be576203263e868262004ce2565b51610a80526203264f855162004dfe565b966000946203265f845162004dfe565b6109e05260009460005b88518110156203272f578a89620326996001600160a01b036203268d858462004ce2565b5116610a80516203348a565b1580620326e9575b620326ba575b5050620326b49062004c7b565b62032669565b98620326de9162001b0382859c62007f8f620326b49760018060a01b039262004ce2565b9790508a89620326a7565b5050506103e8610a8051101562004c99576001600160a01b036203270e828b62004ce2565b51166000526003610a8051811b016020528a896040600020541515620326a1565b50909895979498969291939660005b8851811015620327d2576103e8610a8051101562004c99576001600160a01b036203276a828b62004ce2565b51166000526003610a8051811b016020526040600020541562032799575b620327939062004c7b565b6203273e565b996203279390620327c9906001600160a01b03620327b88e8d62004ce2565b511662001b03826109e05162004ce2565b9a905062032788565b50985096959291909396610a80516103e8811015806109a05262004c995760031b600401549862032808620080c0898c62006258565b6108e05260006108a05260006109c0525b6109a05162004c99576109c0518a811015620328e2576203284e6203286b9160006109a0526004610a805160031b0162004efa565b90546109e05160039290921b1c6001600160a01b03169062033539565b156203288a575b620328806109c05162004c7b565b6109c05262032819565b60006109a052620328a86109c0516004610a805160031b0162004efa565b60018060a01b0391549060031b1c16620328c96108a0516108e05162004ce2565b52620328d86108a05162004c7b565b6108a05262032872565b50979294959093985095909560005b8281106203298b575050506109a05162004c99576108e051516001600160401b03811162002a23576203292e816004610a805160031b0162005036565b60206108e051016004610a805160031b01600052602060002060005b8381106203296d5750505050620329619062004c7b565b94929590919562032628565b82516001600160a01b0316818301556020909201916001016203294a565b620329b8906001600160a01b03620329a4828562004ce2565b5116620143046108a0516108e05162004ce2565b620328f1565b5050936202fbb19193506020925091620323a6565b634e487b7160e01b60005260045260246000fd5b8151620329fd906001600160a01b031662006658565b6202f900565b62032a0e8162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462032a3d5762032a379062004c7b565b6202f8ee565b505050600138806202f8f7565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062032ad1575050565b62002bc391600052601f6020600020910160051c81019062004f3f565b90600160401b811162002a2357815481835580821062032b0d57505050565b62002bc392600052601f6020600020918180850160051c840194168062032b3c575b500160051c019062004f3f565b600019908186019182549160200360031b1c1690553862032b2f565b9060ff809160031b9316831b921b19161790565b62032b8462032b7d6000936202f73c565b50620034fe565b92825b8451805182101562032c7a578162032b9f9162004ce2565b516103e881101562004c9957600390811b9460018060a01b0385166000526020918601825262032bdc604096600188600020549101549062005f19565b91901562032c45579062032bf09162006049565b95901562032c0b57505062032c059062004c7b565b62032b87565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b865162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b505092505090565b60005b613f78549081600052613f7691602092808452600393604092858460002001805486101562032de35762032cbe8662032cca9262004efa565b905490881b1c6202f73c565b509560ff6006809801541662032cf2575b505050505062032cec915062004c7b565b62032c85565b8160005283835262032d1a62032d0e8783886000200162004efa565b905490831b1c6202f73c565b509662032d3a876001809a01549285600052878752886000200162004efa565b905490831b1c918360005285855262032d5a886005896000200162004efa565b9054911b1c9060009260649283810293818504149015171562032dcf579062032d839162004f13565b1062032dc7575b62032d96578062032cdb565b6009945060005252600020019060ff19918183825416179055613f73918254161790556000613f71556000613f7255565b508562032d8a565b634e487b7160e01b84526011600452602484fd5b505050505050506000613f7854905b81600052613f76602052600380604060002001805483101562032e6857600662032e2f62032e238560ff9462004efa565b905490851b1c6202f73c565b500154161562032e635762032e448262033078565b90811015620029ab576201514d5762032e5d9062004c7b565b62032df2565b505050565b50505060ff1990613f73600383825416179055600052613f766020526009604060002001908154169055565b613f785490600090828252613f76916020928084526003906040908282852001549562032ec18762002be9565b9662032ed08451988962002b1c565b80885262032ee1601f199162002be9565b013682890137845b88865282825284848720015481101562032f32579062032f278262000f5562032f158897969562033078565b62032f21838d62004ce2565b62005277565b909192935062032ee9565b5050505090919350815b835181101562032fa95762032f52818562004ce2565b518281101562032f9557600180911462032f78575062032f729062004c7b565b62032f3c565b613f73805460ff191690911790555050613f71819055613f725550565b634e487b7160e01b84526021600452602484fd5b50909150613f728054421060001462032fd05750613f739060ff19825416179055613f7155565b9050613f73600160ff1982541617905581613f715555565b1562032ff057565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b156203303d57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b613f785490600091808352613f76806020528260408520600301906203309e9162004efa565b90549060031b1c620330b0816202f73c565b50600101549383865282602052806040872060040190620330d19162004efa565b90549060031b1c9284875280602052816040882060050190620330f49162004efa565b90549060031b1c9487526020526040862060060190620331149162004efa565b90549060031b1c9062033127906202f73c565b506006015460ff16620331735750620331639262005edc62022e5a9383620331536203315b9562005ee3565b969062033035565b929062033035565b11156203316d5790565b50600190565b6200f78d925062033163936203318d6203315b9362005ee3565b949062033035565b90929192620331a5825162004dfe565b600091620331b4815162004dfe565b8390845b86518110156203324f576001600160a01b03620331db816202e57c848b62004ce2565b15806203321a575b620331fb575b50620331f59062004c7b565b620331b8565b8196620332129162008248620331f5948b62004ce2565b9590620331e9565b506103e88a101562004c99578062033233838a62004ce2565b511660005260038a811b016020526040600020541515620331e3565b509295919694509260005b8751811015620332d0576103e886101562004c99576001600160a01b038062033284838b62004ce2565b5116600052600387811b0160205260406000205415620332b1575b50620332ab9062004c7b565b6203325a565b8195620332c8916200e3f8620332ab948c62004ce2565b94906203329f565b5092509450926103e8831015938462004c995760049586600395861b019687549462033301620080c0828862006258565b9460009689889a5b6203347557818b1015620333aa57506000998b620333446203332c838362004efa565b90546001600160a01b0392918e1b1c82168a62033539565b1562033367575b5050906203335c8b94939262004c7b565b9a9091929362033309565b91998c9594939290916203337d908c9062004efa565b9054908d1b1c1662033390828b62004ce2565b526203339c9062004c7b565b9890919293508b386203334b565b9697949a98505091975092506000915b8383106203345057505050506203343b578051926001600160401b038411620334265750620333ea838362005036565b602080910191600052806000209060005b8481106203340a575050505050565b83516001600160a01b03168382015592810192600101620333fb565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203346e9062008256906001600160a01b036200a495868662004ce2565b91620333ba565b603285634e487b7160e01b6000525260246000fd5b9060005b6103e883101562004c99576003600484821b018054831015620173d15782620334b79162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620334db9062004c7b565b6203348e565b9060005b6103e883101562004c99576003611fbc84821b018054831015620173d157826203350f9162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620335339062004c7b565b620334e5565b9060005b82518110156200661f576001600160a01b03806203355c838662004ce2565b5116908316146200660c57620335729062004c7b565b6203353d565b801562001e4f576000190190565b9081519060005b60001983810184811162001e4f5782101562033654576001820180831162001e4f575b848110620335cb575050620335c59062004c7b565b6203358d565b6001600160a01b0380620335e0858962004ce2565b511681620335ef848a62004ce2565b5116146203360a575b50620336049062004c7b565b620335b0565b828692960182811162001e4f5762033604926203364d926203363162033646938b62004ce2565b51166203363f898b62004ce2565b5262033578565b9562033578565b90620335f8565b505090620336628162004dfe565b9060005b81811062033675575090925050565b6203369c906001600160a01b036203368e828862004ce2565b511662001b03828662004ce2565b62033666565b80519160005b60001984810185811162001e4f578210156203375a576001820180831162001e4f575b858110620336e6575050620336e09062004c7b565b620336a8565b620336f2838662004ce2565b51620336ff828762004ce2565b511462033718575b620337129062004c7b565b620336cb565b948181019080821162001e4f576203374b62033752916203373e62033712948962004ce2565b516203363f8a8a62004ce2565b9662033578565b905062033707565b50509091620337698162004dfe565b9060005b8181106203377c575090925050565b806202b5446203378d928762004ce2565b6203376d565b604051620337a18162002a07565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203380f8162002a8f565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620338658162002b00565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b6040516203389f8162002b00565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620338ca8162002a8f565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620339148162002b00565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620339448162002b00565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620339778162002b00565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620339ac8162002b00565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620339e58162002b00565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b60405162033a188162002b00565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b60405162033a478162002b00565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b60405162033a7d8162002b00565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b6026811015620029ab5780156200750a57600181146203316d576002811462033cd5576003811462033ccf576004811462033cc9576005811462033cc3576006811462033cbd576007811462033cb7576008811462033cb1576009811462033cab57600a811462033ca557600b811462033c9f57600c811462033c9957600d811462033c9357600e811462033c8d57600f811462033c87576010811462033c81576011811462033c7b576012811462033c75576013811462033c6f576014811462033c69576015811462033c63576016811462033c5d576017811462033c57576018811462033c51576019811462033c4b57601a811462033c4557601b811462033c3f57601c811462033c3957601d811462033c3357601e811462033c2d57601f811462033c27576020811462033c21576021811462033c1b576022811462033c15576023811462033c0f576024811462033c095760251462033c0457600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200662757600090815b835181101562017ac0576001600160f81b03198062033d0b83876200655e565b51169062033d1a83856200655e565b51160362017ab95762033d2d9062004c7b565b62033ceb565b6040519062033d428262002a8f565b60288252604036602084013760005b6014811062033d5f57505090565b60139080820391821162001e4f57600382901b916001600160fd1b0381160362001e4f5760ff80831162001e4f5760019262033da89084901b6001600160a01b03861662005070565b60f081168282160391821162001e4f5762033dcc9060f41b600f60f81b1662033e35565b82841b916001600160ff1b038416840362001e4f5762033e099160001a62033df584896200655e565b5360f81b6001600160f81b03191662033e35565b92810180911162001e4f5762033e2862033e2f9360001a91866200655e565b5362004c7b565b62033d51565b60f81c600a81101562033e5e5760300160ff811162001e4f5760f81b6001600160f81b03191690565b60570160ff811162001e4f5760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65305d206c656e677468206973206e6f742032000000000000000000000000000034dd862f2dd4c33543972cb453e26b9cc23a6eb518176c0de5db12d08007dc6d617665203120656c656d656e7400000000000000000000000000000000000000dd388e0eb473c306304080e96aea031c0fb4686a37f7b1a3c8a2301cd0627f0b7420686176652074776f20656c656d656e747300000000000000000000000000546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f742031000000000000000000000000000000742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f74202e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973748b3bb33683ac4daad017d30a0e9972b15e6854cd1f296e14295598f57ce03d506470626d4cb7d88e800a628455fe3f45216f254e8294f25d17ea4ac7e2f4f0a35d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d70546865206c656e677468206f6620746f6b656e436c617373417272617920616e6c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a2646970667358221220b685dcba65bc09a69896a133967a43e37ffb4ec0bce8c14fedd584da1a59c96064736f6c63430008130033", + "deployedBytecode": "0x610ba08060405260043610156200001557600080fd5b600090813560e01c908163036ee8501462002925575080630fda3e1e146200288d57806310ade3ea146200285e5780631797631d14620027d75780631c75255a146200277157806323b65c7814620026ea5780632514a6b414620024c45780632eeb063b14620022f45780633fb18aec146200228a57806356424cf4146200226b5780635c00d98714620022485780635d0b184914620002055780635f1231ea146200215e5780635f5d5f0014620020d7578063681ece9d14620020925780636c0d4fa41462001eff5780637daa10ce1462001ee25780638129fc1c1462001b1357806383e4cccf14620018aa578063864f9f7a146200186c57806386ad77e2146200150b5780638c7a63ae146200147a578063942d59fa14620012975780639f36145f1462001211578063a064c4f114620011e6578063acf80bc414620011a8578063aec2668714620010be578063aefca42a146200109d578063c41f94821462001055578063c591aa981462001007578063d5a172f21462000fdb578063d6a93c511462000f89578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e362005284565b50610c80620001f162002b40565b62000200604051809262002975565bf35b80fd5b503462000202578060031936011262000202576020613f7854604051908152f35b5060031960203682011262000e60576001600160401b036004351162000e6057606090600435360301126200020257604051620002638162002a8f565b6200027360043560040162002960565b81526004356024013560e08190526001600160401b03811162000c5457600435013660238201121562000c54576004620002b4910135806101405262002be9565b90620002c4604051928362002b1c565b6101405182526020820160a0526101405160e05160043501906024369160051b8301011162000c585760240161012052825b6101405160051b60e05160043501906024610120519183010181101562000e6857356101008190526001600160401b03811162000c5457606091013603602319011262000202576200034f604051806101805262002a8f565b6200036860246101005160e05160043501010162002960565b610180515260446101005160e05160043501010135602681101562000e605760206101805101526101005160e051600435010160648101356101605260018060401b0360648201351162000e60576101006064820135909101360360231901126200020257620003de6040518060c05262002a55565b610160516101005160e0516004350101016001600160401b0360248201351162000e6057620004179060243691818101350101620048c1565b60c05152610160516101005160e0516004350101019160448301359260018060401b03841162000c545736604385830101121562000c5457620004606024858301013562002be9565b9162000470604051938462002b1c565b6024858301013583526020830190610160516101005160e0516004350101013660446024898701013560051b81840135840101011162000e6457806044809201350101915b6044610160516101005160e0516004350101016024898701013560051b9082810135010101831015620004fd5760208091620004f1856200494c565b815201920191620004b5565b5060c051602001939093525050610160516101005160e0519395600435909401010192506001600160401b0360648401351162000c58573660436064850135850101121562000c58576024606484013584010135906200055d8262002be9565b906200056d604051928362002b1c565b828252602082016064860135610160516101005160e051600435010101013660448660051b8301011162000c5057604401905b6064870135610160516101005160e0516004350101010160448660051b820101831015620006c1576001600160401b03833511620006bd5760e08335820136036043190112620006bd5760405191620005f98362002aab565b6001600160401b03843583016044013511620006b95762000626366044863585018181013501016200495a565b835283358201606481013560208501526084810135604085015260a48101356060850152620006589060c4016200494c565b60808401526001600160401b038435830160e4013511620006b9576020928392620006a8906101049062000699368935830160e48101350160440162002ef8565b60a0850152873501016200494c565b60c0820152815201910190620005a0565b8980fd5b8880fd5b505050929493509050604060c0510152610160516101005160e0516004350101019160018060401b0360848401351162000202573660436084850135850101121562000202576200072e62000720602460848601358601013562002be9565b604051806101a05262002b1c565b6101a0516024608485013585010135905260206101a05101916084840135610160516101005160e05160043501010101366044602460848801358801013560051b8301011162000c5457604401608052925b6084810135610160516101005160e0516004350101010192608051936044602460848501358501013560051b82010185101562000c5c576001600160401b0385351162000c585761010085359091013603604319011262000c5457604051620007e98162002a55565b604485356084850135610160516101005160e05160043501010101010135600681101562000c4c578152606485356084850135610160516101005160e05160043501010101010135602082015284356084840135610160516101005160e05160043501010101019460018060401b0360848701351162000c4c573660636084880135880101121562000c4c576200088a604460848801358801013562002be9565b966200089a604051988962002b1c565b604460848801358801013588526020880190608488013583356084880135610160516101005160e051600435010101010101366064604460848c01358c01013560051b8301011162000c5057606401915b608489013584356084890135610160516101005160e0516004350101010101016064604460848c01358c01013560051b82010184101562000b36576001600160401b03843511620006bd5760c08435820136036063190112620006bd5760405190620009578262002a39565b843581016064810135835260056084909101351015620006b9578435810160848101356020840152600460a4909101351015620006b9578435810160a4810135604084015260c481013560608401526001600160401b0360e49091013511620006b957620009d2368635830160e4810135016064016200495a565b60808301526001600160401b0385358201610104013511620006b9576080853582016101048101350136036063190112620006b9576040519062000a168262002a07565b6001600160401b038635820161010481013501606401351162000b325762000a52366064610104893585019081013501818101350101620048c1565b82526001600160401b038635820161010481013501608401351162000b325762000a90368735830161010481013501608481013501606401620049c0565b60208301526001600160401b03863582016101048101350160a401351162000b325762000ad136873583016101048101350160a48101350160640162004a4b565b60408301526001600160401b03863582016101048101350160c401351162000b325760209384939092909162000b1c9036908935016101048101350160c48101350160640162002ef8565b606082015260a0820152815201920191620008eb565b8a80fd5b505096505090919295604083015260a481356084880135610160516101005160e05160043501010101010135606083015280356084870135610160516101005160e051600435010101010160018060401b0360c48201351162000c4c57610124602094939262000bb562000c33936044369160c4810135010162002ef8565b608085015262000be160e4823560848c0135610160516101005160e0516004350101010101016200494c565b60a085015262000c0e610104823560848c0135610160516101005160e0516004350101010101016200494c565b60c0850152356084890135610160516101005160e0516004350101010101016200494c565b60e0820152815201916020608051016080529262000780565b8480fd5b8780fd5b8280fd5b8380fd5b50506101a05160c0516060015250610160516101005160e05194956004359095010101929091506001600160401b0360a48401351162000e605736604360a4850135850101121562000e605762000cbd602460a48501358501013562002be9565b9062000ccd604051928362002b1c565b602460a4850135850101358252602082019060a4850135610160516101005160e05160043501010101366044602460a48901358901013560051b8301011162000c4c57604401915b610160516101005160e05160043501010160a48701359081019087016024013560051b0160440183101562000d605760058335101562000c4c57823581526020928301920162000d15565b50935050929092608060c0510152610160516101005160e05160043501010160018060401b0360c48201351162000c585762000da7906024369160c48101350101620049c0565b60c05160a00152610160516101005160e0516004350101016001600160401b0360e48201351162000c585762000de8906024369160e4810135010162004a4b565b60c080510152610160516101005160e0516004350101016001600160401b036101048201351162000c585762000e2a9060243691610104810135010162002ef8565b60e060c051015260c05160406101805101526101805160a05152602060a0510160a05260206101205101610120529091620002f6565b5080fd5b8580fd5b60208401858152849084600435604401356001600160401b03811162000e605762000e9b90600436918135010162002ef8565b604084015282516001600160a01b03919062000ef490831662000eeb62000ecc62000ec63362033d33565b62004b44565b62000ee462000ede878a511662033d33565b62004baa565b9062004c01565b90331462004c48565b8251805182101562000f61579062000f5562000f5b928462000f1884339362004ce2565b5151161462000f4e62000f2f62000ec63362033d33565b62000ee462000ede8862000f45888c5162004ce2565b51511662033d33565b9062004c48565b62004c7b565b62000ef4565b62000f8562000f7086620067d6565b60405191829160208352602083019062002dae565b0390f35b503462000202578060031936011262000202575b6103e8811062000fb3575b602090604051908152f35b60ff60078260031b0154161562000fd55762000fcf9062004c7b565b62000f9d565b62000fa8565b50346200020257806003193601126200020257613f70546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b036200103662002944565b168152613f778452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c06200107860043562006274565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b503462000202578060031936011262000202576020613f7254604051908152f35b50346200020257806003193601126200020257613f7590815491620010e38362002be9565b91620010f3604051938462002b1c565b8383526020938484018093835285832083915b838310620011705750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620011415785850386f35b9091929382806200115f600193603f198a8203018652885162002dae565b960192019601959291909262001133565b600188819260409a99979a5162001195816200118d818962002c3e565b038262002b1c565b8152019201920191909693959662001106565b50346200020257602036600319011262000202576020906040906001600160a01b03620011d462002944565b168152611f4783522054604051908152f35b5034620002025760203660031901126200020257602062001209600435620060c4565b604051908152f35b503462000202576020366003190112620002025760406200126c916004358152613f766020522062001243816200369d565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003202565b936020860152604085015262001288606085018383166200349d565b60081c16151560808301520390f35b5034620002025760208060031936011262000e6057604051620012ba8162002a72565b60405192620012c98462002a8f565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e083015280610100809301526004358152613f7683526040902091604051926200132a8462002a72565b62001335816200369d565b84526200134560038201620034ab565b848301908152926200135a60048301620034ab565b60408601908152956200137060058401620034ab565b868201908152926200138560068201620034ab565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff8816620013c1908762005277565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d01620013f29162003202565b9451601f198d8703810160408f0152956200140d9162002f50565b905191858d830301908d0152620014249162002f50565b905190838b82030160808c01526200143c9162002f50565b9051918982030160a08a0152620014539162002f50565b955160c08801525160e0870152519085016200146f916200349d565b511515908301520390f35b5034620002025760203660031901126200020257600435906103e8821015620014f7575060031b6001810154600282015491620014ed6005620014ce6006840154936200118d604051809481930162002c3e565b6040519485948552602085015260806040850152608084019062002dae565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b50346200020257806003193601126200020257611f4280546200152e8162002be9565b916200153e604051938462002b1c565b81835283526020808420849184015b83831062001718578585611f43805490620015688262002be9565b9362001578604051958662002b1c565b82855260208501918152602081209080925b848410620015c057620015b18662000f858960405193849360408552604085019062003038565b90838203602085015262003038565b604051620015ce8162002a55565b620015de60ff8554168262003574565b600184015460208201526002840154620015f88162002be9565b9062001608604051928362002b1c565b80825260208201600287018652602086209086905b83821062001695575050505060019282602092604060069501526003870154606082015260405162001658816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301930192916200158a565b60086020600192604051620016aa8162002a39565b8654815260ff85880154818116620016c28162002f45565b85840152851c16620016d481620029a0565b604082015260028701546060820152620016f160038801620034ab565b608082015262001704600488016200363b565b60a08201528152019301910190916200161d565b604051620017268162002a55565b6200173660ff8454168262003574565b60018301546020820152600283018054620017518162002be9565b9162001761604051938462002b1c565b81835289526020808a20908a9084015b838210620017e95750505050600192826020926040600695015260038601546060820152604051620017ac816200118d8160048b0162002c3e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019201920191906200154d565b60086020600192604051620017fe8162002a39565b8654815260ff85880154818116620018168162002f45565b85840152851c166200182881620029a0565b6040820152600287015460608201526200184560038801620034ab565b608082015262001858600488016200363b565b60a082015281520193019101909162001771565b50346200020257602036600319011262000202576020906040906001600160a01b036200189862002944565b168152611f4583522054604051908152f35b5034620002025760208060031936011262000e60578160043591620018ed4784111562000f4e620018db8662005091565b620018e64762005091565b9062004d2a565b33825262001958611f4580835262001931604085205486111562000f4e620019158862005091565b3388528487526200192a604089205462005091565b9062004d96565b3384528083526200194785604086205462005056565b929062000f4e620019158862005091565b3384528252806040842055156200199a575b508080809381811562001990575b3390f115620019845780f35b604051903d90823e3d90fd5b506108fc62001978565b9050611f46805491620019ad8362004dfe565b918593865b81811062001aa0575050620019c78462004dfe565b805192906001600160401b03841162001a8c579080849392620019ed8a98979662004f93565b0191865280862090865b84811062001a6d575050505050825b82811062001a165750506200196a565b9192509062001a639062000f556001600160a01b0362001a37838662004ce2565b511662001a448362004e52565b90919082549060031b9160018060a01b03809116831b921b1916179055565b9084929162001a06565b83516001600160a01b03168184015589975092810192600101620019f7565b634e487b7160e01b88526041600452602488fd5b62001aab8162004e52565b90546001600160a01b03916003913391831b1c83160362001ada575b505062001ad49062004c7b565b620019b2565b9662001b0a91839862001af162001ad49562004e52565b9054911b1c1662001b03828962004ce2565b5262004c7b565b95903862001ac7565b50346200020257806003193601126200020257613f7080546001600160a01b03191633179055613f73805460ff19166001908117909155604051909190819062001b5d8162002ac7565b5290611f428054600082558062001e79575b508252818060405162001b828162002ac7565b5262001e6557611f438054600082558062001de6575b508252612710613f745562001dd862001bb062005bbd565b836040519162001bc08362002ac7565b81835262001cc86040519162001bd68362002ac7565b8383526040519462001be88662002ac7565b8486526040519362001bfa8562002ac7565b8585526040519462001c0c8662002ac7565b8686526040519162001c1e8362002a07565b8252602097888301526040820152606094858201526040519162001c428362002a39565b8683526003888401528660408401528686840152608083015260a082015262001c6b8262004c8b565b5262001c778162004c8b565b506040519062001c878262002a55565b6004825287868301526040820152838382015260405162001ca88162002ac7565b84815260808201528660a08201528660c08201528660e082015262005cc9565b62001cd262005bbd565b60405162001ce08162002ac7565b83815260405162001cf18162002ac7565b84815260405162001d028162002ac7565b85815260405162001d138162002ac7565b8681526040519162001d258362002ac7565b8783526040519362001d378562002a07565b8452888401526040830152848201526040519162001d558362002a39565b8583526003878401528560408401528585840152608083015260a082015262001d7e8262004c8b565b5262001d8a8162004c8b565b50856040519462001d9b8662002a55565b60058652850152604084015282015260405162001db88162002ac7565b84815260808201528260a08201528260c08201528360e082015262005d15565b611388611faf55611fb05580f35b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001e1657505062001b98565b8086849255868682015562001e2e60028201620054a7565b86600382015562001e42600482016200533c565b8660058201550162001e06565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001ea957505062001b6f565b8086849255868682015562001ec160028201620054a7565b86600382015562001ed5600482016200533c565b8660058201550162001e99565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001f1c62002b40565b6040519162001f2b8362002a55565b611faf548352611fb0549060209182850152611fb1546040850152611fb254606085015260405180611fb390848254918281520191845284842090845b81811062002074575050508162001f8191038262002b1c565b6080850152611fb4805462001f968162002be9565b9162001fa6604051938462002b1c565b818352835283832083908584015b83831062002046575050505060a085015260405180928391611fb591808354928381520192855280852094905b828210620020225750505062001ffa9250038262002b1c565b60c083015260ff611fb65416151560e083015262000f85611fb7546040519384938462002e2e565b85546001600160a01b03168452600195860195879550938101939091019062001fe1565b600187819260409998995162002062816200118d818962002c3e565b81520192019201919095949562001fb4565b82546001600160a01b03168452928601926001928301920162001f68565b5034620002025760203660031901126200020257600435906103e8821015620014f75762000f85620020ca60048460031b0162002b8b565b60405191829182620029c1565b50346200020257806003193601126200020257604051611f4180548083529083526020808301937f68ffef30f3d6829c9938575e8bc340aa2a3398e927d767947dd5024d1581d59292915b8282106200213d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002122565b503462000202576020908160031936011262000202576040906200218162002944565b8160608451620021918162002a07565b82815286810183905285810182905201526001600160a01b03168152611f4083522060405190620021c28262002a07565b6200223d81549160ff83161515845260ff8585019360081c16151583526002604051916200220183620021f9816001850162002c3e565b038462002b1c565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002dae565b905160808301520390f35b503462000202576020366003190112620002025760206200120960043562005deb565b5034620002025780600319360112620002025760206200120962006172565b50346200020257604036600319011262000202576001600160401b0360043581811162000c5457620022c190369060040162002ef8565b9160243591821162000202576020620022ea84620022e3366004870162002ef8565b9062006570565b6040519015158152f35b50346200020257806003193601126200020257604051620023158162002ac7565b604051613f0383825b60648210620024ad57505050620023358162002ae3565b815260405191620023468362002a55565b613f67548352613f68549060209182850152613f69546040850152613f6a54606085015260405180613f6b90848254918281520191845284842090845b8181106200248f57505050816200239c91038262002b1c565b6080850152613f6c8054620023b18162002be9565b91620023c1604051938462002b1c565b818352835283832083908584015b83831062002461575050505060a085015260405180928391613f6d91808354928381520192855280852094905b8282106200243d57505050620024159250038262002b1c565b60c083015260ff613f6e5416151560e083015262000f85613f6f546040519384938462002e2e565b85546001600160a01b031684526001958601958795509381019390910190620023fc565b60018781926040999899516200247d816200118d818962002c3e565b815201920192019190959495620023cf565b82546001600160a01b03168452928601926001928301920162002383565b60016020819285548152019301910190916200231e565b5034620002025760208060031936011262000e6057600435620024f34782111562000f4e620018db8462005091565b33835282808080611f479485875262002538604083205482111562000f4e6200251c8462005091565b338652898b5262002531604087205462005091565b906200520b565b338252858752620025786200255282604085205462005056565b919062000f4e620025638562005091565b3387528a8c5262002531604088205462005091565b3383528688526040832055818115620026e0575b3390f115620026d5573383528152604082205415620025a9575080f35b611f48805491620025ba8362004dfe565b918493855b8181106200267b575050620025d48462004dfe565b805192906001600160401b03841162002667578190620025f48562004f58565b0191865280862090865b8481106200264b575050505050825b8281106200261b5750505080f35b620026459062000f556001600160a01b0362002638838662004ce2565b511662001a448362004e36565b6200260d565b83516001600160a01b03168382015592810192600101620025fe565b634e487b7160e01b87526041600452602487fd5b620026868162004e36565b90546001600160a01b03916003913391831b1c831603620026b5575b5050620026af9062004c7b565b620025bf565b96620026cc91839862001af1620026af9562004e36565b959038620026a2565b6040513d84823e3d90fd5b506108fc6200258c565b50346200020257806003193601126200020257604051611f4680548083529083526020808301937f721f0813146d89d6f0f0dbb1451dd10acd9dadea7c30d73459c3079bc665b9a892915b828210620027505762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002735565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000c54576103e8821015620027c3579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b50346200020257806003193601126200020257604051611f4880548083529083526020808301937f54b856f7ae688db523226c6d190d6c3f1578f46968ba7de0cc9e487420dbf24c92915b8282106200283d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002822565b50346200020257806003193601126200020257602060ff613f735416604051906200288981620029a0565b8152f35b50346200020257602090816003193601126200020257620028ad62002944565b620028b762005284565b506001600160a01b03168152611f498252604080822090519190620028dc8362002ac7565b60405193849192915b606483106200290f57610c808587620028fe8162002ae3565b815262000200604051809262002975565b60018281928654815201940192019192620028e5565b90503462000e60578160031936011262000e6057602090613f71548152f35b600435906001600160a01b03821682036200295b57565b600080fd5b35906001600160a01b03821682036200295b57565b516000915b606483106200298857505050565b6001908251815260208091019201920191906200297a565b60041115620029ab57565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b828110620029e9575050505090565b83516001600160a01b031685529381019392810192600101620029da565b608081019081106001600160401b0382111762002a2357604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762002a2357604052565b61010081019081106001600160401b0382111762002a2357604052565b61012081019081106001600160401b0382111762002a2357604052565b606081019081106001600160401b0382111762002a2357604052565b60e081019081106001600160401b0382111762002a2357604052565b602081019081106001600160401b0382111762002a2357604052565b610c8081019081106001600160401b0382111762002a2357604052565b604081019081106001600160401b0382111762002a2357604052565b601f909101601f19168101906001600160401b0382119082101762002a2357604052565b6040519062002b4f8262002ac7565b60405182611f4b6000835b6064821062002b745750505062002b718262002ae3565b52565b600160208192855481520193019101909162002b5a565b9060405191828154918282526020928383019160005283600020936000905b82821062002bc55750505062002bc39250038362002b1c565b565b85546001600160a01b03168452600195860195889550938101939091019062002baa565b6001600160401b03811162002a235760051b60200190565b90600182811c9216801562002c33575b602083101462002c1d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162002c11565b906000929180549162002c518362002c01565b91828252600193848116908160001462002cb8575060011462002c75575b50505050565b90919394506000526020928360002092846000945b83861062002ca357505050500101903880808062002c6f565b80548587018301529401938590820162002c8a565b9294505050602093945060ff191683830152151560051b0101903880808062002c6f565b90815462002cea8162002be9565b9260409362002cfc8551918262002b1c565b828152809460208092019260005281600020906000935b85851062002d2357505050505050565b6001848192845162002d3b816200118d818a62002c3e565b81520193019401939162002d13565b90815180825260208080930193019160005b82811062002d6b575050505090565b83516001600160a01b03168552938101939281019260010162002d5c565b60005b83811062002d9d5750506000910152565b818101518382015260200162002d8c565b9060209162002dc98151809281855285808601910162002d89565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002e015750505050505090565b909192939495848062002e1d83856001950387528a5162002dae565b980193019301919493929062002df0565b93929162002e4085610ca09362002975565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002ecc62002e956080840151610100610d408a0152610dc089019062002d4a565b62002eb560a085015191610cbf1992838b830301610d608c015262002dd5565b9060c08501519089830301610d808a015262002d4a565b9101511515610da0860152930152565b6001600160401b03811162002a2357601f01601f191660200190565b81601f820112156200295b5780359062002f128262002edc565b9262002f22604051948562002b1c565b828452602083830101116200295b57816000926020809301838601378301015290565b60051115620029ab57565b90815180825260208080930193019160005b82811062002f71575050505090565b83518552938101939281019260010162002f62565b90815180825260208092019182818360051b82019501936000915b84831062002fb25750505050505090565b909192939495848062002fce83856001950387528a5162002f50565b980193019301919493929062002fa1565b90815180825260208092019182818360051b82019501936000915b8483106200300b5750505050505090565b90919293949584806200302783856001950387528a5162002d4a565b980193019301919493929062002ffa565b90815180825260208092019081926005928183851b82019601946000915b84831062003068575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029ab5783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b82811062003128575050505050928291620030f260019560608085015190840152608080850151908483039085015262002dae565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062003056565b9193959680620031ee600193959761011f198b82030189528951908151815283820151620031568162002f45565b84820152878201516200316981620029a0565b88820152606090818301518282015281620031de620031cd620031bc60806200319f8189015160c080848a015288019062002f50565b9560a0809901519881880391015287519080875286019062002dd5565b888701518582038a87015262002f86565b8b8601518482038d86015262002fdf565b9301519181840391015262002dae565b970195019101918b969594939192620030bd565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620032645750505050906040620032619392015190604081840391015262002dae565b90565b858703607f19018352835180516001600160a01b0316885260208101519497939492939192906026821015620029ab57604091602084015201519060606040820152620032c08251610100606084015261016083019062002dd5565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003482575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b828110620033fd57505050506060840151838203605f190160c085015262003341925062003038565b608083015190605f198382030160e0840152602080835192838152019201906000905b808210620033d957505050620033cc8360209360e0620033b56200339d879660a060019a0151605f198683030161010087015262002f86565b60c0850151848203605f190161012086015262002fdf565b92015190610140605f198285030191015262002dae565b980194019291016200323b565b9091926020806001928651620033ef8162002f45565b815201940192019062003364565b90919293602080600192601f19868203018852885190620034666200342b835160e080855284019062002f50565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002dae565b60c0928301511515919092015297019695019392910162003318565b909192602080600192865115158152019401920190620032e2565b906003821015620029ab5752565b9060405191828154918282526020928383019160005283600020936000905b828210620034e35750505062002bc39250038362002b1c565b855484526001958601958895509381019390910190620034ca565b906040516200350d8162002aab565b60c060ff600683956200352081620034ab565b8552600181015460208601526002810154604086015260038101546060860152826004820154161515608086015260405162003565816200118d816005860162002c3e565b60a08601520154161515910152565b6006821015620029ab5752565b9081546200358f8162002be9565b926200359f604051948562002b1c565b818452600090815260208082208186015b848410620035bf575050505050565b6001838192620035cf85620034ab565b815201920193019290620035b0565b908154620035ec8162002be9565b92620035fc604051948562002b1c565b818452600090815260208082208186015b8484106200361c575050505050565b60018381926200362c8562002b8b565b8152019201930192906200360d565b90600360606040516200364e8162002a07565b6200369981956200365f8162002cdc565b83526200366f6001820162003581565b60208401526200368260028201620035de565b6040840152620021f9604051809681930162002c3e565b0152565b90604051620036ac8162002a8f565b82546001600160a01b03168152600183018054919384929091620036d08262002be9565b91620036e0604051938462002b1c565b80835260208301916000526020600020916000905b82821062003722575050505091620036996040926002946020840152620021f98451809681930162002c3e565b604051620037308162002a8f565b84546001600160a01b038116825260a01c60ff166026811015620029ab576020820152604051620037618162002a55565b6200376f6001870162002cdc565b815260028601604051808260208294549384815201906000526020600020926000905b80601f830110620046ef57620038cb945491818110620046d8575b818110620046be575b818110620046a4575b8181106200468a575b81811062004671575b81811062004657575b8181106200463d575b81811062004623575b81811062004609575b818110620045ef575b818110620045d5575b818110620045bb575b818110620045a1575b81811062004587575b8181106200456d575b81811062004553575b81811062004539575b8181106200451f575b81811062004505575b818110620044eb575b818110620044d1575b818110620044b7575b8181106200449d575b81811062004483575b81811062004469575b8181106200444f575b81811062004435575b8181106200441b575b81811062004401575b818110620043e7575b818110620043cd575b10620043bc575b50038262002b1c565b6020820152600386018054620038e18162002be9565b91620038f1604051938462002b1c565b81835260208301906000526020600020906000905b8382106200439b57505050506040820152600486018054620039288162002be9565b9162003938604051938462002b1c565b81835260208301906000526020600020906000905b8382106200423e57505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003f355784600997946020979460019a979462003ac494549181811062003f17575b81811062003ef6575b81811062003ed5575b81811062003eb4575b81811062003e94575b81811062003e73575b81811062003e52575b81811062003e31575b81811062003e10575b81811062003def575b81811062003dce575b81811062003dad575b81811062003d8c575b81811062003d6b575b81811062003d4a575b81811062003d29575b81811062003d08575b81811062003ce7575b81811062003cc6575b81811062003ca5575b81811062003c84575b81811062003c63575b81811062003c42575b81811062003c21575b81811062003c00575b81811062003bdf575b81811062003bbe575b81811062003b9d575b81811062003b7c575b81811062003b5b575b81811062003b3a575b1062003b1f5750038262002b1c565b608082015262003ad760068a0162003581565b60a082015262003aea60078a01620035de565b60c082015260405162003b06816200118d8160088e0162002c3e565b60e08201526040820152815201940191019092620036f5565b90889160f81c62003b308162002f45565b81520138620038c2565b928a8d9160ff8560f01c1662003b508162002f45565b815201930162003ab5565b928a8d9160ff8560e81c1662003b718162002f45565b815201930162003aac565b928a8d9160ff8560e01c1662003b928162002f45565b815201930162003aa3565b928a8d9160ff8560d81c1662003bb38162002f45565b815201930162003a9a565b928a8d9160ff8560d01c1662003bd48162002f45565b815201930162003a91565b928a8d9160ff8560c81c1662003bf58162002f45565b815201930162003a88565b928a8d9160ff8560c01c1662003c168162002f45565b815201930162003a7f565b928a8d9160ff8560b81c1662003c378162002f45565b815201930162003a76565b928a8d9160ff8560b01c1662003c588162002f45565b815201930162003a6d565b928a8d9160ff8560a81c1662003c798162002f45565b815201930162003a64565b928a8d9160ff8560a01c1662003c9a8162002f45565b815201930162003a5b565b928a8d9160ff8560981c1662003cbb8162002f45565b815201930162003a52565b928a8d9160ff8560901c1662003cdc8162002f45565b815201930162003a49565b928a8d9160ff8560881c1662003cfd8162002f45565b815201930162003a40565b928a8d9160ff8560801c1662003d1e8162002f45565b815201930162003a37565b928a8d9160ff8560781c1662003d3f8162002f45565b815201930162003a2e565b928a8d9160ff8560701c1662003d608162002f45565b815201930162003a25565b928a8d9160ff8560681c1662003d818162002f45565b815201930162003a1c565b928a8d9160ff8560601c1662003da28162002f45565b815201930162003a13565b928a8d9160ff8560581c1662003dc38162002f45565b815201930162003a0a565b928a8d9160ff8560501c1662003de48162002f45565b815201930162003a01565b928a8d9160ff8560481c1662003e058162002f45565b8152019301620039f8565b928a8d9160ff8560401c1662003e268162002f45565b8152019301620039ef565b928a8d9160ff8560381c1662003e478162002f45565b8152019301620039e6565b928a8d9160ff8560301c1662003e688162002f45565b8152019301620039dd565b928a8d9160ff8560281c1662003e898162002f45565b8152019301620039d4565b928a8d9160ff85831c1662003ea98162002f45565b8152019301620039cb565b928a8d9160ff8560181c1662003eca8162002f45565b8152019301620039c2565b928a8d9160ff8560101c1662003eeb8162002f45565b8152019301620039b9565b928a8d9160ff8560081c1662003f0c8162002f45565b8152019301620039b0565b928a8d9160ff851662003f2a8162002f45565b8152019301620039a7565b926001610400602092865460ff811662003f4f8162002f45565b825260ff8160081c1662003f638162002f45565b8583015260ff8160101c1662003f798162002f45565b604083015260ff8160181c1662003f908162002f45565b606083015260ff81861c1662003fa68162002f45565b608083015260ff8160281c1662003fbd8162002f45565b60a083015260ff8160301c1662003fd48162002f45565b60c083015262003fea60ff8260381c1662002f45565b60ff8160381c1660e083015260ff8160401c16620040088162002f45565b61010083015260ff8160481c16620040208162002f45565b61012083015260ff8160501c16620040388162002f45565b61014083015260ff8160581c16620040508162002f45565b61016083015260ff8160601c16620040688162002f45565b61018083015260ff8160681c16620040808162002f45565b6101a083015260ff8160701c16620040988162002f45565b6101c083015260ff8160781c16620040b08162002f45565b6101e083015260ff8160801c16620040c88162002f45565b61020083015260ff8160881c16620040e08162002f45565b61022083015260ff8160901c16620040f88162002f45565b61024083015260ff8160981c16620041108162002f45565b61026083015260ff8160a01c16620041288162002f45565b61028083015260ff8160a81c16620041408162002f45565b6102a083015260ff8160b01c16620041588162002f45565b6102c083015260ff8160b81c16620041708162002f45565b6102e083015260ff8160c01c16620041888162002f45565b61030083015260ff8160c81c16620041a08162002f45565b61032083015260ff8160d01c16620041b88162002f45565b61034083015260ff8160d81c16620041d08162002f45565b61036083015260ff8160e01c16620041e88162002f45565b61038083015260ff8160e81c16620042008162002f45565b6103a083015260ff8160f01c16620042188162002f45565b6103c083015260f81c6200422c8162002f45565b6103e08201520194019201916200397e565b6040516200424c8162002a55565b6200425c60ff8554168262003574565b60018401546020820152600284018054620042778162002be9565b9162004287604051938462002b1c565b81835260208301906000526020600020906000905b838210620043145750505050600192826020926040600695015260038701546060820152604051620042d7816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301910190916200394d565b600190602060405191620043288362002a39565b85548352838601549260ff8416620043408162002f45565b8382015260ff600894851c166200435781620029a0565b6040820152600287015460608201526200437460038801620034ab565b608082015262004387600488016200363b565b60a08201528152019301910190916200429c565b60076020600192620043ad86620034fe565b81520193019101909162003906565b60f81c1515815260200138620038c2565b92602060019160ff8560f01c1615158152019301620038bb565b92602060019160ff8560e81c1615158152019301620038b2565b92602060019160ff8560e01c1615158152019301620038a9565b92602060019160ff8560d81c1615158152019301620038a0565b92602060019160ff8560d01c161515815201930162003897565b92602060019160ff8560c81c16151581520193016200388e565b92602060019160ff8560c01c161515815201930162003885565b92602060019160ff8560b81c16151581520193016200387c565b92602060019160ff8560b01c161515815201930162003873565b92602060019160ff8560a81c16151581520193016200386a565b92602060019160ff8560a01c161515815201930162003861565b92602060019160ff8560981c161515815201930162003858565b92602060019160ff8560901c16151581520193016200384f565b92602060019160ff8560881c161515815201930162003846565b92602060019160ff8560801c16151581520193016200383d565b92602060019160ff8560781c161515815201930162003834565b92602060019160ff8560701c16151581520193016200382b565b92602060019160ff8560681c161515815201930162003822565b92602060019160ff8560601c161515815201930162003819565b92602060019160ff8560581c161515815201930162003810565b92602060019160ff8560501c161515815201930162003807565b92602060019160ff8560481c1615158152019301620037fe565b92602060019160ff8560401c1615158152019301620037f5565b92602060019160ff8560381c1615158152019301620037ec565b92602060019160ff8560301c1615158152019301620037e3565b92602060019160ff8560281c1615158152019301620037da565b92602060019160ff85831c1615158152019301620037d1565b92602060019160ff8560181c1615158152019301620037c8565b92602060019160ff8560101c1615158152019301620037bf565b92602060019160ff8560081c1615158152019301620037b6565b92602060019160ff851615158152019301620037ad565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003792565b9080601f830112156200295b57813590620048dc8262002be9565b92620048ec604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b8483106200491c5750505050505090565b82356001600160401b0381116200295b578691620049408484809489010162002ef8565b8152019201916200490b565b359081151582036200295b57565b81601f820112156200295b57803591620049748362002be9565b9262004984604051948562002b1c565b808452602092838086019260051b8201019283116200295b578301905b828210620049b0575050505090565b81358152908301908301620049a1565b9080601f830112156200295b57813590620049db8262002be9565b92620049eb604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b84831062004a1b5750505050505090565b82356001600160401b0381116200295b57869162004a3f848480948901016200495a565b81520192019162004a0a565b9080601f830112156200295b5781359162004a668362002be9565b9260409262004a788451958662002b1c565b8185526020938486019185600594851b860101948186116200295b57868101935b86851062004aac57505050505050505090565b84356001600160401b0381116200295b57820183603f820112156200295b57888101359062004adb8262002be9565b9162004aea8751938462002b1c565b808352868b8401918a1b830101918683116200295b5791878c94929593015b81811062004b2257505082935081520194019362004a99565b91938091939562004b338462002960565b8152019101918b9391949262004b09565b9062002bc3604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b99815180926020868601910162002d89565b810103602581018552018362002b1c565b9062002bc36040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004bf0815180926020868601910162002d89565b810103602081018552018362002b1c565b602062002bc391939293604051948162004c25879351809286808701910162002d89565b820162004c3b8251809386808501910162002d89565b0103808552018362002b1c565b1562004c515750565b60405162461bcd60e51b81526020600482015290819062004c7790602483019062002dae565b0390fd5b600019811462001e4f5760010190565b80511562004c995760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c995760400190565b80516002101562004c995760600190565b80516003101562004c995760800190565b805182101562004c995760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002bc3916020949360405195869262004d5a62004d4c83860162004cf7565b918281519485920162002d89565b016e0161030b732103130b630b731b29d1608d1b815262004d85825180936020878501910162002d89565b010360101981018552018362002b1c565b601962002bc3916020949360405195869262004db862004d4c83860162004cf7565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004ded825180936020878501910162002d89565b010360061981018552018362002b1c565b9062004e0a8262002be9565b62004e19604051918262002b1c565b828152809262004e2c601f199162002be9565b0190602036910137565b611f48805482101562004c995760005260206000200190600090565b611f46805482101562004c995760005260206000200190600090565b611f41805482101562004c995760005260206000200190600090565b613f02805482101562004c995760005260206000200190600090565b611f4a805482101562004c995760005260206000200190600090565b613efe805482101562004c995760005260206000200190600090565b613f00805482101562004c995760005260206000200190600090565b805482101562004c995760005260206000200190600090565b8181029291811591840414171562001e4f57565b919082549060031b91821b91600019901b1916179055565b81811062004f4b575050565b6000815560010162004f3f565b600160401b811162002a2357611f489081549080835581811062004f7b57505050565b62002bc3926000526020600020918201910162004f3f565b600160401b811162002a2357611f469081549080835581811062004f7b57505050565b8054600082558062004fc6575050565b62002bc39160005260206000209081019062004f3f565b600160401b811162002a2357613efe9081549080835581811062004f7b57505050565b600160401b811162002a2357613f009081549080835581811062004f7b57505050565b611fb58054600082558062004fc6575050565b90600160401b811162002a235781549080835581811062004f7b57505050565b919082811162005067576001920390565b50600091508190565b81156200507b570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b80821015620051fc575b506904ee2d6d415b85acef8160201b80831015620051ec575b50662386f26fc1000080831015620051dc575b506305f5e10080831015620051cc575b5061271080831015620051bc575b506064821015620051ab575b600a80921015620051a0575b600190816021818601956200512d8762002edc565b966200513d604051988962002b1c565b8088526200514e601f199162002edc565b01366020890137860101905b62005167575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200519a579190826200515a565b62005160565b916001019162005118565b91906064600291049101916200510c565b6004919392049101913862005100565b60089193920491019138620050f2565b60109193920491019138620050e2565b60209193920491019138620050cf565b604093508104915038620050b6565b601e62002bc391602094936040519586926200522d62004d4c83860162004cf7565b017f2c20616e6420776974686472617761626c65206469766964656e64733a200000815262005266825180936020878501910162002d89565b010360011981018552018362002b1c565b6003821015620029ab5752565b60405190620052938262002ac7565b60405182620052a28262002ae3565b610c8036833752565b90620052b78262002be9565b604090620052c88251918262002b1c565b8381528093620052db601f199162002be9565b019160005b838110620052ee5750505050565b6020908251620052fe8162002a55565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e0830152828601015201620052e0565b62005348815462002c01565b908162005353575050565b81601f6000931160011462005366575055565b90808391825262005387601f60208420940160051c84016001850162004f3f565b5555565b80549060008155816200539c575050565b6000526020600020908101905b818110620053b5575050565b80620053c36001926200533c565b01620053a9565b90600160401b811162002a2357815491818155828210620053ea57505050565b600052602060002091820191015b81811062005404575050565b80620054126001926200533c565b01620053f8565b80549060008155816200542a575050565b6000526020600020908101905b81811062005443575050565b806200545160019262004fb6565b0162005437565b90600160401b811162002a23578154918181558282106200547857505050565b600052602060002091820191015b81811062005492575050565b80620054a060019262004fb6565b0162005486565b805460009182815581620054ba57505050565b6001600160fd1b0382168203620055475782526020822091600391821b8301925b838110620054e95750505050565b8082600892558260018201558260028201556200550884820162004fb6565b62005516600482016200538b565b620055246005820162005419565b620055326006820162005419565b62005540600782016200533c565b01620054db565b634e487b7160e01b83526011600452602483fd5b600160401b821162002a23578054908281558183106200557a57505050565b6001600160fd1b03828116830362001e4f578316830362001e4f57600090815260208120600392831b810193831b015b838110620055b85750505050565b808260089255826001820155826002820155620055d784820162004fb6565b620055e5600482016200538b565b620055f36005820162005419565b620056016006820162005419565b6200560f600782016200533c565b01620055aa565b516006811015620029ab5790565b906006811015620029ab5760ff80198354169116179055565b90620056498162002f45565b60ff80198354169116179055565b906200566381620029a0565b61ff0082549160081b169061ff001916179055565b9190601f81116200568857505050565b62002bc3926000526020600020906020601f840160051c83019310620056b7575b601f0160051c019062004f3f565b9091508190620056a9565b81519192916001600160401b03811162002a2357620056ee81620056e7845462002c01565b8462005678565b602080601f83116001146200572d57508192939460009262005721575b50508160011b916000199060031b1c1916179055565b0151905038806200570b565b90601f198316958460005282600020926000905b8882106200577c5750508360019596971062005762575b505050811b019055565b015160001960f88460031b161c1916905538808062005758565b8060018596829496860151815501950193019062005741565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b81516006811015620029ab57620057f0908262005624565b6020820151600182015560028101604083015160208151916200581483856200555b565b01916000526020600020916000905b8282106200588757505050509060e0600562002bc3936060840151600382015562005856608085015160048301620056c2565b01916200586a60a082015115158462005795565b6200587c60c0820151151584620057a6565b0151151590620057be565b805180518555620058c760018601620058b06020840151620058a98162002f45565b826200563d565b604083015190620058c182620029a0565b62005657565b60608101516002860155608081015180519060038701906001600160401b03831162002a2357602090620058fc848462005036565b0190600052602060002060005b83811062005ba8575050505060a0015180518051906004870190602090620059328484620053ca565b01906000526020600020906000905b83821062005b885750505050600585016020820151602081519162005967838562005458565b019160005260206000206000925b82841062005b24575050505060068501604082015160208151916200599b838562005458565b019160005260206000206000925b82841062005ab75750505050606001518051906001600160401b03821162002a2357620059e982620059df600789015462002c01565b6007890162005678565b602090601f831160011462005a3c57928260089360209360019660009262005a30575b5050600019600383901b1c191690851b1760078801555b0194019101909262005823565b01519050388062005a0c565b906007870160005260206000209160005b601f198516811062005a9e575083602093600196938793600897601f1981161062005a84575b505050811b01600788015562005a23565b015160001960f88460031b161c1916905538808062005a73565b9192602060018192868501518155019401920162005a4d565b80518051906001600160401b03821162002a235760209062005ada838662005036565b0183600052602060002060005b83811062005b06575050505060016020819201920193019290620059a9565b82516001600160a01b03168183015560209092019160010162005ae7565b80518051906001600160401b03821162002a235760209062005b47838662005036565b0183600052602060002060005b83811062005b7357505050506001602081920192019301929062005975565b60019060208451940193818401550162005b54565b600160208262005b9b83945187620056c2565b0193019101909162005941565b60019060208451940193818401550162005909565b60409081519162005bce8362002b00565b60018352829160005b60208082101562005c415783516020929162005bf38262002a39565b60008252600081830152600086830152606060008184015280608084015286519062005c1f8262002a07565b808252808383015280888301528082015260a083015282880101520162005bd7565b505091925050565b611f43805482101562004c99576000526006602060002091020190600090565b613efb805482101562004c99576000526006602060002091020190600090565b611f42805482101562004c99576000526006602060002091020190600090565b613efa805482101562004c99576000526006602060002091020190600090565b611f428054600160401b81101562002a235762005cec9160018201905562005c89565b91909162005cff5762002bc391620057d8565b634e487b7160e01b600052600060045260246000fd5b611f438054600160401b81101562002a235762005cec9160018201905562005c49565b613efb8054600160401b81101562002a235762005cec9160018201905562005c69565b613efa8054600160401b81101562002a235762005cec9160018201905562005ca9565b1562005d8657565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b6103e881101562004c9957600390811b60028101549060009260049384830191825492829682849601935b85871062005e3d5750505050505050620032619162005e359162005f19565b919062005d7e565b98979091929394959862005e9f5762005e938962005e8b62005e6562000f559b9c8762004efa565b905490881b1c6001600160a01b0316600090815260208990526040812054909462006049565b9a9062005f3b565b95949392919062005e16565b603282634e487b7160e01b6000525260246000fd5b6103e881101562004c995762005e358162005edc611fba620032619460031b01549162005f9f565b9062005f19565b90811562005f1057606462005efc818402938462005070565b0362005f085760019190565b600091508190565b60019150600090565b9190821562005f315762005efc818402938462005070565b5060019150600090565b1562005f4357565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6103e8811015908162004c995790600391821b90611fbc820190815490600094611fbb869501915b83861062005fd85750505050505090565b9590919293949562004c99576200602b866200602362005ffd62000f55998962004efa565b905490861b1c6001600160a01b0316600090815260208790526040812054909462006049565b989062005f3b565b949392919062005fc7565b906001820191821062005f085760019190565b9190820191821062005f085760019190565b156200606357565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b6103e881101562004c9957600390811b60018101549060009260049384830191825492829682849601935b85871062006116575050505050505062003261916200610e9162005f19565b91906200605b565b98979091929394959862005e9f576200613e8962005e8b62005e6562000f559b9c8762004efa565b959493929190620060ef565b6103e881101562004c99576200610e8162005edc611fb9620032619460031b01549162005f9f565b611faf54620061b86200618462033793565b91620061966127109384831062004c48565b620061ae611fb254611fb054111562000f4e62033801565b611fb15462005f19565b919050620061c562033857565b5060009081925b6103e88410620061e9575b620061e493500462006236565b905090565b9160ff60078560031b015416156200622f57836200621c62006228926200621562000f55969762005deb565b9062006049565b949062000f4e62033857565b92620061cc565b91620061d7565b9080156200624e57620062499162005070565b600191565b5050600090600090565b9190820180921162001e4f57565b9190820391821162001e4f57565b906107b2906301e1853e80840483810180821162001e4f576001820181811162001e4f57604583019082821162001e4f576064620062b792049060021c62006266565b9561017183019682881162001e4f57620062d8906101908099049062006258565b9084840294848604148415171562001e4f5762015180948583029280840487149015171562001e4f576200631892620063119162006258565b9062006266565b9160049586910815958662006537575b506040516101a081016001600160401b038111828210176200652257604052600c9687825261018080366020850137601f9182620063668562004c8b565b5215620065185760ff601d5b166200637e8462004caf565b52816200638b8462004cc0565b52601e620063998462004cd1565b52825188101562006503578160a08401528251600510156200650357601e60c084015282516006101562006503578160e08401528251600710156200650357816101008401528251600810156200650357601e6101208401528251600910156200650357816101408401528251600a10156200650357601e6101608401528251600b10156200650357820152600096905b8188106200647e575b50508282049460018601809611620064695760018701809711620064695750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b9096926200648d848362004ce2565b5185810290808204871490151715620064e6578110620064fb57620064b3848362004ce2565b519085820291808304871490151715620064e657620064de91620064d79162006266565b9362004c7b565b96906200642a565b601188634e487b7160e01b6000525260246000fd5b929662006433565b603288634e487b7160e01b6000525260246000fd5b60ff601c62006372565b604187634e487b7160e01b6000525260246000fd5b90955060648606159081159162006552575b50943862006328565b90508506153862006549565b90815181101562004c99570160200190565b90815181511162006627576000905b6200658e835182519062006266565b82116200661f5760019260005b825181101562006614576001600160f81b031980620065c6620065bf848862006258565b856200655e565b511690620065d583866200655e565b511603620065ee57620065e89062004c7b565b6200659b565b5092509060005b6200660c57620066059062004c7b565b906200657f565b505050600190565b5092919091620065f5565b505050600090565b5050600090565b611f4680549190600160401b83101562002a23578262001a4491600162002bc39501905562004e52565b611f4a80549190600160401b83101562002a23578262001a4491600162002bc39501905562004ea6565b611fb5805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611fb3805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611f4180549190600160401b83101562002a23578262001a4491600162002bc39501905562004e6e565b60405190620067518262002b00565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067878262002a8f565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200696d5781620067ff88620068079362004ce2565b5101620073df565b60269283821015620029ab57601a918203620068c557876200682a915162004ce2565b51928284015190811015620029ab570362006883575093620068746200687c926200686c6200686560a0604062000f559a0151015162004c8b565b5162004c8b565b519062006049565b9590620073ed565b92620067dc565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068de81620067ff89869a979a5162004ce2565b82811015620029ab5760140362006917575050906200687462000f55956200621562006910846200687c965162004ce2565b516200743a565b6200692990620067ff85855162004ce2565b90811015620029ab5760151462006947575b506200687c9062004c7b565b906200687462006966956200621562006910846200687c965162004ce2565b906200693b565b505050909250803410600014620069e35760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007264575b50613f739182549260ff84169362006a0485620029a0565b60019480860362006a3e5750505062006a3491925062006a2e62006a2882620074d1565b620075a8565b62007632565b6200326162006742565b62006a4981620029a0565b60028114808062007257575b1562006e805750505062006a6982620074e6565b1562006e415762006a7a82620074e6565b1562006e055762006ab390602080930190600260ff8560018060a01b0362006aa3865162004c8b565b5151169460409687915162004c8b565b510151015192541662006ac681620029a0565b0362006dc55781600052613f778085528360002092613f7880549485600052875260ff86600020541662006d875783519480600052613f7693848952600396878960002001540362006d215783600052885286600020906000528752856000208960ff19825416179055886000905b62006b7f575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b6862032c82565b519162006b758362002b00565b6015835282015290565b845181101562006d1b5786825480600052858a5262006ba48389846000200162004efa565b905490891b1c908a84888b62006bbb838d62004ce2565b511562006c7957505050505062006c1e62006bfe85549283600052888d526200621562006bf087600480986000200162004efa565b9054908d1b1c918962032b6c565b9092600052878c5262006c1785858d6000200162004efa565b9062004f27565b1562006c37575062006c309062004c7b565b8962006b35565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006cb662006cc8966200621587999462006c17979860005284895262006ca987600580986000200162004efa565b9054911b1c918d62032b6c565b959097600052528c6000200162004efa565b1562006cd95762006c309062004c7b565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b3b565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e90829794959697620029a0565b600382149182806200724a575b1562006f1f5750505050505062006eb4816200754d565b1562006ecf5762006ec5906202f874565b6200326162006778565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f2a81620029a0565b81806200723c575b806200722f575b156200715957505050509060ff9062006f5162032e94565b54169062006f5f82620029a0565b81036200701d575062006f7281620074d1565b1562006f8c578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200702b600392620029a0565b146200706457505b604051620070418162002b00565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200706f816200754d565b15620070805762006ec5906202f874565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b6200716481620029a0565b82156200721a575b5050806200720c575b62007184575050505062007033565b60ff19161790556200719681620074d1565b15620071b0578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b50613f725442101562007175565b62007227919250620029a0565b38806200716c565b50613f7254421062006f39565b50613f715442101562006f32565b50613f7254421062006e9d565b50613f7154421062006a55565b60018060a01b039081845116600052611f459081602052604060002054156200735a575b62007294903462005056565b90156200731657620072b790838651166000528260205260406000205462006049565b929015620072d55784511660005260205260406000205538620069ec565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b611f4654939291906000805b8681106200739c575b506200729492939495501562007388575b905062007288565b62007396848751166200662e565b62007380565b84620073a88262004e52565b919054818b51169260031b1c1614620073cc57620073c69062004c7b565b62007366565b509394508493506001620072946200736f565b516026811015620029ab5790565b15620073f557565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007454818351015162004caf565b5151841015620074c9579262006874620074b9604094620074b185620074a986620074978b6200749e8362000f559f9e6200749790620074bf9e51015162004caf565b5162004ce2565b519451015162004cc0565b519062005f19565b9290620073ed565b62006049565b919290506200743f565b509093505050565b602001515115620074e157600190565b600090565b6020015160018151036200750a5762007503620032619162004c8b565b5162007510565b50600090565b60208101516026811015620029ab576020036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b6020015160018151036200750a576200756a620032619162004c8b565b5160208101516026811015620029ab576021036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b15620075b057565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763d8162015580565b516201507f576006811015620029ab57600381146201502657806200769a5760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200b1a25750600080611f4a54905b8181106200b15b575b5050156200b13f575b60005b6020908183015191825182101562007727576200771981611f49620076ff620076f962000f5595620067ff88620077219a62004ce2565b62033aa2565b9160018060a01b0388511660005252604060002062024340565b429162004f27565b620076c2565b50505060005b602080830151805183101562007775576200775291620067ff84620076f99362004ce2565b90606482101562004c99576200776f914290611f4b015562004c7b565b6200772d565b505050906000905b602083015180518310156200b1395782620077989162004ce2565b5160208101805160269081811015620029ab57156200b0f657815181811015620029ab57600103620079e6575050604080910190620077dc60c08351015162004c8b565b5192620077fe60a0620077f3818651015162004c8b565b519451015162004caf565b51956200780f85518551146202e0ca565b6200781e85518851146202e130565b60005b8551811015620079645762007837818662004ce2565b516103e8908181101562004c9957600160ff60076200785f9360031b0154161515146202e192565b6200786b828a62004ce2565b5162007878838862004ce2565b51908282101562004c99576006620078969260031b01549062006049565b90620078a3848962004ce2565b51918383101562004c99576006620078c09360031b01556202e1ea565b620078cc828a62004ce2565b5190620078da838862004ce2565b518181101562004c99576001600160a01b0393926200791a916003908662007903878e62004ce2565b5116600052811b0160205287600020549062006049565b62007926848a62004ce2565b519283101562004c9957600362000f55936200795e9662007948878e62004ce2565b5116600052811b0160205287600020556202e249565b62007821565b50939262007981919296506200797a90620336a2565b9262033586565b9451926200798f8462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba620079c3938762004ce2565b51878a62033195565b6200799b565b5094509260209250620079dd915062004c7b565b9190506200777d565b815181811015620029ab5760020362007c7d575050604080910180519283519562007a2b62007a1a60a08097015162004c8b565b51956200749e818651015162004caf565b5193875186510362007c2a57875184510362007bd657875185510362007b7f575060005b855181101562007b695762007a65818762004ce2565b51906103e8918281101562004c995762007a8b60ff6007809360031b015416156202e2a2565b62007a97828962004ce2565b518381101562004c995760031b01805460ff1916600117905562007abc818a62004ce2565b5162007ac9828962004ce2565b51908382101562004c9957600562007ae59260031b01620056c2565b62007af1818662004ce2565b5162007afe828962004ce2565b518381101562004c995760031b6001015562007b1b818762004ce2565b5162007b28828962004ce2565b518381101562004c995760031b6002015562007b45818862004ce2565b519182101562004c99576000600662007b639360031b015562004c7b565b62007a4f565b50955093905060209250620079dd915062004c7b565b5162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b8195939492955181811015620029ab5760030362008279575050604084019062007cac60c08351015162004c8b565b519362007cc360a0620077f3818651015162004c8b565b519362007cd8865185511462000f4e62033906565b62007ceb865186511462000f4e62033906565b60005b865181101562007d545762007d04818662004ce2565b51906103e882101562004c9957600362007d4e9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b51111562000f4e62033a0a565b62007cee565b50909493919460005b855181101562007e885762007d73818662004ce2565b51906103e88083101562004c9957600360018060a01b0393848c5116600052811b0160205262007db660406000205462007dae848962004ce2565b519062005056565b9062007dc3848a62004ce2565b51918383101562004c9957600362007df293878f5116600052811b0160205260406000205562000f4e62033a0a565b62007dfe828862004ce2565b518181101562004c99576003908462007e18858c62004ce2565b5116600052811b0160205262007e396040600020546200686c848962004ce2565b62007e45848a62004ce2565b519283101562004c9957600362000f559362007e829662007e67878e62004ce2565b5116600052811b0160205260406000205562000f4e62033a6f565b62007d5d565b5091509162007e9f62007ea69196959496620336a2565b9562033586565b926040519462007eb68662002b00565b6001865260203681880137516001600160a01b031662007ed68662004c8b565b526000905b8651821015620082645762007ef1828862004ce2565b516106c05262007f02855162004dfe565b9660009462007f12885162004dfe565b610400528594865b885181101562007fe9578a8962007f4a6001600160a01b0362007f3e858462004ce2565b51166106c0516203348a565b158062007fa3575b62007f6b575b505062007f659062004c7b565b62007f1a565b9862007f989162001b0382859c62007f8f62007f659760018060a01b039262004ce2565b51169262004ce2565b9790508a8962007f58565b5050506103e86106c051101562004c99576001600160a01b0362007fc8828b62004ce2565b511660005260036106c051811b016020528a89604060002054151562007f52565b509098949897969291939760005b88518110156200808b576103e86106c051101562004c99576001600160a01b0362008023828b62004ce2565b511660005260036106c051811b016020526040600020541562008052575b6200804c9062004c7b565b62007ff7565b996200804c9062008082906001600160a01b03620080718e8d62004ce2565b511662001b03826104005162004ce2565b9a905062008041565b5098509694939291956106c0516103e8811015806104205262004c995760031b6004015496620080c6620080c0878a62006258565b62004dfe565b996000998a6109a0525b6104205162004c99576109a0518a811015620081855762008105620081229160006104205260046106c05160031b0162004efa565b90546104005160039290921b1c6001600160a01b03169062033539565b1562008141575b620081376109a05162004c7b565b6109a052620080d0565b99808c62001b036200817e93620081656109a05160046106c05160031b0162004efa565b905460039190911b1c6001600160a01b03169262004ce2565b9962008129565b509a939794969299919850946000915b8383106200822a57505050506104205162004c99578051906001600160401b03821162002a2357602090620081d48360046106c05160031b0162005036565b0160046106c05160031b01600052602060002060005b8381106200820c5750505050620082019062004c7b565b909295919562007edb565b82516001600160a01b031681830155602090920191600101620081ea565b6200825d9062008256906001600160a01b0362008248868662004ce2565b511662001b03828962004ce2565b9262004c7b565b9162008195565b91945050620079dd9194506020925062004c7b565b8195939492955181811015620029ab5760040362008501575050604080920160c094620082ba620082ae878451015162004c8b565b51968351015162004caf565b5194620082d160a0620077f3818651015162004c8b565b5193620082e6885188511462000f4e62033906565b620082f9885185511462000f4e62033906565b6200830c885186511462000f4e62033906565b60005b8851811015620083745762008325818662004ce2565b51906103e882101562004c99576200836e916003906001600160a01b036200834e848e62004ce2565b5116600052811b0160205262000f55886000205462007d41838a62004ce2565b6200830f565b50909691959294939660005b8351811015620084b55762008396818862004ce2565b51906103e8918281101562004c99576001600160a01b039060039082620083be858a62004ce2565b5116600052811b01602052620083df8b62007dae848b600020549262004ce2565b90620083ec848c62004ce2565b51918583101562004c995760036200842593856200840b888d62004ce2565b5116600052811b016020528a6000205562000f4e62033a0a565b62008431828a62004ce2565b518381101562004c9957600390826200844b858b62004ce2565b5116600052811b016020526200846c8b6200686c848b600020549262004ce2565b9190506200847b838b62004ce2565b519384101562004c9957620084af9360039162008499858b62004ce2565b5116600052811b01602052876000205562004c7b565b62008380565b5094620084d892975062007e9f91939450620084d190620336a2565b9362033586565b9260005b8351811015620079c9578062000f55620079ba620084fb938762004ce2565b620084dc565b8195949395519080821015620029ab57600591820362008a525750505060408401906200854360a062008538818551015162004c8b565b519351015162004caf565b51928251845103620089ef5760005b8351811015620085ab5762008568818562004ce2565b51906103e882101562004c99576003620085a59260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62008552565b509060005b83518110156200864557620085c6818562004ce2565b51906103e88083101562004c9957600360018060a01b0393848b5116600052811b016020526200860160406000205462007dae848a62004ce2565b6200860d848962004ce2565b519283101562004c9957600362000f55936200863f968d5116600052811b0160205260406000205562000f4e62033a0a565b620085b0565b5094939250906200865690620336a2565b9360405193620086668562002b00565b6001855260203681870137516001600160a01b0316620086868562004c8b565b5260405192620086968462002ac7565b6000845260003681376000905b86518210156200826457620086b9828862004ce2565b5161032052620086ca855162004dfe565b96600094620086da885162004dfe565b6106a0528594865b8851811015620087a8578a89620087126001600160a01b0362008706858462004ce2565b5116610320516203348a565b158062008762575b62008733575b50506200872d9062004c7b565b620086e2565b98620087579162001b0382859c62007f8f6200872d9760018060a01b039262004ce2565b9790508a8962008720565b5050506103e861032051101562004c99576001600160a01b0362008787828b62004ce2565b5116600052600361032051811b016020528a8960406000205415156200871a565b509098949897969291939760005b88518110156200884a576103e861032051101562004c99576001600160a01b03620087e2828b62004ce2565b5116600052600361032051811b016020526040600020541562008811575b6200880b9062004c7b565b620087b6565b996200880b9062008841906001600160a01b03620088308e8d62004ce2565b511662001b03826106a05162004ce2565b9a905062008800565b509850969493929195610320516103e8811015806106805262004c995760031b60040154966200887f620080c0878a62006258565b996000998a610540525b6106805162004c9957610540518a8110156200892557620088be620088db9160006106805260046103205160031b0162004efa565b90546106a05160039290921b1c6001600160a01b03169062033539565b15620088fa575b620088f06105405162004c7b565b6105405262008889565b99808c62001b036200891e93620081656105405160046103205160031b0162004efa565b99620088e2565b509a939794969299919850946000915b838310620089ca57505050506106805162004c99578051906001600160401b03821162002a2357602090620089748360046103205160031b0162005036565b0160046103205160031b01600052602060002060005b838110620089ac5750505050620089a19062004c7b565b9092959195620086a3565b82516001600160a01b0316818301556020909201916001016200898a565b620089e89062008256906001600160a01b0362008248868662004ce2565b9162008935565b60405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029ab5760060362008cbc5750505090604080920162008a8260c08251015162004c8b565b519462008a9960a062008538818551015162004c8b565b5192865183510362008c6b57865184510362008c1f5760005b875181101562008b175762008ac8818562004ce2565b51906103e882101562004c995762008b11916003906001600160a01b0362008af1848d62004ce2565b5116600052811b0160205262000f55876000205462007d41838962004ce2565b62008ab2565b509092919260005b875181101562008bcb5762008b35818662004ce2565b516103e88082101562004c99576001600160a01b0392916003908462008b5c858e62004ce2565b5116600052811b0160205262008b7c886000205462007dae848962004ce2565b62008b88848a62004ce2565b519283101562004c9957600362000f559362008bc59662008bab8f889062004ce2565b5116600052811b01602052896000205562000f4e62033a0a565b62008b1f565b50959262008be09192506200797a90620336a2565b92519462008bee8662002ac7565b60008652600036813760005b8351811015620079c9578062000f55620079ba62008c19938762004ce2565b62008bfa565b845162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029ab5760070362008e0b5750505060408091019362008ce860c08651015162004c8b565b519262008cfa60a08751015162004c8b565b519551519162008d12855188511462000f4e62033906565b60005b855181101562007b695762008e059062000f556001600160a01b038260028862008ded8e62008de28e62008dd88f8962008d508a8562004ce2565b511660005262008d8c8962008d8481611f409a8b60205262008d7e60ff8760002054161562000f4e620339d7565b62004ce2565b519662004ce2565b51968a62008dc283519b8c9662008da38862002a07565b600188526060602089019860008a528781019b8c52019b8c5262004ce2565b5116600052602052600020975115158862005795565b51151586620057a6565b5160018501620056c2565b5191015562008dfd838a62004ce2565b511662006718565b62008d15565b825195969593949281851015620029ab57600894850362008f025750505062008e3d60c0604080950151015162004c8b565b519360005b855181101562008eed5762008ee7906001600160a01b038062008e66838a62004ce2565b5116600052611f40908160205262008ebc60ff62008e936001828c600020541615151462000f4e62033936565b8262008ea0868d62004ce2565b5116600052836020528960002054891c161562000f4e6203399e565b62008ec8838a62004ce2565b51166000526020528560002061010061ff001982541617905562004c7b565b62008e42565b509490935060209250620079dd915062004c7b565b805182811015620029ab5760090362008fd65750505062008f2c60c0604080950151015162004c8b565b519360005b855181101562008eed5762008fd090866001600160a01b038062008f56848462004ce2565b511660005262008fa96001898362008f8b87611f40978860205262008d7e8660ff8097600020541615151462000f4e62033936565b5116600052846020528a600020548a1c1615151462000f4e62033969565b62008fb5838a62004ce2565b51166000526020528560002061ff0019815416905562004c7b565b62008f31565b80979694929395975182811015620029ab57600a03620090b457505050506040809401916200901b60a06200901060c08651015162004c8b565b519451015162004c8b565b519162009030845184511462000f4e62033906565b60005b8451811015620079c957620090ae906001600160a01b038062009057838962004ce2565b5116600052611f40806020526200907e600160ff8c600020541615151462000f4e62033936565b6200908a838862004ce2565b519162009098848a62004ce2565b5116600052602052600289600020015562004c7b565b62009033565b809795975182811015620029ab57600b03620091835750505050604080920193620090e460c08651015162004c8b565b5194515191620090fc865184511462000f4e62033906565b60005b8651811015620079c9576200917d9062000f556001600160a01b038062009127848c62004ce2565b5116600052611f40806020526200914e600160ff8b600020541615151462000f4e62033936565b6200915a848962004ce2565b519162009168858d62004ce2565b511660005260205260018860002001620056c2565b620090ff565b809794959396975182811015620029ab57600c03620092da57505050604001606091828251015193620091b6856202d715565b60005b8551811015620092c45760e0620091d582878751015162004ce2565b510151156200925c57620091f9620091f282878751015162004ce2565b5162005cc9565b611f42805460001992919083810190811162001e4f576200921b8a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c89565b5001805460ff1916905562004c7b565b620091b9565b620092776200927082878751015162004ce2565b5162005d15565b611f42805460001992919083810190811162001e4f57620092998a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c49565b50959150935060209250620079dd915062004c7b565b80979695939294975182811015620029ab57600d036200942f5750506040019460206200930c60a08851015162004c8b565b5196510151916200932187518451146202de09565b60005b875181101562007b69578080878a62009342620093d1958962004ce2565b5115620093d757620093a26200938984836200937462009368620093ad98889762004ce2565b51611f4254116202de92565b62008d7e8d6200939062009389858562004ce2565b5162005c89565b509060ff9889920154901c166202deea565b50015416156202df4b565b86620093be62009389838c62004ce2565b5001805460ff1916600117905562004c7b565b62009324565b620093a262009417848362009402620093f66200941e98889762004ce2565b51611f4354116202de92565b62008d7e8d6200939062009417858562004ce2565b5162005c49565b86620093be62009417838c62004ce2565b80979493975182811015620029ab57600e03620095155750506040019160206200945e60a08551015162004c8b565b5193510151956200947384518851146202de09565b60005b845181101562007b695780620094916200949d928a62004ce2565b51620094a35762004c7b565b62009476565b620094bf620094b3828862004ce2565b51611f4254116202dfac565b6200950487620094e9620094d862009389858b62004ce2565b5060ff9283910154891c166202e005565b88620094fa62009389858b62004ce2565b500154166202e067565b866200924662009389838962004ce2565b8091929350969495965182811015620029ab57600f036200963957505060400160609182825101519362009549856202d715565b60005b8551811015620092c45760e06200956882878751015162004ce2565b51015115620095d85762009585620091f282878751015162004ce2565b611f42805460001992919083810190811162001e4f57620095a78a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c89565b6200954c565b620095ec6200927082878751015162004ce2565b611f42805460001992919083810190811162001e4f576200960e8a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c49565b80919293949695505182811015620029ab57601003620096de57505060400151906200966e60a0608084015193015162004c8b565b519362009683835186511462000f4e62033906565b60005b8351811015620096cb578062000f55620096a5620096c5938762004ce2565b51620096b18162002f45565b620096bd838a62004ce2565b51906202d5d9565b62009686565b5093509160209150620079dd9062004c7b565b809592955182811015620029ab5760110362009967575050906040809401916200971360a06200901060c08651015162004c8b565b51916200972484518451146202d58d565b60005b84518110156200979c57620097969062000f556001600160a01b03806200974f848a62004ce2565b5116600052611f4580602052620097708b600020546200686c868b62004ce2565b9190926200977f868c62004ce2565b51166000526020528a6000205562000f4e620338bc565b62009727565b5093945091620097ad915062033586565b90611f4692835494620097c6620080c085518862006258565b91600093845b88811062009927575060005b86518110156200987f576000805b8a811062009830575b501562009808575b620098029062004c7b565b620097d8565b94620098029062009827906001600160a01b0362008248898b62004ce2565b959050620097f7565b6200983b8162004e52565b90546001600160a01b0360039290921b1c8116906200985b858c62004ce2565b51161462009874576200986e9062004c7b565b620097e6565b5050600138620097ef565b50965094909350620098918362004dfe565b805191906001600160401b03831162002a2357602090620098b28462004f93565b0190600052602060002060005b83811062009909575050505060005b828110620098e657505050620079dd60209162004c7b565b620099039062000f556001600160a01b0362001a37838662004ce2565b620098ce565b82516001600160a01b031681830155602090920191600101620098bf565b946200995a62009961916200993c8862004e52565b905460039190911b1c6001600160a01b031662001b03828962004ce2565b9562004c7b565b620097cc565b805182811015620029ab5760120362009bd65750506040809401916200999860a06200901060c08651015162004c8b565b5191620099a984518451146202d58d565b60005b8451811015620099fb57620099f59062000f556001600160a01b0380620099d4848a62004ce2565b5116600052611f4580602052620097708b6000205462007dae868b62004ce2565b620099ac565b50949150929162009a0c9062033586565b90611f46805462009a1d8162004dfe565b9260009485925b80841062009ad1575050505062009a3b8362004dfe565b805191906001600160401b03831162002a235760209062009a5c8462004f93565b0190600052602060002060005b83811062009ab3575050505060005b82811062009a9057505050620079dd60209162004c7b565b62009aad9062000f556001600160a01b0362001a37838662004ce2565b62009a78565b82516001600160a01b03168183015560209092019160010162009a69565b9297600097929597949194998a5b865181101562009bc45762009af48b62004e52565b90546001600160a01b0360039290921b1c81169062009b14838a62004ce2565b51161462009b2d5762009b279062004c7b565b62009adf565b509950976001979592979491945b8062009b94575b1562009b5a5762009b539062004c7b565b9262009a24565b9562009b8d62009b539162009b6f8962004e52565b905460039190911b1c6001600160a01b031662001b03828a62004ce2565b9662004c7b565b5062009ba08162004e52565b60018060a01b0391549060031b1c16600052611f4560205282600020541562009b42565b50999890989795929794919462009b3b565b809592955182811015620029ab5760130362009c3757505060408091015101519260005b845181101562009c26578062000f5562009c1962009c20938862004ce2565b516202f808565b62009bfa565b50925090620079dd60209162004c7b565b80519180831015620029ab57601492830362009dda5750505060408091019062009c6660c08351015162004c8b565b519262009c7d60a0620077f3818651015162004c8b565b519562009c8e85518551146202e0ca565b62009c9d85518851146202e130565b60005b855181101562009d855762009cb6818962004ce2565b5162009cc3828762004ce2565b516103e8918282101562004c9957600662009ce49260031b01549062006049565b9062009cf1848962004ce2565b51918383101562004c9957600662009d0e9360031b01556202e1ea565b62009d1a828a62004ce2565b519062009d28838862004ce2565b518181101562004c99576001600160a01b03939262009d51916003908662007903878e62004ce2565b62009d5d848a62004ce2565b519283101562004c9957600362000f559362009d7f9662007948878e62004ce2565b62009ca0565b50939262009d9b919296506200797a90620336a2565b94519262009da98462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba62009dd4938762004ce2565b62009db5565b815181811015620029ab57601590810362009e0657505050506020919262000f55620079dd926202e847565b82519180831015620029ab57601692830362009e6e57505050505060c0604062009e34920151015162004c8b565b519260005b845181101562009c265762009e689062000f556001600160a01b0362009e60838962004ce2565b5116620066cd565b62009e39565b835181811015620029ab5760170362009ec75760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab5760180362009f3a57505050505060c0604062009ef2920151015162004c8b565b51611fb6805460ff191660011790559260005b845181101562009c265762009f349062000f556001600160a01b0362009f2c838962004ce2565b511662006682565b62009f05565b839796975181811015620029ab576019036200a0ae57505050505060008080604080940160a0808251015180516200a075575b5050519060e08201519162009f916200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156200a06c573d9162009fb28362002edc565b9262009fc18351948562002b1c565b83523d6000602085013e5b1562009fe1575050620079dd60209162004c7b565b62004c7792506200a04d8151926000805160206203401b833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b838501528381516200a03c816059946020868601910162002d89565b810103603981018552018362002b1c565b5162461bcd60e51b815260206004820152918291602483019062002dae565b60609162009fcc565b6200a0809062004c8b565b51516200a08f575b8062009f6d565b81925062006865906200a0a59251015162004c8b565b5190386200a088565b835181811015620029ab57601a036200a1ae57505050506200a0d960a0604080940151015162004c8b565b51906200a0ea60038351146202d58d565b6200a0f58262004c8b565b51926200a10e6200a1068462004caf565b519362004cc0565b51926200a17457505091620079dd916001602094146000146200a16d576200a14d906200a140611fb191825462006049565b90915562000f4e62033857565b62000f55611fb26200a160815462006036565b90915562000f4e62033891565b5062004c7b565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b9091928094505181811015620029ab57601b036200a64357505050505091906200a1ee611faf54620061966200a1e362033793565b612710831062004c48565b50506200a1fa62033857565b506000805b6103e881106200a5d2575b50506200a21662006172565b6200a224613f745462004dfe565b9060009485935b6103e88510156200a5c55760ff60078660031b015416156200a3845760009560028660031b0154156200a37557869796975b62004c995760048660031b01548810156200a35c576200a285886004600389901b0162004efa565b600160a01b6001900391549060031b1c1696876000528660031b600301602052604097858960002054906200a2ba9162005f19565b99906200a2c662033857565b6200a2d19162004c48565b6000998960031b600201546200a2e79162005f19565b91906200a2f362033857565b6200a2fe9162004c48565b828b52611f476020528a20908154906200a3189162006049565b9091556200a32562033857565b6200a3309162004c48565b6200a33c828862004ce2565b526200a3489062004c7b565b976200a3549062004c7b565b97966200a25d565b91946200a36c9196975062004c7b565b9390946200a22b565b91946200a36c91965062004c7b565b949592915092505b6200a3978262004dfe565b91600091825b8281106200a52f57505050611f48908154926200a3bf620080c0858462006258565b9360009081905b8082106200a4f457505060005b8381106200a4505750508351939150506001600160401b03831162002a23576020906200a4008462004f58565b0190600052602060002060005b8381106200a4325750505050620079dd6020916000611fb1556000611fb25562004c7b565b82516001600160a01b0316818301556020909201916001016200a40d565b6000805b8381106200a4ac575b50156200a476575b6200a4709062004c7b565b6200a3d3565b906200a470906200a4a3906001600160a01b036200a495858762004ce2565b511662001b03828a62004ce2565b9190506200a465565b6001600160a01b03806200a4c1858862004ce2565b5116906200a4d0838b62004ce2565b5116146200a4e9576200a4e39062004c7b565b6200a454565b50506001386200a45d565b9091620082566200a528916200a50a8562004e36565b905460039190911b1c6001600160a01b031662001b03828b62004ce2565b906200a3c6565b6000805b8581106200a57d575b50156200a555575b6200a54f9062004c7b565b6200a39d565b926200a54f906200a574906001600160a01b0362008248878662004ce2565b9390506200a544565b6001600160a01b03806200a592858762004ce2565b5116906200a5a1838a62004ce2565b5116146200a5ba576200a5b49062004c7b565b6200a533565b50506001386200a53c565b949592915092506200a38c565b806003959394951b9060ff600783015416156200a638576200a622620074b962000f55946200a6166200a62e9560026200a60c8762005deb565b9101549062005f19565b929062000f4e62033857565b939062000f4e62033857565b939291936200a1ff565b50939291936200a20a565b835181811015620029ab57601c036200a69c5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab57601d036200a6c2575b5050505050620079dd60209162004c7b565b8397959694975181811015620029ab57601e036200af2d5750505050604084019060a0906200a6f5828451015162004c8b565b51516200a706838551015162004caf565b5151036200aeb0576200a71d828451015162004c8b565b51516200a72e838551015162004cc0565b5151036200ae34576200a745828451015162004c8b565b51946200a756838551015162004caf565b51916200a7876200a76b858751015162004cc0565b51946200a77c818851015162004c8b565b519651015162004caf565b51958551875103620089ef5760005b86518110156200a7ef576200a7ac818862004ce2565b51906103e882101562004c995760036200a7e99260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b6200a796565b5090969192939660005b86518110156200a898576200a80f818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b016020526200a84760406000205462007dae838b62004ce2565b91906200a855828a62004ce2565b51906103e882101562004c99576200a89293600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b6200a7f9565b5093979550936200a8ac90969296620336a2565b96604051966200a8bc8862002b00565b60018852602036818a013786516001600160a01b03166200a8dd8962004c8b565b52604051966200a8ed8862002ac7565b600088526000610720525b895161072051908110156200acb5576200a913908b62004ce2565b516103a0526200a924885162004dfe565b996000976200a9348b5162004dfe565b610a60528897895b8b518110156200aa02578d8c6200a96c6001600160a01b036200a960858462004ce2565b51166103a0516203348a565b15806200a9bc575b6200a98d575b50506200a9879062004c7b565b6200a93c565b9b6200a9b19162001b0382859f62007f8f6200a9879760018060a01b039262004ce2565b9a90508d8c6200a97a565b5050506103e86103a051101562004c99576001600160a01b036200a9e1828e62004ce2565b511660005260036103a051811b016020528d8c60406000205415156200a974565b50909b989a99949691929395979b60005b8b518110156200aaa7576103e86103a051101562004c99576001600160a01b036200aa3f828e62004ce2565b511660005260036103a051811b01602052604060002054156200aa6e575b6200aa689062004c7b565b6200aa13565b9c6200aa9e6200aa68918f6200aa8d8f9160018060a01b039262004ce2565b511662001b0382610a605162004ce2565b9d90506200aa5d565b509a9b50989596919396949092946103a051996103e88b10159b8c62004c99578d9b60031b600401549d6200aadd908f62006258565b6200aae89062004dfe565b610340526000610a00528c6000610500525b62004c9957610500519c8e8e10156200abb857506200ab466200ab2960009e60046103a05160031b0162004efa565b9054610a605160039290921b1c6001600160a01b03169062033539565b156200ab66575b8c6200ab5c6105005162004c7b565b610500526200aafa565b6200ab7e6105005160046103a05160031b0162004efa565b60018060a01b0391549060031b1c166200ab9f610a00516103405162004ce2565b526200abae610a005162004c7b565b610a00526200ab4d565b939d509396999094979b50999094979960005b8281106200ac695750505062004c995761034051516001600160401b03811162002a23576200ac048160046103a05160031b0162005036565b602061034051019060046103a05160031b0160005260206000209160005b8281106200ac4b57505050506200ac3c6107205162004c7b565b6107205295989094986200a8f8565b81516001600160a01b0316818501556020909101906001016200ac22565b6200acaf906001600160a01b036200ac82828562004ce2565b51166200ac96610a00516103405162004ce2565b526200aca5610a005162004c7b565b610a005262004c7b565b6200abcb565b5094929750929750939450600094855b87518110156200ad35576200acf86200acf06200ace3838962004ce2565b51620074a9848d62004ce2565b91906202f637565b806200ad11575b506200ad0b9062004c7b565b6200acc5565b906200ad266200ad2e986200ad0b9362006049565b98906202f684565b906200acff565b509650945092909150806200ad59575b5050620079dd6020915b913880806200a6b0565b6200ad8c9060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b92906202f6dd565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106200adea575b505091620079dd91602093156200adce575b50916200ad45565b516200ade3906001600160a01b03166200662e565b386200adc6565b6200adf58162004e52565b9054855160039290921b1c6001600160a01b039081169116146200ae24576200ae1e9062004c7b565b6200adab565b506001915082905060206200adb4565b60405162461bcd60e51b815260206004820152605960248201526000805160206203413b83398151915260448201527f642070726963654172726179206973206e6f7420657175616c2061742042415460648201527810d217d095549397d513d2d15394d7d0539117d49151955391603a1b608482015260a490fd5b60405162461bcd60e51b815260206004820152605a60248201526000805160206203413b83398151915260448201527f6420616d6f756e744172726179206973206e6f7420657175616c2061742042416064820152791510d217d095549397d513d2d15394d7d0539117d4915195539160321b608482015260a490fd5b8397949695975181811015620029ab57601f036200af7157505050506020916200af6b6200af646040620079dd9401515162004c8b565b516202f83e565b6200ad4f565b835181811015620029ab576020036200af97575b5050505050620079dd6020916200ad4f565b835181811015620029ab5760218091036200afb4575b506200af85565b8451828110156200b0e1576022036200aff457505050505050620079dd602091611fb660ff1981541690556200afe962005023565b91388080806200afad565b8451828110156200b0e1576023036200b01b575b505050505050620079dd6020916200afe9565b845194828610156200b0e15760248096036200b039575b506200b008565b8051838110156200b0cd576025146200b0325751918210156200b0b95750036200b07d5750506020916200b071620079dd926202e847565b9138808080806200b032565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200b155906001600160a01b031662006658565b620076bf565b6200b1668162004ea6565b9054855160039290921b1c6001600160a01b039081169116146200b195576200b18f9062004c7b565b620076ad565b50505060013880620076b6565b600281036200b1c65760405162461bcd60e51b81528062004c7760048201620075e7565b6001146200b1d15750565b6200b1df611f4354620052ab565b805190600160401b821162002a2357613efb5482613efb5580831062014fab575b50602001613efb60005260206000206000915b83831062014f8a575050505060005b611f43548110156200b25b578062000f556200b2426200b2559362005c49565b506200b24e8362005c69565b90620154b5565b6200b222565b506200b26a611f4254620052ab565b805190600160401b821162002a2357613efa5482613efa5580831062014eee575b50602001613efa60005260206000206000915b83831062014ecd575050505060005b611f42548110156200b2df578062000f556200b2cd6200b2d99362005c89565b506200b24e8362005ca9565b6200b2ad565b5060005b6103e8811015806200b49057600160ff611fbf8460031b0154161515146200b318575b506200b3129062004c7b565b6200b2e3565b916000835b62004c9957611fbc8360031b01548110156200b387576200b37e929350600092816200b3528593611fbc8860031b0162004efa565b9054600391821b1c6001600160a01b031660009081529087901b611fbb01602052604081205562004c7b565b9093926200b31d565b5091604051906200b3988262002ac7565b6000825262004c99578051906001600160401b03821162002a23576020906200b3c983611fbc8660031b0162005036565b01611fbc8360031b01600052602060002060005b8381106200b47257505050611fbf600383901b908101805460ff191690556000611fb88201819055611fb98201819055611fba8201819055611fbd90910180546200b3129493506200b42f9062002c01565b601f908181116200b450575b5050556000611fbe8260031b0155906200b306565b6200b46a9183855260208520910160051c81019062004f3f565b38806200b43b565b82516001600160a01b0316818301556020909201916001016200b3dd565b505060005b6103e8811062014e3f575060005b611f41548110156200b4fe57806200b4bf6200b4f89262004e6e565b60018060a01b0391549060031b1c16600052613ef860205260006002604082208281556200b4f0600182016200533c565b015562004c7b565b6200b4a3565b506200b50d611f415462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613ef95483613ef95580841062014e1d575b5001613ef9600052602060002060005b83811062014dff575050505060005b611f41548110156200b5d1576200b5768162004e6e565b9054613ef95460039290921b1c6001600160a01b0316919081101562004c9957613ef9600052600080516020620340db833981519152810180546001600160a01b0319169092179091556200b5cb9062004c7b565b6200b55f565b509060005b611f41548110156200b69057806200b5f26200b6459262004e6e565b9060018060a01b03918291549060031b1c16600052611f40602052604080600020916200b61f8462004e6e565b90549060031b1c16600052613ef8602052600020908082036200b64b575b505062004c7b565b6200b5d6565b600280916200b67160ff6200b664818454168762005795565b825460081c1685620057a6565b6200b683600182016001860162015151565b015491015538806200b63d565b5060005b613f02548110156200b6e257806200b6b06200b6dc9262004e8a565b60018060a01b0391549060031b1c16600052613f0160205262000f556040600020606481019062004f3f565b6200b694565b506200b6f1611f4a5462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613f025483613f025580841062014ddd575b5001613f02600052602060002060005b83811062014dbf575050505060005b611f4a548110156200b786578062000f556200b7636200b7809362004ea6565b905460039190911b1c6001600160a01b031662001a448362004e8a565b6200b743565b5060005b611f4a548110156200b81157806200b7a66200b7f89262004ea6565b9060018060a01b03918291549060031b1c16600052611f49602052604080600020916200b7d38462004ea6565b90549060031b1c16600052613f01602052600020908082036200b7fe57505062004c7b565b6200b78a565b6200b8099162015549565b38806200b63d565b50611f4b80546000905b6064821062014da6575050611faf54613f675550611fb054613f6855611fb154613f6955611fb254613f6a55611fb3546001600160401b03811162002a2357600160401b811162002a2357613f6b5481613f6b5580821062014d78575b50613f6b60009081527f0c040229f6fc4874d4176ee508a0872dc89a48e51cc9b61a792006f29e062754805460008051602062033ebb83398151915291905b84841062014d56575050505050611fb454600160401b811162002a2357613f6c5481613f6c5580821062014d14575b50613f6c600090815260008051602062033efb8339815191527fcdf85548d0b3537a0f46212d2994f9493fe1dfa88d3af4ddb0cac3c506fd3f595b83831062014cf6575050611fb5549150506001600160401b03811162002a2357600160401b811162002a2357613f6d5481613f6d5580821062014cc8575b50613f6d60009081527f70c3d981fef3a436e3d026045c487f2278cccbfa7f9e11fbd3c1406b0017bd5d8054600080516020620340bb83398151915291905b84841062014ca657505050505060ff611fb65416151560ff8019613f6e5416911617613f6e5560005b613efe548110156200ba1157806200b9e36200ba0b9262004ec2565b905460039190911b1c6001600160a01b03166000908152613efd602052604081205562004c7b565b6200b9c7565b506200ba20611f465462004dfe565b8051906001600160401b03821162002a23576020906200ba408362004fdd565b01613efe600052602060002060005b83811062014c88575050505060005b611f46548110156200baa1578062000f556200ba7e6200ba9b9362004e52565b905460039190911b1c6001600160a01b031662001a448362004ec2565b6200ba5e565b5060005b611f46548110156200bb1057806200bac16200bb0a9262004e52565b9060018060a01b03918291549060031b1c16600052611f4560205260408060002054916200baef8462004e52565b90549060031b1c16600052613efd6020526000205562004c7b565b6200baa5565b5060005b613f00548110156200bb5e57806200bb306200bb589262004ede565b905460039190911b1c6001600160a01b03166000908152613eff602052604081205562004c7b565b6200bb14565b506200bb6d611f485462004dfe565b8051906001600160401b03821162002a23576020906200bb8d8362005000565b01613f00600052602060002060005b83811062014c6a575050505060005b611f48548110156200bbee578062000f556200bbcb6200bbe89362004e36565b905460039190911b1c6001600160a01b031662001a448362004ede565b6200bbab565b5060005b611f48548110156200bc5d57806200bc0e6200bc579262004e36565b9060018060a01b03918291549060031b1c16600052611f4760205260408060002054916200bc3c8462004e36565b90549060031b1c16600052613eff6020526000205562004c7b565b6200bbf2565b50613f02546000805b82811062014c25575b501562014bef575b5060005b60208301519081518110156200bcd35762000f55620077196200bcad620076f96020620067ff866200bccd9862004ce2565b86516001600160a01b03166000908152613f016020526040902062024340565b6200bc7b565b505060005b602083015180518210156200bd2057620076f96020620067ff846200bcfd9462004ce2565b90606482101562004c99576200bd1a914290613f03015562004c7b565b6200bcd8565b5050906000905b60208101518051831015620106d857826200bd429162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036200c31457604001906200bd8360c08351015162004c8b565b51936200bd9a60a0620077f3818651015162004c8b565b51916200bdab86518551146202e0ca565b6200bdba86518451146202e130565b60005b86518110156200bf18576200bdd3818662004ce2565b516103e881101562004c9957600160ff611fbf6200bdfa9360031b0154161515146202e192565b6200be06818562004ce2565b516200be13828762004ce2565b51906103e882101562004c9957611fbe6200be349260031b01549062006049565b906200be41838862004ce2565b51916103e883101562004c9957611fbe6200be619360031b01556202e1ea565b6200be6d818562004ce2565b516200be7a828762004ce2565b51906103e882101562004c99576200bebd91611fbb906001600160a01b036200bea4868d62004ce2565b511660005260031b016020526040600020549062006049565b91906200becb828862004ce2565b51906103e882101562004c99576200bf129362000f5592611fbb906001600160a01b036200befa878f62004ce2565b511660005260031b016020526040600020556202e249565b6200bdbd565b50926200bf2f919250620084d190959495620336a2565b916040516200bf3e8162002ac7565b6000815260003681376000945b80518610156200c2fa576200bf61868262004ce2565b516104e0526200bf72855162004dfe565b966000946200bf82845162004dfe565b6105805260009460005b88518110156200c054578a896200bfbc6001600160a01b036200bfb0858462004ce2565b51166104e051620334e1565b15806200c00c575b6200bfdd575b50506200bfd79062004c7b565b6200bf8c565b986200c0019162001b0382859c62007f8f6200bfd79760018060a01b039262004ce2565b9790508a896200bfca565b5050506103e86104e051101562004c99576001600160a01b036200c031828b62004ce2565b5116600052611fbb6104e05160031b016020528a8960406000205415156200bfc4565b50909895979498969291939660005b88518110156200c0f2576103e86104e051101562004c99576001600160a01b03806200c090838c62004ce2565b5116600052611fbb6104e05160031b01602052604060002054156200c0c2575b506200c0bc9062004c7b565b6200c063565b819b6200c0ea916200c0d96200c0bc948d62004ce2565b511662001b03826105805162004ce2565b9a906200c0b0565b509850969592919093966104e0516103e8811015806103c05262004c995760031b611fbc0154986200c129620080c0898c62006258565b6107605260006101e05260006105e0525b6103c05162004c99576105e0518a8110156200c203576200c1706200c1909160006103c052611fbc6104e05160031b0162004efa565b9054610580516001600160a01b03939260031b9190911c83169062033539565b156200c1b0575b506200c1a66105e05162004c7b565b6105e0526200c13a565b60006103c0526200c1cf6105e051611fbc6104e05160031b0162004efa565b90549060031b1c166200c1e96101e0516107605162004ce2565b526200c1f86101e05162004c7b565b6101e052386200c197565b50979294959093985095909560005b8281106200c2ae575050506103c05162004c995761076051516001600160401b03811162002a23576200c25081611fbc6104e05160031b0162005036565b60206107605101611fbc6104e05160031b01600052602060002060005b8381106200c29057505050506200c2849062004c7b565b9492959091956200bf4b565b82516001600160a01b0316818301556020909201916001016200c26d565b6200c2f4906001600160a01b036200c2c7828562004ce2565b51166200c2db6101e0516107605162004ce2565b526200c2ea6101e05162004c7b565b6101e05262004c7b565b6200c212565b5050939092506200c30c915062004c7b565b90916200bd27565b9060208294939401516026811015620029ab576002036200c4cb576040809201908151938451916200c36b6200c34f60a08098015162004c8b565b51966200c360818751015162004caf565b519551015162004cc0565b5194835187510362007c2a57835185510362007bd657835186510362007b7f575060005b86518110156200c4b8576200c3a5818862004ce2565b516103e881101562004c995760ff611fbf6200c3c89260031b015416156202e2a2565b6200c3d4818862004ce2565b516103e881101562004c995760031b611fbf01805460ff191660011790556200c3fe818562004ce2565b516200c40b828962004ce2565b51906103e882101562004c9957611fbd6200c42a9260031b01620056c2565b6200c436818662004ce2565b516200c443828962004ce2565b516103e881101562004c995760031b611fb901556200c463818762004ce2565b516200c470828962004ce2565b516103e881101562004c995760031b611fba01556200c490818862004ce2565b51906103e882101562004c99576000611fbe6200c4b29360031b015562004c7b565b6200c38f565b509592509350506200c30c915062004c7b565b90929160208401516026811015620029ab576003036200caf15760408401906200c4fa60c08351015162004c8b565b51906200c51160a0620077f3818651015162004c8b565b51936200c526835185511462000f4e62033906565b6200c539835186511462000f4e62033906565b60005b83518110156200c597576200c552818662004ce2565b51906103e882101562004c9957611fbb6200c5919260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200c53c565b509095919560005b87518110156200c6e5576200c5b5818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200c5ef60406000205462007dae838962004ce2565b906200c5fc838862004ce2565b51916103e883101562004c9957611fbb6200c6359360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200c641818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200c665848c62004ce2565b511660005260031b016020526200c6876040600020546200686c838962004ce2565b91906200c695828862004ce2565b51906103e882101562004c99576200c6df93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b511660005260031b0160205260406000205562000f4e62033a6f565b6200c59f565b50926200c704919294506200c6fd90969596620336a2565b9462033586565b92604051906200c7148262002b00565b6001825260203681840137516001600160a01b03166200c7348262004c8b565b526000945b80518610156200c2fa576200c74f868262004ce2565b51610740526200c760855162004dfe565b966000946200c770845162004dfe565b6108405260009460005b88518110156200c842578a896200c7aa6001600160a01b036200c79e858462004ce2565b511661074051620334e1565b15806200c7fa575b6200c7cb575b50506200c7c59062004c7b565b6200c77a565b986200c7ef9162001b0382859c62007f8f6200c7c59760018060a01b039262004ce2565b9790508a896200c7b8565b5050506103e861074051101562004c99576001600160a01b036200c81f828b62004ce2565b5116600052611fbb6107405160031b016020528a8960406000205415156200c7b2565b50909895979498969291939660005b88518110156200c8e7576103e861074051101562004c99576001600160a01b036200c87d828b62004ce2565b5116600052611fbb6107405160031b01602052604060002054156200c8ae575b6200c8a89062004c7b565b6200c851565b996200c8a8906200c8de906001600160a01b036200c8cd8e8d62004ce2565b511662001b03826108405162004ce2565b9a90506200c89d565b50985096959291909396610740516103e8811015806102405262004c995760031b611fbc0154986200c91e620080c0898c62006258565b6105c05260006103005260006101c0525b6102405162004c99576101c0518a8110156200c9fa576200c9656200c98291600061024052611fbc6107405160031b0162004efa565b90546108405160039290921b1c6001600160a01b03169062033539565b156200c9a1575b6200c9976101c05162004c7b565b6101c0526200c92f565b6000610240526200c9c06101c051611fbc6107405160031b0162004efa565b60018060a01b0391549060031b1c166200c9e1610300516105c05162004ce2565b526200c9f06103005162004c7b565b610300526200c989565b50979294959093985095909560005b8281106200caa5575050506102405162004c99576105c051516001600160401b03811162002a23576200ca4781611fbc6107405160031b0162005036565b60206105c05101611fbc6107405160031b01600052602060002060005b8381106200ca8757505050506200ca7b9062004c7b565b9492959091956200c739565b82516001600160a01b0316818301556020909201916001016200ca64565b6200caeb906001600160a01b036200cabe828562004ce2565b51166200cad2610300516105c05162004ce2565b526200cae16103005162004c7b565b6103005262004c7b565b6200ca09565b909260208101516026811015620029ab576004036200d11e5760400160c0936200cb2f6200cb23868451015162004c8b565b51958351015162004caf565b51906200cb4660a0620077f3818651015162004c8b565b51936200cb5b875184511462000f4e62033906565b6200cb6e875185511462000f4e62033906565b6200cb81875186511462000f4e62033906565b60005b87518110156200cbec576200cb9a818662004ce2565b51906103e882101562004c99576200cbe691611fbb906001600160a01b036200cbc4848d62004ce2565b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200cb84565b509095919593929360005b83518110156200cd4f576200cc0d818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200cc31848862004ce2565b511660005260031b016020526200cc5360406000205462007dae838862004ce2565b906200cc60838962004ce2565b51916103e883101562004c99576200cca692611fbb906001600160a01b036200cc8a878b62004ce2565b511660005260031b0160205260406000205562000f4e62033a0a565b6200ccb2818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ccd6848c62004ce2565b511660005260031b016020526200ccf86040600020546200686c838862004ce2565b9190506200cd07818862004ce2565b51916103e883101562004c99576200cd4992611fbb906001600160a01b036200cd31858e62004ce2565b511660005260031b0160205260406000205562004c7b565b6200cbf7565b5091936200cd6b91935062007e9f620084d191979697620336a2565b6000945b80518610156200c2fa576200cd85868262004ce2565b516107a0526200cd96855162004dfe565b966000946200cda6845162004dfe565b6105605260009460005b88518110156200ce78578a896200cde06001600160a01b036200cdd4858462004ce2565b51166107a051620334e1565b15806200ce30575b6200ce01575b50506200cdfb9062004c7b565b6200cdb0565b986200ce259162001b0382859c62007f8f6200cdfb9760018060a01b039262004ce2565b9790508a896200cdee565b5050506103e86107a051101562004c99576001600160a01b036200ce55828b62004ce2565b5116600052611fbb6107a05160031b016020528a8960406000205415156200cde8565b50909895979498969291939660005b88518110156200cf16576103e86107a051101562004c99576001600160a01b03806200ceb4838c62004ce2565b5116600052611fbb6107a05160031b01602052604060002054156200cee6575b506200cee09062004c7b565b6200ce87565b819b6200cf0e916200cefd6200cee0948d62004ce2565b511662001b03826105605162004ce2565b9a906200ced4565b509850969592919093966107a0516103e8811015806102c05262004c995760031b611fbc0154986200cf4d620080c0898c62006258565b6104405260006108205260006106e0525b6102c05162004c99576106e0518a8110156200d027576200cf946200cfb49160006102c052611fbc6107a05160031b0162004efa565b9054610560516001600160a01b03939260031b9190911c83169062033539565b156200cfd4575b506200cfca6106e05162004c7b565b6106e0526200cf5e565b60006102c0526200cff36106e051611fbc6107a05160031b0162004efa565b90549060031b1c166200d00d610820516104405162004ce2565b526200d01c6108205162004c7b565b61082052386200cfbb565b50979294959093985095909560005b8281106200d0d2575050506102c05162004c995761044051516001600160401b03811162002a23576200d07481611fbc6107a05160031b0162005036565b60206104405101611fbc6107a05160031b01600052602060002060005b8381106200d0b457505050506200d0a89062004c7b565b9492959091956200cd6f565b82516001600160a01b0316818301556020909201916001016200d091565b6200d118906001600160a01b036200d0eb828562004ce2565b51166200d0ff610820516104405162004ce2565b526200d10e6108205162004c7b565b6108205262004c7b565b6200d036565b60208193929301516026811015620029ab576005036200d148579062000f556200c30c926202ed18565b6020819492939401516026811015620029ab576006036200d734576040016200d17660c08251015162004c8b565b51936200d18d60a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b86518110156200d20e576200d1bc818562004ce2565b51906103e882101562004c99576200d20891611fbb906001600160a01b036200d1e6848c62004ce2565b511660005260031b0160205262000f5560406000205462007d41838962004ce2565b6200d1a6565b509060005b86518110156200d2b2576200d229818562004ce2565b516103e881101562004c9957611fbb906001600160a01b036200d24d848b62004ce2565b511660005260031b016020526200d26f60406000205462007dae838862004ce2565b91906200d27d828762004ce2565b51906103e882101562004c99576200d2ac9362000f5592611fbb906001600160a01b036200cc8a878f62004ce2565b6200d213565b50916200d2c9919350620084d190959495620336a2565b91604051926200d2d98462002ac7565b6000845260003681376000945b80518610156200c2fa576200d2fc868262004ce2565b516108e0526200d30d855162004dfe565b966000946200d31d845162004dfe565b6104605260009460005b88518110156200d3ef578a896200d3576001600160a01b036200d34b858462004ce2565b51166108e051620334e1565b15806200d3a7575b6200d378575b50506200d3729062004c7b565b6200d327565b986200d39c9162001b0382859c62007f8f6200d3729760018060a01b039262004ce2565b9790508a896200d365565b5050506103e86108e051101562004c99576001600160a01b036200d3cc828b62004ce2565b5116600052611fbb6108e05160031b016020528a8960406000205415156200d35f565b50909895979498969291939660005b88518110156200d48d576103e86108e051101562004c99576001600160a01b03806200d42b838c62004ce2565b5116600052611fbb6108e05160031b01602052604060002054156200d45d575b506200d4579062004c7b565b6200d3fe565b819b6200d485916200d4746200d457948d62004ce2565b511662001b03826104605162004ce2565b9a906200d44b565b509850969592919093966108e0516103e8811015806102805262004c995760031b611fbc0154986200d4c4620080c0898c62006258565b610260526000610960526000610780525b6102805162004c9957610780518a8110156200d59e576200d50b6200d52b91600061028052611fbc6108e05160031b0162004efa565b9054610460516001600160a01b03939260031b9190911c83169062033539565b156200d54b575b506200d5416107805162004c7b565b610780526200d4d5565b6000610280526200d56a61078051611fbc6108e05160031b0162004efa565b90549060031b1c166200d584610960516102605162004ce2565b526200d5936109605162004c7b565b61096052386200d532565b50979294959093985095909560005b8281106200d649575050506102805162004c995761026051516001600160401b03811162002a23576200d5eb81611fbc6108e05160031b0162005036565b60206102605101611fbc6108e05160031b01600052602060002060005b8381106200d62b57505050506200d61f9062004c7b565b9492959091956200d2e6565b82516001600160a01b0316818301556020909201916001016200d608565b6200d68f906001600160a01b036200d662828562004ce2565b51166200d676610960516102605162004ce2565b526200d6856109605162004c7b565b6109605262004c7b565b6200d5ad565b60405162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b6020819492939401516026811015620029ab576007036200d8cf57604001916200d76360c08451015162004c8b565b51916200d77560a08551015162004c8b565b51935151916200d78d845186511462000f4e62033906565b60005b84518110156200d8bd576001600160a01b03806200d7af838862004ce2565b5116600052613ef8806020526200d7d360ff604060002054161562000f4e620339d7565b60026200d7e1848862004ce2565b516200d84b6200d7f2868c62004ce2565b519162008de28b604051966200d8088862002a07565b60018852886200d82f8b60208b01946000865260408c0197885260608c01998a5262004ce2565b511660005260205262008dd86040600020975115158862005795565b519101556200d85b828762004ce2565b51613ef954929116600160401b83101562002a23576001830180613ef95583101562004c9957613ef9600052600080516020620340db83398151915290920180546001600160a01b0319169092179091556200d8b79062004c7b565b6200d790565b5094915092506200c30c915062004c7b565b60208101516026811015620029ab576008036200d9bd5760c060406200d8f9920151015162004c8b565b519160005b83518110156200d9ae576200d9a8906001600160a01b03806200d922838862004ce2565b5116600052613ef890816020526200d94b600160ff6040600020541615151462000f4e62033936565b806200d958848962004ce2565b5116600052816020526200d97c60ff60406000205460081c161562000f4e6203399e565b6200d988838862004ce2565b5116600052602052604060002061010061ff001982541617905562004c7b565b6200d8fe565b50926200c30c91925062004c7b565b60208101516026811015620029ab576009036200da9c5760c060406200d9e7920151015162004c8b565b519160005b83518110156200d9ae576200da96906001600160a01b03806200da10838862004ce2565b5116600052613ef890816020526200da39600160ff6040600020541615151462000f4e62033936565b806200da46848962004ce2565b5116600052816020526200da6e600160ff60406000205460081c1615151462000f4e62033969565b6200da7a838862004ce2565b5116600052602052604060002061ff0019815416905562004c7b565b6200d9ec565b60208101516026811015620029ab57600a036200db8457604001906200dad860a06200dacd60c08551015162004c8b565b519351015162004c8b565b51926200daed835185511462000f4e62033906565b60005b83518110156200db73576200db6d906001600160a01b03806200db14838862004ce2565b5116600052613ef8806020526200db3c600160ff6040600020541615151462000f4e62033936565b6200db48838962004ce2565b51916200db56848962004ce2565b511660005260205260026040600020015562004c7b565b6200daf0565b50939092506200c30c915062004c7b565b6020819493929401516026811015620029ab57600b036200dc6457604001926200dbb360c08551015162004c8b565b51935151916200dbcb855184511462000f4e62033906565b60005b85518110156200dc54576200dc4e9062000f556001600160a01b03806200dbf6848b62004ce2565b5116600052613ef8806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6200dc2a848962004ce2565b51916200dc38858c62004ce2565b51166000526020526001604060002001620056c2565b6200dbce565b509350916200c30c915062004c7b565b90919260208201516026811015620029ab57600c036200ddaf57606060408301510151926200dc93846202d715565b60005b84518110156200db735760e06200dcb68260606040880151015162004ce2565b510151156200dd3a576200dcde6200dcd78260606040880151015162004ce2565b5162005d5b565b613efa548060001981011162001e4f576200dcff6005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620092466200dd34936000190162005ca9565b6200dc96565b6200dd596200dd528260606040880151015162004ce2565b5162005d38565b613efb548060001981011162001e4f576200dd7a6005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620092466200dd34936000190162005c69565b92919060208101516026811015620029ab57600d036200def6576040019260206200dddf60a08651015162004c8b565b5194510151916200ddf485518451146202de09565b60005b85518110156200dc5457806200de126200de8b928662004ce2565b51156200de91576200de356200de29828962004ce2565b51613efa54116202de92565b6200de6160ff60056200de546200de4d858c62004ce2565b5162005ca9565b50015460081c166202deea565b6200de7960ff6005620093a26200de4d858c62004ce2565b6005620093be6200de4d838a62004ce2565b6200ddf7565b6200dead6200dea1828962004ce2565b51613efb54116202de92565b6200decc60ff60056200de546200dec5858c62004ce2565b5162005c69565b6200dee460ff6005620093a26200dec5858c62004ce2565b6005620093be6200dec5838a62004ce2565b60208101516026811015620029ab57600e036200e02c576040019260206200df2360a08651015162004c8b565b5194510151916200df3885518451146202de09565b60005b85518110156200dc5457806200df566200dfc8928662004ce2565b51156200dfce576200df796200df6d828962004ce2565b51613efa54116202dfac565b6200df9e60ff60056200df916200de4d858c62004ce2565b50015460081c166202e005565b6200dfb660ff6005620094fa6200de4d858c62004ce2565b6005620092466200de4d838a62004ce2565b6200df3b565b6200dfea6200dfde828962004ce2565b51613efb54116202dfac565b6200e00260ff60056200df916200dec5858c62004ce2565b6200e01a60ff6005620094fa6200dec5858c62004ce2565b6005620092466200dec5838a62004ce2565b90919260208201516026811015620029ab57600f036200e16957606060408301510151926200e05b846202d715565b60005b84518110156200db735760e06200e07e8260606040880151015162004ce2565b510151156200e0fb576200e09f6200dcd78260606040880151015162004ce2565b613efa548060001981011162001e4f576200e0c06005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620093be6200e0f5936000190162005ca9565b6200e05e565b6200e1136200dd528260606040880151015162004ce2565b613efb548060001981011162001e4f576200e1346005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620093be6200e0f5936000190162005c69565b92919060208101516026811015620029ab576010036200e2ae5760400151926200e19c60a0608086015195015162004c8b565b51916200e1b1855184511462000f4e62033906565b60005b85518110156200dc5457806200e1cf6200e244928862004ce2565b516200e1db8162002f45565b6200e1e7828762004ce2565b51906200e1f48162002f45565b6200e20b6200e20262033a39565b82151562004c48565b6200e2168162002f45565b600181036200e24a57506200e23a6200e22e62033a39565b61271083111562004c48565b613f675562004c7b565b6200e1b4565b6200e2558162002f45565b600281036200e2695750613f685562004c7b565b6200e2748162002f45565b600381036200e2885750613f695562004c7b565b806200e29660049262002f45565b146200e2a3575062004c7b565b613f6a55386200a16d565b60208101516026811015620029ab576011036200e55157604001906200e2df60a06200dacd60c08551015162004c8b565b51936200e2f083518651146202d58d565b60005b83518110156200e370576200e36a906200e34a6001600160a01b03806200e31b848962004ce2565b5116600052613efd90816020526200e33e6040600020546200686c868d62004ce2565b939062000f4e620338bc565b6200e356848962004ce2565b511660005260205260406000205562004c7b565b6200e2f3565b509350906200e37f9062033586565b90613efe54936200e396620080c084518762006258565b9060009260005b8781106200e511575060005b85518110156200e45e576000805b8981106200e40f575b50156200e3d9575b6200e3d39062004c7b565b6200e3a9565b936200e3d3906200e406906001600160a01b036200e3f8888a62004ce2565b511662001b03828862004ce2565b9490506200e3c8565b6200e41a8162004ec2565b90546001600160a01b0360039290921b1c8116906200e43a858b62004ce2565b5116146200e453576200e44d9062004c7b565b6200e3b7565b50506001386200e3c0565b5095509392506200e46f8262004dfe565b8051906001600160401b03821162002a23576020906200e48f8362004fdd565b01613efe600052602060002060005b8381106200e4f3575050505060005b8281106200e4c3575050506200c30c9062004c7b565b6200e4ed9062000f556001600160a01b036200e4e0838662004ce2565b511662001a448362004ec2565b6200e4ad565b82516001600160a01b0316818301556020909201916001016200e49e565b936200e5446200e54b916200e5268762004ec2565b905460039190911b1c6001600160a01b031662001b03828862004ce2565b9462004c7b565b6200e39d565b60208194929401516026811015620029ab576012036200e79557604001906200e58560a06200dacd60c08551015162004c8b565b51936200e59683518651146202d58d565b60005b83518110156200e5ea576200e5e4906200e34a6001600160a01b03806200e5c1848962004ce2565b5116600052613efd90816020526200e33e60406000205462007dae868d62004ce2565b6200e599565b50935091906200e5fa9062033586565b613efe546200e6098162004dfe565b906000926000915b8083106200e6bc575050506200e6278262004dfe565b8051906001600160401b03821162002a23576020906200e6478362004fdd565b01613efe600052602060002060005b8381106200e69e575050505060005b8281106200e67b575050506200c30c9062004c7b565b6200e6989062000f556001600160a01b036200e4e0838662004ce2565b6200e665565b82516001600160a01b0316818301556020909201916001016200e656565b91956000959193959760005b85518110156200e786576200e6dd8962004ec2565b90546001600160a01b0360039290921b1c8116906200e6fd838962004ce2565b5116146200e716576200e7109062004c7b565b6200e6c8565b509750956001959391955b806200e755575b156200e740576200e7399062004c7b565b916200e611565b936200e5446200e739916200e5268762004ec2565b506200e7618162004ec2565b60018060a01b0391549060031b1c16600052613efd602052604060002054156200e728565b5097969096959391956200e721565b60208194939401516026811015620029ab576013036200e8365760408091015101519160005b83518110156200d9ae576200e7d1818562004ce2565b5190613efc54600160401b81101562002a23576001810180613efc5581101562004c9957613efc6000526200e8309262000f55916007027f6710e0bb821cd3dfcfba05f5136082a6d0bca8d604d6d14bfd93de2dd49659d2016202f75c565b6200e7bb565b6020819493929401516026811015620029ab576014036200ed7857604001906200e86560c08351015162004c8b565b51936200e87c60a0620077f3818651015162004c8b565b51916200e88d86518551146202e0ca565b6200e89c86518451146202e130565b60005b86518110156200e996576200e8b5818562004ce2565b516200e8c2828762004ce2565b51906103e882101562004c9957611fbe6200e8e39260031b01549062006049565b906200e8f0838862004ce2565b51916103e883101562004c9957611fbe6200e9109360031b01556202e1ea565b6200e91c818562004ce2565b516200e929828762004ce2565b51906103e882101562004c99576200e95391611fbb906001600160a01b036200bea4868d62004ce2565b91906200e961828862004ce2565b51906103e882101562004c99576200e9909362000f5592611fbb906001600160a01b036200befa878f62004ce2565b6200e89f565b50926200e9ad919250620084d190959495620336a2565b916040516200e9bc8162002ac7565b6000815260003681376000945b80518610156200c2fa576200e9df868262004ce2565b516107e0526200e9f0855162004dfe565b966000946200ea00845162004dfe565b6108805260009460005b88518110156200ead2578a896200ea3a6001600160a01b036200ea2e858462004ce2565b51166107e051620334e1565b15806200ea8a575b6200ea5b575b50506200ea559062004c7b565b6200ea0a565b986200ea7f9162001b0382859c62007f8f6200ea559760018060a01b039262004ce2565b9790508a896200ea48565b5050506103e86107e051101562004c99576001600160a01b036200eaaf828b62004ce2565b5116600052611fbb6107e05160031b016020528a8960406000205415156200ea42565b50909895979498969291939660005b88518110156200eb70576103e86107e051101562004c99576001600160a01b03806200eb0e838c62004ce2565b5116600052611fbb6107e05160031b01602052604060002054156200eb40575b506200eb3a9062004c7b565b6200eae1565b819b6200eb68916200eb576200eb3a948d62004ce2565b511662001b03826108805162004ce2565b9a906200eb2e565b509850969592919093966107e0516103e8811015806108005262004c995760031b611fbc0154986200eba7620080c0898c62006258565b6102005260006106005260006103e0525b6108005162004c99576103e0518a8110156200ec81576200ebee6200ec0e91600061080052611fbc6107e05160031b0162004efa565b9054610880516001600160a01b03939260031b9190911c83169062033539565b156200ec2e575b506200ec246103e05162004c7b565b6103e0526200ebb8565b6000610800526200ec4d6103e051611fbc6107e05160031b0162004efa565b90549060031b1c166200ec67610600516102005162004ce2565b526200ec766106005162004c7b565b61060052386200ec15565b50979294959093985095909560005b8281106200ed2c575050506108005162004c995761020051516001600160401b03811162002a23576200ecce81611fbc6107e05160031b0162005036565b60206102005101611fbc6107e05160031b01600052602060002060005b8381106200ed0e57505050506200ed029062004c7b565b9492959091956200e9c9565b82516001600160a01b0316818301556020909201916001016200eceb565b6200ed72906001600160a01b036200ed45828562004ce2565b51166200ed59610600516102005162004ce2565b526200ed686106005162004c7b565b6106005262004c7b565b6200ec90565b9260208401516026811015620029ab576015036200f3795760408401906200eda560c08351015162004c8b565b51906200edbc60a0620077f3818651015162004c8b565b51936200edd1835185511462000f4e62033906565b6200ede4835186511462000f4e62033906565b60005b83518110156200ee42576200edfd818662004ce2565b51906103e882101562004c9957611fbb6200ee3c9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200ede7565b509095919560005b87518110156200ef74576200ee60818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200ee9a60406000205462007dae838962004ce2565b906200eea7838862004ce2565b51916103e883101562004c9957611fbb6200eee09360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200eeec818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ef10848c62004ce2565b511660005260031b016020526200ef326040600020546200686c838962004ce2565b91906200ef40828862004ce2565b51906103e882101562004c99576200ef6e93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b6200ee4a565b50926200ef8c919294506200c6fd90969596620336a2565b92604051906200ef9c8262002b00565b6001825260203681840137516001600160a01b03166200efbc8262004c8b565b526000945b80518610156200c2fa576200efd7868262004ce2565b51610380526200efe8855162004dfe565b966000946200eff8845162004dfe565b6105a05260009460005b88518110156200f0ca578a896200f0326001600160a01b036200f026858462004ce2565b511661038051620334e1565b15806200f082575b6200f053575b50506200f04d9062004c7b565b6200f002565b986200f0779162001b0382859c62007f8f6200f04d9760018060a01b039262004ce2565b9790508a896200f040565b5050506103e861038051101562004c99576001600160a01b036200f0a7828b62004ce2565b5116600052611fbb6103805160031b016020528a8960406000205415156200f03a565b50909895979498969291939660005b88518110156200f16f576103e861038051101562004c99576001600160a01b036200f105828b62004ce2565b5116600052611fbb6103805160031b01602052604060002054156200f136575b6200f1309062004c7b565b6200f0d9565b996200f130906200f166906001600160a01b036200f1558e8d62004ce2565b511662001b03826105a05162004ce2565b9a90506200f125565b50985096959291909396610380516103e8811015806103605262004c995760031b611fbc0154986200f1a6620080c0898c62006258565b6107c0526000610640526000610700525b6103605162004c9957610700518a8110156200f282576200f1ed6200f20a91600061036052611fbc6103805160031b0162004efa565b90546105a05160039290921b1c6001600160a01b03169062033539565b156200f229575b6200f21f6107005162004c7b565b610700526200f1b7565b6000610360526200f24861070051611fbc6103805160031b0162004efa565b60018060a01b0391549060031b1c166200f269610640516107c05162004ce2565b526200f2786106405162004c7b565b610640526200f211565b50979294959093985095909560005b8281106200f32d575050506103605162004c99576107c051516001600160401b03811162002a23576200f2cf81611fbc6103805160031b0162005036565b60206107c05101611fbc6103805160031b01600052602060002060005b8381106200f30f57505050506200f3039062004c7b565b9492959091956200efc1565b82516001600160a01b0316818301556020909201916001016200f2ec565b6200f373906001600160a01b036200f346828562004ce2565b51166200f35a610640516107c05162004ce2565b526200f3696106405162004c7b565b6106405262004c7b565b6200f291565b90919260208101516026811015620029ab576016036200f42b5760c060406200f3a6920151015162004c8b565b519160005b83518110156200d9ae576001600160a01b036200f3c9828662004ce2565b51613f6b54929116600160401b83101562002a23576001830180613f6b5583101562004c9957613f6b60005260008051602062033ebb83398151915290920180546001600160a01b0319169092179091556200f4259062004c7b565b6200f3ab565b60208101516026811015620029ab576017036200f4885760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab576018036200f5465760c060406200f4b2920151015162004c8b565b5191600160ff19613f6e541617613f6e5560005b83518110156200d9ae576001600160a01b036200f4e4828662004ce2565b51613f6d54929116600160401b83101562002a23576001830180613f6d5583101562004c9957613f6d600052600080516020620340bb83398151915290920180546001600160a01b0319169092179091556200f5409062004c7b565b6200f4c6565b6020819492939401516026811015620029ab576019036200f56e575b506200c30c9062004c7b565b60208101516026811015620029ab57601a036200f6e55760a060406200f598920151015162004c8b565b51906200f5a960038351146202d58d565b6200f5b48262004c8b565b516200f5c46200a1068462004caf565b51926200f6a9576200c30c926001036200f6a2576200f5eb6200f64991613f695462006049565b613f6955604051906200f5fe8262002a8f565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004c48565b6200f69b6200f65b613f6a5462006036565b613f6a55604051906200f66e8262002b00565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004c48565b906200f562565b506200f69b565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b036200fc7557509190613f67546200f7116200a1e362033793565b613f6a54613f685411156200f7306200f72962033801565b8262004c48565b613f6954906200f741838362005f19565b50506200f74d62033857565b506000805b6103e882106200fc26575b5050906200f78d6200f79393926200f7836200f77862033793565b612710861062004c48565b62000f4e62033801565b62005f19565b90506200f79f62033857565b5060009060005b6103e881106200fb53575b50906127106200f7c2920462006236565b90506200f7d2613f745462004dfe565b906000946000905b6103e88210156200fb46578160031b9460ff611fbf87015416156200f93057600096611fba870154156200f91f57600098975b62004c9957611fbc8701548910156200f905576200f83089611fbc890162004efa565b600160a01b6001900391549060031b1c169788600052611fbb8801602052604098868a60002054906200f8639162005f19565b9a906200f86f62033857565b6200f87a9162004c48565b60009a611fba8b01546200f88e9162005f19565b91906200f89a62033857565b6200f8a59162004c48565b82600052613eff602052600020908154906200f8c19162006049565b9091556200f8ce62033857565b6200f8d99162004c48565b6200f8e5828962004ce2565b526200f8f19062004c7b565b986200f8fd9062004c7b565b98976200f80d565b929095506200f9179196975062004c7b565b90946200f7da565b929095506200f91791965062004c7b565b95969392509350505b6200f9448262004dfe565b9160009160005b8281106200fab057505050613f0054916200f96b620080c0848462006258565b926000906000905b8082106200fa9357505060005b8381106200f9fd5750508251929150506001600160401b03821162002a23576020906200f9ad8362005000565b01613f00600052602060002060005b8381106200f9df57505050506200c30c906000613f69556000613f6a556200f69b565b82516001600160a01b0316818301556020909201916001016200f9bc565b6000805b8381106200fa4b575b50156200fa23575b6200fa1d9062004c7b565b6200f980565b906200fa1d906200fa42906001600160a01b0362008248858762004ce2565b9190506200fa12565b6001600160a01b03806200fa60858862004ce2565b5116906200fa6f838a62004ce2565b5116146200fa88576200fa829062004c7b565b6200fa01565b50506001386200fa0a565b9091620082566200faa99162009b6f8562004ede565b906200f973565b6000805b8581106200fafe575b50156200fad6575b6200fad09062004c7b565b6200f94b565b926200fad0906200faf5906001600160a01b0362008248878662004ce2565b9390506200fac5565b6001600160a01b03806200fb13858762004ce2565b5116906200fb22838a62004ce2565b5116146200fb3b576200fb359062004c7b565b6200fab4565b50506001386200fabd565b939495929150506200f939565b90918160039695961b60ff611fbf82015416156200fc1a57611fba810154611fbc8201546000928391825b8184106200fbba5750505050620074b96200fbb1936200fba962000f559796946200621c9462005f19565b929062005d7e565b9493946200f7a6565b94929462004c99576200fc13856200fc0b6200fbdf62000f5598611fbc870162004efa565b905460039190911b1c6001600160a01b03166000908152611fbb86016020526040812054909662006049565b979062005f3b565b926200fb7e565b5091909493946200f7b1565b8160039897981b60ff611fbf82015416156200fc6b57916200a622620074b96200fc61936200a61662000f5596611fba6200a60c8762005eb4565b909695966200f752565b509695966200f75d565b60208101516026811015620029ab57601c036200fcd25760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d036200fcf6575b506200c30c906200f69b565b91929060208301516026811015620029ab57601e036200ff0d576200fd2360a06040850151015162004c8b565b51516200fd3860a06040860151015162004caf565b5151036200aeb0576200fd5360a06040850151015162004c8b565b51516200fd6860a06040860151015162004cc0565b5151036200ae34576200fd8360a06040850151015162004c8b565b51926200fd9860a06040830151015162004caf565b51916200fdad60a06040840151015162004cc0565b51956200fdba836202ed18565b60009460005b87518110156200fe13576200fdde6200acf06200ace3838962004ce2565b806200fdf7575b506200fdf19062004c7b565b6200fdc0565b906200ad266200fe0c986200fdf19362006049565b906200fde5565b5096509450915091806200fe31575b506200c30c91505b906200fcea565b6200fe5c9060018060a01b038451166000526200ad84613efd91826020526040600020549062006049565b60018060a01b03845116600052602052604060002055600091600092613efe54935b8481106200fec8575b506200fe2257516001600160a01b031691600160401b81101562002a23576200c30c9262001a448260016200fec19401613efe5562004ec2565b386200fe22565b6200fed38162004ec2565b9054845160039290921b1c6001600160a01b039081169116146200ff02576200fefc9062004c7b565b6200fe7e565b50506001386200fe87565b90929160208101516026811015620029ab57601f036200ff885760406200ff379101515162004c8b565b5190613f6c54600160401b81101562002a23576001810180613f6c5581101562004c9957613f6c6000526200c30c926200ff829160008051602062033efb83398151915201620056c2565b6200fe2a565b60208101516026811015620029ab576020036200ffac575b506200c30c906200fe2a565b60208101516026811015620029ab576021146200ffa05760208101516026811015620029ab576022036201003257506200c30c9060ff19613f6e5416613f6e55613f6d546000613f6d558062010006575b505b906200ffa0565b613f6d6000526201002b90600080516020620340bb8339815191529081019062004f3f565b386200fffd565b60208101516026811015620029ab5760230362010056575b506200c30c906200ffff565b60208101516026811015620029ab576024146201004a5760208101516026811015620029ab576025146201004a5792909160208401516026811015620029ab576015036201069a576040840190620100b360c08351015162004c8b565b5190620100ca60a0620077f3818651015162004c8b565b5193620100df835185511462000f4e62033906565b620100f2835186511462000f4e62033906565b60005b835181101562010150576201010b818662004ce2565b51906103e882101562004c9957611fbb6201014a9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b620100f5565b509095919560005b875181101562010282576201016e818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b01602052620101a860406000205462007dae838962004ce2565b90620101b5838862004ce2565b51916103e883101562004c9957611fbb620101ee9360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b620101fa818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036201021e848c62004ce2565b511660005260031b01602052620102406040600020546200686c838962004ce2565b91906201024e828862004ce2565b51906103e882101562004c99576201027c93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b62010158565b50926201029a919294506200c6fd90969596620336a2565b9260405190620102aa8262002b00565b6001825260203681840137516001600160a01b0316620102ca8262004c8b565b526000945b80518610156201068757620102e5868262004ce2565b51610ac052620102f6855162004dfe565b9660009462010306845162004dfe565b6109205260009460005b8851811015620103d8578a89620103406001600160a01b0362010334858462004ce2565b5116610ac051620334e1565b158062010390575b62010361575b50506201035b9062004c7b565b62010310565b98620103859162001b0382859c62007f8f6201035b9760018060a01b039262004ce2565b9790508a896201034e565b5050506103e8610ac051101562004c99576001600160a01b03620103b5828b62004ce2565b5116600052611fbb610ac05160031b016020528a89604060002054151562010348565b50909895979498969291939660005b88518110156201047d576103e8610ac051101562004c99576001600160a01b0362010413828b62004ce2565b5116600052611fbb610ac05160031b016020526040600020541562010444575b6201043e9062004c7b565b620103e7565b996201043e9062010474906001600160a01b03620104638e8d62004ce2565b511662001b03826109205162004ce2565b9a905062010433565b50985096959291909396610ac0516103e8811015806106205262004c995760031b611fbc015498620104b4620080c0898c62006258565b6109005260006109e0526000610480525b6106205162004c9957610480518a8110156201059057620104fb6201051891600061062052611fbc610ac05160031b0162004efa565b90546109205160039290921b1c6001600160a01b03169062033539565b1562010537575b6201052d6104805162004c7b565b61048052620104c5565b6000610620526201055661048051611fbc610ac05160031b0162004efa565b60018060a01b0391549060031b1c16620105776109e0516109005162004ce2565b52620105866109e05162004c7b565b6109e0526201051f565b50979294959093985095909560005b8281106201063b575050506106205162004c995761090051516001600160401b03811162002a2357620105dd81611fbc610ac05160031b0162005036565b60206109005101611fbc610ac05160031b01600052602060002060005b8381106201061d5750505050620106119062004c7b565b949295909195620102cf565b82516001600160a01b031681830155602090920191600101620105fa565b62010681906001600160a01b0362010654828562004ce2565b5116620106686109e0516109005162004ce2565b52620106776109e05162004c7b565b6109e05262004c7b565b6201059f565b5050939092506200c30c9150906201004a565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b50919050620106e782620159a8565b92906006811015620029ab5760028103620107175760405162461bcd60e51b81528062004c7760048201620075e7565b60038103620116ab5750613f738054600260ff82166201073781620029a0565b14620116665760ff19166002179055613f78549060018201821162001e4f5760018201613f7855611f44549092600019929060005b8651811015620107e8576201078f8462010787838a62004ce2565b511062032fe8565b846002620107a9620107a2848b62004ce2565b516202f73c565b50015410620107c4575b620107be9062004c7b565b6201076c565b9350620107be6002620107dc620107a2878a62004ce2565b500154949050620107b3565b5090936000199360005b87518110156201085f576201080d8562010787838b62004ce2565b85600362010820620107a2848c62004ce2565b500154106201083b575b620108359062004c7b565b620107f2565b945062010835600362010853620107a2888b62004ce2565b5001549590506201082a565b509194600191935062010873875162004dfe565b6201087f885162004dfe565b6201088b895162004dfe565b90620108988a5162004dfe565b9260405197620108a88962002a72565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e0850152600061010085015201600052613f766020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b821162002a23576001840154826001860155808310620114a7575b5060200190600184016000526020600020916000905b82821062010e42575050505060406201096191015160028301620056c2565b60208301518051906001600160401b03821162002a2357602060038401916201098b848462005036565b0190600052602060002060005b83811062010e2d575050505060408301518051906001600160401b03821162002a235760206004840191620109ce848462005036565b0190600052602060002060005b83811062010e18575050505060608301518051906001600160401b03821162002a23576020600584019162010a11848462005036565b0190600052602060002060005b83811062010e03575050505060808301518051906001600160401b03821162002a23576020600684019162010a54848462005036565b0190600052602060002060005b83811062010dee575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029ab5761010062010ab99262010ac09560ff801985541691161783550151151590620057a6565b4262006049565b901562010dae57613f7854600052613f7660205280600760406000200155613f715562010afe613f7854918260005260076040600020015462006049565b91901562010d6b57600052613f7660205280600860406000200155613f7255613f78546000526009604060002001600260ff1982541617905560005b825181101562010b80578062000f5562010b5962010b7a938662004ce2565b51613f7854600052613f7660205262006c1783600360406000200162004efa565b62010b3a565b506000915b805183101562010d6657613f78549283600052613f7660205262010bc262010bb582600360406000200162004efa565b90549060031b1c6202f73c565b50549162010bd08362004dfe565b9260005b81811062010d1b5750506000906000915b845183101562010cea5762010bfb838662004ce2565b516103e8908181101562004c995760031b6001015462010c1c858862004ce2565b519182101562004c9957600662010c399260031b01549062005f19565b901562010ca65762010c4b9162006049565b92901562010c655762010c5e9062004c7b565b9162010be5565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b909562010d14945062000f559250600052613f7660205262006c1783600660406000200162004efa565b9162010b85565b62010d609087600052613f7660205262010d4d8162010d4662010bb588600360406000200162004efa565b5062004efa565b90549060031b1c62001b03828862004ce2565b62010bd4565b509050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b60019060208451940193818401550162010a61565b60019060208451940193818401550162010a1e565b600190602084519401938184015501620109db565b60019060208451940193818401550162010998565b805180518554602083015190916001600160a01b0316906026811015620029ab576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010e9c8484620053ca565b01906000526020600020906000905b838210620114875750505050602081015180516001600160401b03811162002a23576020600288019262010ee0838562032aee565b019160005260206000209060005b8160051c81106201144b5750601f198116810362011406575b5050506040810151805190600160401b821162002a235760038701548260038901558083106201137e575b50602001600387016000526020600020906000905b8382106201135d57505050506060810151805190600160401b821162002a23576004870154826004890155808310620112dc575b50602001600487016000526020600020906000905b838210620112bb5750505050608081015180516001600160401b03811162002a23576020600588019262010fc5838562032aee565b019160005260206000209060005b8160051c81106201127c5750601f198116928382036201122d575b505050506006850160a082015160208151916201100c838562005458565b019160005260206000206000925b828410620111c957505050506007850160c0820151602081519162011040838562005458565b019160005260206000206000925b8284106201115c575050505060e001518051906001600160401b03821162002a23576201108e8262011084600889015462002c01565b6008890162005678565b602090601f8311600114620110e1579282600993602093600196600092620110d5575b5050600019600383901b1c191690851b1760088801555b0194019101909262010942565b015190503880620110b1565b906008870160005260206000209160005b601f198516811062011143575083602093600196938793600997601f1981161062011129575b505050811b016008880155620110c8565b015160001960f88460031b161c1916905538808062011118565b91926020600181928685015181550194019201620110f2565b80518051906001600160401b03821162002a23576020906201117f838662005036565b0183600052602060002060005b838110620111ab5750505050600160208192019201930192906201104e565b82516001600160a01b0316818301556020909201916001016201118c565b80518051906001600160401b03821162002a2357602090620111ec838662005036565b0183600052602060002060005b838110620112185750505050600160208192019201930192906201101a565b600190602084519401938184015501620111f9565b6000936000905b8084038210620112505750505060051c01553880808062010fee565b909194602062011271600192858951916201126b8362002f45565b62032b58565b960192019062011234565b6000805b602081106201129757508382015560010162010fd3565b94906020620112b1600192888551916201126b8362002f45565b9201950162011280565b6006602082620112cf6001945187620057d8565b0193019101909162010f90565b600681810204810362001e4f57600683810204830362001e4f576004880160005260206000208360060281015b82600602820181106201131e57505062010f7b565b80600060069255600060018201556201133a60028201620054a7565b600060038201556201134f600482016200533c565b600060058201550162011309565b60076020826201137160019451876202f75c565b0193019101909162010f47565b600781810204810362001e4f57600783810204830362001e4f576003880160005260206000208360070281015b8260070282018110620113c057505062010f32565b80620113ce60079262004fb6565b60006001820155600060028201556000600382015560006004820155620113f8600582016200533c565b6000600682015501620113ab565b60009260005b601f198316830381106201142a57505060051c015538808062010f07565b909360206201144160019284885115159162032b58565b950191016201140c565b6000805b602081106201146657508382015560010162010eee565b949060206201147d60019288855115159162032b58565b920195016201144f565b60016020826201149a83945187620056c2565b0193019101909162010eab565b600981810204810362001e4f57600983810204830362001e4f576001850160005260206000208360090281015b8260090282018110620114e95750506201092c565b60008155620114fb600182016200538b565b62011510600282018054906000815562032ac6565b60038101546000600383015580620115f0575b506004810154600060048301558062011581575b5080620115506005600993018054906000815562032ac6565b6201155e6006820162005419565b6201156c6007820162005419565b6201157a600882016200533c565b01620114d4565b600681810204810362001e4f57600482016000526020600020906006028101905b818110620115b1575062011537565b8060006006925560006001820155620115cd60028201620054a7565b60006003820155620115e2600482016200533c565b6000600582015501620115a2565b600781810204810362001e4f57600382016000526020600020906007028101905b81811062011620575062011523565b806201162e60079262004fb6565b6000600182015560006002820155600060038201556000600482015562011658600582016200533c565b600060068201550162011611565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b60059192935014620116ba5750565b90600080611f4a54905b81811062014ba8575b50501562014b8c575b60005b6020830151908151811015620117315762000f55620077196201170b620076f96020620067ff866201172b9862004ce2565b86516001600160a01b03166000908152611f496020526040902062024340565b620116d9565b505060005b602083015180518210156201177e57620076f96020620067ff846201175b9462004ce2565b90606482101562004c995762011778914290611f4b015562004c7b565b62011736565b50506000905b602083015180518310156200b13957826201179f9162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab57600103620119e75760400190620117e060c08351015162004c8b565b5193620117f760a0620077f3818651015162004c8b565b51916201180886518551146202e0ca565b6201181786518451146202e130565b60005b86518110156201196e5762011830818662004ce2565b516103e881101562004c9957600160ff6007620118569360031b0154161515146202e192565b62011862818562004ce2565b516201186f828762004ce2565b51906103e882101562004c995760066201188f9260031b01549062006049565b906201189c838862004ce2565b51916103e883101562004c99576006620118bb9360031b01556202e1ea565b620118c7818562004ce2565b51620118d4828762004ce2565b51906103e882101562004c995762011915916003906001600160a01b03620118fd868d62004ce2565b5116600052811b016020526040600020549062006049565b919062011923828862004ce2565b51906103e882101562004c9957620119689362000f55926003906001600160a01b0362011951878f62004ce2565b5116600052811b016020526040600020556202e249565b6201181a565b5094915091620119826201198991620336a2565b9162033586565b9360405192620119998462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba620119c4938762004ce2565b620119a5565b5094509260209250620119de915062004c7b565b91905062011784565b6020819492939401516026811015620029ab5760020362011c7f5760400180519283519062011a1f62007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b865181101562011b655762011a58818862004ce2565b516103e881101562004c995760ff600762011a7a9260031b015416156202e2a2565b62011a86818862004ce2565b516103e881101562004c995760031b600701805460ff1916600117905562011aaf818562004ce2565b5162011abc828962004ce2565b51906103e882101562004c9957600562011ada9260031b01620056c2565b62011ae6818662004ce2565b5162011af3828962004ce2565b516103e881101562004c995760031b6001015562011b12818762004ce2565b5162011b1f828962004ce2565b516103e881101562004c995760031b6002015562011b3e818862004ce2565b51906103e882101562004c99576000600662011b5f9360031b015562004c7b565b62011a42565b50959150935060209250620119de915062004c7b565b60405162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b6020819493929401516026811015620029ab5760030362011cad576020919262000f55620119de926202e2ee565b60208101516026811015620029ab5760040362011f555762011cd760c06040830151015162004c8b565b519362011cec60c06040840151015162004caf565b519062011d1360a0604062011d078282880151015162004c8b565b51950151015162004caf565b519362011d28875184511462000f4e62033906565b62011d3b875185511462000f4e62033906565b62011d4e875186511462000f4e62033906565b60005b875181101562011db75762011d67818662004ce2565b51906103e882101562004c995762011db1916003906001600160a01b0362011d90848d62004ce2565b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62011d51565b509095919593929360005b835181101562011f125762011dd8818762004ce2565b516103e881101562004c99576003906001600160a01b0362011dfb848862004ce2565b5116600052811b0160205262011e1c60406000205462007dae838862004ce2565b9062011e29838962004ce2565b51916103e883101562004c995762011e6d926003906001600160a01b0362011e52878b62004ce2565b5116600052811b0160205260406000205562000f4e62033a0a565b62011e79818762004ce2565b516103e881101562004c99576003906001600160a01b0362011e9c848c62004ce2565b5116600052811b0160205262011ebd6040600020546200686c838862004ce2565b91905062011ecc818862004ce2565b51916103e883101562004c995762011f0c926003906001600160a01b0362011ef5858e62004ce2565b5116600052811b0160205260406000205562004c7b565b62011dc2565b509362011f2c9192969350620084d162007e9f91620336a2565b9260005b8351811015620119ca578062000f55620079ba62011f4f938762004ce2565b62011f30565b929060208401516026811015620029ab57600503620124c25762011f8160a06040860151015162004c8b565b519062011f9660a06040870151015162004caf565b51928251845103620089ef5760005b835181101562011ffe5762011fbb818562004ce2565b51906103e882101562004c9957600362011ff89260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62011fa5565b509060005b8351811015620120a15762012019818562004ce2565b516103e881101562004c995760039060018060a01b03895116600052811b016020526201205160406000205462007dae838862004ce2565b91906201205f828762004ce2565b51906103e882101562004c99576201209b93600362000f559360018060a01b038d5116600052811b0160205260406000205562000f4e62033a0a565b62012003565b5091620120b29194959350620336a2565b9260405192620120c28462002b00565b6001845260203681860137516001600160a01b0316620120e28462004c8b565b5260405192620120f28462002ac7565b6000845260003681376000945b8051861015620124ae5762012115868262004ce2565b516102a05262012126855162004dfe565b9660009462012136845162004dfe565b610a205260009460005b885181101562012206578a89620121706001600160a01b0362012164858462004ce2565b51166102a0516203348a565b1580620121c0575b62012191575b50506201218b9062004c7b565b62012140565b98620121b59162001b0382859c62007f8f6201218b9760018060a01b039262004ce2565b9790508a896201217e565b5050506103e86102a051101562004c99576001600160a01b03620121e5828b62004ce2565b511660005260036102a051811b016020528a89604060002054151562012178565b50909895979498969291939660005b8851811015620122a9576103e86102a051101562004c99576001600160a01b0362012241828b62004ce2565b511660005260036102a051811b016020526040600020541562012270575b6201226a9062004c7b565b62012215565b996201226a90620122a0906001600160a01b036201228f8e8d62004ce2565b511662001b0382610a205162004ce2565b9a90506201225f565b509850969592919093966102a0516103e8811015806108605262004c995760031b6004015498620122df620080c0898c62006258565b6104c0526000610aa05260006104a0525b6108605162004c99576104a0518a811015620123b95762012325620123429160006108605260046102a05160031b0162004efa565b9054610a205160039290921b1c6001600160a01b03169062033539565b1562012361575b620123576104a05162004c7b565b6104a052620122f0565b6000610860526201237f6104a05160046102a05160031b0162004efa565b60018060a01b0391549060031b1c16620123a0610aa0516104c05162004ce2565b52620123af610aa05162004c7b565b610aa05262012349565b50979294959093985095909560005b82811062012462575050506108605162004c99576104c051516001600160401b03811162002a2357620124058160046102a05160031b0162005036565b60206104c0510160046102a05160031b01600052602060002060005b838110620124445750505050620124389062004c7b565b949295909195620120ff565b82516001600160a01b03168183015560209092019160010162012421565b620124a8906001600160a01b036201247b828562004ce2565b51166201248f610aa0516104c05162004ce2565b526201249e610aa05162004c7b565b610aa05262004c7b565b620123c8565b505093620119de9193506020925062004c7b565b909260208101516026811015620029ab576006036201267b57604001620124ee60c08251015162004c8b565b51936201250560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620125845762012534818562004ce2565b51906103e882101562004c99576201257e916003906001600160a01b036201255d848c62004ce2565b5116600052811b0160205262000f5560406000205462007d41838962004ce2565b6201251e565b509060005b865181101562012625576201259f818562004ce2565b516103e881101562004c99576003906001600160a01b03620125c2848b62004ce2565b5116600052811b01602052620125e360406000205462007dae838862004ce2565b9190620125f1828762004ce2565b51906103e882101562004c99576201261f9362000f55926003906001600160a01b0362011e52878f62004ce2565b62012589565b5094916201263a9193506201198290620336a2565b91604051946201264a8662002ac7565b60008652600036813760005b8351811015620119ca578062000f55620079ba62012675938762004ce2565b62012656565b60208101516026811015620029ab576007036201278d5760400192620126a660c08551015162004c8b565b5191620126b860a08651015162004c8b565b5194515191620126d0845187511462000f4e62033906565b60005b8451811015620119ca57620127879062000f556001600160a01b0380620126fb848a62004ce2565b51166000528660028b620127776201273a876201273281611f40978860205262008d7e60ff604060002054161562000f4e620339d7565b519362004ce2565b519162008de28d60405196620127508862002a07565b60018852886200d82f8c60208b01946000865260408c0197885260608c01998a5262004ce2565b5191015562008dfd838962004ce2565b620126d3565b60208194939401516026811015620029ab57600803620128245760c06040620127ba920151015162004c8b565b519160005b835181101562012812576201280c906001600160a01b0380620127e3838862004ce2565b5116600052611f4090816020526200d94b600160ff6040600020541615151462000f4e62033936565b620127bf565b50926020919250620119de9062004c7b565b60208101516026811015620029ab57600903620128a65760c060406201284e920151015162004c8b565b519160005b83518110156201281257620128a0906001600160a01b038062012877838862004ce2565b5116600052611f4090816020526200da39600160ff6040600020541615151462000f4e62033936565b62012853565b60208101516026811015620029ab57600a03620129545760400190620128d760a06200dacd60c08551015162004c8b565b5192620128ec835185511462000f4e62033906565b60005b835181101562012941576201293b906001600160a01b038062012913838862004ce2565b5116600052611f40806020526200db3c600160ff6040600020541615151462000f4e62033936565b620128ef565b5093620119de9193506020925062004c7b565b6020819493929401516026811015620029ab57600b0362012a0757604001926201298360c08551015162004c8b565b51935151916201299b855184511462000f4e62033906565b60005b8551811015620129f457620129ee9062000f556001600160a01b0380620129c6848b62004ce2565b5116600052611f40806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6201299e565b5093509160209150620119de9062004c7b565b90919260208201516026811015620029ab57600c0362012b44576060604083015101519262012a36846202d715565b60005b8451811015620129415760e062012a598260606040880151015162004ce2565b5101511562012ad65762012a7a620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012a9b6005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c89565b62012a39565b62012aee620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012b0f6005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c49565b92919060208101516026811015620029ab57600d0362012c585760400192602062012b7460a08651015162004c8b565b51945101519162012b8985518451146202de09565b60005b8551811015620129f4578062012ba762012c00928662004ce2565b511562012c065762012bbe62009368828962004ce2565b62012bd660ff60056200de5462009389858c62004ce2565b62012bee60ff6005620093a262009389858c62004ce2565b6005620093be62009389838a62004ce2565b62012b8c565b62012c16620093f6828962004ce2565b62012c2e60ff60056200de5462009417858c62004ce2565b62012c4660ff6005620093a262009417858c62004ce2565b6005620093be62009417838a62004ce2565b60208194929401516026811015620029ab57600e0362012d1f5760400190602062012c8860a08451015162004c8b565b51925101519362012c9d83518651146202de09565b60005b8351811015620129f4578062012cbb62012cc7928862004ce2565b5162012ccd5762004c7b565b62012ca0565b62012cdd620094b3828762004ce2565b62012cf560ff60056200df9162009389858a62004ce2565b62012d0d60ff6005620094fa62009389858a62004ce2565b60056200924662009389838862004ce2565b9060208294939401516026811015620029ab57600f0362012e5d576060604083015101519262012d4f846202d715565b60005b8451811015620129415760e062012d728260606040880151015162004ce2565b5101511562012def5762012d93620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012db46005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c89565b62012d52565b62012e07620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012e286005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c49565b9060208194939401516026811015620029ab5760100362012ece57604001519062012e9160a0608084015193015162004c8b565b519362012ea6835186511462000f4e62033906565b60005b8351811015620129f4578062000f55620096a562012ec8938762004ce2565b62012ea9565b60208194929401516026811015620029ab5760110362013130576040019062012f0260a06200dacd60c08551015162004c8b565b519362012f1383518651146202d58d565b60005b835181101562012f8d5762012f879062000f556001600160a01b038062012f3e848962004ce2565b5116600052611f458060205262012f606040600020546200686c868d62004ce2565b91909262012f6f868b62004ce2565b511660005260205260406000205562000f4e620338bc565b62012f16565b5093509062012f9c9062033586565b90611f46549362012fb3620080c084518762006258565b9060009260005b87811062013115575060005b85518110156201306d576000805b8981106201301e575b501562012ff6575b62012ff09062004c7b565b62012fc6565b9362012ff09062013015906001600160a01b036200e3f8888a62004ce2565b94905062012fe5565b620130298162004e52565b90546001600160a01b0360039290921b1c81169062013049858b62004ce2565b51161462013062576201305c9062004c7b565b62012fd4565b505060013862012fdd565b5095509392506201307e8262004dfe565b8051906001600160401b03821162002a23576020906201309e8362004f93565b01611f46600052602060002060005b838110620130f7575050505060005b828110620130d457505050620119de60209162004c7b565b620130f19062000f556001600160a01b0362001a37838662004ce2565b620130bc565b82516001600160a01b031681830155602090920191600101620130ad565b936200e5446201312a916200e5268762004e52565b62012fba565b60208194929401516026811015620029ab576012036201337557604001906201316460a06200dacd60c08551015162004c8b565b51936201317583518651146202d58d565b60005b8351811015620131c857620131c29062000f556001600160a01b0380620131a0848962004ce2565b5116600052611f458060205262012f6060406000205462007dae868d62004ce2565b62013178565b5093509190620131d89062033586565b611f4654620131e78162004dfe565b906000926000915b8083106201329c57505050620132058262004dfe565b8051906001600160401b03821162002a2357602090620132258362004f93565b01611f46600052602060002060005b8381106201327e575050505060005b8281106201325b57505050620119de60209162004c7b565b620132789062000f556001600160a01b0362001a37838662004ce2565b62013243565b82516001600160a01b03168183015560209092019160010162013234565b91956000959193959760005b85518110156201336657620132bd8962004e52565b90546001600160a01b0360039290921b1c811690620132dd838962004ce2565b511614620132f657620132f09062004c7b565b620132a8565b509750956001959391955b8062013335575b156201332057620133199062004c7b565b91620131ef565b936200e54462013319916200e5268762004e52565b50620133418162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562013308565b50979690969593919562013301565b60208101516026811015620029ab57601303620133ce5760408091015101519260005b8451811015620133bd578062000f5562009c19620133b7938862004ce2565b62013398565b50925090620119de60209162004c7b565b60208101516026811015620029ab576014036201357b5760400190620133f960c08351015162004c8b565b51936201341060a0620077f3818651015162004c8b565b51916201342186518551146202e0ca565b6201343086518451146202e130565b60005b8651811015620135265762013449818562004ce2565b5162013456828762004ce2565b51906103e882101562004c99576006620134769260031b01549062006049565b9062013483838862004ce2565b51916103e883101562004c99576006620134a29360031b01556202e1ea565b620134ae818562004ce2565b51620134bb828762004ce2565b51906103e882101562004c9957620134e4916003906001600160a01b03620118fd868d62004ce2565b9190620134f2828862004ce2565b51906103e882101562004c9957620135209362000f55926003906001600160a01b0362011951878f62004ce2565b62013433565b5094915091620119826201353a91620336a2565b93604051926201354a8462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba62013575938762004ce2565b62013556565b60208101516026811015620029ab57601503620135a5576020919262000f55620119de926202e2ee565b60208101516026811015620029ab57601603620136015760c06040620135cf920151015162004c8b565b519260005b8451811015620133bd57620135fb9062000f556001600160a01b0362009e60838962004ce2565b620135d4565b60208101516026811015620029ab576017036201365e5760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601803620136c95760c0604062013688920151015162004c8b565b5192600160ff19611fb6541617611fb65560005b8451811015620133bd57620136c39062000f556001600160a01b0362009f2c838962004ce2565b6201369c565b60208193929301516026811015620029ab57601903620137b15760008080604080940160a08082510151805162013778575b5050519060e0820151916201371f6200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156201376f573d91620137408362002edc565b926201374f8351948562002b1c565b83523d6000602085013e5b1562009fe1575050620119de60209162004c7b565b6060916201375a565b620137839062004c8b565b515162013792575b80620136fb565b8192506200686590620137a89251015162004c8b565b5190386201378b565b60208101516026811015620029ab57601a03620138a757620137dc60a0604080930151015162004c8b565b51620137ec60038251146202d58d565b620137f78162004c8b565b519162013810620138088362004caf565b519262004cc0565b51916201386d575091620119de916001602094146000146200a16d576201383f6201384d91611fb15462006049565b611fb15562000f4e62033857565b62000f556201385f611fb25462006036565b611fb25562000f4e62033891565b5162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b0362013cd757509190620138d7611faf54620061966200a1e362033793565b5050620138e362033857565b506000805b6103e8811062013c8b575b5050620138ff62006172565b6201390d613f745462004dfe565b906000946000905b6103e882101562013c7e578160031b9460ff6007870154161562013a665760009660028701541562013a5557600098975b62004c9957600487015489101562013a3b5762013967896004890162004efa565b9054600391821b1c6001600160a01b03166000818152918901602052604091829020549199916201399a90889062005f19565b9a90620139a662033857565b620139b19162004c48565b60009a60028b0154620139c49162005f19565b9190620139d062033857565b620139db9162004c48565b82600052611f4760205260002090815490620139f79162006049565b90915562013a0462033857565b62013a0f9162004c48565b62013a1b828962004ce2565b5262013a279062004c7b565b9862013a339062004c7b565b989762013946565b9290955062013a4d9196975062004c7b565b909462013915565b9290955062013a4d91965062004c7b565b95969392509350505b62013a7a8262004dfe565b9160009160005b82811062013be857505050611f48549162013aa1620080c0848462006258565b926000906000905b80821062013bcb57505060005b83811062013b355750508251929150506001600160401b03821162002a235760209062013ae38362004f58565b01611f48600052602060002060005b83811062013b175750505050620119de6020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162013af2565b6000805b83811062013b83575b501562013b5b575b62013b559062004c7b565b62013ab6565b9062013b559062013b7a906001600160a01b0362008248858762004ce2565b91905062013b4a565b6001600160a01b038062013b98858862004ce2565b51169062013ba7838a62004ce2565b51161462013bc05762013bba9062004c7b565b62013b39565b505060013862013b42565b90916200825662013be19162009b6f8562004e36565b9062013aa9565b6000805b85811062013c36575b501562013c0e575b62013c089062004c7b565b62013a81565b9262013c089062013c2d906001600160a01b0362008248878662004ce2565b93905062013bfd565b6001600160a01b038062013c4b858762004ce2565b51169062013c5a838a62004ce2565b51161462013c735762013c6d9062004c7b565b62013bec565b505060013862013bf5565b9394959291505062013a6f565b8060039594951b9060ff6007830154161562013ccd576200a622620074b962000f55946200a61662013cc49560026200a60c8762005deb565b939293620138e8565b50939293620138f3565b60208101516026811015620029ab57601c0362013d345760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d0362013d5a575b50620119de60209162004c7b565b92909160208401516026811015620029ab57601e036201447c57604084019060a09062013d8b828451015162004c8b565b515162013d9c838551015162004caf565b5151036200aeb05762013db3828451015162004c8b565b515162013dc4838551015162004cc0565b5151036200ae345762013ddb828451015162004c8b565b519462013dec838551015162004caf565b519162013e016200a76b858751015162004cc0565b51958551875103620089ef5760005b865181101562013e695762013e26818862004ce2565b51906103e882101562004c9957600362013e639260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b62013e10565b5090969192939660005b865181101562013f125762013e89818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b0160205262013ec160406000205462007dae838b62004ce2565b919062013ecf828a62004ce2565b51906103e882101562004c995762013f0c93600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b62013e73565b509396929795509362013f2590620336a2565b966040519662013f358862002b00565b60018852602036818a013786516001600160a01b031662013f568962004c8b565b526040519662013f668862002ac7565b600088526000610660525b89516106605190811015620143235762013f8c908b62004ce2565b516109c05262013f9d885162004dfe565b9960009762013fad8b5162004dfe565b6109405260009760005b8b518110156201407d578d8c62013fe76001600160a01b0362013fdb858462004ce2565b51166109c0516203348a565b158062014037575b62014008575b5050620140029062004c7b565b62013fb7565b9b6201402c9162001b0382859f62007f8f620140029760018060a01b039262004ce2565b9a90508d8c62013ff5565b5050506103e86109c051101562004c99576001600160a01b036201405c828e62004ce2565b511660005260036109c051811b016020528d8c604060002054151562013fef565b50909b989a99949691929395979b60005b8b5181101562014122576103e86109c051101562004c99576001600160a01b03620140ba828e62004ce2565b511660005260036109c051811b0160205260406000205415620140e9575b620140e39062004c7b565b6201408e565b9c62014119620140e3918f620141088f9160018060a01b039262004ce2565b511662001b03826109405162004ce2565b9d9050620140d8565b509b509895909294969193966109c051996103e88b10159c8d62004c995762014159620080c060048f9e60031b01549e8f62006258565b6108c05260006108a0528d60009e5b62004c99578d8f101562014227575060009d620141b0620141938260046109c05160031b0162004efa565b90546109405160039290921b1c6001600160a01b03169062033539565b15620141ca575b620141c38f9162004c7b565b9e62014168565b620141c39e5060009e8f91620141ea8160046109c05160031b0162004efa565b60018060a01b0391549060031b1c166201420b6108a0516108c05162004ce2565b526201421a6108a05162004c7b565b6108a052915050620141b7565b9396999b929d509396999094979b5060005b828110620142d75750505062004c99576108c051516001600160401b03811162002a2357620142728160046109c05160031b0162005036565b60206108c051019060046109c05160031b0160005260206000209160005b828110620142b95750505050620142aa6106605162004c7b565b61066052959890949862013f71565b81516001600160a01b03168185015560209091019060010162014290565b6201431d906001600160a01b03620142f0828562004ce2565b5116620143046108a0516108c05162004ce2565b52620143136108a05162004c7b565b6108a05262004c7b565b62014239565b509492975094955091965060009460005b87518110156201438757620143526200acf06200ace3838962004ce2565b806201436b575b50620143659062004c7b565b62014334565b906200ad266201438098620143659362006049565b9062014359565b50965094509290915080620143a9575b5050620119de6020915b915062013d4c565b620143d49060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b60018060a01b03835116600052602052604060002055600080611f4654905b81811062014432575b505091620119de916020931562014416575b509162014397565b516201442b906001600160a01b03166200662e565b386201440e565b6201443d8162004e52565b9054855160039290921b1c6001600160a01b039081169116146201446c57620144669062004c7b565b620143f3565b50600191508290506020620143fc565b91909260208101516026811015620029ab57601f03620144b757602091620144b16200af646040620119de9401515162004c8b565b620143a1565b60208101516026811015620029ab57602003620144dd575b50620119de602091620143a1565b60208101516026811015620029ab57602114620144cf5760208101516026811015620029ab57602203620145315750620119de60209160ff19611fb65416611fb6556201452962005023565b9150620144cf565b60208101516026811015620029ab5760230362014557575b50620119de60209162014529565b60208101516026811015620029ab57602414620145495760208101516026811015620029ab57602514620145495792909160208401516026811015620029ab576015036201069a576040840190620145b460c08351015162004c8b565b5190620145cb60a0620077f3818651015162004c8b565b5193620145e0835185511462000f4e62033906565b620145f3835186511462000f4e62033906565b60005b83518110156201464f576201460c818662004ce2565b51906103e882101562004c99576003620146499260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b620145f6565b509095919560005b87518110156201477a576201466d818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620146a560406000205462007dae838962004ce2565b90620146b2838862004ce2565b51916103e883101562004c99576003620146e99360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b620146f5818662004ce2565b516103e881101562004c99576003906001600160a01b0362014718848c62004ce2565b5116600052811b01602052620147396040600020546200686c838962004ce2565b919062014747828862004ce2565b51906103e882101562004c99576201477493600362000f55938d62007e678760018060a01b039262004ce2565b62014657565b509262014792919294506200c6fd90969596620336a2565b9260405190620147a28262002b00565b6001825260203681840137516001600160a01b0316620147c28262004c8b565b526000945b805186101562014b7657620147dd868262004ce2565b51610a4052620147ee855162004dfe565b96600094620147fe845162004dfe565b6109805260009460005b8851811015620148ce578a89620148386001600160a01b036201482c858462004ce2565b5116610a40516203348a565b158062014888575b62014859575b5050620148539062004c7b565b62014808565b986201487d9162001b0382859c62007f8f620148539760018060a01b039262004ce2565b9790508a8962014846565b5050506103e8610a4051101562004c99576001600160a01b03620148ad828b62004ce2565b51166000526003610a4051811b016020528a89604060002054151562014840565b50909895979498969291939660005b885181101562014971576103e8610a4051101562004c99576001600160a01b0362014909828b62004ce2565b51166000526003610a4051811b016020526040600020541562014938575b620149329062004c7b565b620148dd565b99620149329062014968906001600160a01b03620149578e8d62004ce2565b511662001b03826109805162004ce2565b9a905062014927565b50985096959291909396610a40516103e8811015806102e05262004c995760031b6004015498620149a7620080c0898c62006258565b610220526000610a80526000610520525b6102e05162004c9957610520518a81101562014a8157620149ed62014a0a9160006102e0526004610a405160031b0162004efa565b90546109805160039290921b1c6001600160a01b03169062033539565b1562014a29575b62014a1f6105205162004c7b565b61052052620149b8565b60006102e05262014a47610520516004610a405160031b0162004efa565b60018060a01b0391549060031b1c1662014a68610a80516102205162004ce2565b5262014a77610a805162004c7b565b610a805262014a11565b50979294959093985095909560005b82811062014b2a575050506102e05162004c995761022051516001600160401b03811162002a235762014acd816004610a405160031b0162005036565b602061022051016004610a405160031b01600052602060002060005b83811062014b0c575050505062014b009062004c7b565b949295909195620147c7565b82516001600160a01b03168183015560209092019160010162014ae9565b62014b70906001600160a01b0362014b43828562004ce2565b511662014b57610a80516102205162004ce2565b5262014b66610a805162004c7b565b610a805262004c7b565b62014a90565b505093620119de91935060209250915062014549565b815162014ba2906001600160a01b031662006658565b620116d6565b62014bb38162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462014be25762014bdc9062004c7b565b620116c4565b50505060013880620116cd565b82516001600160a01b0316600160401b82101562002a235762001a4482600162014c1e9401613f025562004e8a565b386200bc77565b62014c308162004e8a565b9054865160039290921b1c6001600160a01b0390811691161462014c5f5762014c599062004c7b565b6200bc66565b50506001386200bc6f565b82516001600160a01b0316818301556020909201916001016200bb9c565b82516001600160a01b0316818301556020909201916001016200ba4f565b600191820180546001600160a01b03909216848601559390910192906200b99e565b613f6d60005262014cef90600080516020620340bb83398151915290810190830162004f3f565b386200b95f565b6001808262014d0782948662015151565b019201920191906200b921565b613f6c60005260008051602062033efb833981519152908282015b818301811062014d415750506200b8e6565b8062014d4f6001926200533c565b0162014d2f565b600191820180546001600160a01b03909216848601559390910192906200b8b7565b613f6b60005262014d9f9060008051602062033ebb83398151915290810190830162004f3f565b386200b878565b6001809193019182549381613f0301550190916200b81b565b82516001600160a01b0316818301556020909201916001016200b734565b62014df890613f026000528484600020918201910162004f3f565b386200b724565b82516001600160a01b0316818301556020909201916001016200b550565b62014e3890613ef96000528484600020918201910162004f3f565b386200b540565b8062014e619160031b600160ff60078301541615151462014e67575062004c7b565b6200b495565b62014e7a60048201611fbc8301620152ea565b611fbf8101600160ff19825416179055805481611fb801556001810154611fb98201556002810154611fba82015562014ebb60058201611fbd830162015151565b611fbe6006820154910155386200a16d565b600660208262014ee16001945186620057d8565b019201920191906200b29e565b600681810204810362001e4f57600683810204830362001e4f57613efa6000527f2dfc264c6ecd0c6ea7ea3726867a09cc7eed901a6e437c010038bab559d48ed86006840281015b826006028201811062014f4b5750506200b28b565b806000600692556000600182015562014f6760028201620054a7565b6000600382015562014f7c600482016200533c565b600060058201550162014f36565b600660208262014f9e6001945186620057d8565b019201920191906200b213565b8060060290600682040362001e4f578260060260068104840362001e4f57600090613efb82526020822092830192015b82811062014feb5750506200b200565b8082600692558260018201556201500560028201620054a7565b82600382015562015019600482016200533c565b8260058201550162014fdb565b608460405162461bcd60e51b815260206004820152604060248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b8181146201514d578154916001600160401b03831162002a23576201510f838362005036565b60005260206000209060005260206000208154916000925b84841062015136575050505050565b600180919201938454928185015501929062015127565b5050565b908082146201514d5762015166815462002c01565b906001600160401b03821162002a23578190620151908262015189865462002c01565b8662005678565b600090601f8311600114620151c957600092620151bd5750508160011b916000199060031b1c1916179055565b0154905038806200570b565b81526020808220858352818320935090601f1985169083905b8282106201521e5750509084600195949392106201520457505050811b019055565b015460001960f88460031b161c1916905538808062005758565b8495819295850154815560018091019601940190620151e2565b8181146201514d578154916201524f8383620053ca565b6000526020600020906000526020600020906000905b838210620152735750505050565b80620152826001928562015151565b92810192918101910162015265565b8181146201514d57815491620152a8838362005458565b6000526020600020906000526020600020906000905b838210620152cc5750505050565b80620152db60019285620150e9565b928101929181019101620152be565b8181146201514d578154916001600160401b03831162002a235762015310838362005036565b60005260206000209060005260206000208154916000925b84841062015337575050505050565b600191820180546001600160a01b039092168486015593909101929062015328565b8181146201514d5781549162015370838362005458565b6000526020600020906000526020600020906000905b838210620153945750505050565b80620153a360019285620152ea565b92810192918101910162015386565b8181146201514d57815491620153c983836200555b565b6000526020600020906000526020600020906000905b838210620153ed5750505050565b8060019184036201540a575b6008809101930191019091620153df565b80548455620154378280860190830160ff906201542b82825416846200563d565b5460081c169062005657565b60028082015490850155620154536003808301908601620150e9565b60048085019082018082036201546c575b5050620153f9565b620154779162015238565b62015489600580830190860162015291565b6201549b600680830190860162015359565b620154ad600780830190860162015151565b388062015464565b919062005cff57808203620154c8575050565b60ff60058062002bc394620154e1848654168262005624565b60018501546001820155620154fd6002860160028301620153b2565b6003850154600382015562015519600486016004830162015151565b0192016201552b828254168462005795565b6201553d82825460081c1684620057a6565b5460101c1690620057be565b908082146201514d57908154906000915b60648310620155695750505050565b60018091940192835494818401550191926201555a565b90611f4254916000926020820191825151906201559d8262002be9565b91620155ad604051938462002b1c565b808352620155be601f199162002be9565b01366020840137620155d38451518462005f19565b90156201595057620155e59062004dfe565b918693855151156201594657620155fc8162004dfe565b975b8651518110156201578e5760008080805b87858c888410620156a45750839450620156389392506201563291508862004ce2565b62003574565b6006811015620029ab576003146201565d575b50620156579062004c7b565b620155fe565b6000905b8a818310620156725750506201564b565b8298620156896201569d9394620156969362004ce2565b5162001b03828b62004ce2565b9762004c7b565b9062015661565b620156b7620156be939285925162004ce2565b5162015d75565b939094808311806201577a575b156201573157505091838562015727575b6006811015620029ab5760038f911462015707575b5050620156fe9062004c7b565b9190916201560f565b946201571e9162001b0382620156fe959862004ce2565b93908d620156f1565b60009550620156dc565b809492959195148062015766575b15620156f1576006811015620029ab5760038f911462015707575050620156fe9062004c7b565b506006811015620029ab578015156201573f565b506006861015620029ab57851515620156cb565b505093505090929350600093845b8351861015620158e157620157bc620157b6878662004ce2565b62005616565b90600680831015620029ab576002928303620157e7575050620157e0909562004c7b565b946201579c565b620157f7620157b6898862004ce2565b9281841015620029ab57600180941480620158cd575b156201582257505050620157e0909562004c7b565b62015837620157b68a899b9694959b62004ce2565b9280841015620029ab5760048094149283620158a1575b508262015876575b50506201586a575b50620157e09062004c7b565b9550620157e06201585e565b9091508810156201588c57871415388062015856565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620158b85789141591386201584e565b602184634e487b7160e01b6000525260246000fd5b5081831015620029ab57808314156201580d565b9250929093506006821015620029ab57600382036201593d575b620159068162004dfe565b9360005b82811062015919575050509190565b806201592a62015937928462004ce2565b5162001b03828962004ce2565b6201590a565b506000620158fb565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b90611f435491600092602082019182515190620159c58262002be9565b91620159d5604051938462002b1c565b808352620159e6601f199162002be9565b01366020840137620159fb8451518462005f19565b9015620159505762015a0d9062004dfe565b91869385515115620159465762015a248162004dfe565b975b86515181101562015b9c5760008080805b87858c88841062015ab2575083945062015a5a9392506201563291508862004ce2565b6006811015620029ab5760031462015a7f575b5062015a799062004c7b565b62015a26565b6000905b8a81831062015a9457505062015a6d565b82986201568962015aab9394620156969362004ce2565b9062015a83565b62015ac562015acc939285925162004ce2565b5162015e14565b9390948083118062015b88575b1562015b3f57505091838562015b35575b6006811015620029ab5760038f911462015b15575b505062015b0c9062004c7b565b91909162015a37565b9462015b2c9162001b038262015b0c959862004ce2565b93908d62015aff565b6000955062015aea565b809492959195148062015b74575b1562015aff576006811015620029ab5760038f911462015b1557505062015b0c9062004c7b565b506006811015620029ab5780151562015b4d565b506006861015620029ab5785151562015ad9565b505093505090929350600093845b835186101562015cbf5762015bc4620157b6878662004ce2565b90600680831015620029ab57600292830362015bef57505062015be8909562004c7b565b9462015baa565b62015bff620157b6898862004ce2565b9281841015620029ab5760038094148062015cab575b1562015c2a5750505062015be8909562004c7b565b62015c3f620157b68a899b9694959b62004ce2565b9280841015620029ab576005809414928362015c94575b508262015c7e575b505062015c72575b5062015be89062004c7b565b955062015be862015c66565b909150881015620029ab57871415388062015c5e565b908093508a1015620029ab57891415913862015c56565b5081831015620029ab578083141562015c15565b9250929093506006821015620029ab576003820362015d0e575b62015ce48162004dfe565b9360005b82811062015cf7575050509190565b806201592a62015d08928462004ce2565b62015ce8565b50600062015cd9565b1562015d1f57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9192906000908194829462015d8f611f4254841062015d17565b60ff600562015d9e8562005c89565b50015460081c161562015e07578262015dbb928592600162015fee565b62015dc7575b50929190565b809450600192935062015ddb915062005c89565b50015490600362015dfc60ff62015df28662005c89565b5054169462005c89565b500154913862015dc1565b5050509150915080918190565b9192906000908194829462015e2e611f4354841062015d17565b60ff600562015e3d8562005c49565b50015460081c161562015e07578262015e599285928362015fee565b62015e645750929190565b809450600192935062015e78915062005c49565b50015490600362015dfc60ff62015e8f8662005c49565b5054169462005c49565b9062002bc3606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262015f10815180926020868601910162002d89565b810103604181018552018362002b1c565b606d62002bc3919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262015f93815180926020605f8701910162002d89565b82016d016103737b2329034b73232bc1d160951b605f82015262015fc1825180936020878501910162002d89565b0103604d81018552018362002b1c565b805482101562004c995760005260206000209060031b0190600090565b9392919084156201637f5762016018611f4254841062000f4e620160128662005091565b62015e99565b6201604f6002620160298562005c89565b500154851062000f4e6201603d8662005091565b620160488862005091565b9062015f21565b841562016360576201607f6001620160768660026201606e8862005c89565b500162015fd1565b50015460ff1690565b945b6201608c8662002f45565b856201609d57505050505050600090565b620160a88662002f45565b600395808703620160bf5750505050505050600190565b620160ca8162002f45565b60048103620160df5750505050505050600090565b620160ea8162002f45565b60018103620161005750620032619550620163af565b919593929490620161118362002f45565b600280931462016128575b50505050505050600090565b801562016342576201615260016201614684866201606e8962005c89565b50015460081c60ff1690565b935b81156201632657856201616d84866201606e8562005c89565b500154965b6201617d8862004dfe565b9860005b8981106201629b575050505050506201619a82620029a0565b60018203620161fd57505050906001916000915b818310620161bc5750505090565b90919280620161da575b620161d2909362004c7b565b9190620161ae565b50620161d2620161f5620161ef858462004ce2565b51151590565b9050620161c6565b6201620882620029a0565b8103620162625750509060009182915b818310620162265750505090565b909192801562016245575b6201623d909362004c7b565b919062016218565b506201623d6201625a620161ef858462004ce2565b905062016231565b9091506201627081620029a0565b14620162845750388080808080806201611c565b62016297620161ef620032619262004c8b565b1590565b808b620162e4828c8a8c8a8c156201630557620162da9492620162d094926201606e620162c89362005c89565b500162004efa565b90549060031b1c90565b8787878b62015fee565b620162f8620162ff9462000f559362004ce2565b9015159052565b62016181565b620163209492620162d094926201606e620162c89362005c49565b620162da565b856201633884866201606e8562005c49565b5001549662016172565b6201635960016201614684866201606e8962005c49565b9362016154565b620163786001620160768660026201606e8862005c49565b9462016081565b62016398611f4354841062000f4e620160128662005091565b620163a96002620160298562005c49565b6201604f565b93926004620163f99186600014620165c7576002620163d487826201606e8562005c89565b500154955b8715620165b65760026201606e620163f19362005c89565b50016200363b565b916032841115620165aa576033841015806201659e575b620165915760978410158062016585575b620165785760d3841015806201656b575b6201655f5761012d8410158062016553575b62016546576101918410158062016539575b6201652c576101af841015806201651f575b62016512576101cd8410158062016505575b620164f8576101f584101580620164eb575b620164de5761025984101580620164d1575b620164c357506102bd831015620164b85750505050600090565b620032619362024231565b90506200326193506202b56e565b506102bc8411156201649e565b506200326193506201e816565b506102588411156201648c565b506200326193506202bed2565b506101f48411156201647a565b506200326193506202c935565b506101cc84111562016468565b50620032619350620239a0565b506101ae84111562016456565b50620032619350620287e2565b50610190841062016444565b506200326193620165e4565b5061012c84111562016432565b506200326193506202401c565b5060b484111562016421565b505062003261926201f476565b50609584111562016410565b506200326193620257bf565b60026201606e620163f19362005c49565b6002620165da87826201606e8562005c49565b50015495620163d9565b9260d3811462016bb35760d4811462016ba65760d5811462016b995760d6811462016b8c5760d7811462016b7f5760d8811462016b725760d9811462016b665760da811462016b595760db811462016b4c5760dc811462016b405760dd811462016b315760de811462016b225760df811462016b155760e0811462016b085760e1811462016afc5760e2811462016aef5760e3811462016ae25760e4811462016ad65760e5811462016ac75760e6811462016ab85760e7811462016aab5760e8811462016a9e5760e9811462016a915760ea811462016a845760eb811462016a775760ec811462016a6a5760ed811462016a5d5760ee811462016a505760ef811462016a435760f0811462016a365760f1811462016a295760f2811462016a1c5760f3811462016a0f5760f4811462016a025760f58114620169f55760f68114620169e85760f78114620169db5760f88114620169ce5760f98114620169c25760fa8114620169b65760fb8114620169aa5760fc81146201699e5760fd8114620169925760fe8114620169865760ff81146201697a5761010081146201696e57610101811462016962576101028114620169565761010381146201694a5761010481146201693e57610105811462016932576101068114620169265761010781146201691a5761010881146201690e576101098114620169025761010a8114620168f65761010b8114620168ea5761010c8114620168de5761010d8114620168d25761010e8114620168c65761010f8114620168ba576101108114620168ae576101118114620168a2576101128114620168965761011381146201688a5761011481146201687e5761011581146201687257610116146201686757505050600090565b62003261926201decd565b5062003261926201dca4565b5062003261926201da7b565b5062003261926201d778565b5062003261926201d557565b5062003261926201d336565b5062003261926201d104565b5062003261926201cf3b565b5062003261926201cd72565b5062003261926201cb3a565b5062003261926201c973565b5062003261926201c644565b5062003261926201c412565b5062003261926201c249565b5062003261926201c080565b5062003261926201bebb565b5062003261926201bc83565b5062003261926201babc565b5062003261926201b786565b5062003261926201b526565b5062003261926201b355565b5062003261926201b174565b5062003261926201afad565b5062003261926201ad57565b5062003261926201ab8e565b5062003261926201a9c5565b5062003261926201a6e4565b5062003261926201a3e4565b5062003261926201a0f7565b50620032619262019df7565b5062003261925062019c72565b5062003261925062019b2d565b50620032619250620199bb565b5062003261925062019876565b5062003261925062019731565b50620032619250620195ed565b5062003261925062019478565b5062003261925062019334565b50620032619250620191f0565b50620032619250620190af565b5062003261925062018f6c565b5062003261925062018e2b565b5062003261925062018ce2565b5062003261925062018b9e565b5062003261925062018a5a565b50620032619250620188e5565b5062003261925062018747565b5062003261925062018604565b509050620032619150620185a9565b5090506200326191506201854c565b5062003261926201830e565b506200326192506201817f565b5062003261925062018030565b50620032619262017e19565b5062003261925062017c71565b5062003261925062017b24565b50905062003261915062017ac9565b50905062003261915062017a5c565b50620032619262017810565b5062003261925062017681565b506200326192506201752c565b506200326192620172fe565b5062003261925062017146565b5062003261925062016fea565b5062003261925062016ee9565b5062003261925062016dbc565b5062003261925062016cbb565b50620032619250906020019060018251510362016c6257600162016bd8835162004c8b565b51510362016c085762016beb906201e1d4565b91901562006627576200686562016c03915162004c8b565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016d6357600162016cd9835162004c8b565b51510362016d095762016cec906201e1d4565b91901562006627576200686562016d04915162004c8b565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016e9057600262016dda835162004c8b565b51510362016e345762016ded906201e1d4565b9015620066275762016e0462006865835162004c8b565b51811015918262016e1457505090565b62016e2e91925062016e27905162004c8b565b5162004caf565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016f9157600162016f07835162004c8b565b51510362016f375762016f1a906201e1d4565b91901562006627576200686562016f32915162004c8b565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906040016001918282515103620170ec578262017008835162004c8b565b51510362017092576201701b906201e547565b156200661f57829160009182945b62017037575b505050905090565b80518510156201708c576001600160a01b038062017056878462004ce2565b5116906201706962006865855162004c8b565b51160362017084576201707d849562004c7b565b9462017029565b505091505090565b6201702f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620172a4578262017164835162004c8b565b5151106201724a5762017177906201e547565b156200661f57600091835b6201718e575b50505090565b81518310156201724457600080855b620171c6575b5015620171bd57620171b6849362004c7b565b9262017182565b50505050600090565b620171d78396949295965162004c8b565b515181101562017239576001600160a01b0380620171f6888562004ce2565b5116906201720a8362007497875162004c8b565b5116146201722c57906201722084939262004c7b565b9093959491926201719d565b50918094935038620171a3565b9493909294620171a3565b62017188565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620174d2578462017320845162004c8b565b515103620174785762017333906201e547565b15620173d157849315620173e8576000935b62017351575050505090565b80518410156200519a576001600160a01b038062017370868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db576002926201739b888662004ce2565b511660005284526000200154620173b762006865855162004c8b565b5103620173d157620173ca859462004c7b565b9362017345565b5050505050600090565b5050505050505050600090565b6000935b620173f8575050505090565b80518410156200519a576001600160a01b038062017417868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017442888662004ce2565b5116600052845260002001546201745e62006865855162004c8b565b5103620173d15762017471859462004c7b565b93620173ec565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201762757826201754a835162004c8b565b515103620175cd576201755d906201e547565b919091156200661f57600091835b620175795750505050600090565b8051831015620175c75783926001600160a01b03806201759a838562004ce2565b511690620175ad62006865865162004c8b565b5116146200516057620175c09062004c7b565b926201756b565b620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620177b657826201769f835162004c8b565b5151106201775c57620176b2906201e547565b156200661f5782916000935b620176cc5750505050600090565b8151841015620175c7576000835b620176f4575b50620176ed839462004c7b565b93620176be565b93929162017703825162004c8b565b515185101562017753576001600160a01b038062017722868462004ce2565b511690620177368762007497865162004c8b565b51161462017084576201774b83949562004c7b565b9092620176da565b919293620176e0565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017a02578462017832845162004c8b565b515103620179a85762017845906201e547565b91909115620173d15784931562017906576000935b62017869575050505050600090565b8151841015620179005784936001600160a01b0390816201788b828662004ce2565b5116600052611f4080845260409060ff826000205416620178bc575b5050620178b5915062004c7b565b936201785a565b8293620178cc6002948862004ce2565b511660005284526000200154620178e862006865865162004c8b565b5114620178f857803880620178a7565b505050505090565b620173d1565b6000935b62017919575050505050600090565b8151841015620179005784936001600160a01b0390816201793b828662004ce2565b5116600052613ef880845260409060ff8260002054166201796c575b505062017965915062004c7b565b936201790a565b82936201797c6002948862004ce2565b5116600052845260002001546201799862006865865162004c8b565b5114620178f85780388062017957565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62017a67816201e547565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b038062017a9c838762004ce2565b5116908351160362017ab95762017ab39062004c7b565b62017a7d565b5050905090565b50505050600190565b62017ad4816201e547565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b038062017b07838662004ce2565b511690835116146200660c5762017b1e9062004c7b565b62017ae8565b90604001600191828251510362017c17578262017b42835162004c8b565b51510362017bbd5762017b55906201e5d0565b156200661f57829160009182945b62017b7057505050905090565b80518510156201708c576001600160a01b038062017b8f878462004ce2565b51169062017ba262006865855162004c8b565b511603620170845762017bb6849562004c7b565b9462017b63565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90604001600191828251510362017dbf578262017c8f835162004c8b565b51511062017d655762017ca2906201e5d0565b156200661f57600091835b62017cb85750505090565b81518310156201724457600080855b62017ce7575b5015620171bd5762017ce0849362004c7b565b9262017cad565b62017cf88396949295965162004c8b565b515181101562017d5a576001600160a01b038062017d17888562004ce2565b51169062017d2b8362007497875162004c8b565b51161462017d4d579062017d4184939262004c7b565b90939594919262017cc7565b5091809493503862017ccd565b949390929462017ccd565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017fd6578462017e3b845162004c8b565b51510362017f7c5762017e4e906201e5d0565b15620173d15784931562017eec576000935b62017e6c575050505090565b80518410156200519a576001600160a01b038062017e8b868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db5760029262017eb6888662004ce2565b51166000528452600020015462017ed262006865855162004c8b565b5103620173d15762017ee5859462004c7b565b9362017e60565b6000935b62017efc575050505090565b80518410156200519a576001600160a01b038062017f1b868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017f46888662004ce2565b51166000528452600020015462017f6262006865855162004c8b565b5103620173d15762017f75859462004c7b565b9362017ef0565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201812557826201804e835162004c8b565b515103620180cb5762018061906201e5d0565b919091156200661f57600091835b6201807d5750505050600090565b8051831015620175c75783926001600160a01b03806201809e838562004ce2565b511690620180b162006865865162004c8b565b5116146200516057620180c49062004c7b565b926201806f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620182b457826201819d835162004c8b565b5151106201825a57620181b0906201e5d0565b156200661f5782916000935b620181ca5750505050600090565b8151841015620175c7576000835b620181f2575b50620181eb839462004c7b565b93620181bc565b93929162018201825162004c8b565b515185101562018251576001600160a01b038062018220868462004ce2565b511690620182348762007497865162004c8b565b51161462017084576201824983949562004c7b565b9092620181d8565b919293620181de565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620184f2578462018330845162004c8b565b515103620184985762018343906201e5d0565b91909115620173d157849315620183f6576000935b62018367575050505050600090565b8151841015620179005784936001600160a01b03908162018389828662004ce2565b5116600052611f4080845260409060ff826000205416620183ba575b5050620183b3915062004c7b565b9362018358565b8293620183ca6002948862004ce2565b511660005284526000200154620183e662006865865162004c8b565b5114620178f857803880620183a5565b6000935b62018409575050505050600090565b8151841015620179005784936001600160a01b0390816201842b828662004ce2565b5116600052613ef880845260409060ff8260002054166201845c575b505062018455915062004c7b565b93620183fa565b82936201846c6002948862004ce2565b5116600052845260002001546201848862006865865162004c8b565b5114620178f85780388062018447565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62018557816201e5d0565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b03806201858c838762004ce2565b5116908351160362017ab957620185a39062004c7b565b6201856d565b620185b4816201e5d0565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b0380620185e7838662004ce2565b511690835116146200660c57620185fe9062004c7b565b620185c8565b906020016001918282515103620186ed578262018622835162004c8b565b515103620186935762018635906201e609565b9050156200661f57829160009182945b6201865257505050905090565b80518510156201708c5762018668858262004ce2565b516201867962006865845162004c8b565b510362017084576201868c849562004c7b565b9462018645565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201888b578262018765835162004c8b565b515110620188315762018778906201e609565b9050156200661f57600091835b620187905750505090565b81518310156201724457600080855b620187bf575b5015620171bd57620187b8849362004c7b565b9262018785565b620187d08396949295965162004c8b565b51518110156201882657620187e6868362004ce2565b51620187f88262007497865162004c8b565b51146201881957906201880d84939262004c7b565b9093959491926201879f565b50918094935038620187a5565b9493909294620187a5565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018a0057600262018904835162004c8b565b515103620189a65762018917906201e609565b9050919091156200661f57829160009182945b6201893757505050905090565b81518510156201708c576201894d858362004ce2565b516201895e62006865835162004c8b565b5111801562018980575b620170845762018979849562004c7b565b946201892a565b506201898d858362004ce2565b516201899e62016e27835162004c8b565b511062018968565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018b44578262018a78835162004c8b565b51510362018aea5762018a8b906201e609565b9050156200661f57829160009182945b62018aa857505050905090565b80518510156201708c5762018abe858262004ce2565b5162018acf62006865845162004c8b565b511015620170845762018ae3849562004c7b565b9462018a9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018c88578262018bbc835162004c8b565b51510362018c2e5762018bcf906201e609565b9050156200661f57829160009182945b62018bec57505050905090565b80518510156201708c5762018c02858262004ce2565b5162018c1362006865845162004c8b565b511115620170845762018c27849562004c7b565b9462018bdf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018dd1578262018d00835162004c8b565b51510362018d775762018d13906201e609565b90939150156200661f578060009384925b62018d3d575b5050506200686562016c03915162004c8b565b909193815185101562018d70576200e54462018d679162018d5f878562004ce2565b519062006258565b91908162018d24565b9362018d2a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018f12578262018e49835162004c8b565b51510362018eb85762018e5c906201e609565b90939150156200661f578060009384925b62018e86575b5050506200686562016d04915162004c8b565b909193815185101562018eb1576200e54462018ea89162018d5f878562004ce2565b91908162018e6d565b9362018e73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019081835151036201905557600262018f8c845162004c8b565b51510362018ffb5762018f9f906201e609565b909150156200661f57906000918183925b62018fc9575b50505062016e0462006865835162004c8b565b909192825184101562018ff457620064d762018feb9162018d5f868662004ce2565b91908062018fb0565b9262018fb6565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620191965782620190cd835162004c8b565b5151036201913c57620190e0906201e609565b90939150156200661f578060009384925b6201910a575b5050506200686562016f32915162004c8b565b909193815185101562019135576200e5446201912c9162018d5f878562004ce2565b919081620190f1565b93620190f7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620192da57826201920e835162004c8b565b515103620192805762019221906201e609565b90929150156200661f57600091835b6201923e5750505050600090565b8051831015620175c757826201925685948362004ce2565b516201926762006865855162004c8b565b51106200516057620192799062004c7b565b9262019230565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201941e578262019352835162004c8b565b515103620193c45762019365906201e609565b92919215620171bd57600092845b62019382575050505050600090565b80518410156201790057836201939a86958462004ce2565b51620193ab62006865865162004c8b565b5111620178f857620193bd9062004c7b565b9362019373565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201959357600262019497835162004c8b565b5151036201953957620194aa906201e609565b9290919215620171bd57600092845b620194c8575050505050600090565b8051841015620179005783620194e086958562004ce2565b51620194f162006865855162004c8b565b5111158062019512575b620178f8576201950b9062004c7b565b93620194b9565b506201951f818562004ce2565b516201953062016e27855162004c8b565b511015620194fb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620196d757826201960b835162004c8b565b5151036201967d576201961e906201e609565b92919215620171bd57600092845b6201963b575050505050600090565b80518410156201790057836201965386958462004ce2565b516201966462006865865162004c8b565b5114620178f857620196769062004c7b565b936201962c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201981c57826201974f835162004c8b565b515103620197c25762019762906201e609565b9050919091156200661f57600091835b620197805750505050600090565b8051831015620175c757826201979885948362004ce2565b51620197a962006865855162004c8b565b51106200516057620197bb9062004c7b565b9262019772565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019961578262019894835162004c8b565b5151036201990757620198a7906201e609565b9050919091156200661f57600091835b620198c55750505050600090565b8051831015620175c75782620198dd85948362004ce2565b51620198ee62006865855162004c8b565b51116200516057620199009062004c7b565b92620198b7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019ad3576002620199da835162004c8b565b51510362019a7957620199ed906201e609565b9050156200661f57600091835b62019a085750505050600090565b8151831015620175c7578262019a2085948462004ce2565b5162019a3162006865845162004c8b565b5111158062019a52575b620051605762019a4b9062004c7b565b92620199fa565b5062019a5f818462004ce2565b5162019a7062016e27845162004c8b565b51101562019a3b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019c18578262019b4b835162004c8b565b51510362019bbe5762019b5e906201e609565b9050919091156200661f57600091835b62019b7c5750505050600090565b8051831015620175c7578262019b9485948362004ce2565b5162019ba562006865855162004c8b565b5114620051605762019bb79062004c7b565b9262019b6e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019d9d578262019c90835162004c8b565b51511062019d435762019ca3906201e609565b9050156200661f5782916000935b62019cbf5750505050600090565b8151841015620175c7576000835b62019ce7575b5062019ce0839462004c7b565b9362019cb1565b93929162019cf6825162004c8b565b515185101562019d3a5762019d0c848262004ce2565b5162019d1e8662007497855162004c8b565b5114620170845762019d3283949562004c7b565b909262019ccd565b91929362019cd3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a09d578462019e19845162004c8b565b5151106201a0435762019e2c906201e5d0565b92909215620173d15784931562019f40576000935b62019e4d575050505090565b82518410156200519a576001600160a01b038062019e6c868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b62019eb2575b5050505015620173d15762019eab859462004c7b565b9362019e41565b9092989591939662019ec5865162004c8b565b51518a101562019f34578162019edc8a8362004ce2565b5116600052838352600285600020015462019efd8b62007497895162004c8b565b511462019f215762019f128798999a62004c7b565b93919097999894929662019e8f565b9650509396505050843880808062019e95565b96938296995062019e95565b6000935b62019f50575050505090565b82518410156200519a576001600160a01b038062019f6f868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b62019fb5575b5050505015620173d15762019fae859462004c7b565b9362019f44565b9092989591939662019fc8865162004c8b565b51518a10156201a037578162019fdf8a8362004ce2565b511660005283835260028560002001546201a0008b62007497895162004c8b565b51146201a024576201a0158798999a62004c7b565b93919097999894929662019f92565b9650509396505050843880808062019f98565b96938296995062019f98565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a38a57836201a116835162004c8b565b5151106201a330576201a129906201e5d0565b94909415620173d1578392156201a23b5793926000905b6201a14f575050505050600090565b835181101562017900576001600160a01b03806201a16e838762004ce2565b5116600052611f4080875260409160ff8360002054166201a1a4575b505050936201a19b83949562004c7b565b9094936201a140565b6000929190865b6201a1b8575b506201a18a565b9092979193966201a1ca865162004c8b565b51518910156201a23057816201a1e1898362004ce2565b511660005283835260028560002001546201a2028a62007497895162004c8b565b51146201a224576201a21687989962004c7b565b93919097989492986201a1ab565b50505050505091505090565b96938298506201a1b1565b93926000905b6201a250575050505050600090565b835181101562017900576001600160a01b03806201a26f838762004ce2565b5116600052613ef880875260409160ff8360002054166201a2a5575b505050936201a29c83949562004c7b565b9094936201a241565b6000929190865b6201a2b9575b506201a28b565b9092979193966201a2cb865162004c8b565b51518910156201a32557816201a2e2898362004ce2565b511660005283835260028560002001546201a3038a62007497895162004c8b565b51146201a224576201a31787989962004c7b565b93919097989492986201a2ac565b96938298506201a2b2565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a68a57846201a406845162004c8b565b5151106201a630576201a419906201e547565b92909215620173d1578493156201a52d576000935b6201a43a575050505090565b82518410156200519a576001600160a01b03806201a459868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b6201a49f575b5050505015620173d1576201a498859462004c7b565b936201a42e565b909298959193966201a4b2865162004c8b565b51518a10156201a52157816201a4c98a8362004ce2565b511660005283835260028560002001546201a4ea8b62007497895162004c8b565b51146201a50e576201a4ff8798999a62004c7b565b9391909799989492966201a47c565b965050939650505084388080806201a482565b9693829699506201a482565b6000935b6201a53d575050505090565b82518410156200519a576001600160a01b03806201a55c868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b6201a5a2575b5050505015620173d1576201a59b859462004c7b565b936201a531565b909298959193966201a5b5865162004c8b565b51518a10156201a62457816201a5cc8a8362004ce2565b511660005283835260028560002001546201a5ed8b62007497895162004c8b565b51146201a611576201a6028798999a62004c7b565b9391909799989492966201a57f565b965050939650505084388080806201a585565b9693829699506201a585565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a96b57836201a703835162004c8b565b5151106201a911576201a716906201e547565b94909415620173d1578392156201a81c5793926000905b6201a73c575050505050600090565b835181101562017900576001600160a01b03806201a75b838762004ce2565b5116600052611f4080875260409160ff8360002054166201a791575b505050936201a78883949562004c7b565b9094936201a72d565b6000929190865b6201a7a5575b506201a777565b9092979193966201a7b7865162004c8b565b51518910156201a81157816201a7ce898362004ce2565b511660005283835260028560002001546201a7ef8a62007497895162004c8b565b51146201a224576201a80387989962004c7b565b93919097989492986201a798565b96938298506201a79e565b93926000905b6201a831575050505050600090565b835181101562017900576001600160a01b03806201a850838762004ce2565b5116600052613ef880875260409160ff8360002054166201a886575b505050936201a87d83949562004c7b565b9094936201a822565b6000929190865b6201a89a575b506201a86c565b9092979193966201a8ac865162004c8b565b51518910156201a90657816201a8c3898362004ce2565b511660005283835260028560002001546201a8e48a62007497895162004c8b565b51146201a224576201a8f887989962004c7b565b93919097989492986201a88d565b96938298506201a893565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201ab3457846201a9e7845162004c8b565b5151036201aada576201a9fa906201e547565b15620173d1578493156201aa71576000935b6201aa18575050505090565b80518410156200519a576001600160a01b036201aa36858362004ce2565b5116600052611f4582526040600020546201aa5662006865855162004c8b565b511015620173d1576201aa6a859462004c7b565b936201aa0c565b6000935b6201aa81575050505090565b80518410156200519a576001600160a01b036201aa9f858362004ce2565b5116600052613efd82526040600020546201aabf62006865855162004c8b565b511015620173d1576201aad3859462004c7b565b936201aa75565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201acfd57846201abb0845162004c8b565b5151036201aca3576201abc3906201e547565b15620173d1578493156201ac3a576000935b6201abe1575050505090565b80518410156200519a576001600160a01b036201abff858362004ce2565b5116600052611f4582526040600020546201ac1f62006865855162004c8b565b511115620173d1576201ac33859462004c7b565b936201abd5565b6000935b6201ac4a575050505090565b80518410156200519a576001600160a01b036201ac68858362004ce2565b5116600052613efd82526040600020546201ac8862006865855162004c8b565b511115620173d1576201ac9c859462004c7b565b936201ac3e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201af535760026201ad79835162004c8b565b5151036201aef9576201ad8c906201e547565b92909215620173d1578493156201ae4b576000935b6201adad575050505090565b82518410156200519a576001600160a01b03806201adcc868662004ce2565b5116600052611f4580835260409081600020546201adef62006865875162004c8b565b51119283156201ae15575b505050620173d1576201ae0e859462004c7b565b936201ada1565b909192506201ae25878762004ce2565b51166000528252600020546201ae4062016e27845162004c8b565b51103880806201adfa565b6000935b6201ae5b575050505090565b82518410156200519a576001600160a01b03806201ae7a868662004ce2565b5116600052613efd80835260409081600020546201ae9d62006865875162004c8b565b51119283156201aec3575b505050620173d1576201aebc859462004c7b565b936201ae4f565b909192506201aed3878762004ce2565b51166000528252600020546201aeee62016e27845162004c8b565b51103880806201aea8565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b11a57846201afcf845162004c8b565b5151036201b0c0576201afe2906201e547565b15620173d1578493156201b058576000935b6201b000575050505090565b80518410156200519a576001600160a01b036201b01e858362004ce2565b5116600052611f4582526040600020546201b03e62006865855162004c8b565b5103620173d1576201b051859462004c7b565b936201aff4565b6000935b6201b068575050505090565b80518410156200519a576001600160a01b036201b086858362004ce2565b5116600052613efd82526040600020546201b0a662006865855162004c8b565b5103620173d1576201b0b9859462004c7b565b936201b05c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b2fb57846201b196845162004c8b565b5151036201b2a1576201b1a9906201e547565b15620173d1578493156201b2345760009182945b6201b1ce575b505050505050600090565b81518510156201b22e5785946001600160a01b036201b1ee828562004ce2565b51168452611f45825260408420546201b20c62006865875162004c8b565b51106201b225576201b21e9062004c7b565b946201b1bd565b50505050505090565b6201b1c3565b60009182945b6201b24a57505050505050600090565b81518510156201b22e5785946001600160a01b036201b26a828562004ce2565b51168452613efd825260408420546201b28862006865875162004c8b565b51106201b225576201b29a9062004c7b565b946201b23a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b4cc57846201b377845162004c8b565b5151036201b472576201b38a906201e547565b15620173d1578493156201b4055760009182945b6201b3ae57505050505050600090565b81518510156201b22e5785946001600160a01b036201b3ce828562004ce2565b51168452611f45825260408420546201b3ec62006865875162004c8b565b51116201b225576201b3fe9062004c7b565b946201b39e565b60009182945b6201b41b57505050505050600090565b81518510156201b22e5785946001600160a01b036201b43b828562004ce2565b51168452613efd825260408420546201b45962006865875162004c8b565b51116201b225576201b46b9062004c7b565b946201b40b565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201b72c5760026201b548835162004c8b565b5151036201b6d2576201b55b906201e547565b91909115620173d1578493156201b61f576000935b6201b57f575050505050600090565b8151841015620179005784936001600160a01b03806201b5a0838662004ce2565b5116600052611f4580865260409081600020546201b5c362006865875162004c8b565b51111592836201b5e8575b505050620178f8576201b5e19062004c7b565b936201b570565b909192506201b5f8848762004ce2565b51166000528552600020546201b61362016e27845162004c8b565b5110153880806201b5ce565b6000935b6201b632575050505050600090565b8151841015620179005784936001600160a01b03806201b653838662004ce2565b5116600052613efd80865260409081600020546201b67662006865875162004c8b565b51111592836201b69b575b505050620178f8576201b6949062004c7b565b936201b623565b909192506201b6ab848762004ce2565b51166000528552600020546201b6c662016e27845162004c8b565b5110153880806201b681565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201b90357836201b7a5845162004c8b565b5151036201b8a957156201b82e576201b7be906201e547565b156200661f57829160009182945b6201b7d957505050905090565b80518510156201708c576201b8036001600160a01b036201b7fb878462004ce2565b51166201b9ba565b6201b81362006865845162004c8b565b51101562017084576201b827849562004c7b565b946201b7cc565b6201b839906201e547565b156200661f57829160009182945b6201b85457505050905090565b80518510156201708c576201b87e6001600160a01b036201b876878462004ce2565b51166201b95d565b6201b88e62006865845162004c8b565b51101562017084576201b8a2849562004c7b565b946201b847565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201b97257505090565b9091620082566201b9b3916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b9062006258565b906201b963565b60009081905b6103e882106201b9cf57505090565b9091620082566201ba07916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201b9c0565b600091906201ba69576000905b6103e882106201ba2a57505090565b9091620082566201ba62916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201ba1b565b81905b6103e882106201ba7b57505090565b9091620082566201bab5916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b906201ba6c565b916020019060019283835151036201bc2957836201badb845162004c8b565b5151036201bbcf57156201bb5c576201baf4906201e547565b156200661f57829160009182945b6201bb0f57505050905090565b80518510156201708c576201bb316001600160a01b036201b7fb878462004ce2565b6201bb4162006865845162004c8b565b51111562017084576201bb55849562004c7b565b946201bb02565b6201bb67906201e547565b156200661f57829160009182945b6201bb8257505050905090565b80518510156201708c576201bba46001600160a01b036201b876878462004ce2565b6201bbb462006865845162004c8b565b51111562017084576201bbc8849562004c7b565b946201bb75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201be615760026201bca3845162004c8b565b5151036201be0757156201bd5c576201bcbc906201e547565b919091156200661f57829160009182945b6201bcda57505050905090565b81518510156201708c576001600160a01b036201bcfd816201b7fb888662004ce2565b6201bd0d62006865845162004c8b565b51119081156201bd31575b5062017084576201bd2a849562004c7b565b946201bccd565b6201bd4391506201b7fb878562004ce2565b6201bd5362016e27835162004c8b565b5110386201bd18565b6201bd67906201e547565b919091156200661f57829160009182945b6201bd8557505050905090565b81518510156201708c576001600160a01b036201bda8816201b876888662004ce2565b6201bdb862006865845162004c8b565b51119081156201bddc575b5062017084576201bdd5849562004c7b565b946201bd78565b6201bdee91506201b876878562004ce2565b6201bdfe62016e27835162004c8b565b5110386201bdc3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c02657836201beda845162004c8b565b5151036201bfcc57156201bf5a576201bef3906201e547565b156200661f57829160009182945b6201bf0e57505050905090565b80518510156201708c576201bf306001600160a01b036201b7fb878462004ce2565b6201bf4062006865845162004c8b565b510362017084576201bf53849562004c7b565b946201bf01565b6201bf65906201e547565b156200661f57829160009182945b6201bf8057505050905090565b80518510156201708c576201bfa26001600160a01b036201b876878462004ce2565b6201bfb262006865845162004c8b565b510362017084576201bfc5849562004c7b565b946201bf73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c1ef57836201c09f845162004c8b565b5151036201c19557156201c121576201c0b8906201e547565b919091156200661f57600091835b6201c0d45750505050600090565b8051831015620175c75783926201c0f86001600160a01b036201b7fb838562004ce2565b6201c10862006865855162004c8b565b511062005160576201c11a9062004c7b565b926201c0c6565b6201c12c906201e547565b919091156200661f57600091835b6201c1485750505050600090565b8051831015620175c75783926201c16c6001600160a01b036201b876838562004ce2565b6201c17c62006865855162004c8b565b511062005160576201c18e9062004c7b565b926201c13a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c3b857836201c268845162004c8b565b5151036201c35e57156201c2ea576201c281906201e547565b919091156200661f57600091835b6201c29d5750505050600090565b8051831015620175c75783926201c2c16001600160a01b036201b7fb838562004ce2565b6201c2d162006865855162004c8b565b511162005160576201c2e39062004c7b565b926201c28f565b6201c2f5906201e547565b919091156200661f57600091835b6201c3115750505050600090565b8051831015620175c75783926201c3356001600160a01b036201b876838562004ce2565b6201c34562006865855162004c8b565b511162005160576201c3579062004c7b565b926201c303565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c5ea5760026201c432845162004c8b565b5151036201c59057156201c4e8576201c44b906201e547565b156200661f57600091835b6201c4645750505050600090565b8151831015620175c75783926001600160a01b036201c489816201b7fb848762004ce2565b6201c49962006865855162004c8b565b51111590816201c4bc575b5062005160576201c4b59062004c7b565b926201c456565b6201c4ce91506201b7fb838662004ce2565b6201c4de62016e27845162004c8b565b511015386201c4a4565b6201c4f3906201e547565b156200661f57600091835b6201c50c5750505050600090565b8151831015620175c75783926001600160a01b036201c531816201b876848762004ce2565b6201c54162006865855162004c8b565b51111590816201c564575b5062005160576201c55d9062004c7b565b926201c4fe565b6201c57691506201b876838662004ce2565b6201c58662016e27845162004c8b565b511015386201c54c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c7c157836201c663845162004c8b565b5151036201c76757156201c6ec576201c67c906201e547565b156200661f57829160009182945b6201c69757505050905090565b80518510156201708c576201c6c16001600160a01b036201c6b9878462004ce2565b51166201c871565b6201c6d162006865845162004c8b565b51101562017084576201c6e5849562004c7b565b946201c68a565b6201c6f7906201e547565b156200661f57829160009182945b6201c71257505050905090565b80518510156201708c576201c73c6001600160a01b036201c734878462004ce2565b51166201c81b565b6201c74c62006865845162004c8b565b51101562017084576201c760849562004c7b565b946201c705565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201c83057505090565b9091620082566201c86a916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c821565b60009081905b6103e882106201c88657505090565b9091620082566201c8be916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c877565b600091906201c920576000905b6103e882106201c8e157505090565b9091620082566201c919916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c8d2565b81905b6103e882106201c93257505090565b9091620082566201c96c916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c923565b916020019060019283835151036201cae057836201c992845162004c8b565b5151036201ca8657156201ca13576201c9ab906201e547565b156200661f57829160009182945b6201c9c657505050905090565b80518510156201708c576201c9e86001600160a01b036201c6b9878462004ce2565b6201c9f862006865845162004c8b565b51111562017084576201ca0c849562004c7b565b946201c9b9565b6201ca1e906201e547565b156200661f57829160009182945b6201ca3957505050905090565b80518510156201708c576201ca5b6001600160a01b036201c734878462004ce2565b6201ca6b62006865845162004c8b565b51111562017084576201ca7f849562004c7b565b946201ca2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cd185760026201cb5a845162004c8b565b5151036201ccbe57156201cc13576201cb73906201e547565b919091156200661f57829160009182945b6201cb9157505050905090565b81518510156201708c576001600160a01b036201cbb4816201c6b9888662004ce2565b6201cbc462006865845162004c8b565b51119081156201cbe8575b5062017084576201cbe1849562004c7b565b946201cb84565b6201cbfa91506201c6b9878562004ce2565b6201cc0a62016e27835162004c8b565b5110386201cbcf565b6201cc1e906201e547565b919091156200661f57829160009182945b6201cc3c57505050905090565b81518510156201708c576001600160a01b036201cc5f816201c734888662004ce2565b6201cc6f62006865845162004c8b565b51119081156201cc93575b5062017084576201cc8c849562004c7b565b946201cc2f565b6201cca591506201c734878562004ce2565b6201ccb562016e27835162004c8b565b5110386201cc7a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cee157836201cd91845162004c8b565b5151036201ce8757156201ce13576201cdaa906201e547565b919091156200661f57600091835b6201cdc65750505050600090565b8051831015620175c75783926201cdea6001600160a01b036201c6b9838562004ce2565b6201cdfa62006865855162004c8b565b511062005160576201ce0c9062004c7b565b926201cdb8565b6201ce1e906201e547565b919091156200661f57600091835b6201ce3a5750505050600090565b8051831015620175c75783926201ce5e6001600160a01b036201c734838562004ce2565b6201ce6e62006865855162004c8b565b511062005160576201ce809062004c7b565b926201ce2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9160200190600192836201cf50845162004c8b565b5151036201d0aa5783835151036201d05057156201cfdc576201cf73906201e547565b919091156200661f57600091835b6201cf8f5750505050600090565b8051831015620175c75783926201cfb36001600160a01b036201c6b9838562004ce2565b6201cfc362006865855162004c8b565b511162005160576201cfd59062004c7b565b926201cf81565b6201cfe7906201e547565b919091156200661f57600091835b6201d0035750505050600090565b8051831015620175c75783926201d0276001600160a01b036201c734838562004ce2565b6201d03762006865855162004c8b565b511162005160576201d0499062004c7b565b926201cff5565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b916020019060026201d117835162004c8b565b5151036201d2dc5760019283835151036201d28257156201d1da576201d13d906201e547565b156200661f57600091835b6201d1565750505050600090565b8151831015620175c75783926001600160a01b036201d17b816201c6b9848762004ce2565b6201d18b62006865855162004c8b565b51111590816201d1ae575b5062005160576201d1a79062004c7b565b926201d148565b6201d1c091506201c6b9838662004ce2565b6201d1d062016e27845162004c8b565b511015386201d196565b6201d1e5906201e547565b156200661f57600091835b6201d1fe5750505050600090565b8151831015620175c75783926001600160a01b036201d223816201c734848762004ce2565b6201d23362006865855162004c8b565b51111590816201d256575b5062005160576201d24f9062004c7b565b926201d1f0565b6201d26891506201c734838662004ce2565b6201d27862016e27845162004c8b565b511015386201d23e565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060019384835151036201d4fd5760026201d359845162004c8b565b5151036201d4a357156201d404576201d372906201e547565b92909215620171bd57600092845b6201d38c575050505090565b80518410156200519a576201d3a662006865845162004c8b565b516103e881101562004c99576001600160a01b036201d3c6868462004ce2565b5116600052600390811b0182526040600020546201d3e962016e27855162004c8b565b511015620173d1576201d3fd859462004c7b565b936201d380565b6201d40f906201e547565b92909215620171bd57600092845b6201d429575050505090565b80518410156200519a576201d44362006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d467878562004ce2565b511660005260031b0182526040600020546201d48862016e27855162004c8b565b511015620173d1576201d49c859462004c7b565b936201d41d565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208092019060019384835151036201d71e5760026201d57a845162004c8b565b5151036201d6c457156201d625576201d593906201e547565b92909215620171bd57600092845b6201d5ad575050505090565b80518410156200519a576201d5c762006865845162004c8b565b516103e881101562004c99576001600160a01b036201d5e7868462004ce2565b5116600052600390811b0182526040600020546201d60a62016e27855162004c8b565b511115620173d1576201d61e859462004c7b565b936201d5a1565b6201d630906201e547565b92909215620171bd57600092845b6201d64a575050505090565b80518410156200519a576201d66462006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d688878562004ce2565b511660005260031b0182526040600020546201d6a962016e27855162004c8b565b511115620173d1576201d6bd859462004c7b565b936201d63e565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101600392836201d78e835162004c8b565b5151036201da1c5760019485835151036201d9c257156201d8b9576201d7b4906201e547565b93909315620173d157600093855b6201d7cf57505050505090565b80518510156201d8b3576201d7e962006865845162004c8b565b516103e8908181101562004c99576001600160a01b03908490826201d80f8a8762004ce2565b5116600052811b01865260409081600020546201d83162016e27885162004c8b565b51119283156201d857575b5050506201b1c3576201d850869562004c7b565b946201d7c2565b909192506201d86b62006865875162004c8b565b519081101562004c995784916201d883898662004ce2565b5116600052811b018552600020546201d8a86201d8a1855162004c8b565b5162004cc0565b51103880806201d83c565b620178f8565b6201d8c7909392936201e547565b93909315620173d157600093855b6201d8e257505050505090565b80518510156201d8b3576201d8fc62006865845162004c8b565b516103e88082101562004c99576001600160a01b0391826201d91f898662004ce2565b5116600052611fbb8091881b01855260409182600020546201d94662016e27895162004c8b565b51119384156201d96d575b505050506201b1c3576201d966869562004c7b565b946201d8d5565b90919293506201d98262006865885162004c8b565b519182101562004c99576201d998898662004ce2565b5116600052861b018352600020546201d9b66201d8a1855162004c8b565b5110388080806201d951565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201da91835162004c8b565b5151036201dc4a5760019384835151036201dbf057156201db4d576201dab7906201e547565b92909215620171bd57600092845b6201dad4575050505050600090565b805184101562017900576201daee62006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201db11838562004ce2565b5116600052600390811b0183526040600020546201db3462016e27865162004c8b565b5110620178f8576201db469062004c7b565b936201dac5565b6201db58906201e547565b92909215620171bd57600092845b6201db75575050505050600090565b805184101562017900576201db8f62006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dbb6848662004ce2565b511660005260031b0183526040600020546201dbd762016e27865162004c8b565b5110620178f8576201dbe99062004c7b565b936201db66565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060026201dcba835162004c8b565b5151036201de735760019384835151036201de1957156201dd76576201dce0906201e547565b92909215620171bd57600092845b6201dcfd575050505050600090565b805184101562017900576201dd1762006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201dd3a838562004ce2565b5116600052600390811b0183526040600020546201dd5d62016e27865162004c8b565b5111620178f8576201dd6f9062004c7b565b936201dcee565b6201dd81906201e547565b92909215620171bd57600092845b6201dd9e575050505050600090565b805184101562017900576201ddb862006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dddf848662004ce2565b511660005260031b0183526040600020546201de0062016e27865162004c8b565b5111620178f8576201de129062004c7b565b936201dd8f565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b916020809101600392836201dee3835162004c8b565b5151036201e1755760019485835151036201e11b57156201e009576201df09906201e547565b93909315620173d157600093855b6201df2757505050505050600090565b80518510156201b22e576201df4162006865845162004c8b565b51946103e8958681101562004c995787966001600160a01b03918590836201df6a868862004ce2565b5116600052811b018752604080600020546201df8b62016e27895162004c8b565b51111592836201dfb0575b5050506201b225576201dfa99062004c7b565b946201df17565b91985091506201dfc562006865875162004c8b565b519788101562004c9957889785916201dfdf858762004ce2565b5116600052811b018652600020546201dffd6201d8a1865162004c8b565b5110153880806201df96565b6201e017909392936201e547565b93909315620173d157600093855b6201e03557505050505050600090565b80518510156201b22e576201e04f62006865845162004c8b565b51946103e88087101562004c995787966001600160a01b0390816201e075858762004ce2565b5116600052611fbb8091891b01865260409081600020546201e09c62016e278a5162004c8b565b51111593846201e0c2575b505050506201b225576201e0bb9062004c7b565b946201e025565b9193509198506201e0d862006865885162004c8b565b519081101562004c995789986201e0f0858762004ce2565b5116600052871b018452600020546201e10e6201d8a1865162004c8b565b511015388080806201e0a7565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201e1df816201e364565b156201e35b576040810190606082510151511515806201e320575b156201e20c5750516060015151600191565b604082510151511515806201e307575b156201e22e5750516040015151600191565b60808251015151151590816201e2ed575b50156201e25157516080015151600191565b805160c081015151156201e29857506201e27060c08251015162004c8b565b51516201e28157505b600090600090565b60c06201e2919151015162004c8b565b5151600191565b602081015151156201e2b05750516020015151600191565b60a0015180516201e2c4575b50506201e279565b6201e2cf9062004c8b565b51516201e2dd57806201e2bc565b60a06201e2919151015162004c8b565b6020915001516026811015620029ab57601014386201e23f565b5060208101516026811015620029ab576013146201e21c565b506020810180516026811015620029ab57600c149081156201e344575b506201e1fa565b9050516026811015620029ab57600f14386201e33d565b50600090600090565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146201e54257805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760051462017188578051838110156201e52d5760061462017188578051838110156201e52d5760071462017188578051838110156201e52d5760081462017188578051838110156201e52d5760091462017188578051838110156201e52d57600a1462017188578051838110156201e52d57600b1462017188578051838110156201e52d57600c1462017188578051838110156201e52d57600d1462017188578051838110156201e52d57600e1462017188578051838110156201e52d57600f1462017188578051838110156201e52d5760101462017188578051838110156201e52d5760111462017188578051838110156201e52d5760121462017188578051838110156201e52d5760131462017188578051838110156201e52d5760141462017188578051838110156201e52d57601514620171885751918210156201e5185750601e14620032615750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201e552816201e364565b156201e5c15760208101516026811015620029ab576004146201e5ae576040015160c0015180516201e59c57506040516201e58d8162002ac7565b60008152600036813790600090565b6201e5a79062004c8b565b5190600190565b60c060406201e5a7920151015162004caf565b506040516201e58d8162002ac7565b60208101516026811015620029ab576004146201e5f657506040516201e58d8162002ac7565b60c060406201e5a7920151015162004c8b565b6201e614816201e759565b156201e74957602081019081519160269081841015620029ab5760018094146201e72e57805182811015620029ab576003146201e72e5780519082821015620029ab5760048092146201e712578051838110156201e52d576005146201e712578051838110156201e52d576006146201e712578051838110156201e52d576014146201e712578051838110156201e52d576015146201e7125751918210156201e5185750601e146201e6f4575050604051906201e6d18262002ac7565b60008252604051916201e6e48362002ac7565b6000835260003681379190600090565b604001916201e70d60a0620077f3818651015162004c8b565b519190565b505050604001916201e70d60a0620077f3818651015162004c8b565b5050604001916201e70d60a0620077f3818651015162004c8b565b50604051906201e6d18262002ac7565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146200661f57805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760141462017188578051838110156201e52d5760151462017188578051838110156201e52d57601e1462017188578051838110156201e52d57600514620171885751918210156201e5185750600614620032615750600090565b916101f581146201e8c0576101f681146201e8b4576101f781146201e8a8576101f881146201e89c576101f981146201e890576101fa81146201e884576101fb81146201e878576101fc146201e86d575050600090565b62003261916201f311565b5062003261916201f16c565b5062003261916201f007565b5062003261916201eea2565b5062003261916201ed3d565b5062003261916201eb98565b5062003261916201ea33565b506200326191906020019060019182815151036201e9d957826201e8e5825162004c8b565b5151036201e97f5760208201516026811015620029ab576002036200661f57600091835b6201e9175750505050600090565b604081019260a0936201e92e858251015162004cc0565b51518210156201e97757816200749787966201e94d9351015162004cc0565b516201e95e62006865855162004c8b565b511062005160576201e9709062004c7b565b926201e909565b5050620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201eb3e57826201ea52825162004c8b565b5151036201eae45760208201516026811015620029ab576002036200661f57600091835b6201ea845750505050600090565b604081019260a0936201ea9b858251015162004cc0565b51518210156201e97757816200749787966201eaba9351015162004cc0565b516201eacb62006865855162004c8b565b511162005160576201eadd9062004c7b565b926201ea76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ece35760026201ebb8825162004c8b565b5151036201ec895760208201516026811015620029ab576002036200661f57600091835b6201ebea5750505050600090565b604081019260a0936201ec01858251015162004cc0565b51518210156201e9775781856201ec2282620074978a998651015162004cc0565b516201ec3362006865885162004c8b565b51111592836201ec58575b50505062005160576201ec519062004c7b565b926201ebdc565b5101516201ec6c9250620074979062004cc0565b516201ec7d62016e27855162004c8b565b5110158138806201ec3e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ee4857826201ed5c825162004c8b565b5151036201edee5760208201516026811015620029ab576002036200661f57600091835b6201ed8e5750505050600090565b604081019260a0936201eda5858251015162004cc0565b51518210156201e97757816200749787966201edc49351015162004cc0565b516201edd562006865855162004c8b565b511462005160576201ede79062004c7b565b926201ed80565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201efad57826201eec1825162004c8b565b5151036201ef535760208201516026811015620029ab576002036200661f57600091835b6201eef35750505050600090565b604081019260a0936201ef0a858251015162004cd1565b51518210156201e97757816200749787966201ef299351015162004caf565b516201ef3a62006865855162004c8b565b511062005160576201ef4c9062004c7b565b926201eee5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f11257826201f026825162004c8b565b5151036201f0b85760208201516026811015620029ab576002036200661f57600091835b6201f0585750505050600090565b604081019260a0936201f06f858251015162004cd1565b51518210156201e97757816200749787966201f08e9351015162004caf565b516201f09f62006865855162004c8b565b511162005160576201f0b19062004c7b565b926201f04a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f2b75760026201f18c825162004c8b565b5151036201f25d5760208201516026811015620029ab576002036200661f57600091835b6201f1be5750505050600090565b604081019260a0936201f1d5858251015162004cd1565b51518210156201e9775781856201f1f682620074978a998651015162004caf565b516201f20762006865885162004c8b565b51111592836201f22c575b50505062005160576201f2259062004c7b565b926201f1b0565b5101516201f2409250620074979062004caf565b516201f25162016e27855162004c8b565b5110158138806201f212565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f41c57826201f330825162004c8b565b5151036201f3c25760208201516026811015620029ab576002036200661f57600091835b6201f3625750505050600090565b604081019260a0936201f379858251015162004cd1565b51518210156201e97757816200749787966201f3989351015162004caf565b516201f3a962006865855162004c8b565b511462005160576201f3bb9062004c7b565b926201f354565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91603381036201f560575060209150016001815151036201f5105760016201f49f825162004c8b565b5151036201f4bd57620068656201f4b7915162004c8b565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201f649575060209150016001815151036201f5f95760016201f588825162004c8b565b5151036201f5a657620068656201f5a0915162004c8b565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201f75b575060209150016001815151036201f70b5760026201f671825162004c8b565b5151036201f6b1576201f68962006865825162004c8b565b5142101590816201f698575090565b6201f6aa915062016e27905162004c8b565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201f85f575060209150016001815151036201f8055760016201f783825162004c8b565b5151036201f7ab5762016c03620068656201f79e4262006274565b5050505050925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603781036201f956575060209150016001815151036201f8fc5760016201f887825162004c8b565b5151036201f8a25762016d04620068656201f79e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603881036201fa5a575060209150016001815151036201fa005760026201f97e825162004c8b565b5151036201f9a6576201f9914262006274565b505050505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603981036201fb5f575060209150016001815151036201fb055760016201fa82825162004c8b565b5151036201faab5762016c03620068656201fa9d4262006274565b505050509390505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603a81036201fc56575060209150016001815151036201fbfc5760016201fb87825162004c8b565b5151036201fba25762016d04620068656201fa9d4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603b81036201fd5b575060209150016001815151036201fd015760026201fc7e825162004c8b565b5151036201fca7576201fc914262006274565b50505050905062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603c81036201fe60575060209150016001815151036201fe065760016201fd83825162004c8b565b5151036201fdac5762016c03620068656201fd9e4262006274565b505050949150505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603d81036201ff57575060209150016001815151036201fefd5760016201fe88825162004c8b565b5151036201fea35762016d04620068656201fd9e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603e81036202005c57506020915001600181515103620200025760026201ff7f825162004c8b565b5151036201ffa8576201ff924262006274565b50505091505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603f810362020161575060209150016001815151036202010757600162020084825162004c8b565b515103620200ad5762016c03620068656202009f4262006274565b505095925050505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040928184036202025757505060200190600182515103620201ff5760016202018b835162004c8b565b515103620201a7575062016d04620068656202009f4262006274565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604182036202035957505060200190600182515103620203015760026202027f835162004c8b565b515103620202a95750620202934262006274565b50509250505062016e0462006865835162004c8b565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b909260428403620203715750620032619250620215e3565b60438403620203875750620032619250620217ed565b60448481036202039f575050620032619250620219ef565b60458503620203b657505062003261925062021c6c565b60468503620203cd57505062003261925062021e6e565b60478503620203e457505062003261925062022070565b60488503620203fb57505062003261925062022353565b604985036202041257505062003261925062022660565b604a8503620204295750506200326192506202293e565b604b85036202044057505062003261925062022d06565b604c85036202045757505062003261925062022eb1565b604d85036202046e57505062003261925062022fb5565b604e8503620204855750506200326192506202310d565b604f85036202049c5750506200326192506202328e565b60508503620204b357505062003261925062023392565b919092936055811460001462020675575060208401926002845151036202061d5760019283620204e4865162004caf565b515103620205c6575090829160009586945b62020511575b50505050506200686562016c03915162004caf565b9091929395620205248383015162004c8b565b5151871015620205bf576202057b908415620205865762009b8d906202055f6103e8620205578b620074978c5162004c8b565b51106202352c565b6201b9ac620205748a620074978b5162004c8b565b51620060c4565b9392919083620204f6565b62009b8d90620205a36103e8620205578b620074978c5162004c8b565b6201b9ac620205b88a620074978b5162004c8b565b516200614a565b95620204fc565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b60568103620207f857506020840192600284515103620207a057600192836202069f865162004caf565b51510362020749575090829160009586945b620206cc575b50505050506200686562016d04915162004caf565b9091929395620206df8383015162004c8b565b515187101562020742576202071a908415620207255762009b8d906202055f6103e8620207128b620074978c5162004c8b565b51106202359e565b9392919083620206b1565b62009b8d90620205a36103e8620207128b620074978c5162004c8b565b95620206b7565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9194909160578103620209be575060208401946002865151036202096557600262020824875162004caf565b5151036202090d5750600092835b620208408287015162004c8b565b5151851015620208d35790620208988562020840938987600014620208a2576103e86202087b6200995a946200749762020883945162004c8b565b511062023610565b6201b9ac6202057489620074978d5162004c8b565b9490915062020832565b6103e86202087b6200995a9462007497620208be945162004c8b565b6201b9ac620205b889620074978d5162004c8b565b93505093925050620208ea62006865835162004caf565b518110159182620208fa57505090565b62016e2e91925062016e27905162004caf565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b909491906058810362020b755750602084019260028451510362020b1d5760019283620209ec865162004caf565b51510362020ac6575090829160009586945b62020a185750505050506200686562016c03915162004caf565b909192939562020a2b8383015162004c8b565b5151871015620205bf5762020a8290841562020a8d5762009b8d9062020a666103e862020a5e8b620074978c5162004c8b565b511062023682565b6201b9ac62020a7b8a620074978b5162004c8b565b5162005deb565b9392919083620209fe565b62009b8d9062020aaa6103e862020a5e8b620074978c5162004c8b565b6201b9ac62020abf8a620074978b5162004c8b565b5162005eb4565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b6059810362020cf05750602084019260028451510362020c98576001928362020b9f865162004caf565b51510362020c41575090829160009586945b62020bcb5750505050506200686562016d04915162004caf565b909192939562020bde8383015162004c8b565b5151871015620207425762020c1990841562020c245762009b8d9062020a666103e862020c118b620074978c5162004c8b565b5110620236f4565b939291908362020bb1565b62009b8d9062020aaa6103e862020c118b620074978c5162004c8b565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a810362020e7c5750602084019460028651510362020e2357600262020d1c875162004caf565b51510362020dcb5750600092835b62020d388287015162004c8b565b5151851015620208d3579062020d908562020d3893898760001462020d9a576103e862020d736200995a946200749762020d7b945162004c8b565b511062023766565b6201b9ac62020a7b89620074978d5162004c8b565b9490915062020d2a565b6103e862020d736200995a946200749762020db6945162004c8b565b6201b9ac62020abf89620074978d5162004c8b565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b8103620210555750602084019260028451510362020ffd576001928362020eaa865162004caf565b51510362020fa6575090829160009586945b62020ed65750505050506200686562016c03915162004caf565b909192939562020ee98383015162004c8b565b5151871015620205bf57831562020f59576103e862020f1b8162020f138a620074978b5162004c8b565b5110620237d8565b62020f2c8862007497895162004c8b565b519081101562004c995762020f4e91600662009b8d9260031b01549062006258565b939291908362020ebc565b6103e862020f728162020f138a620074978b5162004c8b565b62020f838862007497895162004c8b565b519081101562004c995762020f4e91611fbe62009b8d9260031b01549062006258565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036202122a57506020840192600284515103620211d257600192836202107f865162004caf565b5151036202117b575090829160009586945b620210ab5750505050506200686562016d04915162004caf565b9091929395620210be8383015162004c8b565b5151871015620207425783156202112e576103e8620210f081620210e88a620074978b5162004c8b565b51106202384a565b620211018862007497895162004c8b565b519081101562004c99576202112391600662009b8d9260031b01549062006258565b939291908362021091565b6103e86202114781620210e88a620074978b5162004c8b565b620211588862007497895162004c8b565b519081101562004c99576202112391611fbe62009b8d9260031b01549062006258565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d819692939496146000146202140357506020840192600284515103620213aa5760026202125a855162004caf565b515103620213525750600080955b620212768187015162004c8b565b51518710156202133b578315620212e9576103e891620212a983620212a18a620074978a5162004c8b565b5110620238bc565b620212ba8862007497885162004c8b565b519283101562004c995762015696620212e0916006620212769560031b01549062006258565b96915062021268565b6103e8916202130383620212a18a620074978a5162004c8b565b620213148862007497885162004c8b565b519283101562004c995762015696620212e091611fbe620212769560031b01549062006258565b50929350935050620208ea62006865835162004caf565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e03620171bd5760208401926002845151036202158b576001928362021430865162004caf565b51510362021534575090829160009586945b6202145d575b50505050506200686562016f32915162004caf565b9091929395620214708383015162004c8b565b51518710156202152d578315620214e0576103e8620214a2816202149a8a620074978b5162004c8b565b51106202392e565b620214b38862007497895162004c8b565b519081101562004c9957620214d591600662009b8d9260031b01549062006258565b939291908362021442565b6103e8620214f9816202149a8a620074978b5162004c8b565b6202150a8862007497895162004c8b565b519081101562004c9957620214d591611fbe62009b8d9260031b01549062006258565b9562021448565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9060408101906001825151036202179357600162021602835162004c8b565b515103620217395760200191600183515103620216df57600162021627845162004c8b565b5151036202168557156202166157620068656202165962016c03926201b7fb6200686560018060a01b03925162004c8b565b925162004c8b565b620068656202165962016c03926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906040810190600182515103620219955760016202180c835162004c8b565b5151036202193b5760200191600183515103620218e157600162021831845162004c8b565b5151036202188757156202186357620068656202165962016d04926201b7fb6200686560018060a01b03925162004c8b565b620068656202165962016d04926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604082019160018351510362021c1257600162021a0d845162004c8b565b51510362021bb8576020019060018251510362021b5e57600262021a32835162004c8b565b51510362021b04571562021aa85760018060a01b0362021a5c816201b7fb62006865865162004c8b565b62021a6c62006865845162004c8b565b511115928362021a7c5750505090565b62021a9c92935062016e27916201b7fb6200686562021659935162004c8b565b51101538808062017188565b60018060a01b0362021ac4816201b87662006865865162004c8b565b62021ad462006865845162004c8b565b511115928362021ae45750505090565b62021a9c92935062016e27916201b8766200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b90604081019060018251510362021e1457600162021c8b835162004c8b565b51510362021dba576020019160018351510362021d6057600162021cb0845162004c8b565b51510362021d06571562021ce257620068656202165962016c03926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016c03926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060408101906001825151036202201657600162021e8d835162004c8b565b51510362021fbc576020019160018351510362021f6257600162021eb2845162004c8b565b51510362021f08571562021ee457620068656202165962016d04926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016d04926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040820191600183515103620222875760016202208e845162004c8b565b5151036202222d5760200190600182515103620221d3576002620220b3835162004c8b565b5151036202217957156202211d5760018060a01b03620220dd816201c6b962006865865162004c8b565b620220ed62006865845162004c8b565b5111159283620220fd5750505090565b62021a9c92935062016e27916201c6b96200686562021659935162004c8b565b60018060a01b0362022139816201c73462006865865162004c8b565b6202214962006865845162004c8b565b5111159283620221595750505090565b62021a9c92935062016e27916201c7346200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620222e957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202259557600162022373845162004c8b565b5151036202253c5760200192600184515103620224e357600262022398855162004c8b565b5151036202248a57156202241b576103e890620223c782620223bf62006865875162004c8b565b5110620222e1565b620223d762006865855162004c8b565b519182101562004c9957600362016e279262016c0394620224046200686560018060a01b03925162004c8b565b5116600052811b0160205260002054925162004c8b565b6103e8906202243482620223bf62006865875162004c8b565b6202244462006865855162004c8b565b519182101562004c9957611fbb62016e279262016c0394620224726200686560018060a01b03925162004c8b565b511660005260031b0160205260002054925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620225f657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202287357600162022680845162004c8b565b5151036202281a5760200192600184515103620227c1576002620226a5855162004c8b565b51510362022768571562022711576103e890620226d482620226cc62006865875162004c8b565b5110620225ee565b620226e462006865855162004c8b565b519182101562004c9957600362016e279262016d0494620224046200686560018060a01b03925162004c8b565b6103e8906202272a82620226cc62006865875162004c8b565b6202273a62006865855162004c8b565b519182101562004c9957611fbb62016e279262016d0494620224726200686560018060a01b03925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620228d457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b9060408082019260018451510362022cad5760016202295e855162004c8b565b51510362022c545760208093019260018451510362022bfc576003918262022987865162004c8b565b51510362022b9e571562022a9a576103e891620229b683620229ae62006865885162004c8b565b5110620228cc565b620229c662006865865162004c8b565b51928084101562004c995760018060a01b038281620229ea620068658b5162004c8b565b5116956000968752811b0184528585205462022a0b62016e27895162004c8b565b511115978862022a21575b505050505050505090565b90919293949596975062022a3a62006865895162004c8b565b519283101562022a8657916201d8a195939162022a626200686562022a759997955162004c8b565b51168452811b0190522054925162004c8b565b511015388080808080808062022a16565b634e487b7160e01b86526032600452602486fd5b6103e862022ab281620229ae62006865885162004c8b565b62022ac262006865865162004c8b565b51908082101562004c995760018060a01b03938462022ae6620068658a5162004c8b565b5116946000958652611fbb8094831b0185528686205462022b0c62016e278a5162004c8b565b511115988962022b23575b50505050505050505090565b9091929394959697985062022b3d620068658a5162004c8b565b519384101562022b8a579162022b789795939162022b66620068656201d8a19997955162004c8b565b511685521b0190522054925162004c8b565b51101538808080808080808062022b17565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906020019060018251510362022db057600162022d24835162004c8b565b51510362022d56571562022d445762016c03620068656202165962022e73565b62016c03620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062022e1c575090565b908160031b60ff611fbf820154161562022e6d5762022e5a62022e679262022e52611fb962022e6094015462005edc8762005f9f565b92906200605b565b62006258565b9162004c7b565b62022e0e565b50905090565b6000805b6103e8811062022e85575090565b9060ff60078360031b01541615620061e45762022e6062022eab916201b9ac84620060c4565b62022e77565b906020019060018251510362022f5b57600162022ecf835162004c8b565b51510362022f01571562022eef5762016d04620068656202165962022e73565b62016d04620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620230b357600262022fd3835162004c8b565b5151036202305957156202301d5762022feb62022e73565b62022ffb62006865835162004c8b565b511115908162023009575090565b905062016e2e62016e276202165962022e73565b6202302762022e0a565b6202303762006865835162004c8b565b511115908162023045575090565b905062016e2e62016e276202165962022e0a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620231b75760016202312b835162004c8b565b5151036202315d57156202314b5762016c03620068656202165962023250565b62016c03620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062023223575090565b9060ff611fbf8360031b01541615620061e45762022e606202324a916201b9ac8462005eb4565b62023215565b6000805b6103e8811062023262575090565b9060ff60078360031b01541615620061e45762022e6062023288916201b9ac8462005deb565b62023254565b906020019060018251510362023338576001620232ac835162004c8b565b515103620232de5715620232cc5762016d04620068656202165962023250565b62016d04620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620234d2576002620233b0835162004c8b565b515103620234785715620233fa57620233c862023250565b620233d862006865835162004c8b565b5111159081620233e6575090565b905062016e2e62016e276202165962023250565b6202340462023211565b6202341462006865835162004c8b565b511115908162023422575090565b60009150815b6103e8811062023444575b5062016e2762016e2e915162004c8b565b9160ff611fbf8460031b015416156202347157620082566202346b916201b9ac8562005eb4565b62023428565b9162023433565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b156202353457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620235a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202361857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202368a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620236fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202376e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620237e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202385257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620238c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202393657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462023a08576101928114620239fc576101938114620239f0576101968114620239e45761019714620239d9575050600090565b620032619162023f3e565b50620032619162023e59565b50620032619162023cb4565b50620032619162023b73565b5062003261919060200190600191828151510362023b19578262023a2d825162004c8b565b51510362023abf5760208201516026811015620029ab57600a036200661f57600091835b62023a5f5750505050600090565b604081019260a09362023a76858251015162004c8b565b51518210156201e977578162007497879662023a959351015162004c8b565b5162023aa662006865855162004c8b565b5114620051605762023ab89062004c7b565b9262023a51565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023c5a5760208201516026811015620029ab57600a036200661f5782916000935b62023bb05750505050600090565b6040810160a062023bc5818351015162004c8b565b51518610156201e97757906000855b62023bf0575b50505062023be9839462004c7b565b9362023ba2565b62023bfc855162004c8b565b515181101562023c545762023c1a8762007497858551015162004c8b565b5162023c2c8262007497885162004c8b565b511462023c4a579062023c4186939262004c7b565b90919262023bd4565b5050505050905090565b62023bda565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023dff57600262023cd4825162004c8b565b51510362023da55760208201516026811015620029ab57600a036200661f57600091835b62023d065750505050600090565b604081019260a09362023d1d858251015162004c8b565b51518210156201e97757818562023d3e82620074978a998651015162004c8b565b5162023d4f62006865885162004c8b565b511115928362023d74575b505050620051605762023d6d9062004c7b565b9262023cf8565b51015162023d889250620074979062004c8b565b5162023d9962016e27855162004c8b565b51101581388062023d5a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600191828151510362023ee55760208201516026811015620029ab57600b036200661f57600091835b62023e905750505050600090565b60408101515192835181101562023ede5762023ec762023eb282879662004ce2565b5162023ebf855162004c8b565b519062033cdb565b620051605762023ed79062004c7b565b9262023e82565b50620171bd565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362023fc35760208201516026811015620029ab57600b036200661f57600091835b62023f755750505050600090565b60408101515192835181101562023ede5762023fac62023f9782879662004ce2565b5162023fa4855162004c8b565b519062006570565b620051605762023fbc9062004c7b565b9262023f67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9160978114620240405760981462024035575050600090565b620032619162024151565b5060200180515162003261929060001901620240f857600162024064835162004c8b565b5151036202409e57602001516026811015620029ab5762006865620216596202408d9262033aa2565b51146202409957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b91909160208093016001918282515103620241d857938293946000935b6202417d575050505050600090565b62024189835162004c8b565b5151841015620179005781810151936026851015620029ab57620241ae869562033aa2565b620241bf8262007497875162004c8b565b5114620178f857620241d19062004c7b565b936202416e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462024334576102be811462024328576102bf81146202431c576102c0811462024310576102c1811462024304576102c28114620242f8576102c38114620242ec576102c48114620242e0576102c58114620242d4576102c68114620242c8576102c78114620242bc576102c814620242b157505050600090565b620032619262025559565b5062003261926202535e565b50620032619262025159565b50620032619262024ee9565b50620032619262024ce4565b50620032619262024ad5565b506200326192620249b6565b5062003261926202488f565b50620032619262024768565b5062003261926202460e565b506200326192620244ba565b50620032619262024351565b606482101562004c99570190600090565b916020809101926001845151036202446057600162024371855162004c8b565b515103620244065715620243cd5762021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b9062024340565b90549060031b1c4262006266565b62021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052613f01815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602080910192600184515103620245b4576001620244da855162004c8b565b5151036202455a5715620245215762021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b62021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101926001845151036202470e5760026202462e855162004c8b565b515103620246b45715620246805781516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b62016e0462006865835162004c8b565b81516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202483557600162024786845162004c8b565b515103620247db5715620247c957620076f96020620247a69201620073df565b606481101562004c9957620068656202165962016c0392611f4b01544262006266565b620076f96020620247a69201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202495c576001620248ad845162004c8b565b515103620249025715620248f057620076f96020620248cd9201620073df565b606481101562004c9957620068656202165962016d0492611f4b01544262006266565b620076f96020620248cd9201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019160018351510362024a7b576002620249d4845162004c8b565b51510362024a21571562024a0f57620076f96020620249f49201620073df565b606481101562004c99576202467090611f4b01544262006266565b620076f96020620249f49201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024c8b578462024af8835162004c8b565b51510362024c32579584959660001462024ba4576000945b62024b2057505050505050600090565b62024b2c825162004c8b565b51518510156201b22e57859460018060a01b0362024b508262007497865162004c8b565b51166000526020611f49815262024b8b6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b9288015162004c8b565b51106201b2255762024b9d9062004c7b565b9462024b10565b6000945b62024bb857505050505050600090565b62024bc4825162004c8b565b51518510156201b22e57859460018060a01b0362024be88262007497865162004c8b565b51166000526020611f49815262024c196200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51106201b2255762024c2b9062004c7b565b9462024ba8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024e90578462024d07835162004c8b565b51510362024e37579584959660001462024da9576000945b62024d2f57505050505050600090565b62024d3b825162004c8b565b51518510156201b22e57859460018060a01b0362024d5f8262007497865162004c8b565b51166000526020611f49815262024d906200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024da29062004c7b565b9462024d1f565b6000945b62024dbd57505050505050600090565b62024dc9825162004c8b565b51518510156201b22e57859460018060a01b0362024ded8262007497865162004c8b565b51166000526020611f49815262024e1e6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024e309062004c7b565b9462024dad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202510057600262024f0c825162004c8b565b515103620250a75784959660001462024fe3576000945b62024f3357505050505050600090565b62024f3f815162004c8b565b51518510156201b22e57859460018060a01b0362024f638262007497855162004c8b565b51166000526020611f49815262024f8c620243bf86600020620243b8620076f9858901620073df565b9086019062024fa062006865835162004c8b565b51811015918262024fc5575b50506201b2255762024fbe9062004c7b565b9462024f23565b62024fd891925062016e27905162004c8b565b511015388062024fac565b6000945b62024ff757505050505050600090565b62025003815162004c8b565b51518510156201b22e57859460018060a01b03620250278262007497855162004c8b565b51166000526020611f49815262025050620243bf86600020620243b8620076f9858901620073df565b908601906202506462006865835162004c8b565b51811015918262025089575b50506201b22557620250829062004c7b565b9462024fe7565b6202509c91925062016e27905162004c8b565b511015388062025070565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202530557846202517b825162004c8b565b515103620252ac5784959660001462025222576000945b6202519f57505050505090565b620251ab815162004c8b565b51518510156201d8b35760018060a01b03620251cd8662007497845162004c8b565b51166000526020611f4981526202520862006865620251fe620243bf87600020620243b8620076f9878a01620073df565b9287015162004c8b565b51116201b1c3576202521b869562004c7b565b9462025192565b6000945b6202523357505050505090565b6202523f815162004c8b565b51518510156201d8b35760018060a01b03620252618662007497845162004c8b565b51166000526020611f4981526202529262006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51116201b1c357620252a5869562004c7b565b9462025226565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9291604080820192600193848151510362025500578462025380825162004c8b565b515103620254a7578495966000146202541d576000945b620253a457505050505090565b620253b0815162004c8b565b51518510156201d8b35760018060a01b03620253d28662007497845162004c8b565b51166000526020611f4981526202540362006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c35762025416869562004c7b565b9462025397565b6000945b6202542e57505050505090565b6202543a815162004c8b565b51518510156201d8b35760018060a01b036202545c8662007497845162004c8b565b51166000526020611f4981526202548d62006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c357620254a0869562004c7b565b9462025421565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b92916040808201926001938481515103620257665760026202557c825162004c8b565b5151036202570d578495966000146202564e576000945b620255a057505050505090565b620255ac815162004c8b565b51518510156201d8b35760018060a01b03620255ce8662007497845162004c8b565b51166000526020611f498152620255f7620243bf85600020620243b8620076f9858801620073df565b908501906202560b62006865835162004c8b565b51811091821562025631575b50506201b1c3576202562a869562004c7b565b9462025593565b6202564491925062016e27905162004c8b565b5110388062025617565b6000945b6202565f57505050505090565b6202566b815162004c8b565b51518510156201d8b35760018060a01b036202568d8662007497845162004c8b565b51166000526020613f018152620256b6620243bf85600020620243b8620076f9858801620073df565b90850190620256ca62006865835162004c8b565b518110918215620256f0575b50506201b1c357620256e9869562004c7b565b9462025652565b6202570391925062016e27905162004c8b565b51103880620256d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600193808503620257d7575062003261935062025ea7565b60028103620257ed575062003261935062025f91565b60038103620258f7575050906040019180835151036202589b5762025813835162004c8b565b5151036202583c57620258366200686560018060a01b0380935116935162004c8b565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362025910575050620032619350620260d6565b60058103620259275750506200326193506202621b565b600681036202593e57505062003261935062026360565b60078103620259555750506200326193506202659c565b600881036202596c575050620032619350620267fa565b600981036202598357505062003261935062026a3a565b600a81036202599a57505062003261935062026c6e565b600b8103620259b157505062003261935062026f70565b600c8103620259c85750506200326193506202719c565b600d8103620259df575050620032619350620273ec565b600e8103620259f6575050620032619350620275e5565b600f810362025a0d57505062003261935062027935565b6010810362025a2457505062003261935062027b2e565b6011810362025a3b57505062003261935062027c4e565b6012810362025a5257505062003261935062027d6e565b6013810362025a6957505062003261935062027f04565b6014810362025a8057505062003261935062028024565b6015810362025a9757505062003261935062028144565b6019810362025aae575050620032619350620282cd565b601a810362025ac557505062003261935062028405565b601b810362025adc5750506200326193506202853d565b601c8195929394951460001462025c1f575060200193808551510362025bc65762025b08855162004c8b565b51510362025b6d57506000901562025b475750516001600160a01b03166000908152611f4760205260409020549062016c039062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016c0390620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601d810362025d5a575060200193808551510362025d015762025c43855162004c8b565b51510362025ca857506000901562025c825750516001600160a01b03166000908152611f4760205260409020549062016d049062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016d0490620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601e810362025e8c5750602001938451510362025e3357600262025d7f855162004c8b565b51510362025dda57506000901562025dbc5750516001600160a01b03166000908152611f47602052604090205462016e0462006865835162004c8b565b90516001600160a01b03168152613eff602052604090205462024670565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b9294509291601f141590506200661f576200326192620286ac565b91909160018251510362025f38571562025f0457620032619160018060a01b03905116600052611f406020526200118d62025efe62025eef6001604060002001935162004c8b565b51926040519283809262002c3e565b62033cdb565b620032619160018060a01b03905116600052613ef86020526200118d62025efe62025eef6001604060002001935162004c8b565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b91602001916001835151036202607a57600162025faf845162004c8b565b5151036202601b571562025fec57516001600160a01b03166000908152611f406020526040902060020154905162016f3290620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016f3290620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9160200191600183515103620261bf576001620260f4845162004c8b565b5151036202616057156202613157516001600160a01b03166000908152611f406020526040902060020154905162016c0390620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b91602001916001835151036202630457600162026239845162004c8b565b515103620262a557156202627657516001600160a01b03166000908152611f406020526040902060020154905162016d0490620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202654057600262026381845162004c8b565b515103620264e0576202639962006865845162004c8b565b51620263aa62016e27855162004c8b565b51106202645a57156202642b5760018060a01b039081845116600052611f4091828252600260406000200154620263e662006865865162004c8b565b5111159485620263f857505050505090565b9091929394505116600052526202641d62016e27600260406000200154925162004c8b565b5110153880808080620178f8565b60018060a01b039081845116600052613ef891828252600260406000200154620263e662006865865162004c8b565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202671b57620265bf835162004c8b565b515115620266b3579483949560001462026643576000935b620265e6575050505050600090565b620265f2835162004c8b565b51518410156201790057849360018060a01b03835116600052611f4082526002604060002001546202662a8262007497875162004c8b565b5114620178f8576202663c9062004c7b565b93620265d7565b6000935b62026656575050505050600090565b62026662835162004c8b565b51518410156201790057849360018060a01b03835116600052613ef882526002604060002001546202669a8262007497875162004c8b565b5114620178f857620266ac9062004c7b565b9362026647565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202677f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202695b57600262026818845162004c8b565b515103620268fb578015620268de57620268466103e86202683e62006865865162004c8b565b511062026777565b1562026894576202685c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016c0362016e27604060002054925162004c8b565b620268a462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016c0362016e27604060002054925162004c8b565b620268f56103e86202683e62006865865162004c8b565b62026846565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620269bf57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b916020019160018351510362026b9b57600262026a58845162004c8b565b51510362026b3b57801562026b1e5762026a866103e862026a7e62006865865162004c8b565b5110620269b7565b1562026ad45762026a9c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016d0462016e27604060002054925162004c8b565b62026ae462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016d0462016e27604060002054925162004c8b565b62026b356103e862026a7e62006865865162004c8b565b62026a86565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b1562026bff57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b91909160208092019160018351510362026ea0576003918262026c92855162004c8b565b51510362026e3d57801562026e205762026cc06103e862026cb862006865875162004c8b565b511062026bf7565b1562026d7b5762026cd662006865845162004c8b565b51916103e88084101562004c995785516001600160a01b03908116600090815294831b830184526040852054865162026d149062016e279062004c8b565b511115968762026d29575b5050505050505090565b909192939495965062026d4162006865885162004c8b565b519283101562022a865751168452811b0190526040902054905162026d6b906201d8a19062004c8b565b5110153880808080808062026d1f565b62026d8b62006865845162004c8b565b516103e88082101562004c995760018060a01b039384875116946000958652611fbb8094831b018552604086205462026dc962016e27895162004c8b565b511115978862026dde57505050505050505090565b90919293949596975062026df762006865895162004c8b565b519384101562022b8a57511685521b0190526040902054905162022a75906201d8a19062004c8b565b62026e376103e862026cb862006865875162004c8b565b62026cc0565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b1562026f0157565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b9160200191600183515103620270cb57600262026f8e845162004c8b565b51510362027071578015620270545762026fbc6103e862026fb462006865865162004c8b565b511062026ef9565b156202700a5762026fd262006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016f3262016e27604060002054925162004c8b565b6202701a62006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016f3262016e27604060002054925162004c8b565b6202706b6103e862026fb462006865865162004c8b565b62026fbc565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b156202712d57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b916020019160018351510362027392576002620271ba845162004c8b565b515103620273385780156202731b57620271e86103e8620271e062006865865162004c8b565b511062027125565b156202728d57620271fe62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202725262006865855162004c8b565b5191821015620014f757506202165962016c0392600662016e279360031b01549062005070565b634e487b7160e01b81526011600452602490fd5b6202729d62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb01602052604082205460648082029391801590850490911417156202727957620272f362006865855162004c8b565b5191821015620014f757506202165962016c0392611fbe62016e279360031b01549062005070565b620273326103e8620271e062006865865162004c8b565b620271e8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b91602001916001835151036202758b5760026202740a845162004c8b565b515103620275315715620274a3576202742862006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202747c62006865855162004c8b565b5191821015620014f757506202165962016d0492600662016e279360031b01549062005070565b620274b362006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb016020526040822054606480820293918015908504909114171562027279576202750962006865855162004c8b565b5191821015620014f757506202165962016d0492611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90602080930191600183515103620278db57600262027605845162004c8b565b51510362027881571562027745576202762362006865835162004c8b565b516103e8908181101562004c995760018060a01b03948584511693600094855260038093811b018252604085205460648102908082046064149015171562027731576202767562006865885162004c8b565b518581101562022b8a57841b60060154620276909162005070565b620276a062016e27885162004c8b565b5111159687620276b4575050505050505090565b9091929394959650620276cc62006865885162004c8b565b51918583101562022b8a5751168552821b820190526040832054606480820294918015908604909114171562027279576202770c62006865865162004c8b565b5192831015620014f757501b6006015462026d6b916201d8a191620216599162005070565b634e487b7160e01b86526011600452602486fd5b6202775562006865835162004c8b565b51906103e88083101562004c995760018060a01b039485835116936000948552611fbb809160031b0182526040852054936064850294808604606414901517156202773157620277aa62006865885162004c8b565b51948486101562022b8a57620277cb90611fbe809760031b01549062005070565b620277db62016e27895162004c8b565b5111159788620277f057505050505050505090565b9091929394959697506202780962006865895162004c8b565b5191858310156202786d575116865260031b01905260408320549260648402938085046064149015171562027279576202784862006865865162004c8b565b5191821015620014f7575060031b015462022a75916201d8a191620216599162005070565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027ad457600262027953845162004c8b565b51510362027a7a5715620279ec576202797162006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b909201602052604082205460648082029391801590850490911417156202727957620279c562006865855162004c8b565b5191821015620014f757506202165962016f3292600662016e279360031b01549062005070565b620279fc62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620272795762027a5262006865855162004c8b565b5191821015620014f757506202165962016f3292611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027bf457600162027b4c845162004c8b565b51510362027b9a57801562027b7a5762021659620068659162016c039360018060a01b03905116906201ba0e565b505162016c0390620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027d1457600162027c6c845162004c8b565b51510362027cba57801562027c9a5762021659620068659162016d049360018060a01b03905116906201ba0e565b505162016d0490620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916020019060018251510362027eaa57600262027d8d835162004c8b565b51510362027e5057801562027dfe5782516001600160a01b039062027db5908216836201ba0e565b62027dc562006865855162004c8b565b511115938462027dd6575050505090565b62027df193945091620216599162016e27935116906201ba0e565b5110153880808062005160565b5081516001600160a01b039062027e179082166201b9ba565b62027e2762006865845162004c8b565b511115928362027e375750505090565b62021a9c92935062016e2791620216599151166201b9ba565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027fca57600162027f22845162004c8b565b51510362027f7057801562027f505762021659620068659162016c039360018060a01b03905116906201c8c5565b505162016c0390620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620280ea57600162028042845162004c8b565b51510362028090578015620280705762021659620068659162016d049360018060a01b03905116906201c8c5565b505162016d0490620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602001906001825151036202827357600262028163835162004c8b565b51510362028219578015620281c75782516001600160a01b03906202818b908216836201c8c5565b6202819b62006865855162004c8b565b5111159384620281ac575050505090565b62027df193945091620216599162016e27935116906201c8c5565b5081516001600160a01b0390620281e09082166201c871565b620281f062006865845162004c8b565b5111159283620282005750505090565b62021a9c92935062016e2791620216599151166201c871565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620283ab576001620282eb845162004c8b565b5151036202835157156202832557516001600160a01b03166000908152611f456020526040902054905162016c0390620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620284e357600162028423845162004c8b565b5151036202848957156202845d57516001600160a01b03166000908152611f456020526040902054905162016d0490620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602080910191600183515103620286525760026202855e845162004c8b565b515103620285f85715620285cc5760018060a01b039081845116600052611f45918282526040600020546202859862006865865162004c8b565b5111159485620285aa57505050505090565b9091929394505116600052526202641d62016e27604060002054925162004c8b565b60018060a01b039081845116600052613efd918282526040600020546202859862006865865162004c8b565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916040016001928382515103620287885783921562028727576000925b620286d85750505050600090565b620286e4825162004c8b565b5151831015620175c757839260018060a01b0380835116906202870d8362007497875162004c8b565b5116146200516057620287209062004c7b565b92620286ca565b6000925b620287395750505050600090565b62028745825162004c8b565b5151831015620175c757839260018060a01b0380835116906202876e8362007497875162004c8b565b5116146200516057620287819062004c7b565b926202872b565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9161012d811462028a755761012e811462028a695761012f811462028a5d57610130811462028a5157610131811462028a4557610132811462028a3957610133811462028a2d57610134811462028a2157610135811462028a1557610136811462028a09576101378114620289fd576101388114620289f1576101398114620289e55761013a8114620289d95761013b8114620289cd5761013c8114620289c15761013d8114620289b45761013e8114620289a75761013f81146202899a5761014081146202898d5761014181146202898157610142811462028975576101438114620289695761014481146202895d5761014581146202895157610146811462028945576101478114620289395761017381146202892c57610174811462028920576101751462028915575050600090565b62003261916202b290565b5062003261916202b0cd565b505062003261906202b071565b5062003261916202af23565b5062003261916202abd9565b5062003261916202aa5f565b5062003261916202a8de565b5062003261916202a719565b5062003261916202a5b7565b5062003261916202a43c565b505062003261906202a335565b505062003261906202a220565b505062003261906202a11e565b505062003261906202a016565b50620032619162029e95565b50620032619162029d14565b50620032619162029b91565b50620032619162029a0e565b5062003261916202988d565b5062003261916202970c565b50620032619162029589565b50620032619162029406565b506200326191620292c7565b50620032619162029188565b50620032619162029063565b50620032619162028f3f565b50620032619162028e01565b50620032619162028cc3565b50620032619162028b9f565b5062003261919060200190600191828151510362028b465760208201516026811015620029ab57600d036200661f5762028ab083926202b43c565b6000935b62028ac25750505050600090565b62028ace825162004c8b565b5151841015620175c7576000835b62028af6575b5062028aef839462004c7b565b9362028ab4565b939291815185101562028b3d5762028b148462007497835162004c8b565b5162028b21868462004ce2565b5114620170845762028b3583949562004c7b565b909262028adc565b91929362028ae2565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028c6a5760208201516026811015620029ab57600d036200661f5762028bd483926202b43c565b6000935b62028be65750505050600090565b62028bf2825162004c8b565b5151841015620175c7576000835b62028c1a575b5062028c13839462004c7b565b9362028bd8565b939291815185101562028c615762028c388462007497835162004c8b565b5162028c45868462004ce2565b5114620170845762028c5983949562004c7b565b909262028c00565b91929362028c06565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028da85760208201516026811015620029ab57600d036200661f5762028cf883926202b43c565b6000925b62028d075750505090565b62028d13825162004c8b565b51518310156201724457600080855b62028d42575b5015620171bd5762028d3b849362004c7b565b9262028cfc565b8295939194955181101562028d9d5762028d628662007497845162004c8b565b5162028d6f828562004ce2565b511462028d90579062028d8484939262004c7b565b90939594919262028d22565b5091809493503862028d28565b949390929462028d28565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028ee65760208201516026811015620029ab57600d036200661f5762028e3683926202b43c565b6000925b62028e455750505090565b62028e51825162004c8b565b51518310156201724457600080855b62028e80575b5015620171bd5762028e79849362004c7b565b9262028e3a565b8295939194955181101562028edb5762028ea08662007497845162004c8b565b5162028ead828562004ce2565b511462028ece579062028ec284939262004c7b565b90939594919262028e60565b5091809493503862028e66565b949390929462028e66565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202900a5760208201516026811015620029ab57600e036200661f5762028f7483926202b43c565b6000935b62028f865750505050600090565b62028f92825162004c8b565b5151841015620175c7576000835b62028fba575b5062028fb3839462004c7b565b9362028f78565b9392918151851015620290015762028fd88462007497835162004c8b565b5162028fe5868462004ce2565b5114620170845762028ff983949562004c7b565b909262028fa0565b91929362028fa6565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202912e5760208201516026811015620029ab57600e036200661f576202909883926202b43c565b6000935b620290aa5750505050600090565b620290b6825162004c8b565b5151841015620175c7576000835b620290de575b50620290d7839462004c7b565b936202909c565b93929181518510156202912557620290fc8462007497835162004c8b565b5162029109868462004ce2565b511462017084576202911d83949562004c7b565b9092620290c4565b919293620290ca565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202926d5760208201516026811015620029ab57600e036200661f57620291bd83926202b43c565b6000925b620291cc5750505090565b620291d8825162004c8b565b51518310156201724457600080855b62029207575b5015620171bd5762029200849362004c7b565b92620291c1565b829593919495518110156202926257620292278662007497845162004c8b565b5162029234828562004ce2565b51146202925557906202924984939262004c7b565b909395949192620291e7565b50918094935038620291ed565b9493909294620291ed565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620293ac5760208201516026811015620029ab57600e036200661f57620292fc83926202b43c565b6000925b6202930b5750505090565b62029317825162004c8b565b51518310156201724457600080855b62029346575b5015620171bd576202933f849362004c7b565b9262029300565b82959391949551811015620293a157620293668662007497845162004c8b565b5162029373828562004ce2565b51146202939457906202938884939262004c7b565b90939594919262029326565b509180949350386202932c565b94939092946202932c565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202952f57600262029426825162004c8b565b515103620294d55760208201516026811015620029ab57600d036200661f576202945183926202b43c565b906000925b620294645750505050600090565b8151831015620175c757826202947c85948462004ce2565b516202948d62006865845162004c8b565b51111580620294ae575b6200516057620294a79062004c7b565b9262029456565b50620294bb818462004ce2565b51620294cc62016e27845162004c8b565b51101562029497565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620296b2576002620295a9825162004c8b565b515103620296585760208201516026811015620029ab57600d036200661f57620295d483926202b43c565b906000925b620295e75750505050600090565b8151831015620175c75782620295ff85948462004ce2565b516202961062006865845162004c8b565b5111158062029631575b62005160576202962a9062004c7b565b92620295d9565b506202963e818462004ce2565b516202964f62016e27845162004c8b565b5110156202961a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620298335760026202972c825162004c8b565b515103620297d95760208201516026811015620029ab57600d036200661f576202975783926202b43c565b60009182945b6202976a57505050905090565b81518510156201708c5762029780858362004ce2565b516202979162006865835162004c8b565b51118015620297b3575b6201708457620297ac849562004c7b565b946202975d565b50620297c0858362004ce2565b51620297d162016e27835162004c8b565b51106202979b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620299b4576002620298ad825162004c8b565b5151036202995a5760208201516026811015620029ab57600d036200661f57620298d883926202b43c565b60009182945b620298eb57505050905090565b81518510156201708c5762029901858362004ce2565b516202991262006865835162004c8b565b5111801562029934575b62017084576202992d849562004c7b565b94620298de565b5062029941858362004ce2565b516202995262016e27835162004c8b565b51106202991c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029b3757600262029a2e825162004c8b565b51510362029add5760208201516026811015620029ab57600e036200661f5762029a5983926202b43c565b906000925b62029a6c5750505050600090565b8151831015620175c7578262029a8485948462004ce2565b5162029a9562006865845162004c8b565b5111158062029ab6575b620051605762029aaf9062004c7b565b9262029a5e565b5062029ac3818462004ce2565b5162029ad462016e27845162004c8b565b51101562029a9f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029cba57600262029bb1825162004c8b565b51510362029c605760208201516026811015620029ab57600e036200661f5762029bdc83926202b43c565b906000925b62029bef5750505050600090565b8151831015620175c7578262029c0785948462004ce2565b5162029c1862006865845162004c8b565b5111158062029c39575b620051605762029c329062004c7b565b9262029be1565b5062029c46818462004ce2565b5162029c5762016e27845162004c8b565b51101562029c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029e3b57600262029d34825162004c8b565b51510362029de15760208201516026811015620029ab57600e036200661f5762029d5f83926202b43c565b60009182945b62029d7257505050905090565b81518510156201708c5762029d88858362004ce2565b5162029d9962006865835162004c8b565b5111801562029dbb575b620170845762029db4849562004c7b565b9462029d65565b5062029dc8858362004ce2565b5162029dd962016e27835162004c8b565b511062029da3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029fbc57600262029eb5825162004c8b565b51510362029f625760208201516026811015620029ab57600e036200661f5762029ee083926202b43c565b60009182945b62029ef357505050905090565b81518510156201708c5762029f09858362004ce2565b5162029f1a62006865835162004c8b565b5111801562029f3c575b620170845762029f35849562004c7b565b9462029ee6565b5062029f49858362004ce2565b5162029f5a62016e27835162004c8b565b511062029f24565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208082019081516026811015620029ab57600d1480156202a108575b6202a0ba575080516026811015620029ab57600f149081156202a0a3575b506202a05d5750600090565b6000805b606060408401510151805182101562017ac0576202a0828260e09262004ce2565b5101511562022e6d5760406202a09a60609262004c7b565b9150506202a061565b9050516026811015620029ab57600c14386202a051565b60009150815b816040850151015180518210156202a0fe576202a0e08260019262004ce2565b5115150362017ab9576202a0f660409162004c7b565b90506202a0c0565b5050505050600190565b5081516026811015620029ab57600e146202a033565b60208082019081516026811015620029ab57600d1480156202a20a575b6202a1c6575080516026811015620029ab57600f149081156202a1af575b506202a1655750600090565b6000805b606060408401510151805182101562017ac05760e06202a18c8360019362004ce2565b51015115151462022e6d5760406202a1a660609262004c7b565b9150506202a169565b9050516026811015620029ab57600c14386202a159565b60009150815b816040850151015180518210156202a0fe576202a1ec8260019262004ce2565b5115151462017ab9576202a20260409162004c7b565b90506202a1cc565b5081516026811015620029ab57600e146202a13b565b60208082019081516026811015620029ab57600d1480156202a31f575b6202a2d1575080516026811015620029ab57600f149081156202a2ba575b506202a2675750600090565b60005b60606040830151015180518210156200661f57819060e06202a290600193849362004ce2565b5101511515146202a2b4575060406202a2ab60609262004c7b565b9150506202a26a565b91505090565b9050516026811015620029ab57600c14386202a25b565b905060005b81604084015101518051821015620171bd5781906202a2f9600192839262004ce2565b511515146202a31857506202a31060409162004c7b565b90506202a2d6565b9250505090565b5081516026811015620029ab57600e146202a23d565b60208082019081516026811015620029ab57600d1480156202a426575b6202a3df575080516026811015620029ab57600f149081156202a3c8575b506202a37c5750600090565b60005b60606040830151015180518210156200661f576202a3a08260e09262004ce2565b510151156202a3c15760406202a3b860609262004c7b565b9150506202a37f565b5050600190565b9050516026811015620029ab57600c14386202a370565b905060005b81604084015101518051821015620171bd5781906202a407600192839262004ce2565b511515036202a31857506202a41e60409162004c7b565b90506202a3e4565b5081516026811015620029ab57600e146202a352565b60208092019160019283815151036202a55d576202a45c84915162004c8b565b5151036202a5045780820180516026811015620029ab57600f141590816202a4ec575b506200661f57600091835b6202a4985750505050600090565b60408101926060845101519384518210156201e977576202a4d36200686560a0866202a4c6868b9a62004ce2565b5101519351015162004c8b565b511462005160576202a4e59062004c7b565b926202a48a565b9050516026811015620029ab57600c1415386202a47f565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a6bf5781830180516026811015620029ab57600f141590816202a6a7575b50620171bd5783926000945b6202a600575050505050600090565b6040810160608082510151518710156202a69f57906000865b6202a635575b5050506202a62e849562004c7b565b946202a5f1565b6202a641855162004c8b565b51518110156202a69957856202a65c89858551015162004ce2565b5101516202a6708262007497885162004c8b565b51146202a68e57906202a68587939262004c7b565b9091926202a619565b505050505050905090565b6202a61f565b5050620173d1565b9050516026811015620029ab57600c1415386202a5e5565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a8845760026202a73a825162004c8b565b5151036202a82a5781830180516026811015620029ab57600f141590816202a812575b50620171bd57600092845b6202a777575050505050600090565b604081019360609485815101519586518310156202a80957828691826202a7a0838c9b62004ce2565b5101516202a7b362006865895162004c8b565b51111593846202a7d9575b50505050620178f8576202a7d29062004c7b565b936202a768565b6202a7e993945051015162004ce2565b5101516202a7fc62016e27855162004c8b565b511015848238806202a7be565b505050620173d1565b9050516026811015620029ab57600c1415386202a75d565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b602080920160019283825151036202aa0657836202a8fd835162004c8b565b5151036202a9a75780830180516026811015620029ab57600f141590816202a98f575b50620171bd57600092845b6202a93a575050505050600090565b6060604082015101519384518110156202a98857826202a95c82889762004ce2565b5101516202a96f62006865865162004c8b565b5110620178f8576202a9819062004c7b565b936202a92b565b50620173d1565b9050516026811015620029ab57600c1415386202a920565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b602080920160019283825151036202ab8057836202aa7e835162004c8b565b5151036202ab215780830180516026811015620029ab57600f141590816202ab09575b50620171bd57600092845b6202aabb575050505050600090565b6060604082015101519384518110156202a98857826202aadd82889762004ce2565b5101516202aaf062006865865162004c8b565b5111620178f8576202ab029062004c7b565b936202aaac565b9050516026811015620029ab57600c1415386202aaa1565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b906020019060019182815151036202aec957826202abf8825162004c8b565b5151036202ae69576020820180516026811015620029ab57600f141590816202ae51575b506200661f576000939291825b6202ac38575b50600093505050565b60408101946060808751015180518310156202ae48576202ac5e836202ac659262004ce2565b5162005616565b9060069182811015620029ab5715806202ae2f575b6202add5576202ac936202ac5e84838b51015162004ce2565b82811015620029ab578614806202ae15575b6202add5576202acbe6202ac5e84838b51015162004ce2565b82811015620029ab57600280911490816202adfa575b506202add5576202acee6202ac5e84838b51015162004ce2565b82811015620029ab57600380911490816202addf575b506202add5576202ad1e6202ac5e84838b51015162004ce2565b9782891015620029ab576004809914806202adbb575b6202adb057836202ad4d926202ac5e9251015162004ce2565b908110156202ad9b5784959650600580911490816202ad80575b5062005160576202ad789062004c7b565b94936202ac29565b90506202ad9262006865855162004c8b565b5114386202ad67565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b50886202adcd62006865885162004c8b565b51146202ad34565b5093955050505050565b90506202adf162006865875162004c8b565b5114386202ad04565b90506202ae0c62006865875162004c8b565b5114386202acd4565b50856202ae2762006865875162004c8b565b51146202aca5565b506202ae4062006865865162004c8b565b51156202ac7a565b5050506202ac2f565b9050516026811015620029ab57600c1415386202ac1c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202b017576020820180516026811015620029ab57600f141590816202afff575b506200661f5782916000935b6202af6b5750505050600090565b6040810160608082510151518610156201e97757906000855b6202afa0575b5050506202af99839462004c7b565b936202af5d565b6202afac855162004c8b565b51518110156202aff957826202afc788828551015162004ce2565b5101516202afdb8262007497885162004c8b565b511462023c4a57906202aff086939262004c7b565b9091926202af84565b6202af8a565b9050516026811015620029ab57600c1415386202af51565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208101516026811015620029ab576013036200750a5760005b604080830151015180518210156200661f57819060c06202b0b0600193849362004ce2565b5101511515146202a2b457506202b0c79062004c7b565b6202b08b565b6020918201805151600094936001939091600019016202b2365760026202b0f5845162004c8b565b5151036202b1dc57818101516026811015620029ab576013036202b1d2576000959493929190835b6202b12c575b50505050909150565b604080820190808251015180518a10156202b1c9578491826202b1518c809462004ce2565b5101516202b16462006865895162004c8b565b51111593846202b199575b505050506202b18f576202b1868495969762004c7b565b9695946202b11d565b5050509150915090565b6202b1a993945051015162004ce2565b5101516202b1bc62016e27855162004c8b565b511015828838806202b16f565b5050506202b123565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200160019182825151036202b3e157826202b2ae835162004c8b565b5151036202b3835760208101516026811015620029ab576013036200661f5782916000935b6202b2e15750505050600090565b6040808301908082510151518610156201e97757906000855b6202b316575b5050506202b30f839462004c7b565b936202b2d3565b6202b32687848451015162004ce2565b5151518110156202b37d576202b34e816202b34689868651015162004ce2565b515162004ce2565b516202b35f62006865865162004c8b565b511462023c4a57906202b37486939262004c7b565b9091926202b2fa565b6202b300565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b60209081810180516026811015620029ab57600d149081156202b557575b506202b47c5750506040516202b4708162002ac7565b60008152600036813790565b6040019160a0916202b49e6202b496848651015162004c8b565b515162004dfe565b93600092835b6202b4b3868451015162004c8b565b51518110156202b510576202b4cd81858551015162004ce2565b516202b4eb575b6202b4e36202b4b39162004c7b565b90506202b4a4565b936202b4e36202b506828762001b036202b4b3958c62004ce2565b959150506202b4d4565b50935050506202b5208162004dfe565b9060005b8181106202b533575090925050565b806202b5446202b551928762004ce2565b5162001b03828662004ce2565b6202b524565b9050516026811015620029ab57600e14386202b45a565b9161025981146202b8ea5761025a81146202b7fa5761025b81146202b70a5761025c81146202b5f45761025d81146202b5e85761025e81146202b5dc5761025f81146202b5d057610260146202b5c5575050600090565b62003261916202bda8565b5062003261916202bc2e565b5062003261916202bb1d565b5062003261916202b9da565b50602001906001825151036202b6b05760026202b612835162004c8b565b5151036202b65657602001908151516202b63162006865835162004c8b565b51111591826202b64057505090565b62016e2e91925062016e27905151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b7a05760016202b728835162004c8b565b5151036202b7465762006865602062016f3292015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b8905760016202b818835162004c8b565b5151036202b8365762006865602062016d0492015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b9805760016202b908835162004c8b565b5151036202b9265762006865602062016c0392015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919091602080930160019182825151036202bac357826202b9fc835162004c8b565b5151036202ba6957938293946000935b6202ba1b575050505050600090565b818101519384518110156202a988576202ba40620076f984620067ff848a9962004ce2565b6202ba5062006865865162004c8b565b5114620178f8576202ba629062004c7b565b936202ba0c565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202bbd4578293946000945b6202bb48575050505050600090565b8281018051518610156202a988576000855b6202bb75575b50506202bb6e849562004c7b565b946202bb39565b6202bb81845162004c8b565b51518110156202bbce576202bba1620076f986620067ff8a865162004ce2565b6202bbb28262007497875162004c8b565b511462023c4a57906202bbc6869262004c7b565b90916202bb5a565b6202bb60565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91909160208093019060019182815151036202bd4e57846202bc51825162004c8b565b5151920191825151036202bcd35782939460009283955b6202bc77575b50505050905090565b805180518710156202bccc57620076f983620067ff896202bc989462004ce2565b6202bca98762007497865162004c8b565b51036202bcc3576202bcbc859662004c7b565b956202bc68565b50505091505090565b506202bc6e565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202be78578293946000935b6202bdd0575050505090565b8281018051518510156202be7157856000918183905b6202be08575b50505015620173d1576202be01859462004c7b565b936202bdc4565b6202be14865162004c8b565b51518110156202be6b576202be34620076f988620067ff8b865162004ce2565b6202be458262007497895162004c8b565b51146202be5e576202be579062004c7b565b826202bde6565b505090508538806202bdec565b6202bdec565b5062005160565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916101cd81146202bf24576101ce81146202bf18576101cf81146202bf0c576101d0146202bf01575050600090565b62003261916202c532565b5062003261916202c310565b5062003261916202c11d565b5062003261919060200160019182825151036202c0c35760026202bf49835162004c8b565b5151036202c069576202bf5c816202c725565b156200661f576202bf6d906202c782565b9180939150518251036202bffe57600092845b6202bf8f575050505050600090565b80518410156201790057836202bfa786958362004ce2565b516202bfb862006865855162004c8b565b5114806202bfd8575b620178f8576202bfd19062004c7b565b936202bf80565b506202bfe5818562004ce2565b516202bff662016e27855162004c8b565b51106202bfc1565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c2b65760026202c13c835162004c8b565b5151036202c25c576202c14f816202c725565b156200661f576202c160906202c782565b9180939150518251036202c1f157600092845b6202c182575050505050600090565b80518410156201790057836202c19a86958362004ce2565b516202c1ab62006865855162004c8b565b5114806202c1cb575b620178f8576202c1c49062004c7b565b936202c173565b506202c1d8818562004ce2565b516202c1e962016e27855162004c8b565b51116202c1b4565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c4d85760036202c32f835162004c8b565b5151036202c47e576202c342816202c725565b156200661f576202c353906202c782565b9180939150518251036202c41357600092845b6202c375575050505050600090565b80518410156201790057836202c38d86958362004ce2565b516202c39e62006865855162004c8b565b5114806202c3ec575b806202c3c5575b620178f8576202c3be9062004c7b565b936202c366565b506202c3d2818562004ce2565b516202c3e36201d8a1855162004c8b565b5110156202c3ae565b506202c3f9818562004ce2565b516202c40a62016e27855162004c8b565b5111156202c3a7565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c6cb5760026202c551835162004c8b565b5151036202c671576202c564816202c725565b156200661f576202c575906202c782565b9180939150518251036202c60657600092845b6202c597575050505050600090565b80518410156201790057836202c5af86958362004ce2565b516202c5c062006865855162004c8b565b5114806202c5e0575b620178f8576202c5d99062004c7b565b936202c588565b506202c5ed818562004ce2565b516202c5fe62016e27855162004c8b565b51146202c5c9565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60200180516026811015620029ab576014149081156202c76a575b81156202c753575b506202409957600090565b9050516026811015620029ab57601e14386202c748565b809150516026811015620029ab57601514906202c740565b6202c78d816202c725565b156202c893576020810180516026811015620029ab576014146202c87e5780516026811015620029ab576015146202c84757516026811015620029ab57601e146202c81557506040516202c7e18162002ac7565b60008152604051916202c7f48362002ac7565b60008352604051916202c8078362002ac7565b600083526000368137929190565b604001906202c82960a08351015162004c8b565b51906202c84060a06200749e818651015162004caf565b5191929190565b50604001906202c85c60a08351015162004c8b565b51906202c84060a06202c873818651015162004cc0565b519451015162004cd1565b50604001906202c82960a08351015162004c8b565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202c9df576101b081146202c9d3576101b181146202c9c7576101b281146202c9bb576101b381146202c9af576101b481146202c9a3576101b581146202c997576101b6146202c98c575050600090565b62003261916202d428565b5062003261916202d283565b5062003261916202d11e565b5062003261916202cfb9565b5062003261916202ce54565b5062003261916202ccaf565b5062003261916202cb4a565b506200326191906020019060019182815151036202caf057826202ca04825162004c8b565b5151036202ca965760208201516026811015620029ab576011036200661f57600091835b6202ca365750505050600090565b604081019260a0936202ca4d858251015162004c8b565b51518210156201e97757816200749787966202ca6c9351015162004c8b565b516202ca7d62006865855162004c8b565b511062005160576202ca8f9062004c7b565b926202ca28565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cc5557826202cb69825162004c8b565b5151036202cbfb5760208201516026811015620029ab576011036200661f57600091835b6202cb9b5750505050600090565b604081019260a0936202cbb2858251015162004c8b565b51518210156201e97757816200749787966202cbd19351015162004c8b565b516202cbe262006865855162004c8b565b511162005160576202cbf49062004c7b565b926202cb8d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cdfa5760026202cccf825162004c8b565b5151036202cda05760208201516026811015620029ab576011036200661f57600091835b6202cd015750505050600090565b604081019260a0936202cd18858251015162004c8b565b51518210156201e9775781856202cd3982620074978a998651015162004c8b565b516202cd4a62006865885162004c8b565b51111592836202cd6f575b50505062005160576202cd689062004c7b565b926202ccf3565b5101516202cd839250620074979062004c8b565b516202cd9462016e27855162004c8b565b5110158138806202cd55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cf5f57826202ce73825162004c8b565b5151036202cf055760208201516026811015620029ab576011036200661f57600091835b6202cea55750505050600090565b604081019260a0936202cebc858251015162004c8b565b51518210156201e97757816200749787966202cedb9351015162004c8b565b516202ceec62006865855162004c8b565b511462005160576202cefe9062004c7b565b926202ce97565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d0c457826202cfd8825162004c8b565b5151036202d06a5760208201516026811015620029ab576012036200661f57600091835b6202d00a5750505050600090565b604081019260a0936202d021858251015162004c8b565b51518210156201e97757816200749787966202d0409351015162004c8b565b516202d05162006865855162004c8b565b511062005160576202d0639062004c7b565b926202cffc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d22957826202d13d825162004c8b565b5151036202d1cf5760208201516026811015620029ab576012036200661f57600091835b6202d16f5750505050600090565b604081019260a0936202d186858251015162004c8b565b51518210156201e97757816200749787966202d1a59351015162004c8b565b516202d1b662006865855162004c8b565b511162005160576202d1c89062004c7b565b926202d161565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d3ce5760026202d2a3825162004c8b565b5151036202d3745760208201516026811015620029ab576012036200661f57600091835b6202d2d55750505050600090565b604081019260a0936202d2ec858251015162004c8b565b51518210156201e9775781856202d30d82620074978a998651015162004c8b565b516202d31e62006865885162004c8b565b51111592836202d343575b50505062005160576202d33c9062004c7b565b926202d2c7565b5101516202d3579250620074979062004c8b565b516202d36862016e27855162004c8b565b5110158138806202d329565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d53357826202d447825162004c8b565b5151036202d4d95760208201516026811015620029ab576012036200661f57600091835b6202d4795750505050600090565b604081019260a0936202d490858251015162004c8b565b51518210156201e97757816200749787966202d4af9351015162004c8b565b516202d4c062006865855162004c8b565b511462005160576202d4d29062004c7b565b926202d46b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b156202d59557565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202d5e48162002f45565b6202d5f26200e20262033a39565b6202d5fd8162002f45565b600181036202d61b57506202d6156200e22e62033a39565b611faf55565b6202d6268162002f45565b600281036202d6365750611fb055565b6202d6418162002f45565b600381036202d6515750611fb155565b806202d65f60049262002f45565b146202d6685750565b611fb255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b825181101562010d665760e06202d731828562004ce2565b510151156202dae8576202d74a6202ac5e828562004ce2565b600680821015620029ab5760049182036202d895575060209060016003836202d774868962004ce2565b51015106036202d7915750506202d78b9062004c7b565b6202d719565b62004c7782846202d87a60636202d7c26202d7bb856202d7b2868e62004ce2565b51015162005091565b9362005091565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202d7fe62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d82782518093601396878501910162002d89565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002b1c565b5193849362461bcd60e51b8552840152602483019062002dae565b6202d8a56202ac5e848762004ce2565b818110156201e52d576001036202d9b5575060209060026003836202d8cb868962004ce2565b51015106036202d8e25750506202d78b9062004c7b565b62004c7782846202d87a605d6202d9036202d7bb856202d7b2868e62004ce2565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202d93f62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d96882518093601396878501910162002d89565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002b1c565b6202d9c56202ac5e848762004ce2565b908110156201588c576002036202dacc576020906003826202d9e8858862004ce2565b510151066202d9fe5750506202d78b9062004c7b565b62004c7782846202d87a6202da246202da1d846202d7b2858d62004ce2565b9262005091565b916202dabd60409384519586936202da4262004d4c8387016202d6dd565b0160008051602062033fdb83398151915281528151906202da6c826013948d868501910162002d89565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002b1c565b60405162461bcd60e51b815290819062004c779082016202d66e565b6202daf86202ac5e828562004ce2565b60069081811015620029ab576005036202dc135750602060016003826202db20858862004ce2565b51015106036202db3657506202d78b9062004c7b565b62004c77826202dbf660526202db576202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202db9262004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dbbc826013958c878501910162002d89565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002b1c565b5192839262461bcd60e51b84526004840152602483019062002dae565b6202dc236202ac5e838662004ce2565b9080821015620029ab5760039182036202dd3257506002602091826202dc4a858862004ce2565b51015106036202dc6057506202d78b9062004c7b565b62004c77826202dbf6605c6202dc816202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202dcbc62004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dce6826013958c878501910162002d89565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002b1c565b6202dd426202ac5e848762004ce2565b90811015620029ab576002036202ddee57602090816202dd63848762004ce2565b510151066202dd7857506202d78b9062004c7b565b62004c77826202dbf66202dd976202da1d856202d7b281988b62004ce2565b916202dddf60409384519788936202ddb562004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528151906202da6c826013948b868501910162002d89565b03601f19810186528562002b1c565b60405162461bcd60e51b81528062004c77600482016202d66e565b156202de1157565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202de9a57565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202def257565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202df5357565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202dfb457565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202e00d57565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202e06f57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202e0d257565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202e13857565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202e19a57565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202e1f257565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202e25157565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202e2aa57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202e30360c08351015162004c8b565b51916202e32560a06202e31a818451015162004c8b565b519251015162004caf565b51936202e33a845183511462000f4e62033906565b6202e34d845186511462000f4e62033906565b60005b84518110156202e3aa576202e366818462004ce2565b51906103e882101562004c99576202e3a49160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e350565b5092919360005b83518110156202e4d5576202e3c7818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e40760406000205462007dae868962004ce2565b906202e414868a62004ce2565b51918783101562004c9957846202e44193878f5116600052811b01845260406000205562000f4e62033a0a565b6202e44d848862004ce2565b518581101562004c99578290846202e466878c62004ce2565b5116600052811b0181526202e4866040600020546200686c868962004ce2565b9190926202e495868a62004ce2565b519687101562004c99576202e4cf9662000f55956202e4b5888d62004ce2565b5116600052811b01905260406000205562000f4e62033a6f565b6202e3b1565b5050620119826202e4e691620336a2565b90604051936202e4f68562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202e51d8562004c8b565b526000935b81518510156202e840576202e538858362004ce2565b51946202e546845162004dfe565b916000936202e556825162004dfe565b610b00528496855b87518110156202e5ff576202e585610ae0516202e57c838b62004ce2565b51168b6203348a565b15806202e5c7575b6202e5a4575b6202e59e9062004c7b565b6202e55e565b956202e5be6202e59e91610ae0516200a4958a8c62004ce2565b9690506202e593565b506103e88a101562004c9957610ae0516202e5e3828a62004ce2565b511660005260038a811b0160205260406000205415156202e58d565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202e699578762004c9957610ae0516202e63d828c62004ce2565b51166000528b602052604060002054156202e664575b6202e65e9062004c7b565b6202e61d565b976202e6906202e65e918b6202e67f8c610ae0519262004ce2565b511662001b0382610b005162004ce2565b9890506202e653565b5094959193965098509690959680610b405262004c995760040180610b805254956202e6ca620080c0868962006258565b610b205260009788610b60525b610b405162004c9957610b6051888110156202e775576202e7066202e71c916000610b4052610b805162004efa565b610ae05191549060031b1c16610b005162033539565b156202e73b575b6202e731610b605162004c7b565b610b60526202e6d7565b976202e76e906202e753610b6051610b805162004efa565b610ae05191549060031b1c1662001b0382610b205162004ce2565b976202e723565b5095939096509690969391936000915b8383106202e80f5750505050610b405162004c9957610b2051516001600160401b03811162002a23576202e7bd81610b805162005036565b6020610b205101610b805160005260206000206000610ae051905b8481106202e7f85750505050506202e7f09062004c7b565b93926202e522565b60019060208386511695019481850155016202e7d8565b620082566202e83991610ae0516202e828868662004ce2565b511662001b0382610b205162004ce2565b916202e785565b5050509050565b60408101906202e85c60c08351015162004c8b565b51916202e87360a06202e31a818451015162004c8b565b51936202e888845183511462000f4e62033906565b6202e89b845186511462000f4e62033906565b60005b84518110156202e8f8576202e8b4818462004ce2565b51906103e882101562004c99576202e8f29160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e89e565b5092919360005b83518110156202ea09576202e915818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e95560406000205462007dae868962004ce2565b906202e962868a62004ce2565b51918783101562004c9957846202e98f93878f5116600052811b01845260406000205562000f4e62033a0a565b6202e99b848862004ce2565b518581101562004c99578290846202e9b4878c62004ce2565b5116600052811b0181526202e9d46040600020546200686c868962004ce2565b9190926202e9e3868a62004ce2565b519687101562004c99576202ea039662000f55956202e4b5888d62004ce2565b6202e8ff565b5050620119826202ea1a91620336a2565b90604051936202ea2a8562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202ea518562004c8b565b526000935b81518510156202e840576202ea6c858362004ce2565b51946202ea7a845162004dfe565b916000936202ea8a825162004dfe565b610b00528496855b87518110156202eb2a576202eab0610ae0516202e57c838b62004ce2565b15806202eaf2575b6202eacf575b6202eac99062004c7b565b6202ea92565b956202eae96202eac991610ae0516200a4958a8c62004ce2565b9690506202eabe565b506103e88a101562004c9957610ae0516202eb0e828a62004ce2565b511660005260038a811b0160205260406000205415156202eab8565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202ebb3578762004c9957610ae0516202eb68828c62004ce2565b51166000528b602052604060002054156202eb8f575b6202eb899062004c7b565b6202eb48565b976202ebaa6202eb89918b6202e67f8c610ae0519262004ce2565b9890506202eb7e565b5094959193965098509690959680610b805262004c995760040180610b605254956202ebe4620080c0868962006258565b610b205260009788610b40525b610b805162004c9957610b4051888110156202ec5e576202e7066202ec20916000610b8052610b605162004efa565b156202ec3f575b6202ec35610b405162004c7b565b610b40526202ebf1565b976202ec57906202e753610b4051610b605162004efa565b976202ec27565b5095939096509690969391936000915b8383106202ecf85750505050610b805162004c9957610b2051516001600160401b03811162002a23576202eca681610b605162005036565b6020610b205101610b605160005260206000206000610ae051905b8481106202ece15750505050506202ecd99062004c7b565b93926202ea56565b60019060208386511695019481850155016202ecc1565b620082566202ed1191610ae0516202e828868662004ce2565b916202ec6e565b90604082016202ed3260a06202e31a818451015162004c8b565b51908051825103620089ef5760005b81518110156202ed9c576202ed57818362004ce2565b51906103e882101562004c9957611fbb6202ed969260018060a01b0388511660005260031b0160205262000f5560406000205462007d41838762004ce2565b6202ed41565b5092909260005b81518110156202ee3e576202edb9818362004ce2565b51906103e88083101562004c995760018060a01b039081865116600052611fbb60039481602091871b0181526202edfb60406000205462007dae878d62004ce2565b9290936202ee0a878a62004ce2565b519081101562004c99576202ee389762000f55968b51166000521b01905260406000205562000f4e62033a0a565b6202eda3565b506202ee4c919350620336a2565b604051926202ee5b8462002b00565b60018452602036818601376001600160a01b03610b808190529051166202ee828462004c8b565b52604051906202ee928262002ac7565b6000825260003681376000935b81518510156202e840576202eeb5858362004ce2565b51946202eec3845162004dfe565b916000936202eed3825162004dfe565b610b20528496855b87518110156202ef7e576202ef02610b80516202eef9838b62004ce2565b51168b620334e1565b15806202ef44575b6202ef21575b6202ef1b9062004c7b565b6202eedb565b956202ef3b6202ef1b91610b80516200a4958a8c62004ce2565b9690506202ef10565b506103e88a101562004c9957610b80516202ef60828a62004ce2565b5116600052611fbb8a60031b0160205260406000205415156202ef0a565b509793929096949195976000986103e88610159560031b98611fbb8a019a5b89518110156202f008578762004c9957610b80516202efbd828c62004ce2565b51166000528b602052604060002054156202efe4575b6202efde9062004c7b565b6202ef9d565b976202efff6202efde918b6202e8288c610b80519262004ce2565b9890506202efd3565b5094959193965098509690959680610b405262004c9957611fbc0180610b005254956202f03a620080c0868962006258565b610b605260009788610ae0525b610b405162004c9957610ae051888110156202f0e5576202f0766202f08c916000610b4052610b005162004efa565b610b805191549060031b1c16610b205162033539565b156202f0ab575b6202f0a1610ae05162004c7b565b610ae0526202f047565b976202f0de906202f0c3610ae051610b005162004efa565b610b805191549060031b1c1662001b0382610b605162004ce2565b976202f093565b5095939096509690969391936000915b8383106202f17f5750505050610b405162004c9957610b6051516001600160401b03811162002a23576202f12d81610b005162005036565b6020610b605101610b005160005260206000206000610b8051905b8481106202f1685750505050506202f1609062004c7b565b93926202ee9f565b60019060208386511695019481850155016202f148565b620082566202f1a991610b80516202f198868662004ce2565b511662001b0382610b605162004ce2565b916202f0f5565b9060408201916202f1cb60a0620077f3818651015162004c8b565b51928051845103620089ef5760005b81518110156202f234576202f1f0818362004ce2565b51906103e882101562004c99576202f22e9160018060a01b03855116600052600390811b0160205262000f5560406000205462007d41838962004ce2565b6202f1da565b5060005b81518110156202f2d2576202f24e818362004ce2565b51906103e8918281101562004c995760018060a01b03908186511660005260039081602091811b0181526202f28e60406000205462007dae868c62004ce2565b9190926202f29d868962004ce2565b519687101562004c99576202f2cc9662000f55958a5116600052811b01905260406000205562000f4e62033a0a565b6202f238565b506202f2e0919350620336a2565b604051926202f2ef8462002b00565b60018452602036818601376001600160a01b03610b208190529051166202f3168462004c8b565b52604051906202f3268262002ac7565b6000825260003681376000935b81518510156202e840576202f349858362004ce2565b51946202f357845162004dfe565b916000936202f367825162004dfe565b610b00528496855b87518110156202f407576202f38d610b20516202e57c838b62004ce2565b15806202f3cf575b6202f3ac575b6202f3a69062004c7b565b6202f36f565b956202f3c66202f3a691610b20516200a4958a8c62004ce2565b9690506202f39b565b506103e88a101562004c9957610b20516202f3eb828a62004ce2565b511660005260038a811b0160205260406000205415156202f395565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202f490578762004c9957610b20516202f445828c62004ce2565b51166000528b602052604060002054156202f46c575b6202f4669062004c7b565b6202f425565b976202f4876202f466918b6202e67f8c610b20519262004ce2565b9890506202f45b565b5094959193965098509690959680610b605262004c995760040180610ae05254956202f4c1620080c0868962006258565b610b805260009788610b40525b610b605162004c9957610b4051888110156202f56c576202f4fd6202f513916000610b6052610ae05162004efa565b610b205191549060031b1c16610b005162033539565b156202f532575b6202f528610b405162004c7b565b610b40526202f4ce565b976202f565906202f54a610b4051610ae05162004efa565b610b205191549060031b1c1662001b0382610b805162004ce2565b976202f51a565b5095939096509690969391936000915b8383106202f6065750505050610b605162004c9957610b8051516001600160401b03811162002a23576202f5b481610ae05162005036565b6020610b805101610ae05160005260206000206000610b2051905b8481106202f5ef5750505050506202f5e79062004c7b565b93926202f333565b60019060208386511695019481850155016202f5cf565b620082566202f63091610b20516202f61f868662004ce2565b511662001b0382610b805162004ce2565b916202f57c565b156202f63f57565b60405162461bcd60e51b815260206004820152601d60248201527f54686520726566756e6420616d6f756e74206973206f766572666c6f770000006044820152606490fd5b156202f68c57565b60405162461bcd60e51b815260206004820152602360248201527f54686520746f74616c20726566756e6420616d6f756e74206973206f766572666044820152626c6f7760e81b6064820152608490fd5b156202f6e557565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20776974686472617761626c6520616d6f756e74206973604482015268206f766572666c6f7760b81b6064820152608490fd5b611f44805482101562004c99576000526007602060002091020190600090565b815180519192916001600160401b03811162002a23576202f77e818562005036565b6020809201846000528260002060005b8381106202f7f5575050505060c08260069262002bc395940151600185015560408101516002850155606081015160038501556202f7d6608082015115156004860162005795565b6202f7e960a082015160058601620056c2565b01511515910162005795565b825182820155918401916001016202f78e565b611f448054600160401b81101562002a23576202f82b916001820190556202f73c565b91909162005cff5762002bc3916202f75c565b611fb4908154600160401b81101562002a23576001810180845581101562004c995762002bc392600052602060002001620056c2565b62006a286202f883916200754d565b613f78805480600052613f76908160205260ff60096040600020015460081c1662032a4a57613f73600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202f8e460406000206200369d565b90600080611f4a54905b81811062032a03575b505015620329e7575b60005b60208301519081518110156202f93b5762000f55620077196201170b620076f96020620067ff866202f9359862004ce2565b6202f903565b505060005b602083015180518210156202f98857620076f96020620067ff846202f9659462004ce2565b90606482101562004c99576202f982914290611f4b015562004c7b565b6202f940565b50506000905b602083015180518310156200b13957826202f9a99162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036202fbba57604001906202f9ea60c08351015162004c8b565b51936202fa0160a0620077f3818651015162004c8b565b51916202fa1286518551146202e0ca565b6202fa2186518451146202e130565b60005b86518110156202fb48576202fa3a818662004ce2565b516103e881101562004c9957600160ff60076202fa609360031b0154161515146202e192565b6202fa6c818562004ce2565b516202fa79828762004ce2565b51906103e882101562004c99576202fa9b906006809360031b01549062006049565b6202faa7848962004ce2565b51926103e884101562004c99576202fac49360031b01556202e1ea565b6202fad0818562004ce2565b516202fadd828762004ce2565b51906103e882101562004c99576202fb06916003906001600160a01b03620118fd868d62004ce2565b91906202fb14828862004ce2565b51906103e882101562004c99576202fb429362000f55926003906001600160a01b0362011951878f62004ce2565b6202fa24565b5094915091620119826202fb5c91620336a2565b93604051926202fb6c8462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6202fb97938762004ce2565b6202fb78565b50945092602092506202fbb1915062004c7b565b9190506202f98e565b6020819492939401516026811015620029ab576002036202fd4e576040018051928351906202fbf262007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b86518110156202fd38576202fc2b818862004ce2565b516103e881101562004c995760ff60076202fc4d9260031b015416156202e2a2565b6202fc59818862004ce2565b516103e881101562004c995760031b600701805460ff191660011790556202fc82818562004ce2565b516202fc8f828962004ce2565b51906103e882101562004c995760056202fcad9260031b01620056c2565b6202fcb9818662004ce2565b516202fcc6828962004ce2565b516103e881101562004c995760031b600101556202fce5818762004ce2565b516202fcf2828962004ce2565b516103e881101562004c995760031b600201556202fd11818862004ce2565b51906103e882101562004c9957600060066202fd329360031b015562004c7b565b6202fc15565b509591509350602092506202fbb1915062004c7b565b929160208401516026811015620029ab5760030362030362576202fd7a60c06040860151015162004c8b565b5160a0916202fda36202fd94846040890151015162004c8b565b51936040880151015162004caf565b51936202fdb8835185511462000f4e62033906565b6202fdcb835186511462000f4e62033906565b60005b83518110156202fe27576202fde4818662004ce2565b51906103e882101562004c995760036202fe219260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b6202fdce565b509095919560005b87518110156202ff52576202fe45818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526202fe7d60406000205462007dae838962004ce2565b906202fe8a838862004ce2565b51916103e883101562004c995760036202fec19360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b6202fecd818662004ce2565b516103e881101562004c99576003906001600160a01b036202fef0848c62004ce2565b5116600052811b016020526202ff116040600020546200686c838962004ce2565b91906202ff1f828862004ce2565b51906103e882101562004c99576202ff4c93600362000f55938d62007e678760018060a01b039262004ce2565b6202fe2f565b50926202ff6a919294506200c6fd90969596620336a2565b92604051906202ff7a8262002b00565b6001825260203681840137516001600160a01b03166202ff9a8262004c8b565b526000945b80518610156203034e576202ffb5868262004ce2565b51610960526202ffc6855162004dfe565b966000946202ffd6845162004dfe565b610a005260009460005b8851811015620300a6578a89620300106001600160a01b0362030004858462004ce2565b5116610960516203348a565b158062030060575b62030031575b50506203002b9062004c7b565b6202ffe0565b98620300559162001b0382859c62007f8f6203002b9760018060a01b039262004ce2565b9790508a896203001e565b5050506103e861096051101562004c99576001600160a01b0362030085828b62004ce2565b5116600052600361096051811b016020528a89604060002054151562030018565b50909895979498969291939660005b885181101562030149576103e861096051101562004c99576001600160a01b03620300e1828b62004ce2565b5116600052600361096051811b016020526040600020541562030110575b6203010a9062004c7b565b620300b5565b996203010a9062030140906001600160a01b036203012f8e8d62004ce2565b511662001b0382610a005162004ce2565b9a9050620300ff565b50985096959291909396610960516103e8811015806109805262004c995760031b60040154986203017f620080c0898c62006258565b610a40526000610ac0526000610aa0525b6109805162004c9957610aa0518a8110156203025957620301c5620301e29160006109805260046109605160031b0162004efa565b9054610a005160039290921b1c6001600160a01b03169062033539565b1562030201575b620301f7610aa05162004c7b565b610aa05262030190565b6000610980526203021f610aa05160046109605160031b0162004efa565b60018060a01b0391549060031b1c1662030240610ac051610a405162004ce2565b526203024f610ac05162004c7b565b610ac052620301e9565b50979294959093985095909560005b82811062030302575050506109805162004c9957610a4051516001600160401b03811162002a2357620302a58160046109605160031b0162005036565b6020610a40510160046109605160031b01600052602060002060005b838110620302e45750505050620302d89062004c7b565b9492959091956202ff9f565b82516001600160a01b031681830155602090920191600101620302c1565b62030348906001600160a01b036203031b828562004ce2565b51166203032f610ac051610a405162004ce2565b526203033e610ac05162004c7b565b610ac05262004c7b565b62030268565b5050936202fbb19193506020925062004c7b565b909260208101516026811015620029ab576004036203059a5760400160c093620303946200cb23868451015162004c8b565b5190620303ab60a0620077f3818651015162004c8b565b5193620303c0875184511462000f4e62033906565b620303d3875185511462000f4e62033906565b620303e6875186511462000f4e62033906565b60005b87518110156203042e57620303ff818662004ce2565b51906103e882101562004c995762030428916003906001600160a01b0362011d90848d62004ce2565b620303e9565b509095919593929360005b835181101562030557576203044f818762004ce2565b516103e881101562004c99576003906001600160a01b0362030472848862004ce2565b5116600052811b016020526203049360406000205462007dae838862004ce2565b90620304a0838962004ce2565b51916103e883101562004c9957620304c9926003906001600160a01b0362011e52878b62004ce2565b620304d5818762004ce2565b516103e881101562004c99576003906001600160a01b03620304f8848c62004ce2565b5116600052811b01602052620305196040600020546200686c838862004ce2565b91905062030528818862004ce2565b51916103e883101562004c995762030551926003906001600160a01b0362011ef5858e62004ce2565b62030439565b5093620305719192969350620084d162007e9f91620336a2565b9260005b83518110156202fb9d578062000f55620079ba62030594938762004ce2565b62030575565b60208101516026811015620029ab57600503620305c4576020919262000f556202fbb1926202f1b0565b60208101516026811015620029ab576006036203075a57604001620305ee60c08251015162004c8b565b51936203060560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620306635762030634818562004ce2565b51906103e882101562004c99576203065d916003906001600160a01b036201255d848c62004ce2565b6203061e565b509060005b865181101562030704576203067e818562004ce2565b516103e881101562004c99576003906001600160a01b03620306a1848b62004ce2565b5116600052811b01602052620306c260406000205462007dae838862004ce2565b9190620306d0828762004ce2565b51906103e882101562004c9957620306fe9362000f55926003906001600160a01b0362011e52878f62004ce2565b62030668565b509491620307199193506201198290620336a2565b9160405194620307298662002ac7565b60008652600036813760005b83518110156202fb9d578062000f55620079ba62030754938762004ce2565b62030735565b60208101516026811015620029ab57600703620307e057604001926203078560c08551015162004c8b565b51916203079760a08651015162004c8b565b5194515191620307af845187511462000f4e62033906565b60005b84518110156202fb9d57620307da9062000f556001600160a01b0380620126fb848a62004ce2565b620307b2565b60208194939401516026811015620029ab576008036203084e5760c060406203080d920151015162004c8b565b519160005b83518110156203083c5762030836906001600160a01b0380620127e3838862004ce2565b62030812565b509260209192506202fbb19062004c7b565b60208101516026811015620029ab57600903620308a75760c0604062030878920151015162004c8b565b519160005b83518110156203083c57620308a1906001600160a01b038062012877838862004ce2565b6203087d565b60208101516026811015620029ab57600a036203092d5760400190620308d860a06200dacd60c08551015162004c8b565b5192620308ed835185511462000f4e62033906565b60005b83518110156203091a5762030914906001600160a01b038062012913838862004ce2565b620308f0565b50936202fbb19193506020925062004c7b565b6020819493929401516026811015620029ab57600b03620309b857604001926203095c60c08551015162004c8b565b519351519162030974855184511462000f4e62033906565b60005b8551811015620309a5576203099f9062000f556001600160a01b0380620129c6848b62004ce2565b62030977565b50935091602091506202fbb19062004c7b565b90919260208201516026811015620029ab57600c0362030aeb5760606040830151015192620309e7846202d715565b60005b84518110156203091a5760e062030a0a8260606040880151015162004ce2565b5101511562030a825762030a2b620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030a4e60059162005c89565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c89565b620309ea565b62030a9a620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030abd60059162005c49565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c49565b92919060208101516026811015620029ab57600d0362030b545760400192602062030b1b60a08651015162004c8b565b51945101519162030b3085518451146202de09565b60005b8551811015620309a5578062012ba762030b4e928662004ce2565b62030b33565b60208194929401516026811015620029ab57600e0362030bbd5760400190602062030b8460a08451015162004c8b565b51925101519362030b9983518651146202de09565b60005b8351811015620309a5578062012cbb62030bb7928862004ce2565b62030b9c565b9060208294939401516026811015620029ab57600f0362030cf1576060604083015101519262030bed846202d715565b60005b84518110156203091a5760e062030c108260606040880151015162004ce2565b5101511562030c885762030c31620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030c5460059162005c89565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c89565b62030bf0565b62030ca0620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030cc360059162005c49565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c49565b9060208194939401516026811015620029ab5760100362030d6257604001519062030d2560a0608084015193015162004c8b565b519362030d3a835186511462000f4e62033906565b60005b8351811015620309a5578062000f55620096a562030d5c938762004ce2565b62030d3d565b60208194929401516026811015620029ab5760110362030f7b576040019062030d9660a06200dacd60c08551015162004c8b565b519362030da783518651146202d58d565b60005b835181101562030dd85762030dd29062000f556001600160a01b038062012f3e848962004ce2565b62030daa565b5093509062030de79062033586565b90611f46549362030dfe620080c084518762006258565b9060009260005b87811062030f60575060005b855181101562030eb8576000805b89811062030e69575b501562030e41575b62030e3b9062004c7b565b62030e11565b9362030e3b9062030e60906001600160a01b036200e3f8888a62004ce2565b94905062030e30565b62030e748162004e52565b90546001600160a01b0360039290921b1c81169062030e94858b62004ce2565b51161462030ead5762030ea79062004c7b565b62030e1f565b505060013862030e28565b50955093925062030ec98262004dfe565b8051906001600160401b03821162002a235760209062030ee98362004f93565b01611f46600052602060002060005b83811062030f42575050505060005b82811062030f1f575050506202fbb160209162004c7b565b62030f3c9062000f556001600160a01b0362001a37838662004ce2565b62030f07565b82516001600160a01b03168183015560209092019160010162030ef8565b936200e54462030f75916200e5268762004e52565b62030e05565b60208194929401516026811015620029ab576012036203119e576040019062030faf60a06200dacd60c08551015162004c8b565b519362030fc083518651146202d58d565b60005b835181101562030ff15762030feb9062000f556001600160a01b0380620131a0848962004ce2565b62030fc3565b5093509190620310019062033586565b611f4654620310108162004dfe565b906000926000915b808310620310c5575050506203102e8262004dfe565b8051906001600160401b03821162002a23576020906203104e8362004f93565b01611f46600052602060002060005b838110620310a7575050505060005b82811062031084575050506202fbb160209162004c7b565b620310a19062000f556001600160a01b0362001a37838662004ce2565b6203106c565b82516001600160a01b0316818301556020909201916001016203105d565b91956000959193959760005b85518110156203118f57620310e68962004e52565b90546001600160a01b0360039290921b1c81169062031106838962004ce2565b5116146203111f57620311199062004c7b565b620310d1565b509750956001959391955b806203115e575b156203114957620311429062004c7b565b9162031018565b936200e54462031142916200e5268762004e52565b506203116a8162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562031131565b5097969096959391956203112a565b60208101516026811015620029ab57601303620311f75760408091015101519260005b8451811015620311e6578062000f5562009c19620311e0938862004ce2565b620311c1565b509250906202fbb160209162004c7b565b60208101516026811015620029ab57601403620313a457604001906203122260c08351015162004c8b565b51936203123960a0620077f3818651015162004c8b565b51916203124a86518551146202e0ca565b6203125986518451146202e130565b60005b86518110156203134f5762031272818562004ce2565b516203127f828762004ce2565b51906103e882101562004c995760066203129f9260031b01549062006049565b90620312ac838862004ce2565b51916103e883101562004c99576006620312cb9360031b01556202e1ea565b620312d7818562004ce2565b51620312e4828762004ce2565b51906103e882101562004c99576203130d916003906001600160a01b03620118fd868d62004ce2565b91906203131b828862004ce2565b51906103e882101562004c9957620313499362000f55926003906001600160a01b0362011951878f62004ce2565b6203125c565b5094915091620119826203136391620336a2565b9360405192620313738462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6203139e938762004ce2565b6203137f565b929060208401516026811015620029ab5760150362031966576040840190620313d260c08351015162004c8b565b5190620313e960a0620077f3818651015162004c8b565b5193620313fe835185511462000f4e62033906565b62031411835186511462000f4e62033906565b60005b83518110156203146d576203142a818662004ce2565b51906103e882101562004c99576003620314679260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62031414565b509095919560005b875181101562031598576203148b818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620314c360406000205462007dae838962004ce2565b90620314d0838862004ce2565b51916103e883101562004c99576003620315079360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62031513818662004ce2565b516103e881101562004c99576003906001600160a01b0362031536848c62004ce2565b5116600052811b01602052620315576040600020546200686c838962004ce2565b919062031565828862004ce2565b51906103e882101562004c99576203159293600362000f55938d62007e678760018060a01b039262004ce2565b62031475565b5092620315b0919294506200c6fd90969596620336a2565b9260405190620315c08262002b00565b6001825260203681840137516001600160a01b0316620315e08262004c8b565b526000945b80518610156203034e57620315fb868262004ce2565b51610900526203160c855162004dfe565b966000946203161c845162004dfe565b610a205260009460005b8851811015620316ec578a89620316566001600160a01b036203164a858462004ce2565b5116610900516203348a565b1580620316a6575b62031677575b5050620316719062004c7b565b62031626565b986203169b9162001b0382859c62007f8f620316719760018060a01b039262004ce2565b9790508a8962031664565b5050506103e861090051101562004c99576001600160a01b03620316cb828b62004ce2565b5116600052600361090051811b016020528a8960406000205415156203165e565b50909895979498969291939660005b88518110156203177e576103e861090051101562004c99576001600160a01b0362031727828b62004ce2565b5116600052600361090051811b016020526040600020541562031756575b620317509062004c7b565b620316fb565b99620317509062031775906001600160a01b036201228f8e8d62004ce2565b9a905062031745565b50985096959291909396610900516103e8811015806109205262004c995760031b6004015498620317b4620080c0898c62006258565b6108c0526000610940526000610a60525b6109205162004c9957610a60518a811015620318715762012325620317fa9160006109205260046109005160031b0162004efa565b1562031819575b6203180f610a605162004c7b565b610a6052620317c5565b60006109205262031837610a605160046109005160031b0162004efa565b60018060a01b0391549060031b1c1662031858610940516108c05162004ce2565b52620318676109405162004c7b565b6109405262031801565b50979294959093985095909560005b8281106203191a575050506109205162004c99576108c051516001600160401b03811162002a2357620318bd8160046109005160031b0162005036565b60206108c0510160046109005160031b01600052602060002060005b838110620318fc5750505050620318f09062004c7b565b949295909195620315e5565b82516001600160a01b031681830155602090920191600101620318d9565b62031960906001600160a01b0362031933828562004ce2565b511662031947610940516108c05162004ce2565b52620319566109405162004c7b565b6109405262004c7b565b62031880565b909260208101516026811015620029ab57601603620319c45760c0604062031992920151015162004c8b565b519260005b8451811015620311e657620319be9062000f556001600160a01b0362009e60838962004ce2565b62031997565b60208101516026811015620029ab5760170362031a215760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab5760180362031a8b5760c0604062031a4b920151015162004c8b565b51611fb6805460ff191660011790559260005b8451811015620311e65762031a859062000f556001600160a01b0362009f2c838962004ce2565b62031a5e565b60208193929301516026811015620029ab5760190362031c005760008091604082910160a08082510151805162031bc7575b5050519060e08201519162031ae16200686560c060018060a01b0393015162004c8b565b511690602083519301915af13d1562031bbe573d9062031b018262002edc565b9162031b11604051938462002b1c565b82523d6000602084013e5b1562031b3057506202fbb160209162004c7b565b62004c779062031b9d604051916000805160206203401b833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162031b8c816059946020868601910162002d89565b810103603981018452018262002b1c565b60405162461bcd60e51b815260206004820152918291602483019062002dae565b60609062031b1c565b62031bd29062004c8b565b515162031be1575b8062031abd565b819250620068659062031bf79251015162004c8b565b51903862031bda565b60208101516026811015620029ab57601a0362031c825760a0604062031c2a920151015162004c8b565b5162031c3a60038251146202d58d565b62031c458162004c8b565b519162031c56620138088362004caf565b51916200f6a9576020926202fbb1926001036200a16d576200a14d906200a140611fb191825462006049565b60208101516026811015620029ab57601b036203206d5750919062031cb2611faf54620061966200a1e362033793565b505062031cbe62033857565b506000805b6103e8811062032021575b505062031cda62006172565b9062031ce9613f745462004dfe565b906000946000905b6103e882101562032015578160031b9260ff6007850154161562031dfd5760009660028501541562031de4576000975b62004c9957600485015488101562031de45762031ddd62031dd6899a62031d5062031d879b60048a0162004efa565b60018060a01b0391549060031b1c16806000526003890160205262031d7b8b60406000205462005f19565b9c9062000f4e62033857565b62031dca62031dae62031da260009e60028d01549062005f19565b919062000f4e62033857565b82600052611f476020526200a140604060002091825462006049565b62001b03828b62004ce2565b9962004c7b565b9762031d21565b9290935062031df591965062004c7b565b909462031cf1565b95969392509350505b62031e118262004dfe565b9160009160005b82811062031f7f57505050611f48549162031e38620080c0848462006258565b926000906000905b80821062031f6257505060005b83811062031ecc5750508251929150506001600160401b03821162002a235760209062031e7a8362004f58565b01611f48600052602060002060005b83811062031eae57505050506202fbb16020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162031e89565b6000805b83811062031f1a575b501562031ef2575b62031eec9062004c7b565b62031e4d565b9062031eec9062031f11906001600160a01b0362008248858762004ce2565b91905062031ee1565b6001600160a01b038062031f2f858862004ce2565b51169062031f3e838a62004ce2565b51161462031f575762031f519062004c7b565b62031ed0565b505060013862031ed9565b90916200825662031f789162009b6f8562004e36565b9062031e40565b6000805b85811062031fcd575b501562031fa5575b62031f9f9062004c7b565b62031e18565b9262031f9f9062031fc4906001600160a01b0362008248878662004ce2565b93905062031f94565b6001600160a01b038062031fe2858762004ce2565b51169062031ff1838a62004ce2565b5116146203200a57620320049062004c7b565b62031f83565b505060013862031f8c565b93505092939062031e06565b8060039594951b9060ff6007830154161562032063576200a622620074b962000f55946200a6166203205a9560026200a60c8762005deb565b93929362031cc3565b5093929362031cce565b60208101516026811015620029ab57601c03620320ca5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d03620320f0575b506202fbb160209162004c7b565b919060208301516026811015620029ab57601e03620322d157604083019060a09362032120858451015162004c8b565b515162032131868551015162004caf565b5151036200aeb05762032148858451015162004c8b565b515162032159868551015162004cc0565b5151036200ae34576203217462007a1a868551015162004c8b565b519362032181826202f1b0565b60009660005b8751811015620321ef57620321b26200acf0620321a5838962004ce2565b51620074a9848b62004ce2565b80620321cb575b50620321c59062004c7b565b62032187565b90620321e0620321e89a620321c59362006049565b9a906202f684565b90620321b9565b5096929450945091508062032211575b50506202fbb16020915b9150620320e2565b6203223d60018060a01b0391828451166000526200ad84611f4591826020526040600020549062006049565b82845116600052602052604060002055600080611f4654905b81811062032290575b505091602093916202fbb193156203227b575b505091620321ff565b620322889151166200662e565b388062032272565b836203229c8262004e52565b90549060031b1c168486511614620322bf57620322b99062004c7b565b62032256565b50600191508290506202fbb16203225f565b909160208101516026811015620029ab57601f036203230b57602091620323056200af6460406202fbb19401515162004c8b565b62032209565b60208101516026811015620029ab5760200362032331575b506202fbb160209162032209565b60208101516026811015620029ab57602180910362032352575b5062032323565b602082015160268110156200b0e1576022036203238e5750506202fbb1602091611fb660ff1981541690556203238762005023565b916203234b565b602082015160268110156200b0e157602303620323b5575b50506202fbb160209162032387565b602082015160268110156200b0e157602414620323a657602082015160268110156200b0e157602514620323a657602082959394920151906026821015620329d357506015036201069a5760408401906203241560c08351015162004c8b565b51906203242c60a0620077f3818651015162004c8b565b519362032441835185511462000f4e62033906565b62032454835186511462000f4e62033906565b60005b8351811015620324b0576203246d818662004ce2565b51906103e882101562004c99576003620324aa9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62032457565b509095919560005b8751811015620325db57620324ce818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526203250660406000205462007dae838962004ce2565b9062032513838862004ce2565b51916103e883101562004c995760036203254a9360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62032556818662004ce2565b516103e881101562004c99576003906001600160a01b0362032579848c62004ce2565b5116600052811b016020526203259a6040600020546200686c838962004ce2565b9190620325a8828862004ce2565b51906103e882101562004c9957620325d593600362000f55938d62007e678760018060a01b039262004ce2565b620324b8565b5092620325f3919294506200c6fd90969596620336a2565b9260405190620326038262002b00565b6001825260203681840137516001600160a01b0316620326238262004c8b565b526000945b8051861015620329be576203263e868262004ce2565b51610a80526203264f855162004dfe565b966000946203265f845162004dfe565b6109e05260009460005b88518110156203272f578a89620326996001600160a01b036203268d858462004ce2565b5116610a80516203348a565b1580620326e9575b620326ba575b5050620326b49062004c7b565b62032669565b98620326de9162001b0382859c62007f8f620326b49760018060a01b039262004ce2565b9790508a89620326a7565b5050506103e8610a8051101562004c99576001600160a01b036203270e828b62004ce2565b51166000526003610a8051811b016020528a896040600020541515620326a1565b50909895979498969291939660005b8851811015620327d2576103e8610a8051101562004c99576001600160a01b036203276a828b62004ce2565b51166000526003610a8051811b016020526040600020541562032799575b620327939062004c7b565b6203273e565b996203279390620327c9906001600160a01b03620327b88e8d62004ce2565b511662001b03826109e05162004ce2565b9a905062032788565b50985096959291909396610a80516103e8811015806109a05262004c995760031b600401549862032808620080c0898c62006258565b6108e05260006108a05260006109c0525b6109a05162004c99576109c0518a811015620328e2576203284e6203286b9160006109a0526004610a805160031b0162004efa565b90546109e05160039290921b1c6001600160a01b03169062033539565b156203288a575b620328806109c05162004c7b565b6109c05262032819565b60006109a052620328a86109c0516004610a805160031b0162004efa565b60018060a01b0391549060031b1c16620328c96108a0516108e05162004ce2565b52620328d86108a05162004c7b565b6108a05262032872565b50979294959093985095909560005b8281106203298b575050506109a05162004c99576108e051516001600160401b03811162002a23576203292e816004610a805160031b0162005036565b60206108e051016004610a805160031b01600052602060002060005b8381106203296d5750505050620329619062004c7b565b94929590919562032628565b82516001600160a01b0316818301556020909201916001016203294a565b620329b8906001600160a01b03620329a4828562004ce2565b5116620143046108a0516108e05162004ce2565b620328f1565b5050936202fbb19193506020925091620323a6565b634e487b7160e01b60005260045260246000fd5b8151620329fd906001600160a01b031662006658565b6202f900565b62032a0e8162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462032a3d5762032a379062004c7b565b6202f8ee565b505050600138806202f8f7565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062032ad1575050565b62002bc391600052601f6020600020910160051c81019062004f3f565b90600160401b811162002a2357815481835580821062032b0d57505050565b62002bc392600052601f6020600020918180850160051c840194168062032b3c575b500160051c019062004f3f565b600019908186019182549160200360031b1c1690553862032b2f565b9060ff809160031b9316831b921b19161790565b62032b8462032b7d6000936202f73c565b50620034fe565b92825b8451805182101562032c7a578162032b9f9162004ce2565b516103e881101562004c9957600390811b9460018060a01b0385166000526020918601825262032bdc604096600188600020549101549062005f19565b91901562032c45579062032bf09162006049565b95901562032c0b57505062032c059062004c7b565b62032b87565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b865162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b505092505090565b60005b613f78549081600052613f7691602092808452600393604092858460002001805486101562032de35762032cbe8662032cca9262004efa565b905490881b1c6202f73c565b509560ff6006809801541662032cf2575b505050505062032cec915062004c7b565b62032c85565b8160005283835262032d1a62032d0e8783886000200162004efa565b905490831b1c6202f73c565b509662032d3a876001809a01549285600052878752886000200162004efa565b905490831b1c918360005285855262032d5a886005896000200162004efa565b9054911b1c9060009260649283810293818504149015171562032dcf579062032d839162004f13565b1062032dc7575b62032d96578062032cdb565b6009945060005252600020019060ff19918183825416179055613f73918254161790556000613f71556000613f7255565b508562032d8a565b634e487b7160e01b84526011600452602484fd5b505050505050506000613f7854905b81600052613f76602052600380604060002001805483101562032e6857600662032e2f62032e238560ff9462004efa565b905490851b1c6202f73c565b500154161562032e635762032e448262033078565b90811015620029ab576201514d5762032e5d9062004c7b565b62032df2565b505050565b50505060ff1990613f73600383825416179055600052613f766020526009604060002001908154169055565b613f785490600090828252613f76916020928084526003906040908282852001549562032ec18762002be9565b9662032ed08451988962002b1c565b80885262032ee1601f199162002be9565b013682890137845b88865282825284848720015481101562032f32579062032f278262000f5562032f158897969562033078565b62032f21838d62004ce2565b62005277565b909192935062032ee9565b5050505090919350815b835181101562032fa95762032f52818562004ce2565b518281101562032f9557600180911462032f78575062032f729062004c7b565b62032f3c565b613f73805460ff191690911790555050613f71819055613f725550565b634e487b7160e01b84526021600452602484fd5b50909150613f728054421060001462032fd05750613f739060ff19825416179055613f7155565b9050613f73600160ff1982541617905581613f715555565b1562032ff057565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b156203303d57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b613f785490600091808352613f76806020528260408520600301906203309e9162004efa565b90549060031b1c620330b0816202f73c565b50600101549383865282602052806040872060040190620330d19162004efa565b90549060031b1c9284875280602052816040882060050190620330f49162004efa565b90549060031b1c9487526020526040862060060190620331149162004efa565b90549060031b1c9062033127906202f73c565b506006015460ff16620331735750620331639262005edc62022e5a9383620331536203315b9562005ee3565b969062033035565b929062033035565b11156203316d5790565b50600190565b6200f78d925062033163936203318d6203315b9362005ee3565b949062033035565b90929192620331a5825162004dfe565b600091620331b4815162004dfe565b8390845b86518110156203324f576001600160a01b03620331db816202e57c848b62004ce2565b15806203321a575b620331fb575b50620331f59062004c7b565b620331b8565b8196620332129162008248620331f5948b62004ce2565b9590620331e9565b506103e88a101562004c99578062033233838a62004ce2565b511660005260038a811b016020526040600020541515620331e3565b509295919694509260005b8751811015620332d0576103e886101562004c99576001600160a01b038062033284838b62004ce2565b5116600052600387811b0160205260406000205415620332b1575b50620332ab9062004c7b565b6203325a565b8195620332c8916200e3f8620332ab948c62004ce2565b94906203329f565b5092509450926103e8831015938462004c995760049586600395861b019687549462033301620080c0828862006258565b9460009689889a5b6203347557818b1015620333aa57506000998b620333446203332c838362004efa565b90546001600160a01b0392918e1b1c82168a62033539565b1562033367575b5050906203335c8b94939262004c7b565b9a9091929362033309565b91998c9594939290916203337d908c9062004efa565b9054908d1b1c1662033390828b62004ce2565b526203339c9062004c7b565b9890919293508b386203334b565b9697949a98505091975092506000915b8383106203345057505050506203343b578051926001600160401b038411620334265750620333ea838362005036565b602080910191600052806000209060005b8481106203340a575050505050565b83516001600160a01b03168382015592810192600101620333fb565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203346e9062008256906001600160a01b036200a495868662004ce2565b91620333ba565b603285634e487b7160e01b6000525260246000fd5b9060005b6103e883101562004c99576003600484821b018054831015620173d15782620334b79162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620334db9062004c7b565b6203348e565b9060005b6103e883101562004c99576003611fbc84821b018054831015620173d157826203350f9162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620335339062004c7b565b620334e5565b9060005b82518110156200661f576001600160a01b03806203355c838662004ce2565b5116908316146200660c57620335729062004c7b565b6203353d565b801562001e4f576000190190565b9081519060005b60001983810184811162001e4f5782101562033654576001820180831162001e4f575b848110620335cb575050620335c59062004c7b565b6203358d565b6001600160a01b0380620335e0858962004ce2565b511681620335ef848a62004ce2565b5116146203360a575b50620336049062004c7b565b620335b0565b828692960182811162001e4f5762033604926203364d926203363162033646938b62004ce2565b51166203363f898b62004ce2565b5262033578565b9562033578565b90620335f8565b505090620336628162004dfe565b9060005b81811062033675575090925050565b6203369c906001600160a01b036203368e828862004ce2565b511662001b03828662004ce2565b62033666565b80519160005b60001984810185811162001e4f578210156203375a576001820180831162001e4f575b858110620336e6575050620336e09062004c7b565b620336a8565b620336f2838662004ce2565b51620336ff828762004ce2565b511462033718575b620337129062004c7b565b620336cb565b948181019080821162001e4f576203374b62033752916203373e62033712948962004ce2565b516203363f8a8a62004ce2565b9662033578565b905062033707565b50509091620337698162004dfe565b9060005b8181106203377c575090925050565b806202b5446203378d928762004ce2565b6203376d565b604051620337a18162002a07565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203380f8162002a8f565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620338658162002b00565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b6040516203389f8162002b00565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620338ca8162002a8f565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620339148162002b00565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620339448162002b00565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620339778162002b00565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620339ac8162002b00565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620339e58162002b00565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b60405162033a188162002b00565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b60405162033a478162002b00565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b60405162033a7d8162002b00565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b6026811015620029ab5780156200750a57600181146203316d576002811462033cd5576003811462033ccf576004811462033cc9576005811462033cc3576006811462033cbd576007811462033cb7576008811462033cb1576009811462033cab57600a811462033ca557600b811462033c9f57600c811462033c9957600d811462033c9357600e811462033c8d57600f811462033c87576010811462033c81576011811462033c7b576012811462033c75576013811462033c6f576014811462033c69576015811462033c63576016811462033c5d576017811462033c57576018811462033c51576019811462033c4b57601a811462033c4557601b811462033c3f57601c811462033c3957601d811462033c3357601e811462033c2d57601f811462033c27576020811462033c21576021811462033c1b576022811462033c15576023811462033c0f576024811462033c095760251462033c0457600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200662757600090815b835181101562017ac0576001600160f81b03198062033d0b83876200655e565b51169062033d1a83856200655e565b51160362017ab95762033d2d9062004c7b565b62033ceb565b6040519062033d428262002a8f565b60288252604036602084013760005b6014811062033d5f57505090565b60139080820391821162001e4f57600382901b916001600160fd1b0381160362001e4f5760ff80831162001e4f5760019262033da89084901b6001600160a01b03861662005070565b60f081168282160391821162001e4f5762033dcc9060f41b600f60f81b1662033e35565b82841b916001600160ff1b038416840362001e4f5762033e099160001a62033df584896200655e565b5360f81b6001600160f81b03191662033e35565b92810180911162001e4f5762033e2862033e2f9360001a91866200655e565b5362004c7b565b62033d51565b60f81c600a81101562033e5e5760300160ff811162001e4f5760f81b6001600160f81b03191690565b60570160ff811162001e4f5760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65305d206c656e677468206973206e6f742032000000000000000000000000000034dd862f2dd4c33543972cb453e26b9cc23a6eb518176c0de5db12d08007dc6d617665203120656c656d656e7400000000000000000000000000000000000000dd388e0eb473c306304080e96aea031c0fb4686a37f7b1a3c8a2301cd0627f0b7420686176652074776f20656c656d656e747300000000000000000000000000546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f742031000000000000000000000000000000742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f74202e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973748b3bb33683ac4daad017d30a0e9972b15e6854cd1f296e14295598f57ce03d506470626d4cb7d88e800a628455fe3f45216f254e8294f25d17ea4ac7e2f4f0a35d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d70546865206c656e677468206f6620746f6b656e436c617373417272617920616e6c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a2646970667358221220b685dcba65bc09a69896a133967a43e37ffb4ec0bce8c14fedd584da1a59c96064736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} } From 4cab3d5af71dfbf588746d7012e96c38062bc4a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 7 Feb 2024 19:56:30 -0600 Subject: [PATCH 26/62] Update expression-test.ts --- darc-js/tests/expression-test/expression-test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index 8811f32a..9f45dd52 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -36,7 +36,7 @@ function toBigIntArray(array: number[]): bigint[] { return bigIntArray; } -describe.only('expression node basic test', () => { +describe('expression node basic test', () => { it ('should run the program "add and enable plugin" with generated condition node list in SDK', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); await executeOperationList( From a74b043a899c8558985029b974cd3c3ab9e3ff78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 7 Feb 2024 22:44:12 -0600 Subject: [PATCH 27/62] Update package.json --- darc-js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darc-js/package.json b/darc-js/package.json index 33de740a..2595295e 100644 --- a/darc-js/package.json +++ b/darc-js/package.json @@ -5,7 +5,7 @@ }, "name": "darcjs", "description": "The official JavaScript client and SDK for Project DARC (Decentralized Autonomous Regulated Company), and the compiler and runtime for By-Law Script.", - "version": "0.0.9", + "version": "0.0.10", "main": "./dist/index.js", "types": "./dist/index.d.ts", "repository": { From 5dc9e9f5cbadadb53f0a59c60b325e18ba78034d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 9 Feb 2024 23:46:14 -0600 Subject: [PATCH 28/62] update --- darc-js/src/DARC/DARC.ts | 14 -------------- darc-js/src/darcjs.ts | 4 +--- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/darc-js/src/DARC/DARC.ts b/darc-js/src/DARC/DARC.ts index 91f2caf1..3debc0d4 100644 --- a/darc-js/src/DARC/DARC.ts +++ b/darc-js/src/DARC/DARC.ts @@ -10,20 +10,6 @@ export type InitParam = { provider?: ethers.providers.Provider; } -export type TokenInfo = { - votingWeight: BigInt, - dividendWeight: BigInt, - tokenInfo: string, - totalSupply: BigInt, -} - -export type MemberInfo = { - bIsInitialized: boolean, - bIsSuspened: boolean, - name: string, - role: bigint -} - /** * The DARC class is used to interact with the DARC contract. */ diff --git a/darc-js/src/darcjs.ts b/darc-js/src/darcjs.ts index 3894370e..293f3984 100644 --- a/darc-js/src/darcjs.ts +++ b/darc-js/src/darcjs.ts @@ -1,6 +1,6 @@ import {deployDARC} from './deployDARC/deployDARC'; import { transpiler } from './SDK/transpiler'; -import { DARC, InitParam, TokenInfo, MemberInfo } from './DARC/DARC'; +import { DARC, InitParam } from './DARC/DARC'; import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; import { ethers } from 'ethers'; import {run} from './SDK/runtime'; @@ -10,8 +10,6 @@ export { transpiler, DARC, InitParam, - TokenInfo, - MemberInfo, darcBinary, DARCBinaryStruct, DARC_VERSION, From 9eda121de880f5d78219e0941d898e0dd6931378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 10 Feb 2024 00:28:46 -0600 Subject: [PATCH 29/62] update --- darc-js/src/{SDK => }/sdk.ts | 30 +++++++++---------- .../tests/expression-test/expression-test.ts | 4 +-- darc-js/tests/sdk-test/sdk-test.ts | 4 +-- 3 files changed, 19 insertions(+), 19 deletions(-) rename darc-js/src/{SDK => }/sdk.ts (95%) diff --git a/darc-js/src/SDK/sdk.ts b/darc-js/src/sdk.ts similarity index 95% rename from darc-js/src/SDK/sdk.ts rename to darc-js/src/sdk.ts index 68522dfc..aca890de 100644 --- a/darc-js/src/SDK/sdk.ts +++ b/darc-js/src/sdk.ts @@ -1,8 +1,8 @@ // import everything from includes.ts -import * as instructions from "./includes"; -import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "../types/basicTypes"; +import * as instructions from "./SDK/includes"; +import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "./types/basicTypes"; import {ethers} from "ethers"; -import * as DARC from "../DARC/DARC"; +import * as DARC from "./DARC/DARC"; import { OPCODE_ID_1_BATCH_MINT_TOKENS, @@ -40,7 +40,7 @@ import { OPCODE_ID_35_UPGRADE_TO_ADDRESS, OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, OPCODE_ID_37_UPGRADE_TO_THE_LATEST -} from "./opcodes/opcodeTable"; +} from "./SDK/opcodes/opcodeTable"; /** * The core function of the SDK. It takes in a list of operations and a wallet, and then sends the operations to the DARC contract. This is different from the By-law Script, which compile and run the code directly. @@ -328,7 +328,7 @@ export { batch_op_any_target_address_owns_token_x_greater_than, batch_op_any_target_address_owns_token_x_less_than, batch_op_any_target_address_owns_token_x_in_range -} from "./conditionNodes/Condition_BatchOp"; +} from "./SDK/conditionNodes/Condition_BatchOp"; export { create_token_classes_any_token_dividend_weight_greater_than, @@ -339,7 +339,7 @@ export { create_token_classes_any_voting_weight_less_than, create_token_classes_any_voting_weight_in_range, create_token_classes_any_voting_weight_equals -} from "./conditionNodes/Condition_CreateTokenClass"; +} from "./SDK/conditionNodes/Condition_CreateTokenClass"; export { timestamp_greater_than, @@ -386,11 +386,11 @@ export { token_in_list_amount_less_than, token_in_list_amount_in_range, token_in_list_amount_equals -} from "./conditionNodes/Condition_MachineState"; +} from "./SDK/conditionNodes/Condition_MachineState"; -export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./conditionNodes/Condition_MembershipOp"; +export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./SDK/conditionNodes/Condition_MembershipOp"; -export { operation_equals, operation_in_list, EnumOpcode } from "./conditionNodes/Condition_Operation"; +export { operation_equals, operation_in_list, EnumOpcode } from "./SDK/conditionNodes/Condition_Operation"; export { operation_by_operator_since_last_time_greater_than, @@ -405,7 +405,7 @@ export { operation_by_each_address_in_list_since_last_time_greater_than, operation_by_each_address_in_list_since_last_time_less_than, operation_by_each_address_in_list_since_last_time_in_range -} from "./conditionNodes/Condition_OperationLog"; +} from "./SDK/conditionNodes/Condition_OperationLog"; export { operator_name_equals, @@ -436,7 +436,7 @@ export { operator_withdrawable_dividends_less_than, operator_withdrawable_dividends_in_range, operator_address_in_list -} from "./conditionNodes/Condition_Operator"; +} from "./SDK/conditionNodes/Condition_Operator"; export { enable_any_before_op_plugin_index_in_list, @@ -469,11 +469,11 @@ export { add_any_voting_rule_is_absolute_majority, add_any_voting_rule_approval_percentage_in_range, add_any_voting_rule_token_class_contains -} from "./conditionNodes/Condition_PluginAndVoting"; +} from "./SDK/conditionNodes/Condition_PluginAndVoting"; -export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./conditionNodes/Condition_Program"; +export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./SDK/conditionNodes/Condition_Program"; -export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./conditionNodes/Condition_TokenAndCash"; +export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./SDK/conditionNodes/Condition_TokenAndCash"; export { add_withdrawable_balance_any_amount_greater_than, @@ -484,4 +484,4 @@ export { reduce_withdrawable_balance_any_amount_less_than, reduce_withdrawable_balance_any_amount_in_range, reduce_withdrawable_balance_any_amount_equals -} from "./conditionNodes/Condition_Withdrawable"; \ No newline at end of file +} from "./SDK/conditionNodes/Condition_Withdrawable"; \ No newline at end of file diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index 9f45dd52..5570fe68 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList, operator_address_equals} from "../../src/SDK/sdk"; +import {executeOperationList, operator_address_equals} from "../../src/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts index 8900ff56..235b3569 100644 --- a/darc-js/tests/sdk-test/sdk-test.ts +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList} from "../../src/SDK/sdk"; +import {executeOperationList} from "../../src/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; import {or, node, and, expression} from "../../src/SDK/Node"; From 620c5b396604d44aa7320d2578d83c7579f75d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 10 Feb 2024 12:21:03 -0600 Subject: [PATCH 30/62] update --- darc-js/src/DARC/DARC.ts | 16 ++++++++++++++++ darc-js/src/sdk.ts | 4 +++- darc-js/tests/runtime-test/transpileAndRun.ts | 4 ++-- .../tests/sdk-test/sdk-node-generation-test.ts | 4 ++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/darc-js/src/DARC/DARC.ts b/darc-js/src/DARC/DARC.ts index 3debc0d4..74d1c57b 100644 --- a/darc-js/src/DARC/DARC.ts +++ b/darc-js/src/DARC/DARC.ts @@ -10,6 +10,22 @@ export type InitParam = { provider?: ethers.providers.Provider; } + +export type TokenInfo = { + votingWeight: BigInt, + dividendWeight: BigInt, + tokenInfo: string, + totalSupply: BigInt, +} + +export type MemberInfo = { + bIsInitialized: boolean, + bIsSuspened: boolean, + name: string, + role: bigint +} + + /** * The DARC class is used to interact with the DARC contract. */ diff --git a/darc-js/src/sdk.ts b/darc-js/src/sdk.ts index aca890de..7260a099 100644 --- a/darc-js/src/sdk.ts +++ b/darc-js/src/sdk.ts @@ -1,4 +1,6 @@ -// import everything from includes.ts +/** + * Below are all necessary functions for the SDK. + */ import * as instructions from "./SDK/includes"; import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "./types/basicTypes"; import {ethers} from "ethers"; diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index ef7a611f..ae77a380 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -1,10 +1,10 @@ -import {executeOperationList} from "../../src/SDK/sdk"; +import {executeOperationList} from "../../src/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; import { transpiler } from "../../src/darcjs"; diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 3f37fb94..837673e3 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList} from "../../src/SDK/sdk"; +import {executeOperationList} from "../../src/sdk"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/SDK/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; import {or, node, and, expression} from "../../src/SDK/Node"; From 96032161748e8500a1019e3399d8959fa030e2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sun, 11 Feb 2024 20:27:12 -0600 Subject: [PATCH 31/62] update --- darc-js/src/SDK/runtime.ts | 4 +-- darc-js/src/SDK/transpiler.ts | 2 +- darc-js/src/darcjs.ts | 4 +-- darc-js/src/sdk.ts | 28 +++++++++++++++++++ .../tests/expression-test/expression-test.ts | 2 +- darc-js/tests/runtime-test/transpileAndRun.ts | 4 +-- .../runtime-test/transpiler-operator-test.ts | 4 +-- 7 files changed, 38 insertions(+), 10 deletions(-) diff --git a/darc-js/src/SDK/runtime.ts b/darc-js/src/SDK/runtime.ts index 863c8985..1058ea84 100644 --- a/darc-js/src/SDK/runtime.ts +++ b/darc-js/src/SDK/runtime.ts @@ -2,7 +2,7 @@ import * as instructions from "./includes"; import { ethers, Contract } from 'ethers'; import { OperationStruct, OperationStructOutput, ProgramStruct } from "../types/basicTypes"; import * as DARC from "../DARC/DARC"; -import { transpiler } from "./transpiler"; +import { transpile } from "./transpiler"; /** @@ -65,7 +65,7 @@ export async function transpileAndRun( darcVersion: DARC.DARC_VERSION = DARC.DARC_VERSION.Latest, delegateToAddress?:string ) { - const compiledCode = transpiler(code); + const compiledCode = transpile(code); if (delegateToAddress) { await run(compiledCode, wallet, targetDARCAddress, darcVersion, delegateToAddress); } diff --git a/darc-js/src/SDK/transpiler.ts b/darc-js/src/SDK/transpiler.ts index 51bdd496..00e56ab8 100644 --- a/darc-js/src/SDK/transpiler.ts +++ b/darc-js/src/SDK/transpiler.ts @@ -1,4 +1,4 @@ -export function transpiler(sourceCode: string): string { +export function transpile(sourceCode: string): string { // compile the source code with babel standalone const babel = require('@babel/standalone'); diff --git a/darc-js/src/darcjs.ts b/darc-js/src/darcjs.ts index 293f3984..7a006892 100644 --- a/darc-js/src/darcjs.ts +++ b/darc-js/src/darcjs.ts @@ -1,5 +1,5 @@ import {deployDARC} from './deployDARC/deployDARC'; -import { transpiler } from './SDK/transpiler'; +import { transpile } from './SDK/transpiler'; import { DARC, InitParam } from './DARC/DARC'; import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; import { ethers } from 'ethers'; @@ -7,7 +7,7 @@ import {run} from './SDK/runtime'; export { deployDARC, - transpiler, + transpile, DARC, InitParam, darcBinary, diff --git a/darc-js/src/sdk.ts b/darc-js/src/sdk.ts index 7260a099..df7e27ee 100644 --- a/darc-js/src/sdk.ts +++ b/darc-js/src/sdk.ts @@ -1,3 +1,27 @@ +/** + * Below are core darcjs + */ +import {deployDARC} from './deployDARC/deployDARC'; +import { transpile } from './SDK/transpiler'; +import { InitParam } from './DARC/DARC'; +import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; + +export { + deployDARC, + transpile, + DARC, + InitParam, + darcBinary, + DARCBinaryStruct, + DARC_VERSION, + ethers, +}; + +/** + * Below are core interpreter functions for the By-law Script + */ +export { transpileAndRun } from "./SDK/runtime"; + /** * Below are all necessary functions for the SDK. */ @@ -261,6 +285,10 @@ export function upgrade_to_the_latest(): OperationStruct { return operation; } + +/** + * Below are all condition nodes for composing plugins + */ export { batch_op_size_greater_than, batch_op_size_less_than, diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index 5570fe68..59bb14c5 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -1,5 +1,5 @@ import {executeOperationList, operator_address_equals} from "../../src/sdk"; -import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; +import { deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index ae77a380..71c4c00a 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -7,7 +7,7 @@ import { expect } from 'chai'; import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; -import { transpiler } from "../../src/darcjs"; +import { transpile } from "../../src/darcjs"; const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; @@ -36,7 +36,7 @@ function toBigIntArray(array: number[]): bigint[] { return bigIntArray; } -describe('transpiler and execution test', () => { +describe('transpile and execution test', () => { it ('should run the by-law script with expression node, logical operation node generated successfully', async () => { const darc_contract_address = await deployDARC(DARC_VERSION.Latest, signer); diff --git a/darc-js/tests/runtime-test/transpiler-operator-test.ts b/darc-js/tests/runtime-test/transpiler-operator-test.ts index 0d0e4f6b..7e8371ad 100644 --- a/darc-js/tests/runtime-test/transpiler-operator-test.ts +++ b/darc-js/tests/runtime-test/transpiler-operator-test.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import 'mocha'; -import { transpiler } from '../../src/SDK/transpiler'; +import { transpile } from '../../src/SDK/transpiler'; import { Node } from '@babel/types'; describe('Operator Test', @@ -16,7 +16,7 @@ describe('Operator Test', `; - const transpiled_result = transpiler(code); + const transpiled_result = transpile(code); console.log(transpiled_result); expect(true).to.equal(true); From fdd52bebc7af48594e7ca38600b1e50ca93dd036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 12 Feb 2024 03:37:26 -0600 Subject: [PATCH 32/62] update --- darc-js/package.json | 6 +- darc-js/src/darcjs.ts | 523 +++++++++++++++++- darc-js/src/index.ts | 519 ++++++++++++++++- darc-js/src/sdk.ts | 517 ----------------- .../tests/expression-test/expression-test.ts | 4 +- darc-js/tests/runtime-test/transpileAndRun.ts | 4 +- .../sdk-test/sdk-node-generation-test.ts | 4 +- darc-js/tests/sdk-test/sdk-test.ts | 4 +- 8 files changed, 1035 insertions(+), 546 deletions(-) diff --git a/darc-js/package.json b/darc-js/package.json index 2595295e..b727c65c 100644 --- a/darc-js/package.json +++ b/darc-js/package.json @@ -5,9 +5,9 @@ }, "name": "darcjs", "description": "The official JavaScript client and SDK for Project DARC (Decentralized Autonomous Regulated Company), and the compiler and runtime for By-Law Script.", - "version": "0.0.10", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", + "version": "0.0.11", + "main": "./dist/darcjs.js", + "types": "./dist/darcjs.d.ts", "repository": { "type": "git", "url": "https://github.com/Project-DARC/darc.js.git" diff --git a/darc-js/src/darcjs.ts b/darc-js/src/darcjs.ts index 7a006892..8666ccda 100644 --- a/darc-js/src/darcjs.ts +++ b/darc-js/src/darcjs.ts @@ -1,18 +1,509 @@ -import {deployDARC} from './deployDARC/deployDARC'; -import { transpile } from './SDK/transpiler'; -import { DARC, InitParam } from './DARC/DARC'; -import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; -import { ethers } from 'ethers'; -import {run} from './SDK/runtime'; +/** + * Below are core darcjs + */ +export {deployDARC} from './deployDARC/deployDARC'; +export { transpile } from './SDK/transpiler'; +export { DARC, InitParam } from './DARC/DARC'; +export { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; +export { ethers } from 'ethers'; +export {run} from './SDK/runtime'; + + +/** + * Below are core interpreter functions for the By-law Script + */ +export { transpileAndRun } from "./SDK/runtime"; + +/** + * Below are all necessary functions for the SDK. + */ +import * as instructions from "./SDK/includes"; +import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "./types/basicTypes"; +import {ethers} from "ethers"; +import * as DARC from "./DARC/DARC"; + +import { + OPCODE_ID_1_BATCH_MINT_TOKENS, + OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, + OPCODE_ID_3_BATCH_TRANSFER_TOKENS, + OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO, + OPCODE_ID_5_BATCH_BURN_TOKENS, + OPCODE_ID_6_BATCH_BURN_TOKENS_FROM, + OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS, + OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS, + OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS, + OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES, + OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES, + OPCODE_ID_12_BATCH_ADD_PLUGINS, + OPCODE_ID_13_BATCH_ENABLE_PLUGINS, + OPCODE_ID_14_BATCH_DISABLE_PLUGINS, + OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS, + OPCODE_ID_16_BATCH_SET_PARAMETERS, + OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES, + OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES, + OPCODE_ID_19_BATCH_ADD_VOTING_RULES, + OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS, + OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS, + OPCODE_ID_22_ADD_EMERGENCY, + OPCODE_ID_24_CALL_EMERGENCY, + OPCODE_ID_25_CALL_CONTRACT_ABI, + OPCODE_ID_26_PAY_CASH, + OPCODE_ID_27_OFFER_DIVIDENDS, + OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS, + OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND, + OPCODE_ID_31_ADD_STORAGE_STRING, + OPCODE_ID_32_VOTE, + OPCODE_ID_33_EXECUTE_PENDING_PROGRAM, + OPCODE_ID_34_END_EMERGENCY, + OPCODE_ID_35_UPGRADE_TO_ADDRESS, + OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, + OPCODE_ID_37_UPGRADE_TO_THE_LATEST +} from "./SDK/opcodes/opcodeTable"; + +/** + * The core function of the SDK. It takes in a list of operations and a wallet, and then sends the operations to the DARC contract. This is different from the By-law Script, which compile and run the code directly. + * @param operationList The list of operations to be sent to the DARC contract + * @param wallet The wallet to be used to sign the transaction (provider must be set) + * @param targetDARCAddress The address of the DARC contract to be used + * @param notes The notes to be attached to the program + * @param delegateToAddress If the signer is not the operator, but the operator has approved the signer to sign on its behalf, then the signer can set this parameter to the operator's address. Otherwise, leave it undefined. + */ +export async function executeOperationList( + operationList: OperationStruct[], + wallet: ethers.Wallet, + targetDARCAddress: string, + notes?: string, + delegateToAddress?: string + ) { + + const operatorAddress = delegateToAddress? delegateToAddress : wallet.address; + for (let i = 0; i < operationList.length; i++) { + operationList[i].operatorAddress = operatorAddress; + } + const program:ProgramStruct = { + programOperatorAddress: operatorAddress, + operations: operationList, + notes: notes? notes : "" + }; + + const attachedDARC = new DARC.DARC({ + address: targetDARCAddress, + version: DARC.DARC_VERSION.Latest, + wallet: wallet, + }); + + await attachedDARC.entrance(program); +} + + + + +export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[] | number[], votingWeightArray: bigint[] | number[], dividendWeightArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); + return operation; +} + +export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_burn_tokens(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); + return operation; +} + +export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); + return operation; +} + +export function batch_add_memberships(addressArray: string[], roleArray: bigint[] | number[], nameArray: string[]): OperationStruct { + let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); + return operation; +} + +export function batch_suspend_memberships(addressArray: string[]): OperationStruct { + let operation = OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS(addressArray); + return operation; +} + +export function batch_resume_memberships(addressArray: string[]): OperationStruct { + let operation = OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS(addressArray); + return operation; +} + +export function batch_change_member_roles(addressArray: string[], roleArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); + return operation; +} + +export function batch_change_member_names(addressArray: string[], nameArray: string[]): OperationStruct { + let operation = OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES(addressArray, nameArray); + return operation; +} + +export function batch_add_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { + if (pluginArray instanceof Array && typeof pluginArray[0] !== "object") { + let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); + return operation; + } + let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); + return operation; +} + +export function batch_enable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { + let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); + return operation; +} + +export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { + let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); + return operation; +} + +export function batch_add_and_enable_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { + let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); + return operation; +} + +export function batch_set_parameters(parameterIndexArray: bigint[] | number[], parameterValueArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); + return operation; +} + +export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); + return operation; +} + +export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); + return operation; +} + +export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]): OperationStruct { + let operation = OPCODE_ID_19_BATCH_ADD_VOTING_RULES(ruleArray); + return operation; +} + +export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { + let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); + return operation; +} + +export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { + let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); + return operation; +} + +export function add_emergency(emergencyAddressArray: string[]): OperationStruct { + let operation = OPCODE_ID_22_ADD_EMERGENCY(emergencyAddressArray); + return operation; +} + +export function call_emergency(emergencyAddressArrayIndex: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); + return operation; +} + +export function call_contract_abi(contractAddress: string, abi: string | Uint8Array, value: bigint): OperationStruct { + let operation = OPCODE_ID_25_CALL_CONTRACT_ABI(contractAddress, abi, value); + return operation; +} + +export function pay_cash(amount: bigint, paymentType: bigint, dividendable: bigint): OperationStruct { + let operation = OPCODE_ID_26_PAY_CASH(amount, paymentType, dividendable); + return operation; +} + +export function offer_dividends(): OperationStruct { + let operation = OPCODE_ID_27_OFFER_DIVIDENDS(); + return operation; +} + +export function set_approval_for_all_operations(address: string): OperationStruct { + let operation = OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS(address); + return operation; +} + +export function batch_burn_tokens_and_refund(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[]): OperationStruct { + let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); + return operation; +} + +export function add_storage_string(value: string): OperationStruct { + let operation = OPCODE_ID_31_ADD_STORAGE_STRING(value); + return operation; +} + +export function vote(voteArray: boolean[]): OperationStruct { + let operation = OPCODE_ID_32_VOTE(voteArray); + return operation; +} + +export function execute_pending_program(): OperationStruct { + let operation = OPCODE_ID_33_EXECUTE_PENDING_PROGRAM(); + return operation; +} + +export function end_emergency(): OperationStruct { + let operation = OPCODE_ID_34_END_EMERGENCY(); + return operation; +} + +export function upgrade_to_address(newAddress: string): OperationStruct { + let operation = OPCODE_ID_35_UPGRADE_TO_ADDRESS(newAddress); + return operation; +} + +export function confirm_upgrade_from_address(newAddress: string): OperationStruct { + let operation = OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS(newAddress); + return operation; +} + +export function upgrade_to_the_latest(): OperationStruct { + let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); + return operation; +} + + +/** + * Below are all condition nodes for composing plugins + */ +export { + batch_op_size_greater_than, + batch_op_size_less_than, + batch_op_size_in_range, + batch_op_size_equals, + batch_op_each_target_addresses_equals, + batch_op_each_target_addresses_in_list, + batch_op_each_target_addresses_in_member_role, + batch_op_any_target_address_equals, + batch_op_any_target_address_in_list, + batch_op_any_target_address_in_member_role, + batch_op_each_target_address_to_itself, + batch_op_any_target_address_to_itself, + batch_op_each_source_address_equals, + batch_op_each_source_address_in_list, + batch_op_each_source_address_in_member_role, + batch_op_any_source_address_equal, + batch_op_any_source_address_in_list, + batch_op_any_source_address_in_member_role, + batch_op_each_source_address_from_itself, + batch_op_any_source_address_from_itself, + batch_op_each_token_class_equals, + batch_op_each_token_class_in_list, + batch_op_each_token_class_in_range, + batch_op_each_token_class_greater_than, + batch_op_each_token_class_less_than, + batch_op_total_token_amount_greater_than, + batch_op_total_token_amount_less_than, + batch_op_total_token_amount_in_range, + batch_op_total_token_amount_equals, + batch_op_any_token_amount_greater_than, + batch_op_any_token_amount_less_than, + batch_op_any_token_amount_in_range, + batch_op_any_token_amount_equals, + batch_op_any_token_class_greater_than, + batch_op_any_token_class_less_than, + batch_op_any_token_class_in_range, + batch_op_any_token_class_equals, + batch_op_any_token_class_in_list, + batch_op_each_source_address_in_member_role_list, + batch_op_any_source_address_in_member_role_list, + batch_op_each_target_address_in_member_role_list, + batch_op_any_target_address_in_member_role_list, + batch_op_each_target_address_withdrawable_cash_greater_than, + batch_op_each_target_address_withdrawable_cash_less_than, + batch_op_each_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_withdrawable_cash_equals, + batch_op_any_target_address_withdrawable_cash_greater_than, + batch_op_any_target_address_withdrawable_cash_less_than, + batch_op_any_target_address_withdrawable_cash_in_range, + batch_op_each_target_address_total_voting_weight_greater_than, + batch_op_each_target_address_total_voting_weight_less_than, + batch_op_each_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_voting_weight_equals, + batch_op_any_target_address_total_voting_weight_greater_than, + batch_op_any_target_address_total_voting_weight_less_than, + batch_op_any_target_address_total_voting_weight_in_range, + batch_op_each_target_address_total_dividend_weight_greater_than, + batch_op_each_target_address_total_dividend_weight_less_than, + batch_op_each_target_address_total_dividend_weight_in_range, + batch_op_any_target_address_total_dividend_weight_greater_than, + batch_op_any_target_address_total_dividend_weight_less_than, + batch_op_any_target_address_total_dividend_weight_in_range, + batch_op_each_target_address_owns_token_x_greater_than, + batch_op_each_target_address_owns_token_x_less_than, + batch_op_each_target_address_owns_token_x_in_range, + batch_op_any_target_address_owns_token_x_greater_than, + batch_op_any_target_address_owns_token_x_less_than, + batch_op_any_target_address_owns_token_x_in_range +} from "./SDK/conditionNodes/Condition_BatchOp"; + +export { + create_token_classes_any_token_dividend_weight_greater_than, + create_token_classes_any_token_dividend_weight_less_than, + create_token_classes_any_token_dividend_weight_in_range, + create_token_classes_any_token_dividend_weight_equals, + create_token_classes_any_voting_weight_greater_than, + create_token_classes_any_voting_weight_less_than, + create_token_classes_any_voting_weight_in_range, + create_token_classes_any_voting_weight_equals +} from "./SDK/conditionNodes/Condition_CreateTokenClass"; + +export { + timestamp_greater_than, + timestamp_less_than, + timestamp_in_range, + date_year_greater_than, + date_year_less_than, + date_year_in_range, + date_month_greater_than, + date_month_less_than, + date_month_in_range, + date_day_greater_than, + date_day_less_than, + date_day_in_range, + date_hour_greater_than, + date_hour_less_than, + date_hour_in_range, + address_voting_weight_greater_than, + address_voting_weight_less_than, + address_voting_weight_in_range, + address_dividend_weight_greater_than, + address_dividend_weight_less_than, + address_dividend_weight_in_range, + address_token_x_greater_than, + address_token_x_less_than, + address_token_x_in_range, + total_voting_weight_greater_than, + total_voting_weight_less_than, + total_voting_weight_in_range, + total_dividend_weight_greater_than, + total_dividend_weight_less_than, + total_dividend_weight_in_range, + total_cash_greater_than, + total_cash_less_than, + total_cash_in_range, + total_cash_equals, + token_in_list_voting_weight_greater_than, + token_in_list_voting_weight_less_than, + token_in_list_voting_weight_in_range, + token_in_list_dividend_weight_greater_than, + token_in_list_dividend_weight_less_than, + token_in_list_dividend_weight_in_range, + token_in_list_amount_greater_than, + token_in_list_amount_less_than, + token_in_list_amount_in_range, + token_in_list_amount_equals +} from "./SDK/conditionNodes/Condition_MachineState"; + +export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./SDK/conditionNodes/Condition_MembershipOp"; + +export { operation_equals, operation_in_list, EnumOpcode } from "./SDK/conditionNodes/Condition_Operation"; + +export { + operation_by_operator_since_last_time_greater_than, + operation_by_operator_since_last_time_less_than, + operation_by_operator_since_last_time_in_range, + operation_global_since_last_time_greater_than, + operation_global_since_last_time_less_than, + operation_global_since_last_time_in_range, + operation_by_any_address_in_list_since_last_time_greater_than, + operation_by_any_address_in_list_since_last_time_less_than, + operation_by_any_address_in_list_since_last_time_in_range, + operation_by_each_address_in_list_since_last_time_greater_than, + operation_by_each_address_in_list_since_last_time_less_than, + operation_by_each_address_in_list_since_last_time_in_range +} from "./SDK/conditionNodes/Condition_OperationLog"; + +export { + operator_name_equals, + operator_role_equals, + operator_address_equals, + operator_role_greater_than, + operator_role_less_than, + operator_role_in_range, + operator_role_in_list, + operator_token_x_amount_greater_than, + operator_token_x_amount_less_than, + operator_token_x_amount_in_range, + operator_token_x_amount_equals, + operator_token_x_percentage_greater_than, + operator_token_x_percentage_less_than, + operator_token_x_percentage_in_range, + operator_token_x_percentage_equals, + operator_voting_weight_greater_than, + operator_voting_weight_less_than, + operator_voting_weight_in_range, + operator_dividend_weight_greater_than, + operator_dividend_weight_less_than, + operator_dividend_weight_in_range, + operator_withdrawable_cash_greater_than, + operator_withdrawable_cash_less_than, + operator_withdrawable_cash_in_range, + operator_withdrawable_dividends_greater_than, + operator_withdrawable_dividends_less_than, + operator_withdrawable_dividends_in_range, + operator_address_in_list +} from "./SDK/conditionNodes/Condition_Operator"; + +export { + enable_any_before_op_plugin_index_in_list, + enable_any_after_op_plugin_index_in_list, + enable_each_before_op_plugin_index_in_list, + enable_each_after_op_plugin_index_in_list, + disable_any_before_op_plugin_index_in_list, + disable_any_after_op_plugin_index_in_list, + disable_each_before_op_plugin_index_in_list, + disable_each_after_op_plugin_index_in_list, + enable_any_before_op_plugin_index_in_range, + enable_any_after_op_plugin_index_in_range, + enable_each_before_op_plugin_index_in_range, + enable_each_after_op_plugin_index_in_range, + disable_any_before_op_plugin_index_in_range, + disable_any_after_op_plugin_index_in_range, + disable_each_before_op_plugin_index_in_range, + disable_each_after_op_plugin_index_in_range, + are_all_plugins_before_operation, + are_all_plugins_after_operation, + is_any_plugin_before_operation, + is_any_plugin_after_operation, + add_plugin_any_level_equals, + add_plugin_any_level_in_list, + add_plugin_any_level_in_range, + add_plugin_any_level_greater_than, + add_plugin_any_level_less_than, + add_plugin_any_return_type_equals, + add_plugin_any_voting_rule_index_in_list, + add_any_voting_rule_is_absolute_majority, + add_any_voting_rule_approval_percentage_in_range, + add_any_voting_rule_token_class_contains +} from "./SDK/conditionNodes/Condition_PluginAndVoting"; + +export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./SDK/conditionNodes/Condition_Program"; + +export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./SDK/conditionNodes/Condition_TokenAndCash"; export { - deployDARC, - transpile, - DARC, - InitParam, - darcBinary, - DARCBinaryStruct, - DARC_VERSION, - ethers, - run -}; \ No newline at end of file + add_withdrawable_balance_any_amount_greater_than, + add_withdrawable_balance_any_amount_less_than, + add_withdrawable_balance_any_amount_in_range, + add_withdrawable_balance_any_amount_equals, + reduce_withdrawable_balance_any_amount_greater_than, + reduce_withdrawable_balance_any_amount_less_than, + reduce_withdrawable_balance_any_amount_in_range, + reduce_withdrawable_balance_any_amount_equals +} from "./SDK/conditionNodes/Condition_Withdrawable"; \ No newline at end of file diff --git a/darc-js/src/index.ts b/darc-js/src/index.ts index ff66f293..866caf6d 100644 --- a/darc-js/src/index.ts +++ b/darc-js/src/index.ts @@ -1,2 +1,517 @@ -import * as darcjs from './darcjs'; -export { darcjs }; \ No newline at end of file +// /** +// * Below are core darcjs +// */ +// import {deployDARC} from './deployDARC/deployDARC'; +// import { transpile } from './SDK/transpiler'; +// import { InitParam } from './DARC/DARC'; +// import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; + +// export { +// deployDARC, +// transpile, +// DARC, +// InitParam, +// darcBinary, +// DARCBinaryStruct, +// DARC_VERSION, +// ethers, +// }; + +// /** +// * Below are core interpreter functions for the By-law Script +// */ +// export { transpileAndRun } from "./SDK/runtime"; + +// /** +// * Below are all necessary functions for the SDK. +// */ +// import * as instructions from "./SDK/includes"; +// import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "./types/basicTypes"; +// import {ethers} from "ethers"; +// import * as DARC from "./DARC/DARC"; + +// import { +// OPCODE_ID_1_BATCH_MINT_TOKENS, +// OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, +// OPCODE_ID_3_BATCH_TRANSFER_TOKENS, +// OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO, +// OPCODE_ID_5_BATCH_BURN_TOKENS, +// OPCODE_ID_6_BATCH_BURN_TOKENS_FROM, +// OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS, +// OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS, +// OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS, +// OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES, +// OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES, +// OPCODE_ID_12_BATCH_ADD_PLUGINS, +// OPCODE_ID_13_BATCH_ENABLE_PLUGINS, +// OPCODE_ID_14_BATCH_DISABLE_PLUGINS, +// OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS, +// OPCODE_ID_16_BATCH_SET_PARAMETERS, +// OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES, +// OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES, +// OPCODE_ID_19_BATCH_ADD_VOTING_RULES, +// OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS, +// OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS, +// OPCODE_ID_22_ADD_EMERGENCY, +// OPCODE_ID_24_CALL_EMERGENCY, +// OPCODE_ID_25_CALL_CONTRACT_ABI, +// OPCODE_ID_26_PAY_CASH, +// OPCODE_ID_27_OFFER_DIVIDENDS, +// OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS, +// OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND, +// OPCODE_ID_31_ADD_STORAGE_STRING, +// OPCODE_ID_32_VOTE, +// OPCODE_ID_33_EXECUTE_PENDING_PROGRAM, +// OPCODE_ID_34_END_EMERGENCY, +// OPCODE_ID_35_UPGRADE_TO_ADDRESS, +// OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, +// OPCODE_ID_37_UPGRADE_TO_THE_LATEST +// } from "./SDK/opcodes/opcodeTable"; + +// /** +// * The core function of the SDK. It takes in a list of operations and a wallet, and then sends the operations to the DARC contract. This is different from the By-law Script, which compile and run the code directly. +// * @param operationList The list of operations to be sent to the DARC contract +// * @param wallet The wallet to be used to sign the transaction (provider must be set) +// * @param targetDARCAddress The address of the DARC contract to be used +// * @param notes The notes to be attached to the program +// * @param delegateToAddress If the signer is not the operator, but the operator has approved the signer to sign on its behalf, then the signer can set this parameter to the operator's address. Otherwise, leave it undefined. +// */ +// export async function executeOperationList( +// operationList: OperationStruct[], +// wallet: ethers.Wallet, +// targetDARCAddress: string, +// notes?: string, +// delegateToAddress?: string +// ) { + +// const operatorAddress = delegateToAddress? delegateToAddress : wallet.address; +// for (let i = 0; i < operationList.length; i++) { +// operationList[i].operatorAddress = operatorAddress; +// } +// const program:ProgramStruct = { +// programOperatorAddress: operatorAddress, +// operations: operationList, +// notes: notes? notes : "" +// }; + +// const attachedDARC = new DARC.DARC({ +// address: targetDARCAddress, +// version: DARC.DARC_VERSION.Latest, +// wallet: wallet, +// }); + +// await attachedDARC.entrance(program); +// } + + + + +// export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); +// return operation; +// } + +// export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[] | number[], votingWeightArray: bigint[] | number[], dividendWeightArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); +// return operation; +// } + +// export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); +// return operation; +// } + +// export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); +// return operation; +// } + +// export function batch_burn_tokens(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); +// return operation; +// } + +// export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); +// return operation; +// } + +// export function batch_add_memberships(addressArray: string[], roleArray: bigint[] | number[], nameArray: string[]): OperationStruct { +// let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); +// return operation; +// } + +// export function batch_suspend_memberships(addressArray: string[]): OperationStruct { +// let operation = OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS(addressArray); +// return operation; +// } + +// export function batch_resume_memberships(addressArray: string[]): OperationStruct { +// let operation = OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS(addressArray); +// return operation; +// } + +// export function batch_change_member_roles(addressArray: string[], roleArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); +// return operation; +// } + +// export function batch_change_member_names(addressArray: string[], nameArray: string[]): OperationStruct { +// let operation = OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES(addressArray, nameArray); +// return operation; +// } + +// export function batch_add_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { +// if (pluginArray instanceof Array && typeof pluginArray[0] !== "object") { +// let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); +// return operation; +// } +// let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); +// return operation; +// } + +// export function batch_enable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { +// let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); +// return operation; +// } + +// export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { +// let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); +// return operation; +// } + +// export function batch_add_and_enable_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { +// let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); +// return operation; +// } + +// export function batch_set_parameters(parameterIndexArray: bigint[] | number[], parameterValueArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); +// return operation; +// } + +// export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); +// return operation; +// } + +// export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); +// return operation; +// } + +// export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]): OperationStruct { +// let operation = OPCODE_ID_19_BATCH_ADD_VOTING_RULES(ruleArray); +// return operation; +// } + +// export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { +// let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); +// return operation; +// } + +// export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { +// let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); +// return operation; +// } + +// export function add_emergency(emergencyAddressArray: string[]): OperationStruct { +// let operation = OPCODE_ID_22_ADD_EMERGENCY(emergencyAddressArray); +// return operation; +// } + +// export function call_emergency(emergencyAddressArrayIndex: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); +// return operation; +// } + +// export function call_contract_abi(contractAddress: string, abi: string | Uint8Array, value: bigint): OperationStruct { +// let operation = OPCODE_ID_25_CALL_CONTRACT_ABI(contractAddress, abi, value); +// return operation; +// } + +// export function pay_cash(amount: bigint, paymentType: bigint, dividendable: bigint): OperationStruct { +// let operation = OPCODE_ID_26_PAY_CASH(amount, paymentType, dividendable); +// return operation; +// } + +// export function offer_dividends(): OperationStruct { +// let operation = OPCODE_ID_27_OFFER_DIVIDENDS(); +// return operation; +// } + +// export function set_approval_for_all_operations(address: string): OperationStruct { +// let operation = OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS(address); +// return operation; +// } + +// export function batch_burn_tokens_and_refund(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[]): OperationStruct { +// let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); +// return operation; +// } + +// export function add_storage_string(value: string): OperationStruct { +// let operation = OPCODE_ID_31_ADD_STORAGE_STRING(value); +// return operation; +// } + +// export function vote(voteArray: boolean[]): OperationStruct { +// let operation = OPCODE_ID_32_VOTE(voteArray); +// return operation; +// } + +// export function execute_pending_program(): OperationStruct { +// let operation = OPCODE_ID_33_EXECUTE_PENDING_PROGRAM(); +// return operation; +// } + +// export function end_emergency(): OperationStruct { +// let operation = OPCODE_ID_34_END_EMERGENCY(); +// return operation; +// } + +// export function upgrade_to_address(newAddress: string): OperationStruct { +// let operation = OPCODE_ID_35_UPGRADE_TO_ADDRESS(newAddress); +// return operation; +// } + +// export function confirm_upgrade_from_address(newAddress: string): OperationStruct { +// let operation = OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS(newAddress); +// return operation; +// } + +// export function upgrade_to_the_latest(): OperationStruct { +// let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); +// return operation; +// } + + +// /** +// * Below are all condition nodes for composing plugins +// */ +// export { +// batch_op_size_greater_than, +// batch_op_size_less_than, +// batch_op_size_in_range, +// batch_op_size_equals, +// batch_op_each_target_addresses_equals, +// batch_op_each_target_addresses_in_list, +// batch_op_each_target_addresses_in_member_role, +// batch_op_any_target_address_equals, +// batch_op_any_target_address_in_list, +// batch_op_any_target_address_in_member_role, +// batch_op_each_target_address_to_itself, +// batch_op_any_target_address_to_itself, +// batch_op_each_source_address_equals, +// batch_op_each_source_address_in_list, +// batch_op_each_source_address_in_member_role, +// batch_op_any_source_address_equal, +// batch_op_any_source_address_in_list, +// batch_op_any_source_address_in_member_role, +// batch_op_each_source_address_from_itself, +// batch_op_any_source_address_from_itself, +// batch_op_each_token_class_equals, +// batch_op_each_token_class_in_list, +// batch_op_each_token_class_in_range, +// batch_op_each_token_class_greater_than, +// batch_op_each_token_class_less_than, +// batch_op_total_token_amount_greater_than, +// batch_op_total_token_amount_less_than, +// batch_op_total_token_amount_in_range, +// batch_op_total_token_amount_equals, +// batch_op_any_token_amount_greater_than, +// batch_op_any_token_amount_less_than, +// batch_op_any_token_amount_in_range, +// batch_op_any_token_amount_equals, +// batch_op_any_token_class_greater_than, +// batch_op_any_token_class_less_than, +// batch_op_any_token_class_in_range, +// batch_op_any_token_class_equals, +// batch_op_any_token_class_in_list, +// batch_op_each_source_address_in_member_role_list, +// batch_op_any_source_address_in_member_role_list, +// batch_op_each_target_address_in_member_role_list, +// batch_op_any_target_address_in_member_role_list, +// batch_op_each_target_address_withdrawable_cash_greater_than, +// batch_op_each_target_address_withdrawable_cash_less_than, +// batch_op_each_target_address_withdrawable_cash_in_range, +// batch_op_each_target_address_withdrawable_cash_equals, +// batch_op_any_target_address_withdrawable_cash_greater_than, +// batch_op_any_target_address_withdrawable_cash_less_than, +// batch_op_any_target_address_withdrawable_cash_in_range, +// batch_op_each_target_address_total_voting_weight_greater_than, +// batch_op_each_target_address_total_voting_weight_less_than, +// batch_op_each_target_address_total_voting_weight_in_range, +// batch_op_each_target_address_total_voting_weight_equals, +// batch_op_any_target_address_total_voting_weight_greater_than, +// batch_op_any_target_address_total_voting_weight_less_than, +// batch_op_any_target_address_total_voting_weight_in_range, +// batch_op_each_target_address_total_dividend_weight_greater_than, +// batch_op_each_target_address_total_dividend_weight_less_than, +// batch_op_each_target_address_total_dividend_weight_in_range, +// batch_op_any_target_address_total_dividend_weight_greater_than, +// batch_op_any_target_address_total_dividend_weight_less_than, +// batch_op_any_target_address_total_dividend_weight_in_range, +// batch_op_each_target_address_owns_token_x_greater_than, +// batch_op_each_target_address_owns_token_x_less_than, +// batch_op_each_target_address_owns_token_x_in_range, +// batch_op_any_target_address_owns_token_x_greater_than, +// batch_op_any_target_address_owns_token_x_less_than, +// batch_op_any_target_address_owns_token_x_in_range +// } from "./SDK/conditionNodes/Condition_BatchOp"; + +// export { +// create_token_classes_any_token_dividend_weight_greater_than, +// create_token_classes_any_token_dividend_weight_less_than, +// create_token_classes_any_token_dividend_weight_in_range, +// create_token_classes_any_token_dividend_weight_equals, +// create_token_classes_any_voting_weight_greater_than, +// create_token_classes_any_voting_weight_less_than, +// create_token_classes_any_voting_weight_in_range, +// create_token_classes_any_voting_weight_equals +// } from "./SDK/conditionNodes/Condition_CreateTokenClass"; + +// export { +// timestamp_greater_than, +// timestamp_less_than, +// timestamp_in_range, +// date_year_greater_than, +// date_year_less_than, +// date_year_in_range, +// date_month_greater_than, +// date_month_less_than, +// date_month_in_range, +// date_day_greater_than, +// date_day_less_than, +// date_day_in_range, +// date_hour_greater_than, +// date_hour_less_than, +// date_hour_in_range, +// address_voting_weight_greater_than, +// address_voting_weight_less_than, +// address_voting_weight_in_range, +// address_dividend_weight_greater_than, +// address_dividend_weight_less_than, +// address_dividend_weight_in_range, +// address_token_x_greater_than, +// address_token_x_less_than, +// address_token_x_in_range, +// total_voting_weight_greater_than, +// total_voting_weight_less_than, +// total_voting_weight_in_range, +// total_dividend_weight_greater_than, +// total_dividend_weight_less_than, +// total_dividend_weight_in_range, +// total_cash_greater_than, +// total_cash_less_than, +// total_cash_in_range, +// total_cash_equals, +// token_in_list_voting_weight_greater_than, +// token_in_list_voting_weight_less_than, +// token_in_list_voting_weight_in_range, +// token_in_list_dividend_weight_greater_than, +// token_in_list_dividend_weight_less_than, +// token_in_list_dividend_weight_in_range, +// token_in_list_amount_greater_than, +// token_in_list_amount_less_than, +// token_in_list_amount_in_range, +// token_in_list_amount_equals +// } from "./SDK/conditionNodes/Condition_MachineState"; + +// export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./SDK/conditionNodes/Condition_MembershipOp"; + +// export { operation_equals, operation_in_list, EnumOpcode } from "./SDK/conditionNodes/Condition_Operation"; + +// export { +// operation_by_operator_since_last_time_greater_than, +// operation_by_operator_since_last_time_less_than, +// operation_by_operator_since_last_time_in_range, +// operation_global_since_last_time_greater_than, +// operation_global_since_last_time_less_than, +// operation_global_since_last_time_in_range, +// operation_by_any_address_in_list_since_last_time_greater_than, +// operation_by_any_address_in_list_since_last_time_less_than, +// operation_by_any_address_in_list_since_last_time_in_range, +// operation_by_each_address_in_list_since_last_time_greater_than, +// operation_by_each_address_in_list_since_last_time_less_than, +// operation_by_each_address_in_list_since_last_time_in_range +// } from "./SDK/conditionNodes/Condition_OperationLog"; + +// export { +// operator_name_equals, +// operator_role_equals, +// operator_address_equals, +// operator_role_greater_than, +// operator_role_less_than, +// operator_role_in_range, +// operator_role_in_list, +// operator_token_x_amount_greater_than, +// operator_token_x_amount_less_than, +// operator_token_x_amount_in_range, +// operator_token_x_amount_equals, +// operator_token_x_percentage_greater_than, +// operator_token_x_percentage_less_than, +// operator_token_x_percentage_in_range, +// operator_token_x_percentage_equals, +// operator_voting_weight_greater_than, +// operator_voting_weight_less_than, +// operator_voting_weight_in_range, +// operator_dividend_weight_greater_than, +// operator_dividend_weight_less_than, +// operator_dividend_weight_in_range, +// operator_withdrawable_cash_greater_than, +// operator_withdrawable_cash_less_than, +// operator_withdrawable_cash_in_range, +// operator_withdrawable_dividends_greater_than, +// operator_withdrawable_dividends_less_than, +// operator_withdrawable_dividends_in_range, +// operator_address_in_list +// } from "./SDK/conditionNodes/Condition_Operator"; + +// export { +// enable_any_before_op_plugin_index_in_list, +// enable_any_after_op_plugin_index_in_list, +// enable_each_before_op_plugin_index_in_list, +// enable_each_after_op_plugin_index_in_list, +// disable_any_before_op_plugin_index_in_list, +// disable_any_after_op_plugin_index_in_list, +// disable_each_before_op_plugin_index_in_list, +// disable_each_after_op_plugin_index_in_list, +// enable_any_before_op_plugin_index_in_range, +// enable_any_after_op_plugin_index_in_range, +// enable_each_before_op_plugin_index_in_range, +// enable_each_after_op_plugin_index_in_range, +// disable_any_before_op_plugin_index_in_range, +// disable_any_after_op_plugin_index_in_range, +// disable_each_before_op_plugin_index_in_range, +// disable_each_after_op_plugin_index_in_range, +// are_all_plugins_before_operation, +// are_all_plugins_after_operation, +// is_any_plugin_before_operation, +// is_any_plugin_after_operation, +// add_plugin_any_level_equals, +// add_plugin_any_level_in_list, +// add_plugin_any_level_in_range, +// add_plugin_any_level_greater_than, +// add_plugin_any_level_less_than, +// add_plugin_any_return_type_equals, +// add_plugin_any_voting_rule_index_in_list, +// add_any_voting_rule_is_absolute_majority, +// add_any_voting_rule_approval_percentage_in_range, +// add_any_voting_rule_token_class_contains +// } from "./SDK/conditionNodes/Condition_PluginAndVoting"; + +// export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./SDK/conditionNodes/Condition_Program"; + +// export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./SDK/conditionNodes/Condition_TokenAndCash"; + +// export { +// add_withdrawable_balance_any_amount_greater_than, +// add_withdrawable_balance_any_amount_less_than, +// add_withdrawable_balance_any_amount_in_range, +// add_withdrawable_balance_any_amount_equals, +// reduce_withdrawable_balance_any_amount_greater_than, +// reduce_withdrawable_balance_any_amount_less_than, +// reduce_withdrawable_balance_any_amount_in_range, +// reduce_withdrawable_balance_any_amount_equals +// } from "./SDK/conditionNodes/Condition_Withdrawable"; \ No newline at end of file diff --git a/darc-js/src/sdk.ts b/darc-js/src/sdk.ts index df7e27ee..e69de29b 100644 --- a/darc-js/src/sdk.ts +++ b/darc-js/src/sdk.ts @@ -1,517 +0,0 @@ -/** - * Below are core darcjs - */ -import {deployDARC} from './deployDARC/deployDARC'; -import { transpile } from './SDK/transpiler'; -import { InitParam } from './DARC/DARC'; -import { darcBinary, DARCBinaryStruct, DARC_VERSION } from './darcBinary/darcBinary'; - -export { - deployDARC, - transpile, - DARC, - InitParam, - darcBinary, - DARCBinaryStruct, - DARC_VERSION, - ethers, -}; - -/** - * Below are core interpreter functions for the By-law Script - */ -export { transpileAndRun } from "./SDK/runtime"; - -/** - * Below are all necessary functions for the SDK. - */ -import * as instructions from "./SDK/includes"; -import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct, PluginStruct, PluginStructWithNode } from "./types/basicTypes"; -import {ethers} from "ethers"; -import * as DARC from "./DARC/DARC"; - -import { - OPCODE_ID_1_BATCH_MINT_TOKENS, - OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, - OPCODE_ID_3_BATCH_TRANSFER_TOKENS, - OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO, - OPCODE_ID_5_BATCH_BURN_TOKENS, - OPCODE_ID_6_BATCH_BURN_TOKENS_FROM, - OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS, - OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS, - OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS, - OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES, - OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES, - OPCODE_ID_12_BATCH_ADD_PLUGINS, - OPCODE_ID_13_BATCH_ENABLE_PLUGINS, - OPCODE_ID_14_BATCH_DISABLE_PLUGINS, - OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS, - OPCODE_ID_16_BATCH_SET_PARAMETERS, - OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES, - OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES, - OPCODE_ID_19_BATCH_ADD_VOTING_RULES, - OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS, - OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS, - OPCODE_ID_22_ADD_EMERGENCY, - OPCODE_ID_24_CALL_EMERGENCY, - OPCODE_ID_25_CALL_CONTRACT_ABI, - OPCODE_ID_26_PAY_CASH, - OPCODE_ID_27_OFFER_DIVIDENDS, - OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS, - OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND, - OPCODE_ID_31_ADD_STORAGE_STRING, - OPCODE_ID_32_VOTE, - OPCODE_ID_33_EXECUTE_PENDING_PROGRAM, - OPCODE_ID_34_END_EMERGENCY, - OPCODE_ID_35_UPGRADE_TO_ADDRESS, - OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS, - OPCODE_ID_37_UPGRADE_TO_THE_LATEST -} from "./SDK/opcodes/opcodeTable"; - -/** - * The core function of the SDK. It takes in a list of operations and a wallet, and then sends the operations to the DARC contract. This is different from the By-law Script, which compile and run the code directly. - * @param operationList The list of operations to be sent to the DARC contract - * @param wallet The wallet to be used to sign the transaction (provider must be set) - * @param targetDARCAddress The address of the DARC contract to be used - * @param notes The notes to be attached to the program - * @param delegateToAddress If the signer is not the operator, but the operator has approved the signer to sign on its behalf, then the signer can set this parameter to the operator's address. Otherwise, leave it undefined. - */ -export async function executeOperationList( - operationList: OperationStruct[], - wallet: ethers.Wallet, - targetDARCAddress: string, - notes?: string, - delegateToAddress?: string - ) { - - const operatorAddress = delegateToAddress? delegateToAddress : wallet.address; - for (let i = 0; i < operationList.length; i++) { - operationList[i].operatorAddress = operatorAddress; - } - const program:ProgramStruct = { - programOperatorAddress: operatorAddress, - operations: operationList, - notes: notes? notes : "" - }; - - const attachedDARC = new DARC.DARC({ - address: targetDARCAddress, - version: DARC.DARC_VERSION.Latest, - wallet: wallet, - }); - - await attachedDARC.entrance(program); -} - - - - -export function batch_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_1_BATCH_MINT_TOKENS(addressArray, tokenClassArray, amountArray); - return operation; -} - -export function batch_create_token_classes(nameArray: string[], tokenIndexArray: bigint[] | number[], votingWeightArray: bigint[] | number[], dividendWeightArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES(nameArray, tokenIndexArray, votingWeightArray, dividendWeightArray); - return operation; -} - -export function batch_transfer_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_3_BATCH_TRANSFER_TOKENS(addressArray, tokenClassArray, amountArray); - return operation; -} - -export function batch_transfer_tokens_from_to(fromAddressArray: string[], toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_4_BATCH_TRANSFER_TOKENS_FROM_TO(fromAddressArray, toAddressArray, tokenClassArray, amountArray); - return operation; -} - -export function batch_burn_tokens(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_5_BATCH_BURN_TOKENS(tokenClassArray, amountArray); - return operation; -} - -export function batch_burn_tokens_from(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_6_BATCH_BURN_TOKENS_FROM(addressArray, tokenClassArray, amountArray); - return operation; -} - -export function batch_add_memberships(addressArray: string[], roleArray: bigint[] | number[], nameArray: string[]): OperationStruct { - let operation = OPCODE_ID_7_BATCH_ADD_MEMBERSHIPS(addressArray, roleArray, nameArray); - return operation; -} - -export function batch_suspend_memberships(addressArray: string[]): OperationStruct { - let operation = OPCODE_ID_8_BATCH_SUSPEND_MEMBERSHIPS(addressArray); - return operation; -} - -export function batch_resume_memberships(addressArray: string[]): OperationStruct { - let operation = OPCODE_ID_9_BATCH_RESUME_MEMBERSHIPS(addressArray); - return operation; -} - -export function batch_change_member_roles(addressArray: string[], roleArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_10_BATCH_CHANGE_MEMBER_ROLES(addressArray, roleArray); - return operation; -} - -export function batch_change_member_names(addressArray: string[], nameArray: string[]): OperationStruct { - let operation = OPCODE_ID_11_BATCH_CHANGE_MEMBER_NAMES(addressArray, nameArray); - return operation; -} - -export function batch_add_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { - if (pluginArray instanceof Array && typeof pluginArray[0] !== "object") { - let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); - return operation; - } - let operation = OPCODE_ID_12_BATCH_ADD_PLUGINS(pluginArray); - return operation; -} - -export function batch_enable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { - let operation = OPCODE_ID_13_BATCH_ENABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); - return operation; -} - -export function batch_disable_plugins(pluginIndexArray: bigint[] | number[], isBeforeOperationArray: boolean[]): OperationStruct { - let operation = OPCODE_ID_14_BATCH_DISABLE_PLUGINS(pluginIndexArray, isBeforeOperationArray); - return operation; -} - -export function batch_add_and_enable_plugins(pluginArray: PluginStruct[] | PluginStructWithNode[]): OperationStruct { - let operation = OPCODE_ID_15_BATCH_ADD_AND_ENABLE_PLUGINS(pluginArray); - return operation; -} - -export function batch_set_parameters(parameterIndexArray: bigint[] | number[], parameterValueArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_16_BATCH_SET_PARAMETERS(parameterIndexArray, parameterValueArray); - return operation; -} - -export function batch_add_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_17_BATCH_ADD_WITHDRAWABLE_BALANCES(addressArray, amountArray); - return operation; -} - -export function batch_reduce_withdrawable_balances(addressArray: string[], amountArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_18_BATCH_REDUCE_WITHDRAWABLE_BALANCES(addressArray, amountArray); - return operation; -} - -export function batch_add_voting_rules(ruleArray: VotingRuleStruct[]): OperationStruct { - let operation = OPCODE_ID_19_BATCH_ADD_VOTING_RULES(ruleArray); - return operation; -} - -export function batch_pay_to_mint_tokens(addressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { - let operation = OPCODE_ID_20_BATCH_PAY_TO_MINT_TOKENS(addressArray, tokenClassArray, amountArray, priceArray, dividendable); - return operation; -} - -export function batch_pay_to_transfer_tokens( toAddressArray: string[], tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[], dividendable: bigint): OperationStruct { - let operation = OPCODE_ID_21_BATCH_PAY_TO_TRANSFER_TOKENS(toAddressArray, tokenClassArray, amountArray, priceArray, dividendable); - return operation; -} - -export function add_emergency(emergencyAddressArray: string[]): OperationStruct { - let operation = OPCODE_ID_22_ADD_EMERGENCY(emergencyAddressArray); - return operation; -} - -export function call_emergency(emergencyAddressArrayIndex: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_24_CALL_EMERGENCY(emergencyAddressArrayIndex); - return operation; -} - -export function call_contract_abi(contractAddress: string, abi: string | Uint8Array, value: bigint): OperationStruct { - let operation = OPCODE_ID_25_CALL_CONTRACT_ABI(contractAddress, abi, value); - return operation; -} - -export function pay_cash(amount: bigint, paymentType: bigint, dividendable: bigint): OperationStruct { - let operation = OPCODE_ID_26_PAY_CASH(amount, paymentType, dividendable); - return operation; -} - -export function offer_dividends(): OperationStruct { - let operation = OPCODE_ID_27_OFFER_DIVIDENDS(); - return operation; -} - -export function set_approval_for_all_operations(address: string): OperationStruct { - let operation = OPCODE_ID_29_SET_APPROVAL_FOR_ALL_OPERATIONS(address); - return operation; -} - -export function batch_burn_tokens_and_refund(tokenClassArray: bigint[] | number[], amountArray: bigint[] | number[], priceArray: bigint[] | number[]): OperationStruct { - let operation = OPCODE_ID_30_BATCH_BURN_TOKENS_AND_REFUND(tokenClassArray, amountArray, priceArray); - return operation; -} - -export function add_storage_string(value: string): OperationStruct { - let operation = OPCODE_ID_31_ADD_STORAGE_STRING(value); - return operation; -} - -export function vote(voteArray: boolean[]): OperationStruct { - let operation = OPCODE_ID_32_VOTE(voteArray); - return operation; -} - -export function execute_pending_program(): OperationStruct { - let operation = OPCODE_ID_33_EXECUTE_PENDING_PROGRAM(); - return operation; -} - -export function end_emergency(): OperationStruct { - let operation = OPCODE_ID_34_END_EMERGENCY(); - return operation; -} - -export function upgrade_to_address(newAddress: string): OperationStruct { - let operation = OPCODE_ID_35_UPGRADE_TO_ADDRESS(newAddress); - return operation; -} - -export function confirm_upgrade_from_address(newAddress: string): OperationStruct { - let operation = OPCODE_ID_36_CONFIRM_UPGRAED_FROM_ADDRESS(newAddress); - return operation; -} - -export function upgrade_to_the_latest(): OperationStruct { - let operation = OPCODE_ID_37_UPGRADE_TO_THE_LATEST(); - return operation; -} - - -/** - * Below are all condition nodes for composing plugins - */ -export { - batch_op_size_greater_than, - batch_op_size_less_than, - batch_op_size_in_range, - batch_op_size_equals, - batch_op_each_target_addresses_equals, - batch_op_each_target_addresses_in_list, - batch_op_each_target_addresses_in_member_role, - batch_op_any_target_address_equals, - batch_op_any_target_address_in_list, - batch_op_any_target_address_in_member_role, - batch_op_each_target_address_to_itself, - batch_op_any_target_address_to_itself, - batch_op_each_source_address_equals, - batch_op_each_source_address_in_list, - batch_op_each_source_address_in_member_role, - batch_op_any_source_address_equal, - batch_op_any_source_address_in_list, - batch_op_any_source_address_in_member_role, - batch_op_each_source_address_from_itself, - batch_op_any_source_address_from_itself, - batch_op_each_token_class_equals, - batch_op_each_token_class_in_list, - batch_op_each_token_class_in_range, - batch_op_each_token_class_greater_than, - batch_op_each_token_class_less_than, - batch_op_total_token_amount_greater_than, - batch_op_total_token_amount_less_than, - batch_op_total_token_amount_in_range, - batch_op_total_token_amount_equals, - batch_op_any_token_amount_greater_than, - batch_op_any_token_amount_less_than, - batch_op_any_token_amount_in_range, - batch_op_any_token_amount_equals, - batch_op_any_token_class_greater_than, - batch_op_any_token_class_less_than, - batch_op_any_token_class_in_range, - batch_op_any_token_class_equals, - batch_op_any_token_class_in_list, - batch_op_each_source_address_in_member_role_list, - batch_op_any_source_address_in_member_role_list, - batch_op_each_target_address_in_member_role_list, - batch_op_any_target_address_in_member_role_list, - batch_op_each_target_address_withdrawable_cash_greater_than, - batch_op_each_target_address_withdrawable_cash_less_than, - batch_op_each_target_address_withdrawable_cash_in_range, - batch_op_each_target_address_withdrawable_cash_equals, - batch_op_any_target_address_withdrawable_cash_greater_than, - batch_op_any_target_address_withdrawable_cash_less_than, - batch_op_any_target_address_withdrawable_cash_in_range, - batch_op_each_target_address_total_voting_weight_greater_than, - batch_op_each_target_address_total_voting_weight_less_than, - batch_op_each_target_address_total_voting_weight_in_range, - batch_op_each_target_address_total_voting_weight_equals, - batch_op_any_target_address_total_voting_weight_greater_than, - batch_op_any_target_address_total_voting_weight_less_than, - batch_op_any_target_address_total_voting_weight_in_range, - batch_op_each_target_address_total_dividend_weight_greater_than, - batch_op_each_target_address_total_dividend_weight_less_than, - batch_op_each_target_address_total_dividend_weight_in_range, - batch_op_any_target_address_total_dividend_weight_greater_than, - batch_op_any_target_address_total_dividend_weight_less_than, - batch_op_any_target_address_total_dividend_weight_in_range, - batch_op_each_target_address_owns_token_x_greater_than, - batch_op_each_target_address_owns_token_x_less_than, - batch_op_each_target_address_owns_token_x_in_range, - batch_op_any_target_address_owns_token_x_greater_than, - batch_op_any_target_address_owns_token_x_less_than, - batch_op_any_target_address_owns_token_x_in_range -} from "./SDK/conditionNodes/Condition_BatchOp"; - -export { - create_token_classes_any_token_dividend_weight_greater_than, - create_token_classes_any_token_dividend_weight_less_than, - create_token_classes_any_token_dividend_weight_in_range, - create_token_classes_any_token_dividend_weight_equals, - create_token_classes_any_voting_weight_greater_than, - create_token_classes_any_voting_weight_less_than, - create_token_classes_any_voting_weight_in_range, - create_token_classes_any_voting_weight_equals -} from "./SDK/conditionNodes/Condition_CreateTokenClass"; - -export { - timestamp_greater_than, - timestamp_less_than, - timestamp_in_range, - date_year_greater_than, - date_year_less_than, - date_year_in_range, - date_month_greater_than, - date_month_less_than, - date_month_in_range, - date_day_greater_than, - date_day_less_than, - date_day_in_range, - date_hour_greater_than, - date_hour_less_than, - date_hour_in_range, - address_voting_weight_greater_than, - address_voting_weight_less_than, - address_voting_weight_in_range, - address_dividend_weight_greater_than, - address_dividend_weight_less_than, - address_dividend_weight_in_range, - address_token_x_greater_than, - address_token_x_less_than, - address_token_x_in_range, - total_voting_weight_greater_than, - total_voting_weight_less_than, - total_voting_weight_in_range, - total_dividend_weight_greater_than, - total_dividend_weight_less_than, - total_dividend_weight_in_range, - total_cash_greater_than, - total_cash_less_than, - total_cash_in_range, - total_cash_equals, - token_in_list_voting_weight_greater_than, - token_in_list_voting_weight_less_than, - token_in_list_voting_weight_in_range, - token_in_list_dividend_weight_greater_than, - token_in_list_dividend_weight_less_than, - token_in_list_dividend_weight_in_range, - token_in_list_amount_greater_than, - token_in_list_amount_less_than, - token_in_list_amount_in_range, - token_in_list_amount_equals -} from "./SDK/conditionNodes/Condition_MachineState"; - -export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./SDK/conditionNodes/Condition_MembershipOp"; - -export { operation_equals, operation_in_list, EnumOpcode } from "./SDK/conditionNodes/Condition_Operation"; - -export { - operation_by_operator_since_last_time_greater_than, - operation_by_operator_since_last_time_less_than, - operation_by_operator_since_last_time_in_range, - operation_global_since_last_time_greater_than, - operation_global_since_last_time_less_than, - operation_global_since_last_time_in_range, - operation_by_any_address_in_list_since_last_time_greater_than, - operation_by_any_address_in_list_since_last_time_less_than, - operation_by_any_address_in_list_since_last_time_in_range, - operation_by_each_address_in_list_since_last_time_greater_than, - operation_by_each_address_in_list_since_last_time_less_than, - operation_by_each_address_in_list_since_last_time_in_range -} from "./SDK/conditionNodes/Condition_OperationLog"; - -export { - operator_name_equals, - operator_role_equals, - operator_address_equals, - operator_role_greater_than, - operator_role_less_than, - operator_role_in_range, - operator_role_in_list, - operator_token_x_amount_greater_than, - operator_token_x_amount_less_than, - operator_token_x_amount_in_range, - operator_token_x_amount_equals, - operator_token_x_percentage_greater_than, - operator_token_x_percentage_less_than, - operator_token_x_percentage_in_range, - operator_token_x_percentage_equals, - operator_voting_weight_greater_than, - operator_voting_weight_less_than, - operator_voting_weight_in_range, - operator_dividend_weight_greater_than, - operator_dividend_weight_less_than, - operator_dividend_weight_in_range, - operator_withdrawable_cash_greater_than, - operator_withdrawable_cash_less_than, - operator_withdrawable_cash_in_range, - operator_withdrawable_dividends_greater_than, - operator_withdrawable_dividends_less_than, - operator_withdrawable_dividends_in_range, - operator_address_in_list -} from "./SDK/conditionNodes/Condition_Operator"; - -export { - enable_any_before_op_plugin_index_in_list, - enable_any_after_op_plugin_index_in_list, - enable_each_before_op_plugin_index_in_list, - enable_each_after_op_plugin_index_in_list, - disable_any_before_op_plugin_index_in_list, - disable_any_after_op_plugin_index_in_list, - disable_each_before_op_plugin_index_in_list, - disable_each_after_op_plugin_index_in_list, - enable_any_before_op_plugin_index_in_range, - enable_any_after_op_plugin_index_in_range, - enable_each_before_op_plugin_index_in_range, - enable_each_after_op_plugin_index_in_range, - disable_any_before_op_plugin_index_in_range, - disable_any_after_op_plugin_index_in_range, - disable_each_before_op_plugin_index_in_range, - disable_each_after_op_plugin_index_in_range, - are_all_plugins_before_operation, - are_all_plugins_after_operation, - is_any_plugin_before_operation, - is_any_plugin_after_operation, - add_plugin_any_level_equals, - add_plugin_any_level_in_list, - add_plugin_any_level_in_range, - add_plugin_any_level_greater_than, - add_plugin_any_level_less_than, - add_plugin_any_return_type_equals, - add_plugin_any_voting_rule_index_in_list, - add_any_voting_rule_is_absolute_majority, - add_any_voting_rule_approval_percentage_in_range, - add_any_voting_rule_token_class_contains -} from "./SDK/conditionNodes/Condition_PluginAndVoting"; - -export { program_op_length_greater_than, program_op_length_less_than, program_op_length_in_range, program_op_length_equals, program_contains_op, program_contains_op_in_list, program_every_op_equals, program_every_op_in_list } from "./SDK/conditionNodes/Condition_Program"; - -export { token_x_op_any_price_greater_than, token_x_op_any_price_less_than, token_x_op_any_price_in_range, token_x_op_any_price_equals } from "./SDK/conditionNodes/Condition_TokenAndCash"; - -export { - add_withdrawable_balance_any_amount_greater_than, - add_withdrawable_balance_any_amount_less_than, - add_withdrawable_balance_any_amount_in_range, - add_withdrawable_balance_any_amount_equals, - reduce_withdrawable_balance_any_amount_greater_than, - reduce_withdrawable_balance_any_amount_less_than, - reduce_withdrawable_balance_any_amount_in_range, - reduce_withdrawable_balance_any_amount_equals -} from "./SDK/conditionNodes/Condition_Withdrawable"; \ No newline at end of file diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index 59bb14c5..ef794d38 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList, operator_address_equals} from "../../src/sdk"; +import {executeOperationList, operator_address_equals} from "../../src/darcjs"; import { deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/darcjs"; import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index 71c4c00a..c76bcfb1 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -1,10 +1,10 @@ -import {executeOperationList} from "../../src/sdk"; +import {executeOperationList} from "../../src/darcjs"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/darcjs"; import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; import { transpile } from "../../src/darcjs"; diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 837673e3..727964f5 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList} from "../../src/sdk"; +import {executeOperationList} from "../../src/darcjs"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/darcjs"; import {or, node, and, expression} from "../../src/SDK/Node"; diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts index 235b3569..87439a2a 100644 --- a/darc-js/tests/sdk-test/sdk-test.ts +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList} from "../../src/sdk"; +import {executeOperationList} from "../../src/darcjs"; import {run, deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/sdk"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/darcjs"; import {or, node, and, expression} from "../../src/SDK/Node"; From f584e120a39c559630a9753a7678f83cf8a0ea7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 13 Feb 2024 21:46:08 -0600 Subject: [PATCH 33/62] Update Getting Started.md --- .../docs/By-law Script/Getting Started.md | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/darc-docs/docs/By-law Script/Getting Started.md b/darc-docs/docs/By-law Script/Getting Started.md index 210ab4c7..545a53b5 100644 --- a/darc-docs/docs/By-law Script/Getting Started.md +++ b/darc-docs/docs/By-law Script/Getting Started.md @@ -7,6 +7,58 @@ import TabItem from '@theme/TabItem'; # Getting Started -## What is By-law Script? +## By-law Script = JavaScript + Operator Overloading -By-law Script is the first programming language for describing the operations and rules for a DARC-based crypto company. \ No newline at end of file +By-law Script is the first programming language for describing the operations and rules for a DARC-based crypto company. It is a domain-specific language (DSL) that is designed to be easy to read and write, and to be used by non-programmers. It is based on JavaScript, and adds operator overloading to make it easier to write and read. + +## Your First By-law Script Program + +Here is a simple By-law Script program that defines the common stock of a company. Each share of common stock has voting weight 1 and dividend weight 1. This token class is called `token_0`, and the token index is 0. + +```javascript +batch_create_token_classes( + ['token_0'], // token names + [0], // token index + [1], // voting weights + [1]); // dividend weights +``` + +Next let's issue 1000 shares of `token_0` to the company's founder, 500 shares to Address_A, 400 shares to Address_B, and 100 shares to Address_C. + +```javascript +cosnt Address_A = "0x1234567890123456789012345678901234567890"; +cosnt Address_B = "0x1234567890123456789012345678901234567891"; +cosnt Address_C = "0x1234567890123456789012345678901234567892"; +batch_mint_tokens( + [ Address_A, Address_B, Address_C], // the addresses of the recipients + [0,0,0], // the token index + [500,400,100]); // the amounts +``` + +Then Address_A executes the following By-law Script on this DARC to transfer 100 shares of `token_0` to Address_B. + +```javascript +batch_transfer_tokens( + [Address_B], // the addresses of the recipients + [0], // the token index + [100]); // the amounts +``` + +As a customer, Address_D needs to pay 1000000 wei to the DARC for the service. The following By-law Script is executed by Address_D. + +```javascript +pay_cash( + 1000000, // the amount = 1000000 wei + 0, // the payment type = 0, the default native token + 1); // the dividendable flag, 1 means the payment is dividendable +``` + +Finally, Address_C wants to issue dividends to all token holders. The following By-law Script is executed by Address_C. + +```javascript +offer_dividends(); +``` + +## Your First Plugin as a Law + +The plugin is an object that contains all necessary information \ No newline at end of file From 2cadb3668d70cf77574b53bd29e55a9073e22315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 13 Feb 2024 23:18:29 -0600 Subject: [PATCH 34/62] Update Getting Started.md --- darc-docs/docs/By-law Script/Getting Started.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/darc-docs/docs/By-law Script/Getting Started.md b/darc-docs/docs/By-law Script/Getting Started.md index 545a53b5..4fb8c735 100644 --- a/darc-docs/docs/By-law Script/Getting Started.md +++ b/darc-docs/docs/By-law Script/Getting Started.md @@ -59,6 +59,8 @@ Finally, Address_C wants to issue dividends to all token holders. The following offer_dividends(); ``` +## Package Multiple Operations into a Program + ## Your First Plugin as a Law -The plugin is an object that contains all necessary information \ No newline at end of file +A plugin is an object that defines \ No newline at end of file From d6376f3253e28b5a5874a7a6883dc6dcbb6815b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 14 Feb 2024 10:59:53 -0600 Subject: [PATCH 35/62] update --- .../docs/By-law Script/Getting Started.md | 65 ++- darc-js/src/SDK/includes.ts | 20 + darc-js/src/SDK/opcodes/pluginProcessor.ts | 1 - darc-js/src/darcBinary/DARC-latest.json | 29 +- darc-js/src/darcjs.ts | 19 + darc-js/src/types/basicTypes.ts | 3 - darc-js/tests/runtime-test/transpileAndRun.ts | 2 - .../sdk-test/sdk-node-generation-test.ts | 3 - darc-js/tests/sdk-test/sdk-test.ts | 2 - .../protocol/MachineStateManager.sol | 2 - darc-protocol/contracts/protocol/Plugin.sol | 5 - .../protocol/Plugin/PluginFactory.sol | 6 - .../Instructions/PluginInstructions.sol | 15 - .../test-voting/VotingTest.sol.old | 3 - darc-protocol/package.json | 2 +- darc-protocol/pnpm-lock.yaml | 532 ++++++++---------- .../test/conditionTest/operationLogTest.ts | 1 - .../batch_add_and_enable_plugin_test.ts | 1 - .../test/pluginTest/operator_AND_test.ts | 2 - .../test/pluginTest/operator_OR_test.ts | 2 - .../test/votingTest/multiAddressVotingTest.ts | 2 - .../votingTest/multiClassTokenVotingTest.ts | 2 - .../votingTest/multiItemVotingNegativeTest.ts | 5 - .../test/votingTest/multiItemVotingTest.ts | 5 - .../test/votingTest/singleVoteNegativeTest.ts | 2 - .../test/votingTest/singleVotingTest.ts | 2 - 26 files changed, 345 insertions(+), 388 deletions(-) diff --git a/darc-docs/docs/By-law Script/Getting Started.md b/darc-docs/docs/By-law Script/Getting Started.md index 4fb8c735..7f869167 100644 --- a/darc-docs/docs/By-law Script/Getting Started.md +++ b/darc-docs/docs/By-law Script/Getting Started.md @@ -7,11 +7,11 @@ import TabItem from '@theme/TabItem'; # Getting Started -## By-law Script = JavaScript + Operator Overloading +### By-law Script = JavaScript + Operator Overloading By-law Script is the first programming language for describing the operations and rules for a DARC-based crypto company. It is a domain-specific language (DSL) that is designed to be easy to read and write, and to be used by non-programmers. It is based on JavaScript, and adds operator overloading to make it easier to write and read. -## Your First By-law Script Program +### Your First By-law Script Program Here is a simple By-law Script program that defines the common stock of a company. Each share of common stock has voting weight 1 and dividend weight 1. This token class is called `token_0`, and the token index is 0. @@ -26,9 +26,9 @@ batch_create_token_classes( Next let's issue 1000 shares of `token_0` to the company's founder, 500 shares to Address_A, 400 shares to Address_B, and 100 shares to Address_C. ```javascript -cosnt Address_A = "0x1234567890123456789012345678901234567890"; -cosnt Address_B = "0x1234567890123456789012345678901234567891"; -cosnt Address_C = "0x1234567890123456789012345678901234567892"; +cosnt Address_A = "0x123..."; +cosnt Address_B = "0x51c..."; +cosnt Address_C = "0x374..."; batch_mint_tokens( [ Address_A, Address_B, Address_C], // the addresses of the recipients [0,0,0], // the token index @@ -59,8 +59,57 @@ Finally, Address_C wants to issue dividends to all token holders. The following offer_dividends(); ``` -## Package Multiple Operations into a Program +### Package Operations into a Program -## Your First Plugin as a Law +The above examples of code all execute single operations. For a program, it can contain multiple operations, and all operations will be executed sequentially, one after another. The advantage of doing this is that if an operator needs to execute a program and the program consists of multiple operations, it is necessary to ensure that all operations contained in this program are successfully approved for execution by voting, or the entire program is rejected as a whole. -A plugin is an object that defines \ No newline at end of file +Here is the translation of the example you provided: + +**Address_E decides to invest in DARC. The investment agreement needs to complete four tasks**: + +1. Address_E pays 50000000 wei as venture capital. +2. Address_E will receive 10000 shares of level-0 tokens (common stock). +3. Address_E will receive 1 share of level-1 tokens (board seat). +4. Address_E will receive 20000 shares of level-2 tokens (dividendable-only stock)." + + +For the aforementioned four operations, we aspire for either all four operations to be simultaneously approved and successfully executed, or all four operations to be simultaneously rejected with none executed. For investor Address_E, it is absolutely undesirable to have a scenario where a single-operation program pays 50000000 wei to DARC, followed by the subsequent rejection of the three operations by the DARC manager. Therefore, in this scenario, the four operations must be bundled into a single program. If this program requires voting, the entire program must undergo the voting process. Upon rejection, Address_E will neither acquire shares nor a board seat, and the cash will be refunded to Address_E. + +Below is a complete By-law Script Program containing the four operations mentioned above: + +```javascript +// pay 50000000 wei to DARC +pay_cash( + 50000000, // the amount = 50000000 wei + 0, // the payment type = 0, the default native token + 0); // the dividendable flag, 0 means the payment is non-dividendable + +// mint 10000 shares of level-0, +// 1 share of level-1, +// and 20000 shares of level-2 tokens to Address_E +batch_mint_tokens( + [Address_E, Address_E, Address_E], // the addresses of the recipients + [0, 1, 2], // the token index + [10000, 1, 20000]); // the amounts + +``` + +This script encapsulates all the operations into a single program, ensuring that they are either all approved and executed successfully or all rejected without any execution. If the program requires voting, it must undergo the voting process as a whole. If rejected, Address_E will not obtain shares, a board seat, nor pay the cash, which will be refunded to Address_E. + +### Your First Plugin as a Law + +Plugin is the core mechanism of DARC and serves as its legal framework. All rules within DARC are based on the plugin system. By-law Script supports operator overload to make the composition and design of plugins simpler and more convenient. In By-law Script, each plugin is an object body. Below is the simplest example: + +```javascript +const plugin_0 ={ + returnType: NO, // return type: NO + level: 3, // level 3 + votingRuleIndex: 0, + notes: "disable all program", + bIsEnabled: true, + bIsBeforeOperation: true, + conditionNodes: new TRUE() // always true +}, +``` + +In the plugin \ No newline at end of file diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index d03bc1f6..310d57a0 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -42,6 +42,26 @@ import { OPCODE_ID_37_UPGRADE_TO_THE_LATEST } from "./opcodes/opcodeTable"; +/** + * Below are return types + */ +export let UNDEFINED = 0; +export let SANDBOX_NEEDED = 1; +export let NO = 2; +export let VOTING_NEEDED = 3; +export let YES_AND_SKIP_SANDBOX = 4; +export let YES = 5; + +export enum EnumReturnType { + UNDEFINED = 0, + SANDBOX_NEEDED = 1, + NO = 2, + VOTING_NEEDED = 3, + YES_AND_SKIP_SANDBOX = 4, + YES = 5 +} + + /** * The list of operations to be executed * When an operation function is called, it will add an operation to this list diff --git a/darc-js/src/SDK/opcodes/pluginProcessor.ts b/darc-js/src/SDK/opcodes/pluginProcessor.ts index 63c7c49e..996e7774 100644 --- a/darc-js/src/SDK/opcodes/pluginProcessor.ts +++ b/darc-js/src/SDK/opcodes/pluginProcessor.ts @@ -20,7 +20,6 @@ export function pluginProcessor(pluginArray: PluginStruct[] | PluginStructWithNo votingRuleIndex: pluginArray[i].votingRuleIndex, notes: pluginArray[i].notes, bIsEnabled: pluginArray[i].bIsEnabled, - bIsInitialized: pluginArray[i].bIsInitialized, bIsBeforeOperation: pluginArray[i].bIsBeforeOperation, }); } diff --git a/darc-js/src/darcBinary/DARC-latest.json b/darc-js/src/darcBinary/DARC-latest.json index dc17b104..55936243 100644 --- a/darc-js/src/darcBinary/DARC-latest.json +++ b/darc-js/src/darcBinary/DARC-latest.json @@ -260,11 +260,6 @@ "name": "bIsEnabled", "type": "bool" }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, { "internalType": "bool", "name": "bIsBeforeOperation", @@ -652,11 +647,6 @@ "name": "bIsEnabled", "type": "bool" }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, { "internalType": "bool", "name": "bIsBeforeOperation", @@ -753,11 +743,6 @@ "name": "bIsEnabled", "type": "bool" }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, { "internalType": "bool", "name": "bIsBeforeOperation", @@ -1058,11 +1043,6 @@ "name": "bIsEnabled", "type": "bool" }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, { "internalType": "bool", "name": "bIsBeforeOperation", @@ -1537,11 +1517,6 @@ "name": "bIsEnabled", "type": "bool" }, - { - "internalType": "bool", - "name": "bIsInitialized", - "type": "bool" - }, { "internalType": "bool", "name": "bIsBeforeOperation", @@ -1643,8 +1618,8 @@ "type": "function" } ], - "bytecode": "0x6080806040523462000019576203429090816200001f8239f35b600080fdfe610ba08060405260043610156200001557600080fd5b600090813560e01c908163036ee8501462002925575080630fda3e1e146200288d57806310ade3ea146200285e5780631797631d14620027d75780631c75255a146200277157806323b65c7814620026ea5780632514a6b414620024c45780632eeb063b14620022f45780633fb18aec146200228a57806356424cf4146200226b5780635c00d98714620022485780635d0b184914620002055780635f1231ea146200215e5780635f5d5f0014620020d7578063681ece9d14620020925780636c0d4fa41462001eff5780637daa10ce1462001ee25780638129fc1c1462001b1357806383e4cccf14620018aa578063864f9f7a146200186c57806386ad77e2146200150b5780638c7a63ae146200147a578063942d59fa14620012975780639f36145f1462001211578063a064c4f114620011e6578063acf80bc414620011a8578063aec2668714620010be578063aefca42a146200109d578063c41f94821462001055578063c591aa981462001007578063d5a172f21462000fdb578063d6a93c511462000f89578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e362005284565b50610c80620001f162002b40565b62000200604051809262002975565bf35b80fd5b503462000202578060031936011262000202576020613f7854604051908152f35b5060031960203682011262000e60576001600160401b036004351162000e6057606090600435360301126200020257604051620002638162002a8f565b6200027360043560040162002960565b81526004356024013560e08190526001600160401b03811162000c5457600435013660238201121562000c54576004620002b4910135806101405262002be9565b90620002c4604051928362002b1c565b6101405182526020820160a0526101405160e05160043501906024369160051b8301011162000c585760240161012052825b6101405160051b60e05160043501906024610120519183010181101562000e6857356101008190526001600160401b03811162000c5457606091013603602319011262000202576200034f604051806101805262002a8f565b6200036860246101005160e05160043501010162002960565b610180515260446101005160e05160043501010135602681101562000e605760206101805101526101005160e051600435010160648101356101605260018060401b0360648201351162000e60576101006064820135909101360360231901126200020257620003de6040518060c05262002a55565b610160516101005160e0516004350101016001600160401b0360248201351162000e6057620004179060243691818101350101620048c1565b60c05152610160516101005160e0516004350101019160448301359260018060401b03841162000c545736604385830101121562000c5457620004606024858301013562002be9565b9162000470604051938462002b1c565b6024858301013583526020830190610160516101005160e0516004350101013660446024898701013560051b81840135840101011162000e6457806044809201350101915b6044610160516101005160e0516004350101016024898701013560051b9082810135010101831015620004fd5760208091620004f1856200494c565b815201920191620004b5565b5060c051602001939093525050610160516101005160e0519395600435909401010192506001600160401b0360648401351162000c58573660436064850135850101121562000c58576024606484013584010135906200055d8262002be9565b906200056d604051928362002b1c565b828252602082016064860135610160516101005160e051600435010101013660448660051b8301011162000c5057604401905b6064870135610160516101005160e0516004350101010160448660051b820101831015620006c1576001600160401b03833511620006bd5760e08335820136036043190112620006bd5760405191620005f98362002aab565b6001600160401b03843583016044013511620006b95762000626366044863585018181013501016200495a565b835283358201606481013560208501526084810135604085015260a48101356060850152620006589060c4016200494c565b60808401526001600160401b038435830160e4013511620006b9576020928392620006a8906101049062000699368935830160e48101350160440162002ef8565b60a0850152873501016200494c565b60c0820152815201910190620005a0565b8980fd5b8880fd5b505050929493509050604060c0510152610160516101005160e0516004350101019160018060401b0360848401351162000202573660436084850135850101121562000202576200072e62000720602460848601358601013562002be9565b604051806101a05262002b1c565b6101a0516024608485013585010135905260206101a05101916084840135610160516101005160e05160043501010101366044602460848801358801013560051b8301011162000c5457604401608052925b6084810135610160516101005160e0516004350101010192608051936044602460848501358501013560051b82010185101562000c5c576001600160401b0385351162000c585761010085359091013603604319011262000c5457604051620007e98162002a55565b604485356084850135610160516101005160e05160043501010101010135600681101562000c4c578152606485356084850135610160516101005160e05160043501010101010135602082015284356084840135610160516101005160e05160043501010101019460018060401b0360848701351162000c4c573660636084880135880101121562000c4c576200088a604460848801358801013562002be9565b966200089a604051988962002b1c565b604460848801358801013588526020880190608488013583356084880135610160516101005160e051600435010101010101366064604460848c01358c01013560051b8301011162000c5057606401915b608489013584356084890135610160516101005160e0516004350101010101016064604460848c01358c01013560051b82010184101562000b36576001600160401b03843511620006bd5760c08435820136036063190112620006bd5760405190620009578262002a39565b843581016064810135835260056084909101351015620006b9578435810160848101356020840152600460a4909101351015620006b9578435810160a4810135604084015260c481013560608401526001600160401b0360e49091013511620006b957620009d2368635830160e4810135016064016200495a565b60808301526001600160401b0385358201610104013511620006b9576080853582016101048101350136036063190112620006b9576040519062000a168262002a07565b6001600160401b038635820161010481013501606401351162000b325762000a52366064610104893585019081013501818101350101620048c1565b82526001600160401b038635820161010481013501608401351162000b325762000a90368735830161010481013501608481013501606401620049c0565b60208301526001600160401b03863582016101048101350160a401351162000b325762000ad136873583016101048101350160a48101350160640162004a4b565b60408301526001600160401b03863582016101048101350160c401351162000b325760209384939092909162000b1c9036908935016101048101350160c48101350160640162002ef8565b606082015260a0820152815201920191620008eb565b8a80fd5b505096505090919295604083015260a481356084880135610160516101005160e05160043501010101010135606083015280356084870135610160516101005160e051600435010101010160018060401b0360c48201351162000c4c57610124602094939262000bb562000c33936044369160c4810135010162002ef8565b608085015262000be160e4823560848c0135610160516101005160e0516004350101010101016200494c565b60a085015262000c0e610104823560848c0135610160516101005160e0516004350101010101016200494c565b60c0850152356084890135610160516101005160e0516004350101010101016200494c565b60e0820152815201916020608051016080529262000780565b8480fd5b8780fd5b8280fd5b8380fd5b50506101a05160c0516060015250610160516101005160e05194956004359095010101929091506001600160401b0360a48401351162000e605736604360a4850135850101121562000e605762000cbd602460a48501358501013562002be9565b9062000ccd604051928362002b1c565b602460a4850135850101358252602082019060a4850135610160516101005160e05160043501010101366044602460a48901358901013560051b8301011162000c4c57604401915b610160516101005160e05160043501010160a48701359081019087016024013560051b0160440183101562000d605760058335101562000c4c57823581526020928301920162000d15565b50935050929092608060c0510152610160516101005160e05160043501010160018060401b0360c48201351162000c585762000da7906024369160c48101350101620049c0565b60c05160a00152610160516101005160e0516004350101016001600160401b0360e48201351162000c585762000de8906024369160e4810135010162004a4b565b60c080510152610160516101005160e0516004350101016001600160401b036101048201351162000c585762000e2a9060243691610104810135010162002ef8565b60e060c051015260c05160406101805101526101805160a05152602060a0510160a05260206101205101610120529091620002f6565b5080fd5b8580fd5b60208401858152849084600435604401356001600160401b03811162000e605762000e9b90600436918135010162002ef8565b604084015282516001600160a01b03919062000ef490831662000eeb62000ecc62000ec63362033d33565b62004b44565b62000ee462000ede878a511662033d33565b62004baa565b9062004c01565b90331462004c48565b8251805182101562000f61579062000f5562000f5b928462000f1884339362004ce2565b5151161462000f4e62000f2f62000ec63362033d33565b62000ee462000ede8862000f45888c5162004ce2565b51511662033d33565b9062004c48565b62004c7b565b62000ef4565b62000f8562000f7086620067d6565b60405191829160208352602083019062002dae565b0390f35b503462000202578060031936011262000202575b6103e8811062000fb3575b602090604051908152f35b60ff60078260031b0154161562000fd55762000fcf9062004c7b565b62000f9d565b62000fa8565b50346200020257806003193601126200020257613f70546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b036200103662002944565b168152613f778452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c06200107860043562006274565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b503462000202578060031936011262000202576020613f7254604051908152f35b50346200020257806003193601126200020257613f7590815491620010e38362002be9565b91620010f3604051938462002b1c565b8383526020938484018093835285832083915b838310620011705750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620011415785850386f35b9091929382806200115f600193603f198a8203018652885162002dae565b960192019601959291909262001133565b600188819260409a99979a5162001195816200118d818962002c3e565b038262002b1c565b8152019201920191909693959662001106565b50346200020257602036600319011262000202576020906040906001600160a01b03620011d462002944565b168152611f4783522054604051908152f35b5034620002025760203660031901126200020257602062001209600435620060c4565b604051908152f35b503462000202576020366003190112620002025760406200126c916004358152613f766020522062001243816200369d565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003202565b936020860152604085015262001288606085018383166200349d565b60081c16151560808301520390f35b5034620002025760208060031936011262000e6057604051620012ba8162002a72565b60405192620012c98462002a8f565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e083015280610100809301526004358152613f7683526040902091604051926200132a8462002a72565b62001335816200369d565b84526200134560038201620034ab565b848301908152926200135a60048301620034ab565b60408601908152956200137060058401620034ab565b868201908152926200138560068201620034ab565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff8816620013c1908762005277565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d01620013f29162003202565b9451601f198d8703810160408f0152956200140d9162002f50565b905191858d830301908d0152620014249162002f50565b905190838b82030160808c01526200143c9162002f50565b9051918982030160a08a0152620014539162002f50565b955160c08801525160e0870152519085016200146f916200349d565b511515908301520390f35b5034620002025760203660031901126200020257600435906103e8821015620014f7575060031b6001810154600282015491620014ed6005620014ce6006840154936200118d604051809481930162002c3e565b6040519485948552602085015260806040850152608084019062002dae565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b50346200020257806003193601126200020257611f4280546200152e8162002be9565b916200153e604051938462002b1c565b81835283526020808420849184015b83831062001718578585611f43805490620015688262002be9565b9362001578604051958662002b1c565b82855260208501918152602081209080925b848410620015c057620015b18662000f858960405193849360408552604085019062003038565b90838203602085015262003038565b604051620015ce8162002a55565b620015de60ff8554168262003574565b600184015460208201526002840154620015f88162002be9565b9062001608604051928362002b1c565b80825260208201600287018652602086209086905b83821062001695575050505060019282602092604060069501526003870154606082015260405162001658816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301930192916200158a565b60086020600192604051620016aa8162002a39565b8654815260ff85880154818116620016c28162002f45565b85840152851c16620016d481620029a0565b604082015260028701546060820152620016f160038801620034ab565b608082015262001704600488016200363b565b60a08201528152019301910190916200161d565b604051620017268162002a55565b6200173660ff8454168262003574565b60018301546020820152600283018054620017518162002be9565b9162001761604051938462002b1c565b81835289526020808a20908a9084015b838210620017e95750505050600192826020926040600695015260038601546060820152604051620017ac816200118d8160048b0162002c3e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019201920191906200154d565b60086020600192604051620017fe8162002a39565b8654815260ff85880154818116620018168162002f45565b85840152851c166200182881620029a0565b6040820152600287015460608201526200184560038801620034ab565b608082015262001858600488016200363b565b60a082015281520193019101909162001771565b50346200020257602036600319011262000202576020906040906001600160a01b036200189862002944565b168152611f4583522054604051908152f35b5034620002025760208060031936011262000e60578160043591620018ed4784111562000f4e620018db8662005091565b620018e64762005091565b9062004d2a565b33825262001958611f4580835262001931604085205486111562000f4e620019158862005091565b3388528487526200192a604089205462005091565b9062004d96565b3384528083526200194785604086205462005056565b929062000f4e620019158862005091565b3384528252806040842055156200199a575b508080809381811562001990575b3390f115620019845780f35b604051903d90823e3d90fd5b506108fc62001978565b9050611f46805491620019ad8362004dfe565b918593865b81811062001aa0575050620019c78462004dfe565b805192906001600160401b03841162001a8c579080849392620019ed8a98979662004f93565b0191865280862090865b84811062001a6d575050505050825b82811062001a165750506200196a565b9192509062001a639062000f556001600160a01b0362001a37838662004ce2565b511662001a448362004e52565b90919082549060031b9160018060a01b03809116831b921b1916179055565b9084929162001a06565b83516001600160a01b03168184015589975092810192600101620019f7565b634e487b7160e01b88526041600452602488fd5b62001aab8162004e52565b90546001600160a01b03916003913391831b1c83160362001ada575b505062001ad49062004c7b565b620019b2565b9662001b0a91839862001af162001ad49562004e52565b9054911b1c1662001b03828962004ce2565b5262004c7b565b95903862001ac7565b50346200020257806003193601126200020257613f7080546001600160a01b03191633179055613f73805460ff19166001908117909155604051909190819062001b5d8162002ac7565b5290611f428054600082558062001e79575b508252818060405162001b828162002ac7565b5262001e6557611f438054600082558062001de6575b508252612710613f745562001dd862001bb062005bbd565b836040519162001bc08362002ac7565b81835262001cc86040519162001bd68362002ac7565b8383526040519462001be88662002ac7565b8486526040519362001bfa8562002ac7565b8585526040519462001c0c8662002ac7565b8686526040519162001c1e8362002a07565b8252602097888301526040820152606094858201526040519162001c428362002a39565b8683526003888401528660408401528686840152608083015260a082015262001c6b8262004c8b565b5262001c778162004c8b565b506040519062001c878262002a55565b6004825287868301526040820152838382015260405162001ca88162002ac7565b84815260808201528660a08201528660c08201528660e082015262005cc9565b62001cd262005bbd565b60405162001ce08162002ac7565b83815260405162001cf18162002ac7565b84815260405162001d028162002ac7565b85815260405162001d138162002ac7565b8681526040519162001d258362002ac7565b8783526040519362001d378562002a07565b8452888401526040830152848201526040519162001d558362002a39565b8583526003878401528560408401528585840152608083015260a082015262001d7e8262004c8b565b5262001d8a8162004c8b565b50856040519462001d9b8662002a55565b60058652850152604084015282015260405162001db88162002ac7565b84815260808201528260a08201528260c08201528360e082015262005d15565b611388611faf55611fb05580f35b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001e1657505062001b98565b8086849255868682015562001e2e60028201620054a7565b86600382015562001e42600482016200533c565b8660058201550162001e06565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001ea957505062001b6f565b8086849255868682015562001ec160028201620054a7565b86600382015562001ed5600482016200533c565b8660058201550162001e99565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001f1c62002b40565b6040519162001f2b8362002a55565b611faf548352611fb0549060209182850152611fb1546040850152611fb254606085015260405180611fb390848254918281520191845284842090845b81811062002074575050508162001f8191038262002b1c565b6080850152611fb4805462001f968162002be9565b9162001fa6604051938462002b1c565b818352835283832083908584015b83831062002046575050505060a085015260405180928391611fb591808354928381520192855280852094905b828210620020225750505062001ffa9250038262002b1c565b60c083015260ff611fb65416151560e083015262000f85611fb7546040519384938462002e2e565b85546001600160a01b03168452600195860195879550938101939091019062001fe1565b600187819260409998995162002062816200118d818962002c3e565b81520192019201919095949562001fb4565b82546001600160a01b03168452928601926001928301920162001f68565b5034620002025760203660031901126200020257600435906103e8821015620014f75762000f85620020ca60048460031b0162002b8b565b60405191829182620029c1565b50346200020257806003193601126200020257604051611f4180548083529083526020808301937f68ffef30f3d6829c9938575e8bc340aa2a3398e927d767947dd5024d1581d59292915b8282106200213d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002122565b503462000202576020908160031936011262000202576040906200218162002944565b8160608451620021918162002a07565b82815286810183905285810182905201526001600160a01b03168152611f4083522060405190620021c28262002a07565b6200223d81549160ff83161515845260ff8585019360081c16151583526002604051916200220183620021f9816001850162002c3e565b038462002b1c565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002dae565b905160808301520390f35b503462000202576020366003190112620002025760206200120960043562005deb565b5034620002025780600319360112620002025760206200120962006172565b50346200020257604036600319011262000202576001600160401b0360043581811162000c5457620022c190369060040162002ef8565b9160243591821162000202576020620022ea84620022e3366004870162002ef8565b9062006570565b6040519015158152f35b50346200020257806003193601126200020257604051620023158162002ac7565b604051613f0383825b60648210620024ad57505050620023358162002ae3565b815260405191620023468362002a55565b613f67548352613f68549060209182850152613f69546040850152613f6a54606085015260405180613f6b90848254918281520191845284842090845b8181106200248f57505050816200239c91038262002b1c565b6080850152613f6c8054620023b18162002be9565b91620023c1604051938462002b1c565b818352835283832083908584015b83831062002461575050505060a085015260405180928391613f6d91808354928381520192855280852094905b8282106200243d57505050620024159250038262002b1c565b60c083015260ff613f6e5416151560e083015262000f85613f6f546040519384938462002e2e565b85546001600160a01b031684526001958601958795509381019390910190620023fc565b60018781926040999899516200247d816200118d818962002c3e565b815201920192019190959495620023cf565b82546001600160a01b03168452928601926001928301920162002383565b60016020819285548152019301910190916200231e565b5034620002025760208060031936011262000e6057600435620024f34782111562000f4e620018db8462005091565b33835282808080611f479485875262002538604083205482111562000f4e6200251c8462005091565b338652898b5262002531604087205462005091565b906200520b565b338252858752620025786200255282604085205462005056565b919062000f4e620025638562005091565b3387528a8c5262002531604088205462005091565b3383528688526040832055818115620026e0575b3390f115620026d5573383528152604082205415620025a9575080f35b611f48805491620025ba8362004dfe565b918493855b8181106200267b575050620025d48462004dfe565b805192906001600160401b03841162002667578190620025f48562004f58565b0191865280862090865b8481106200264b575050505050825b8281106200261b5750505080f35b620026459062000f556001600160a01b0362002638838662004ce2565b511662001a448362004e36565b6200260d565b83516001600160a01b03168382015592810192600101620025fe565b634e487b7160e01b87526041600452602487fd5b620026868162004e36565b90546001600160a01b03916003913391831b1c831603620026b5575b5050620026af9062004c7b565b620025bf565b96620026cc91839862001af1620026af9562004e36565b959038620026a2565b6040513d84823e3d90fd5b506108fc6200258c565b50346200020257806003193601126200020257604051611f4680548083529083526020808301937f721f0813146d89d6f0f0dbb1451dd10acd9dadea7c30d73459c3079bc665b9a892915b828210620027505762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002735565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000c54576103e8821015620027c3579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b50346200020257806003193601126200020257604051611f4880548083529083526020808301937f54b856f7ae688db523226c6d190d6c3f1578f46968ba7de0cc9e487420dbf24c92915b8282106200283d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002822565b50346200020257806003193601126200020257602060ff613f735416604051906200288981620029a0565b8152f35b50346200020257602090816003193601126200020257620028ad62002944565b620028b762005284565b506001600160a01b03168152611f498252604080822090519190620028dc8362002ac7565b60405193849192915b606483106200290f57610c808587620028fe8162002ae3565b815262000200604051809262002975565b60018281928654815201940192019192620028e5565b90503462000e60578160031936011262000e6057602090613f71548152f35b600435906001600160a01b03821682036200295b57565b600080fd5b35906001600160a01b03821682036200295b57565b516000915b606483106200298857505050565b6001908251815260208091019201920191906200297a565b60041115620029ab57565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b828110620029e9575050505090565b83516001600160a01b031685529381019392810192600101620029da565b608081019081106001600160401b0382111762002a2357604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762002a2357604052565b61010081019081106001600160401b0382111762002a2357604052565b61012081019081106001600160401b0382111762002a2357604052565b606081019081106001600160401b0382111762002a2357604052565b60e081019081106001600160401b0382111762002a2357604052565b602081019081106001600160401b0382111762002a2357604052565b610c8081019081106001600160401b0382111762002a2357604052565b604081019081106001600160401b0382111762002a2357604052565b601f909101601f19168101906001600160401b0382119082101762002a2357604052565b6040519062002b4f8262002ac7565b60405182611f4b6000835b6064821062002b745750505062002b718262002ae3565b52565b600160208192855481520193019101909162002b5a565b9060405191828154918282526020928383019160005283600020936000905b82821062002bc55750505062002bc39250038362002b1c565b565b85546001600160a01b03168452600195860195889550938101939091019062002baa565b6001600160401b03811162002a235760051b60200190565b90600182811c9216801562002c33575b602083101462002c1d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162002c11565b906000929180549162002c518362002c01565b91828252600193848116908160001462002cb8575060011462002c75575b50505050565b90919394506000526020928360002092846000945b83861062002ca357505050500101903880808062002c6f565b80548587018301529401938590820162002c8a565b9294505050602093945060ff191683830152151560051b0101903880808062002c6f565b90815462002cea8162002be9565b9260409362002cfc8551918262002b1c565b828152809460208092019260005281600020906000935b85851062002d2357505050505050565b6001848192845162002d3b816200118d818a62002c3e565b81520193019401939162002d13565b90815180825260208080930193019160005b82811062002d6b575050505090565b83516001600160a01b03168552938101939281019260010162002d5c565b60005b83811062002d9d5750506000910152565b818101518382015260200162002d8c565b9060209162002dc98151809281855285808601910162002d89565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002e015750505050505090565b909192939495848062002e1d83856001950387528a5162002dae565b980193019301919493929062002df0565b93929162002e4085610ca09362002975565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002ecc62002e956080840151610100610d408a0152610dc089019062002d4a565b62002eb560a085015191610cbf1992838b830301610d608c015262002dd5565b9060c08501519089830301610d808a015262002d4a565b9101511515610da0860152930152565b6001600160401b03811162002a2357601f01601f191660200190565b81601f820112156200295b5780359062002f128262002edc565b9262002f22604051948562002b1c565b828452602083830101116200295b57816000926020809301838601378301015290565b60051115620029ab57565b90815180825260208080930193019160005b82811062002f71575050505090565b83518552938101939281019260010162002f62565b90815180825260208092019182818360051b82019501936000915b84831062002fb25750505050505090565b909192939495848062002fce83856001950387528a5162002f50565b980193019301919493929062002fa1565b90815180825260208092019182818360051b82019501936000915b8483106200300b5750505050505090565b90919293949584806200302783856001950387528a5162002d4a565b980193019301919493929062002ffa565b90815180825260208092019081926005928183851b82019601946000915b84831062003068575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029ab5783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b82811062003128575050505050928291620030f260019560608085015190840152608080850151908483039085015262002dae565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062003056565b9193959680620031ee600193959761011f198b82030189528951908151815283820151620031568162002f45565b84820152878201516200316981620029a0565b88820152606090818301518282015281620031de620031cd620031bc60806200319f8189015160c080848a015288019062002f50565b9560a0809901519881880391015287519080875286019062002dd5565b888701518582038a87015262002f86565b8b8601518482038d86015262002fdf565b9301519181840391015262002dae565b970195019101918b969594939192620030bd565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620032645750505050906040620032619392015190604081840391015262002dae565b90565b858703607f19018352835180516001600160a01b0316885260208101519497939492939192906026821015620029ab57604091602084015201519060606040820152620032c08251610100606084015261016083019062002dd5565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003482575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b828110620033fd57505050506060840151838203605f190160c085015262003341925062003038565b608083015190605f198382030160e0840152602080835192838152019201906000905b808210620033d957505050620033cc8360209360e0620033b56200339d879660a060019a0151605f198683030161010087015262002f86565b60c0850151848203605f190161012086015262002fdf565b92015190610140605f198285030191015262002dae565b980194019291016200323b565b9091926020806001928651620033ef8162002f45565b815201940192019062003364565b90919293602080600192601f19868203018852885190620034666200342b835160e080855284019062002f50565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002dae565b60c0928301511515919092015297019695019392910162003318565b909192602080600192865115158152019401920190620032e2565b906003821015620029ab5752565b9060405191828154918282526020928383019160005283600020936000905b828210620034e35750505062002bc39250038362002b1c565b855484526001958601958895509381019390910190620034ca565b906040516200350d8162002aab565b60c060ff600683956200352081620034ab565b8552600181015460208601526002810154604086015260038101546060860152826004820154161515608086015260405162003565816200118d816005860162002c3e565b60a08601520154161515910152565b6006821015620029ab5752565b9081546200358f8162002be9565b926200359f604051948562002b1c565b818452600090815260208082208186015b848410620035bf575050505050565b6001838192620035cf85620034ab565b815201920193019290620035b0565b908154620035ec8162002be9565b92620035fc604051948562002b1c565b818452600090815260208082208186015b8484106200361c575050505050565b60018381926200362c8562002b8b565b8152019201930192906200360d565b90600360606040516200364e8162002a07565b6200369981956200365f8162002cdc565b83526200366f6001820162003581565b60208401526200368260028201620035de565b6040840152620021f9604051809681930162002c3e565b0152565b90604051620036ac8162002a8f565b82546001600160a01b03168152600183018054919384929091620036d08262002be9565b91620036e0604051938462002b1c565b80835260208301916000526020600020916000905b82821062003722575050505091620036996040926002946020840152620021f98451809681930162002c3e565b604051620037308162002a8f565b84546001600160a01b038116825260a01c60ff166026811015620029ab576020820152604051620037618162002a55565b6200376f6001870162002cdc565b815260028601604051808260208294549384815201906000526020600020926000905b80601f830110620046ef57620038cb945491818110620046d8575b818110620046be575b818110620046a4575b8181106200468a575b81811062004671575b81811062004657575b8181106200463d575b81811062004623575b81811062004609575b818110620045ef575b818110620045d5575b818110620045bb575b818110620045a1575b81811062004587575b8181106200456d575b81811062004553575b81811062004539575b8181106200451f575b81811062004505575b818110620044eb575b818110620044d1575b818110620044b7575b8181106200449d575b81811062004483575b81811062004469575b8181106200444f575b81811062004435575b8181106200441b575b81811062004401575b818110620043e7575b818110620043cd575b10620043bc575b50038262002b1c565b6020820152600386018054620038e18162002be9565b91620038f1604051938462002b1c565b81835260208301906000526020600020906000905b8382106200439b57505050506040820152600486018054620039288162002be9565b9162003938604051938462002b1c565b81835260208301906000526020600020906000905b8382106200423e57505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003f355784600997946020979460019a979462003ac494549181811062003f17575b81811062003ef6575b81811062003ed5575b81811062003eb4575b81811062003e94575b81811062003e73575b81811062003e52575b81811062003e31575b81811062003e10575b81811062003def575b81811062003dce575b81811062003dad575b81811062003d8c575b81811062003d6b575b81811062003d4a575b81811062003d29575b81811062003d08575b81811062003ce7575b81811062003cc6575b81811062003ca5575b81811062003c84575b81811062003c63575b81811062003c42575b81811062003c21575b81811062003c00575b81811062003bdf575b81811062003bbe575b81811062003b9d575b81811062003b7c575b81811062003b5b575b81811062003b3a575b1062003b1f5750038262002b1c565b608082015262003ad760068a0162003581565b60a082015262003aea60078a01620035de565b60c082015260405162003b06816200118d8160088e0162002c3e565b60e08201526040820152815201940191019092620036f5565b90889160f81c62003b308162002f45565b81520138620038c2565b928a8d9160ff8560f01c1662003b508162002f45565b815201930162003ab5565b928a8d9160ff8560e81c1662003b718162002f45565b815201930162003aac565b928a8d9160ff8560e01c1662003b928162002f45565b815201930162003aa3565b928a8d9160ff8560d81c1662003bb38162002f45565b815201930162003a9a565b928a8d9160ff8560d01c1662003bd48162002f45565b815201930162003a91565b928a8d9160ff8560c81c1662003bf58162002f45565b815201930162003a88565b928a8d9160ff8560c01c1662003c168162002f45565b815201930162003a7f565b928a8d9160ff8560b81c1662003c378162002f45565b815201930162003a76565b928a8d9160ff8560b01c1662003c588162002f45565b815201930162003a6d565b928a8d9160ff8560a81c1662003c798162002f45565b815201930162003a64565b928a8d9160ff8560a01c1662003c9a8162002f45565b815201930162003a5b565b928a8d9160ff8560981c1662003cbb8162002f45565b815201930162003a52565b928a8d9160ff8560901c1662003cdc8162002f45565b815201930162003a49565b928a8d9160ff8560881c1662003cfd8162002f45565b815201930162003a40565b928a8d9160ff8560801c1662003d1e8162002f45565b815201930162003a37565b928a8d9160ff8560781c1662003d3f8162002f45565b815201930162003a2e565b928a8d9160ff8560701c1662003d608162002f45565b815201930162003a25565b928a8d9160ff8560681c1662003d818162002f45565b815201930162003a1c565b928a8d9160ff8560601c1662003da28162002f45565b815201930162003a13565b928a8d9160ff8560581c1662003dc38162002f45565b815201930162003a0a565b928a8d9160ff8560501c1662003de48162002f45565b815201930162003a01565b928a8d9160ff8560481c1662003e058162002f45565b8152019301620039f8565b928a8d9160ff8560401c1662003e268162002f45565b8152019301620039ef565b928a8d9160ff8560381c1662003e478162002f45565b8152019301620039e6565b928a8d9160ff8560301c1662003e688162002f45565b8152019301620039dd565b928a8d9160ff8560281c1662003e898162002f45565b8152019301620039d4565b928a8d9160ff85831c1662003ea98162002f45565b8152019301620039cb565b928a8d9160ff8560181c1662003eca8162002f45565b8152019301620039c2565b928a8d9160ff8560101c1662003eeb8162002f45565b8152019301620039b9565b928a8d9160ff8560081c1662003f0c8162002f45565b8152019301620039b0565b928a8d9160ff851662003f2a8162002f45565b8152019301620039a7565b926001610400602092865460ff811662003f4f8162002f45565b825260ff8160081c1662003f638162002f45565b8583015260ff8160101c1662003f798162002f45565b604083015260ff8160181c1662003f908162002f45565b606083015260ff81861c1662003fa68162002f45565b608083015260ff8160281c1662003fbd8162002f45565b60a083015260ff8160301c1662003fd48162002f45565b60c083015262003fea60ff8260381c1662002f45565b60ff8160381c1660e083015260ff8160401c16620040088162002f45565b61010083015260ff8160481c16620040208162002f45565b61012083015260ff8160501c16620040388162002f45565b61014083015260ff8160581c16620040508162002f45565b61016083015260ff8160601c16620040688162002f45565b61018083015260ff8160681c16620040808162002f45565b6101a083015260ff8160701c16620040988162002f45565b6101c083015260ff8160781c16620040b08162002f45565b6101e083015260ff8160801c16620040c88162002f45565b61020083015260ff8160881c16620040e08162002f45565b61022083015260ff8160901c16620040f88162002f45565b61024083015260ff8160981c16620041108162002f45565b61026083015260ff8160a01c16620041288162002f45565b61028083015260ff8160a81c16620041408162002f45565b6102a083015260ff8160b01c16620041588162002f45565b6102c083015260ff8160b81c16620041708162002f45565b6102e083015260ff8160c01c16620041888162002f45565b61030083015260ff8160c81c16620041a08162002f45565b61032083015260ff8160d01c16620041b88162002f45565b61034083015260ff8160d81c16620041d08162002f45565b61036083015260ff8160e01c16620041e88162002f45565b61038083015260ff8160e81c16620042008162002f45565b6103a083015260ff8160f01c16620042188162002f45565b6103c083015260f81c6200422c8162002f45565b6103e08201520194019201916200397e565b6040516200424c8162002a55565b6200425c60ff8554168262003574565b60018401546020820152600284018054620042778162002be9565b9162004287604051938462002b1c565b81835260208301906000526020600020906000905b838210620043145750505050600192826020926040600695015260038701546060820152604051620042d7816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301910190916200394d565b600190602060405191620043288362002a39565b85548352838601549260ff8416620043408162002f45565b8382015260ff600894851c166200435781620029a0565b6040820152600287015460608201526200437460038801620034ab565b608082015262004387600488016200363b565b60a08201528152019301910190916200429c565b60076020600192620043ad86620034fe565b81520193019101909162003906565b60f81c1515815260200138620038c2565b92602060019160ff8560f01c1615158152019301620038bb565b92602060019160ff8560e81c1615158152019301620038b2565b92602060019160ff8560e01c1615158152019301620038a9565b92602060019160ff8560d81c1615158152019301620038a0565b92602060019160ff8560d01c161515815201930162003897565b92602060019160ff8560c81c16151581520193016200388e565b92602060019160ff8560c01c161515815201930162003885565b92602060019160ff8560b81c16151581520193016200387c565b92602060019160ff8560b01c161515815201930162003873565b92602060019160ff8560a81c16151581520193016200386a565b92602060019160ff8560a01c161515815201930162003861565b92602060019160ff8560981c161515815201930162003858565b92602060019160ff8560901c16151581520193016200384f565b92602060019160ff8560881c161515815201930162003846565b92602060019160ff8560801c16151581520193016200383d565b92602060019160ff8560781c161515815201930162003834565b92602060019160ff8560701c16151581520193016200382b565b92602060019160ff8560681c161515815201930162003822565b92602060019160ff8560601c161515815201930162003819565b92602060019160ff8560581c161515815201930162003810565b92602060019160ff8560501c161515815201930162003807565b92602060019160ff8560481c1615158152019301620037fe565b92602060019160ff8560401c1615158152019301620037f5565b92602060019160ff8560381c1615158152019301620037ec565b92602060019160ff8560301c1615158152019301620037e3565b92602060019160ff8560281c1615158152019301620037da565b92602060019160ff85831c1615158152019301620037d1565b92602060019160ff8560181c1615158152019301620037c8565b92602060019160ff8560101c1615158152019301620037bf565b92602060019160ff8560081c1615158152019301620037b6565b92602060019160ff851615158152019301620037ad565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003792565b9080601f830112156200295b57813590620048dc8262002be9565b92620048ec604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b8483106200491c5750505050505090565b82356001600160401b0381116200295b578691620049408484809489010162002ef8565b8152019201916200490b565b359081151582036200295b57565b81601f820112156200295b57803591620049748362002be9565b9262004984604051948562002b1c565b808452602092838086019260051b8201019283116200295b578301905b828210620049b0575050505090565b81358152908301908301620049a1565b9080601f830112156200295b57813590620049db8262002be9565b92620049eb604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b84831062004a1b5750505050505090565b82356001600160401b0381116200295b57869162004a3f848480948901016200495a565b81520192019162004a0a565b9080601f830112156200295b5781359162004a668362002be9565b9260409262004a788451958662002b1c565b8185526020938486019185600594851b860101948186116200295b57868101935b86851062004aac57505050505050505090565b84356001600160401b0381116200295b57820183603f820112156200295b57888101359062004adb8262002be9565b9162004aea8751938462002b1c565b808352868b8401918a1b830101918683116200295b5791878c94929593015b81811062004b2257505082935081520194019362004a99565b91938091939562004b338462002960565b8152019101918b9391949262004b09565b9062002bc3604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b99815180926020868601910162002d89565b810103602581018552018362002b1c565b9062002bc36040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004bf0815180926020868601910162002d89565b810103602081018552018362002b1c565b602062002bc391939293604051948162004c25879351809286808701910162002d89565b820162004c3b8251809386808501910162002d89565b0103808552018362002b1c565b1562004c515750565b60405162461bcd60e51b81526020600482015290819062004c7790602483019062002dae565b0390fd5b600019811462001e4f5760010190565b80511562004c995760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c995760400190565b80516002101562004c995760600190565b80516003101562004c995760800190565b805182101562004c995760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002bc3916020949360405195869262004d5a62004d4c83860162004cf7565b918281519485920162002d89565b016e0161030b732103130b630b731b29d1608d1b815262004d85825180936020878501910162002d89565b010360101981018552018362002b1c565b601962002bc3916020949360405195869262004db862004d4c83860162004cf7565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004ded825180936020878501910162002d89565b010360061981018552018362002b1c565b9062004e0a8262002be9565b62004e19604051918262002b1c565b828152809262004e2c601f199162002be9565b0190602036910137565b611f48805482101562004c995760005260206000200190600090565b611f46805482101562004c995760005260206000200190600090565b611f41805482101562004c995760005260206000200190600090565b613f02805482101562004c995760005260206000200190600090565b611f4a805482101562004c995760005260206000200190600090565b613efe805482101562004c995760005260206000200190600090565b613f00805482101562004c995760005260206000200190600090565b805482101562004c995760005260206000200190600090565b8181029291811591840414171562001e4f57565b919082549060031b91821b91600019901b1916179055565b81811062004f4b575050565b6000815560010162004f3f565b600160401b811162002a2357611f489081549080835581811062004f7b57505050565b62002bc3926000526020600020918201910162004f3f565b600160401b811162002a2357611f469081549080835581811062004f7b57505050565b8054600082558062004fc6575050565b62002bc39160005260206000209081019062004f3f565b600160401b811162002a2357613efe9081549080835581811062004f7b57505050565b600160401b811162002a2357613f009081549080835581811062004f7b57505050565b611fb58054600082558062004fc6575050565b90600160401b811162002a235781549080835581811062004f7b57505050565b919082811162005067576001920390565b50600091508190565b81156200507b570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b80821015620051fc575b506904ee2d6d415b85acef8160201b80831015620051ec575b50662386f26fc1000080831015620051dc575b506305f5e10080831015620051cc575b5061271080831015620051bc575b506064821015620051ab575b600a80921015620051a0575b600190816021818601956200512d8762002edc565b966200513d604051988962002b1c565b8088526200514e601f199162002edc565b01366020890137860101905b62005167575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200519a579190826200515a565b62005160565b916001019162005118565b91906064600291049101916200510c565b6004919392049101913862005100565b60089193920491019138620050f2565b60109193920491019138620050e2565b60209193920491019138620050cf565b604093508104915038620050b6565b601e62002bc391602094936040519586926200522d62004d4c83860162004cf7565b017f2c20616e6420776974686472617761626c65206469766964656e64733a200000815262005266825180936020878501910162002d89565b010360011981018552018362002b1c565b6003821015620029ab5752565b60405190620052938262002ac7565b60405182620052a28262002ae3565b610c8036833752565b90620052b78262002be9565b604090620052c88251918262002b1c565b8381528093620052db601f199162002be9565b019160005b838110620052ee5750505050565b6020908251620052fe8162002a55565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e0830152828601015201620052e0565b62005348815462002c01565b908162005353575050565b81601f6000931160011462005366575055565b90808391825262005387601f60208420940160051c84016001850162004f3f565b5555565b80549060008155816200539c575050565b6000526020600020908101905b818110620053b5575050565b80620053c36001926200533c565b01620053a9565b90600160401b811162002a2357815491818155828210620053ea57505050565b600052602060002091820191015b81811062005404575050565b80620054126001926200533c565b01620053f8565b80549060008155816200542a575050565b6000526020600020908101905b81811062005443575050565b806200545160019262004fb6565b0162005437565b90600160401b811162002a23578154918181558282106200547857505050565b600052602060002091820191015b81811062005492575050565b80620054a060019262004fb6565b0162005486565b805460009182815581620054ba57505050565b6001600160fd1b0382168203620055475782526020822091600391821b8301925b838110620054e95750505050565b8082600892558260018201558260028201556200550884820162004fb6565b62005516600482016200538b565b620055246005820162005419565b620055326006820162005419565b62005540600782016200533c565b01620054db565b634e487b7160e01b83526011600452602483fd5b600160401b821162002a23578054908281558183106200557a57505050565b6001600160fd1b03828116830362001e4f578316830362001e4f57600090815260208120600392831b810193831b015b838110620055b85750505050565b808260089255826001820155826002820155620055d784820162004fb6565b620055e5600482016200538b565b620055f36005820162005419565b620056016006820162005419565b6200560f600782016200533c565b01620055aa565b516006811015620029ab5790565b906006811015620029ab5760ff80198354169116179055565b90620056498162002f45565b60ff80198354169116179055565b906200566381620029a0565b61ff0082549160081b169061ff001916179055565b9190601f81116200568857505050565b62002bc3926000526020600020906020601f840160051c83019310620056b7575b601f0160051c019062004f3f565b9091508190620056a9565b81519192916001600160401b03811162002a2357620056ee81620056e7845462002c01565b8462005678565b602080601f83116001146200572d57508192939460009262005721575b50508160011b916000199060031b1c1916179055565b0151905038806200570b565b90601f198316958460005282600020926000905b8882106200577c5750508360019596971062005762575b505050811b019055565b015160001960f88460031b161c1916905538808062005758565b8060018596829496860151815501950193019062005741565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b81516006811015620029ab57620057f0908262005624565b6020820151600182015560028101604083015160208151916200581483856200555b565b01916000526020600020916000905b8282106200588757505050509060e0600562002bc3936060840151600382015562005856608085015160048301620056c2565b01916200586a60a082015115158462005795565b6200587c60c0820151151584620057a6565b0151151590620057be565b805180518555620058c760018601620058b06020840151620058a98162002f45565b826200563d565b604083015190620058c182620029a0565b62005657565b60608101516002860155608081015180519060038701906001600160401b03831162002a2357602090620058fc848462005036565b0190600052602060002060005b83811062005ba8575050505060a0015180518051906004870190602090620059328484620053ca565b01906000526020600020906000905b83821062005b885750505050600585016020820151602081519162005967838562005458565b019160005260206000206000925b82841062005b24575050505060068501604082015160208151916200599b838562005458565b019160005260206000206000925b82841062005ab75750505050606001518051906001600160401b03821162002a2357620059e982620059df600789015462002c01565b6007890162005678565b602090601f831160011462005a3c57928260089360209360019660009262005a30575b5050600019600383901b1c191690851b1760078801555b0194019101909262005823565b01519050388062005a0c565b906007870160005260206000209160005b601f198516811062005a9e575083602093600196938793600897601f1981161062005a84575b505050811b01600788015562005a23565b015160001960f88460031b161c1916905538808062005a73565b9192602060018192868501518155019401920162005a4d565b80518051906001600160401b03821162002a235760209062005ada838662005036565b0183600052602060002060005b83811062005b06575050505060016020819201920193019290620059a9565b82516001600160a01b03168183015560209092019160010162005ae7565b80518051906001600160401b03821162002a235760209062005b47838662005036565b0183600052602060002060005b83811062005b7357505050506001602081920192019301929062005975565b60019060208451940193818401550162005b54565b600160208262005b9b83945187620056c2565b0193019101909162005941565b60019060208451940193818401550162005909565b60409081519162005bce8362002b00565b60018352829160005b60208082101562005c415783516020929162005bf38262002a39565b60008252600081830152600086830152606060008184015280608084015286519062005c1f8262002a07565b808252808383015280888301528082015260a083015282880101520162005bd7565b505091925050565b611f43805482101562004c99576000526006602060002091020190600090565b613efb805482101562004c99576000526006602060002091020190600090565b611f42805482101562004c99576000526006602060002091020190600090565b613efa805482101562004c99576000526006602060002091020190600090565b611f428054600160401b81101562002a235762005cec9160018201905562005c89565b91909162005cff5762002bc391620057d8565b634e487b7160e01b600052600060045260246000fd5b611f438054600160401b81101562002a235762005cec9160018201905562005c49565b613efb8054600160401b81101562002a235762005cec9160018201905562005c69565b613efa8054600160401b81101562002a235762005cec9160018201905562005ca9565b1562005d8657565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b6103e881101562004c9957600390811b60028101549060009260049384830191825492829682849601935b85871062005e3d5750505050505050620032619162005e359162005f19565b919062005d7e565b98979091929394959862005e9f5762005e938962005e8b62005e6562000f559b9c8762004efa565b905490881b1c6001600160a01b0316600090815260208990526040812054909462006049565b9a9062005f3b565b95949392919062005e16565b603282634e487b7160e01b6000525260246000fd5b6103e881101562004c995762005e358162005edc611fba620032619460031b01549162005f9f565b9062005f19565b90811562005f1057606462005efc818402938462005070565b0362005f085760019190565b600091508190565b60019150600090565b9190821562005f315762005efc818402938462005070565b5060019150600090565b1562005f4357565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6103e8811015908162004c995790600391821b90611fbc820190815490600094611fbb869501915b83861062005fd85750505050505090565b9590919293949562004c99576200602b866200602362005ffd62000f55998962004efa565b905490861b1c6001600160a01b0316600090815260208790526040812054909462006049565b989062005f3b565b949392919062005fc7565b906001820191821062005f085760019190565b9190820191821062005f085760019190565b156200606357565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b6103e881101562004c9957600390811b60018101549060009260049384830191825492829682849601935b85871062006116575050505050505062003261916200610e9162005f19565b91906200605b565b98979091929394959862005e9f576200613e8962005e8b62005e6562000f559b9c8762004efa565b959493929190620060ef565b6103e881101562004c99576200610e8162005edc611fb9620032619460031b01549162005f9f565b611faf54620061b86200618462033793565b91620061966127109384831062004c48565b620061ae611fb254611fb054111562000f4e62033801565b611fb15462005f19565b919050620061c562033857565b5060009081925b6103e88410620061e9575b620061e493500462006236565b905090565b9160ff60078560031b015416156200622f57836200621c62006228926200621562000f55969762005deb565b9062006049565b949062000f4e62033857565b92620061cc565b91620061d7565b9080156200624e57620062499162005070565b600191565b5050600090600090565b9190820180921162001e4f57565b9190820391821162001e4f57565b906107b2906301e1853e80840483810180821162001e4f576001820181811162001e4f57604583019082821162001e4f576064620062b792049060021c62006266565b9561017183019682881162001e4f57620062d8906101908099049062006258565b9084840294848604148415171562001e4f5762015180948583029280840487149015171562001e4f576200631892620063119162006258565b9062006266565b9160049586910815958662006537575b506040516101a081016001600160401b038111828210176200652257604052600c9687825261018080366020850137601f9182620063668562004c8b565b5215620065185760ff601d5b166200637e8462004caf565b52816200638b8462004cc0565b52601e620063998462004cd1565b52825188101562006503578160a08401528251600510156200650357601e60c084015282516006101562006503578160e08401528251600710156200650357816101008401528251600810156200650357601e6101208401528251600910156200650357816101408401528251600a10156200650357601e6101608401528251600b10156200650357820152600096905b8188106200647e575b50508282049460018601809611620064695760018701809711620064695750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b9096926200648d848362004ce2565b5185810290808204871490151715620064e6578110620064fb57620064b3848362004ce2565b519085820291808304871490151715620064e657620064de91620064d79162006266565b9362004c7b565b96906200642a565b601188634e487b7160e01b6000525260246000fd5b929662006433565b603288634e487b7160e01b6000525260246000fd5b60ff601c62006372565b604187634e487b7160e01b6000525260246000fd5b90955060648606159081159162006552575b50943862006328565b90508506153862006549565b90815181101562004c99570160200190565b90815181511162006627576000905b6200658e835182519062006266565b82116200661f5760019260005b825181101562006614576001600160f81b031980620065c6620065bf848862006258565b856200655e565b511690620065d583866200655e565b511603620065ee57620065e89062004c7b565b6200659b565b5092509060005b6200660c57620066059062004c7b565b906200657f565b505050600190565b5092919091620065f5565b505050600090565b5050600090565b611f4680549190600160401b83101562002a23578262001a4491600162002bc39501905562004e52565b611f4a80549190600160401b83101562002a23578262001a4491600162002bc39501905562004ea6565b611fb5805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611fb3805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611f4180549190600160401b83101562002a23578262001a4491600162002bc39501905562004e6e565b60405190620067518262002b00565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067878262002a8f565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200696d5781620067ff88620068079362004ce2565b5101620073df565b60269283821015620029ab57601a918203620068c557876200682a915162004ce2565b51928284015190811015620029ab570362006883575093620068746200687c926200686c6200686560a0604062000f559a0151015162004c8b565b5162004c8b565b519062006049565b9590620073ed565b92620067dc565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068de81620067ff89869a979a5162004ce2565b82811015620029ab5760140362006917575050906200687462000f55956200621562006910846200687c965162004ce2565b516200743a565b6200692990620067ff85855162004ce2565b90811015620029ab5760151462006947575b506200687c9062004c7b565b906200687462006966956200621562006910846200687c965162004ce2565b906200693b565b505050909250803410600014620069e35760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007264575b50613f739182549260ff84169362006a0485620029a0565b60019480860362006a3e5750505062006a3491925062006a2e62006a2882620074d1565b620075a8565b62007632565b6200326162006742565b62006a4981620029a0565b60028114808062007257575b1562006e805750505062006a6982620074e6565b1562006e415762006a7a82620074e6565b1562006e055762006ab390602080930190600260ff8560018060a01b0362006aa3865162004c8b565b5151169460409687915162004c8b565b510151015192541662006ac681620029a0565b0362006dc55781600052613f778085528360002092613f7880549485600052875260ff86600020541662006d875783519480600052613f7693848952600396878960002001540362006d215783600052885286600020906000528752856000208960ff19825416179055886000905b62006b7f575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b6862032c82565b519162006b758362002b00565b6015835282015290565b845181101562006d1b5786825480600052858a5262006ba48389846000200162004efa565b905490891b1c908a84888b62006bbb838d62004ce2565b511562006c7957505050505062006c1e62006bfe85549283600052888d526200621562006bf087600480986000200162004efa565b9054908d1b1c918962032b6c565b9092600052878c5262006c1785858d6000200162004efa565b9062004f27565b1562006c37575062006c309062004c7b565b8962006b35565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006cb662006cc8966200621587999462006c17979860005284895262006ca987600580986000200162004efa565b9054911b1c918d62032b6c565b959097600052528c6000200162004efa565b1562006cd95762006c309062004c7b565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b3b565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e90829794959697620029a0565b600382149182806200724a575b1562006f1f5750505050505062006eb4816200754d565b1562006ecf5762006ec5906202f874565b6200326162006778565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f2a81620029a0565b81806200723c575b806200722f575b156200715957505050509060ff9062006f5162032e94565b54169062006f5f82620029a0565b81036200701d575062006f7281620074d1565b1562006f8c578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200702b600392620029a0565b146200706457505b604051620070418162002b00565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200706f816200754d565b15620070805762006ec5906202f874565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b6200716481620029a0565b82156200721a575b5050806200720c575b62007184575050505062007033565b60ff19161790556200719681620074d1565b15620071b0578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b50613f725442101562007175565b62007227919250620029a0565b38806200716c565b50613f7254421062006f39565b50613f715442101562006f32565b50613f7254421062006e9d565b50613f7154421062006a55565b60018060a01b039081845116600052611f459081602052604060002054156200735a575b62007294903462005056565b90156200731657620072b790838651166000528260205260406000205462006049565b929015620072d55784511660005260205260406000205538620069ec565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b611f4654939291906000805b8681106200739c575b506200729492939495501562007388575b905062007288565b62007396848751166200662e565b62007380565b84620073a88262004e52565b919054818b51169260031b1c1614620073cc57620073c69062004c7b565b62007366565b509394508493506001620072946200736f565b516026811015620029ab5790565b15620073f557565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007454818351015162004caf565b5151841015620074c9579262006874620074b9604094620074b185620074a986620074978b6200749e8362000f559f9e6200749790620074bf9e51015162004caf565b5162004ce2565b519451015162004cc0565b519062005f19565b9290620073ed565b62006049565b919290506200743f565b509093505050565b602001515115620074e157600190565b600090565b6020015160018151036200750a5762007503620032619162004c8b565b5162007510565b50600090565b60208101516026811015620029ab576020036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b6020015160018151036200750a576200756a620032619162004c8b565b5160208101516026811015620029ab576021036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b15620075b057565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763d8162015580565b516201507f576006811015620029ab57600381146201502657806200769a5760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200b1a25750600080611f4a54905b8181106200b15b575b5050156200b13f575b60005b6020908183015191825182101562007727576200771981611f49620076ff620076f962000f5595620067ff88620077219a62004ce2565b62033aa2565b9160018060a01b0388511660005252604060002062024340565b429162004f27565b620076c2565b50505060005b602080830151805183101562007775576200775291620067ff84620076f99362004ce2565b90606482101562004c99576200776f914290611f4b015562004c7b565b6200772d565b505050906000905b602083015180518310156200b1395782620077989162004ce2565b5160208101805160269081811015620029ab57156200b0f657815181811015620029ab57600103620079e6575050604080910190620077dc60c08351015162004c8b565b5192620077fe60a0620077f3818651015162004c8b565b519451015162004caf565b51956200780f85518551146202e0ca565b6200781e85518851146202e130565b60005b8551811015620079645762007837818662004ce2565b516103e8908181101562004c9957600160ff60076200785f9360031b0154161515146202e192565b6200786b828a62004ce2565b5162007878838862004ce2565b51908282101562004c99576006620078969260031b01549062006049565b90620078a3848962004ce2565b51918383101562004c99576006620078c09360031b01556202e1ea565b620078cc828a62004ce2565b5190620078da838862004ce2565b518181101562004c99576001600160a01b0393926200791a916003908662007903878e62004ce2565b5116600052811b0160205287600020549062006049565b62007926848a62004ce2565b519283101562004c9957600362000f55936200795e9662007948878e62004ce2565b5116600052811b0160205287600020556202e249565b62007821565b50939262007981919296506200797a90620336a2565b9262033586565b9451926200798f8462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba620079c3938762004ce2565b51878a62033195565b6200799b565b5094509260209250620079dd915062004c7b565b9190506200777d565b815181811015620029ab5760020362007c7d575050604080910180519283519562007a2b62007a1a60a08097015162004c8b565b51956200749e818651015162004caf565b5193875186510362007c2a57875184510362007bd657875185510362007b7f575060005b855181101562007b695762007a65818762004ce2565b51906103e8918281101562004c995762007a8b60ff6007809360031b015416156202e2a2565b62007a97828962004ce2565b518381101562004c995760031b01805460ff1916600117905562007abc818a62004ce2565b5162007ac9828962004ce2565b51908382101562004c9957600562007ae59260031b01620056c2565b62007af1818662004ce2565b5162007afe828962004ce2565b518381101562004c995760031b6001015562007b1b818762004ce2565b5162007b28828962004ce2565b518381101562004c995760031b6002015562007b45818862004ce2565b519182101562004c99576000600662007b639360031b015562004c7b565b62007a4f565b50955093905060209250620079dd915062004c7b565b5162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b8195939492955181811015620029ab5760030362008279575050604084019062007cac60c08351015162004c8b565b519362007cc360a0620077f3818651015162004c8b565b519362007cd8865185511462000f4e62033906565b62007ceb865186511462000f4e62033906565b60005b865181101562007d545762007d04818662004ce2565b51906103e882101562004c9957600362007d4e9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b51111562000f4e62033a0a565b62007cee565b50909493919460005b855181101562007e885762007d73818662004ce2565b51906103e88083101562004c9957600360018060a01b0393848c5116600052811b0160205262007db660406000205462007dae848962004ce2565b519062005056565b9062007dc3848a62004ce2565b51918383101562004c9957600362007df293878f5116600052811b0160205260406000205562000f4e62033a0a565b62007dfe828862004ce2565b518181101562004c99576003908462007e18858c62004ce2565b5116600052811b0160205262007e396040600020546200686c848962004ce2565b62007e45848a62004ce2565b519283101562004c9957600362000f559362007e829662007e67878e62004ce2565b5116600052811b0160205260406000205562000f4e62033a6f565b62007d5d565b5091509162007e9f62007ea69196959496620336a2565b9562033586565b926040519462007eb68662002b00565b6001865260203681880137516001600160a01b031662007ed68662004c8b565b526000905b8651821015620082645762007ef1828862004ce2565b516106c05262007f02855162004dfe565b9660009462007f12885162004dfe565b610400528594865b885181101562007fe9578a8962007f4a6001600160a01b0362007f3e858462004ce2565b51166106c0516203348a565b158062007fa3575b62007f6b575b505062007f659062004c7b565b62007f1a565b9862007f989162001b0382859c62007f8f62007f659760018060a01b039262004ce2565b51169262004ce2565b9790508a8962007f58565b5050506103e86106c051101562004c99576001600160a01b0362007fc8828b62004ce2565b511660005260036106c051811b016020528a89604060002054151562007f52565b509098949897969291939760005b88518110156200808b576103e86106c051101562004c99576001600160a01b0362008023828b62004ce2565b511660005260036106c051811b016020526040600020541562008052575b6200804c9062004c7b565b62007ff7565b996200804c9062008082906001600160a01b03620080718e8d62004ce2565b511662001b03826104005162004ce2565b9a905062008041565b5098509694939291956106c0516103e8811015806104205262004c995760031b6004015496620080c6620080c0878a62006258565b62004dfe565b996000998a6109a0525b6104205162004c99576109a0518a811015620081855762008105620081229160006104205260046106c05160031b0162004efa565b90546104005160039290921b1c6001600160a01b03169062033539565b1562008141575b620081376109a05162004c7b565b6109a052620080d0565b99808c62001b036200817e93620081656109a05160046106c05160031b0162004efa565b905460039190911b1c6001600160a01b03169262004ce2565b9962008129565b509a939794969299919850946000915b8383106200822a57505050506104205162004c99578051906001600160401b03821162002a2357602090620081d48360046106c05160031b0162005036565b0160046106c05160031b01600052602060002060005b8381106200820c5750505050620082019062004c7b565b909295919562007edb565b82516001600160a01b031681830155602090920191600101620081ea565b6200825d9062008256906001600160a01b0362008248868662004ce2565b511662001b03828962004ce2565b9262004c7b565b9162008195565b91945050620079dd9194506020925062004c7b565b8195939492955181811015620029ab5760040362008501575050604080920160c094620082ba620082ae878451015162004c8b565b51968351015162004caf565b5194620082d160a0620077f3818651015162004c8b565b5193620082e6885188511462000f4e62033906565b620082f9885185511462000f4e62033906565b6200830c885186511462000f4e62033906565b60005b8851811015620083745762008325818662004ce2565b51906103e882101562004c99576200836e916003906001600160a01b036200834e848e62004ce2565b5116600052811b0160205262000f55886000205462007d41838a62004ce2565b6200830f565b50909691959294939660005b8351811015620084b55762008396818862004ce2565b51906103e8918281101562004c99576001600160a01b039060039082620083be858a62004ce2565b5116600052811b01602052620083df8b62007dae848b600020549262004ce2565b90620083ec848c62004ce2565b51918583101562004c995760036200842593856200840b888d62004ce2565b5116600052811b016020528a6000205562000f4e62033a0a565b62008431828a62004ce2565b518381101562004c9957600390826200844b858b62004ce2565b5116600052811b016020526200846c8b6200686c848b600020549262004ce2565b9190506200847b838b62004ce2565b519384101562004c9957620084af9360039162008499858b62004ce2565b5116600052811b01602052876000205562004c7b565b62008380565b5094620084d892975062007e9f91939450620084d190620336a2565b9362033586565b9260005b8351811015620079c9578062000f55620079ba620084fb938762004ce2565b620084dc565b8195949395519080821015620029ab57600591820362008a525750505060408401906200854360a062008538818551015162004c8b565b519351015162004caf565b51928251845103620089ef5760005b8351811015620085ab5762008568818562004ce2565b51906103e882101562004c99576003620085a59260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62008552565b509060005b83518110156200864557620085c6818562004ce2565b51906103e88083101562004c9957600360018060a01b0393848b5116600052811b016020526200860160406000205462007dae848a62004ce2565b6200860d848962004ce2565b519283101562004c9957600362000f55936200863f968d5116600052811b0160205260406000205562000f4e62033a0a565b620085b0565b5094939250906200865690620336a2565b9360405193620086668562002b00565b6001855260203681870137516001600160a01b0316620086868562004c8b565b5260405192620086968462002ac7565b6000845260003681376000905b86518210156200826457620086b9828862004ce2565b5161032052620086ca855162004dfe565b96600094620086da885162004dfe565b6106a0528594865b8851811015620087a8578a89620087126001600160a01b0362008706858462004ce2565b5116610320516203348a565b158062008762575b62008733575b50506200872d9062004c7b565b620086e2565b98620087579162001b0382859c62007f8f6200872d9760018060a01b039262004ce2565b9790508a8962008720565b5050506103e861032051101562004c99576001600160a01b0362008787828b62004ce2565b5116600052600361032051811b016020528a8960406000205415156200871a565b509098949897969291939760005b88518110156200884a576103e861032051101562004c99576001600160a01b03620087e2828b62004ce2565b5116600052600361032051811b016020526040600020541562008811575b6200880b9062004c7b565b620087b6565b996200880b9062008841906001600160a01b03620088308e8d62004ce2565b511662001b03826106a05162004ce2565b9a905062008800565b509850969493929195610320516103e8811015806106805262004c995760031b60040154966200887f620080c0878a62006258565b996000998a610540525b6106805162004c9957610540518a8110156200892557620088be620088db9160006106805260046103205160031b0162004efa565b90546106a05160039290921b1c6001600160a01b03169062033539565b15620088fa575b620088f06105405162004c7b565b6105405262008889565b99808c62001b036200891e93620081656105405160046103205160031b0162004efa565b99620088e2565b509a939794969299919850946000915b838310620089ca57505050506106805162004c99578051906001600160401b03821162002a2357602090620089748360046103205160031b0162005036565b0160046103205160031b01600052602060002060005b838110620089ac5750505050620089a19062004c7b565b9092959195620086a3565b82516001600160a01b0316818301556020909201916001016200898a565b620089e89062008256906001600160a01b0362008248868662004ce2565b9162008935565b60405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029ab5760060362008cbc5750505090604080920162008a8260c08251015162004c8b565b519462008a9960a062008538818551015162004c8b565b5192865183510362008c6b57865184510362008c1f5760005b875181101562008b175762008ac8818562004ce2565b51906103e882101562004c995762008b11916003906001600160a01b0362008af1848d62004ce2565b5116600052811b0160205262000f55876000205462007d41838962004ce2565b62008ab2565b509092919260005b875181101562008bcb5762008b35818662004ce2565b516103e88082101562004c99576001600160a01b0392916003908462008b5c858e62004ce2565b5116600052811b0160205262008b7c886000205462007dae848962004ce2565b62008b88848a62004ce2565b519283101562004c9957600362000f559362008bc59662008bab8f889062004ce2565b5116600052811b01602052896000205562000f4e62033a0a565b62008b1f565b50959262008be09192506200797a90620336a2565b92519462008bee8662002ac7565b60008652600036813760005b8351811015620079c9578062000f55620079ba62008c19938762004ce2565b62008bfa565b845162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029ab5760070362008e0b5750505060408091019362008ce860c08651015162004c8b565b519262008cfa60a08751015162004c8b565b519551519162008d12855188511462000f4e62033906565b60005b855181101562007b695762008e059062000f556001600160a01b038260028862008ded8e62008de28e62008dd88f8962008d508a8562004ce2565b511660005262008d8c8962008d8481611f409a8b60205262008d7e60ff8760002054161562000f4e620339d7565b62004ce2565b519662004ce2565b51968a62008dc283519b8c9662008da38862002a07565b600188526060602089019860008a528781019b8c52019b8c5262004ce2565b5116600052602052600020975115158862005795565b51151586620057a6565b5160018501620056c2565b5191015562008dfd838a62004ce2565b511662006718565b62008d15565b825195969593949281851015620029ab57600894850362008f025750505062008e3d60c0604080950151015162004c8b565b519360005b855181101562008eed5762008ee7906001600160a01b038062008e66838a62004ce2565b5116600052611f40908160205262008ebc60ff62008e936001828c600020541615151462000f4e62033936565b8262008ea0868d62004ce2565b5116600052836020528960002054891c161562000f4e6203399e565b62008ec8838a62004ce2565b51166000526020528560002061010061ff001982541617905562004c7b565b62008e42565b509490935060209250620079dd915062004c7b565b805182811015620029ab5760090362008fd65750505062008f2c60c0604080950151015162004c8b565b519360005b855181101562008eed5762008fd090866001600160a01b038062008f56848462004ce2565b511660005262008fa96001898362008f8b87611f40978860205262008d7e8660ff8097600020541615151462000f4e62033936565b5116600052846020528a600020548a1c1615151462000f4e62033969565b62008fb5838a62004ce2565b51166000526020528560002061ff0019815416905562004c7b565b62008f31565b80979694929395975182811015620029ab57600a03620090b457505050506040809401916200901b60a06200901060c08651015162004c8b565b519451015162004c8b565b519162009030845184511462000f4e62033906565b60005b8451811015620079c957620090ae906001600160a01b038062009057838962004ce2565b5116600052611f40806020526200907e600160ff8c600020541615151462000f4e62033936565b6200908a838862004ce2565b519162009098848a62004ce2565b5116600052602052600289600020015562004c7b565b62009033565b809795975182811015620029ab57600b03620091835750505050604080920193620090e460c08651015162004c8b565b5194515191620090fc865184511462000f4e62033906565b60005b8651811015620079c9576200917d9062000f556001600160a01b038062009127848c62004ce2565b5116600052611f40806020526200914e600160ff8b600020541615151462000f4e62033936565b6200915a848962004ce2565b519162009168858d62004ce2565b511660005260205260018860002001620056c2565b620090ff565b809794959396975182811015620029ab57600c03620092da57505050604001606091828251015193620091b6856202d715565b60005b8551811015620092c45760e0620091d582878751015162004ce2565b510151156200925c57620091f9620091f282878751015162004ce2565b5162005cc9565b611f42805460001992919083810190811162001e4f576200921b8a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c89565b5001805460ff1916905562004c7b565b620091b9565b620092776200927082878751015162004ce2565b5162005d15565b611f42805460001992919083810190811162001e4f57620092998a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c49565b50959150935060209250620079dd915062004c7b565b80979695939294975182811015620029ab57600d036200942f5750506040019460206200930c60a08851015162004c8b565b5196510151916200932187518451146202de09565b60005b875181101562007b69578080878a62009342620093d1958962004ce2565b5115620093d757620093a26200938984836200937462009368620093ad98889762004ce2565b51611f4254116202de92565b62008d7e8d6200939062009389858562004ce2565b5162005c89565b509060ff9889920154901c166202deea565b50015416156202df4b565b86620093be62009389838c62004ce2565b5001805460ff1916600117905562004c7b565b62009324565b620093a262009417848362009402620093f66200941e98889762004ce2565b51611f4354116202de92565b62008d7e8d6200939062009417858562004ce2565b5162005c49565b86620093be62009417838c62004ce2565b80979493975182811015620029ab57600e03620095155750506040019160206200945e60a08551015162004c8b565b5193510151956200947384518851146202de09565b60005b845181101562007b695780620094916200949d928a62004ce2565b51620094a35762004c7b565b62009476565b620094bf620094b3828862004ce2565b51611f4254116202dfac565b6200950487620094e9620094d862009389858b62004ce2565b5060ff9283910154891c166202e005565b88620094fa62009389858b62004ce2565b500154166202e067565b866200924662009389838962004ce2565b8091929350969495965182811015620029ab57600f036200963957505060400160609182825101519362009549856202d715565b60005b8551811015620092c45760e06200956882878751015162004ce2565b51015115620095d85762009585620091f282878751015162004ce2565b611f42805460001992919083810190811162001e4f57620095a78a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c89565b6200954c565b620095ec6200927082878751015162004ce2565b611f42805460001992919083810190811162001e4f576200960e8a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c49565b80919293949695505182811015620029ab57601003620096de57505060400151906200966e60a0608084015193015162004c8b565b519362009683835186511462000f4e62033906565b60005b8351811015620096cb578062000f55620096a5620096c5938762004ce2565b51620096b18162002f45565b620096bd838a62004ce2565b51906202d5d9565b62009686565b5093509160209150620079dd9062004c7b565b809592955182811015620029ab5760110362009967575050906040809401916200971360a06200901060c08651015162004c8b565b51916200972484518451146202d58d565b60005b84518110156200979c57620097969062000f556001600160a01b03806200974f848a62004ce2565b5116600052611f4580602052620097708b600020546200686c868b62004ce2565b9190926200977f868c62004ce2565b51166000526020528a6000205562000f4e620338bc565b62009727565b5093945091620097ad915062033586565b90611f4692835494620097c6620080c085518862006258565b91600093845b88811062009927575060005b86518110156200987f576000805b8a811062009830575b501562009808575b620098029062004c7b565b620097d8565b94620098029062009827906001600160a01b0362008248898b62004ce2565b959050620097f7565b6200983b8162004e52565b90546001600160a01b0360039290921b1c8116906200985b858c62004ce2565b51161462009874576200986e9062004c7b565b620097e6565b5050600138620097ef565b50965094909350620098918362004dfe565b805191906001600160401b03831162002a2357602090620098b28462004f93565b0190600052602060002060005b83811062009909575050505060005b828110620098e657505050620079dd60209162004c7b565b620099039062000f556001600160a01b0362001a37838662004ce2565b620098ce565b82516001600160a01b031681830155602090920191600101620098bf565b946200995a62009961916200993c8862004e52565b905460039190911b1c6001600160a01b031662001b03828962004ce2565b9562004c7b565b620097cc565b805182811015620029ab5760120362009bd65750506040809401916200999860a06200901060c08651015162004c8b565b5191620099a984518451146202d58d565b60005b8451811015620099fb57620099f59062000f556001600160a01b0380620099d4848a62004ce2565b5116600052611f4580602052620097708b6000205462007dae868b62004ce2565b620099ac565b50949150929162009a0c9062033586565b90611f46805462009a1d8162004dfe565b9260009485925b80841062009ad1575050505062009a3b8362004dfe565b805191906001600160401b03831162002a235760209062009a5c8462004f93565b0190600052602060002060005b83811062009ab3575050505060005b82811062009a9057505050620079dd60209162004c7b565b62009aad9062000f556001600160a01b0362001a37838662004ce2565b62009a78565b82516001600160a01b03168183015560209092019160010162009a69565b9297600097929597949194998a5b865181101562009bc45762009af48b62004e52565b90546001600160a01b0360039290921b1c81169062009b14838a62004ce2565b51161462009b2d5762009b279062004c7b565b62009adf565b509950976001979592979491945b8062009b94575b1562009b5a5762009b539062004c7b565b9262009a24565b9562009b8d62009b539162009b6f8962004e52565b905460039190911b1c6001600160a01b031662001b03828a62004ce2565b9662004c7b565b5062009ba08162004e52565b60018060a01b0391549060031b1c16600052611f4560205282600020541562009b42565b50999890989795929794919462009b3b565b809592955182811015620029ab5760130362009c3757505060408091015101519260005b845181101562009c26578062000f5562009c1962009c20938862004ce2565b516202f808565b62009bfa565b50925090620079dd60209162004c7b565b80519180831015620029ab57601492830362009dda5750505060408091019062009c6660c08351015162004c8b565b519262009c7d60a0620077f3818651015162004c8b565b519562009c8e85518551146202e0ca565b62009c9d85518851146202e130565b60005b855181101562009d855762009cb6818962004ce2565b5162009cc3828762004ce2565b516103e8918282101562004c9957600662009ce49260031b01549062006049565b9062009cf1848962004ce2565b51918383101562004c9957600662009d0e9360031b01556202e1ea565b62009d1a828a62004ce2565b519062009d28838862004ce2565b518181101562004c99576001600160a01b03939262009d51916003908662007903878e62004ce2565b62009d5d848a62004ce2565b519283101562004c9957600362000f559362009d7f9662007948878e62004ce2565b62009ca0565b50939262009d9b919296506200797a90620336a2565b94519262009da98462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba62009dd4938762004ce2565b62009db5565b815181811015620029ab57601590810362009e0657505050506020919262000f55620079dd926202e847565b82519180831015620029ab57601692830362009e6e57505050505060c0604062009e34920151015162004c8b565b519260005b845181101562009c265762009e689062000f556001600160a01b0362009e60838962004ce2565b5116620066cd565b62009e39565b835181811015620029ab5760170362009ec75760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab5760180362009f3a57505050505060c0604062009ef2920151015162004c8b565b51611fb6805460ff191660011790559260005b845181101562009c265762009f349062000f556001600160a01b0362009f2c838962004ce2565b511662006682565b62009f05565b839796975181811015620029ab576019036200a0ae57505050505060008080604080940160a0808251015180516200a075575b5050519060e08201519162009f916200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156200a06c573d9162009fb28362002edc565b9262009fc18351948562002b1c565b83523d6000602085013e5b1562009fe1575050620079dd60209162004c7b565b62004c7792506200a04d8151926000805160206203401b833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b838501528381516200a03c816059946020868601910162002d89565b810103603981018552018362002b1c565b5162461bcd60e51b815260206004820152918291602483019062002dae565b60609162009fcc565b6200a0809062004c8b565b51516200a08f575b8062009f6d565b81925062006865906200a0a59251015162004c8b565b5190386200a088565b835181811015620029ab57601a036200a1ae57505050506200a0d960a0604080940151015162004c8b565b51906200a0ea60038351146202d58d565b6200a0f58262004c8b565b51926200a10e6200a1068462004caf565b519362004cc0565b51926200a17457505091620079dd916001602094146000146200a16d576200a14d906200a140611fb191825462006049565b90915562000f4e62033857565b62000f55611fb26200a160815462006036565b90915562000f4e62033891565b5062004c7b565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b9091928094505181811015620029ab57601b036200a64357505050505091906200a1ee611faf54620061966200a1e362033793565b612710831062004c48565b50506200a1fa62033857565b506000805b6103e881106200a5d2575b50506200a21662006172565b6200a224613f745462004dfe565b9060009485935b6103e88510156200a5c55760ff60078660031b015416156200a3845760009560028660031b0154156200a37557869796975b62004c995760048660031b01548810156200a35c576200a285886004600389901b0162004efa565b600160a01b6001900391549060031b1c1696876000528660031b600301602052604097858960002054906200a2ba9162005f19565b99906200a2c662033857565b6200a2d19162004c48565b6000998960031b600201546200a2e79162005f19565b91906200a2f362033857565b6200a2fe9162004c48565b828b52611f476020528a20908154906200a3189162006049565b9091556200a32562033857565b6200a3309162004c48565b6200a33c828862004ce2565b526200a3489062004c7b565b976200a3549062004c7b565b97966200a25d565b91946200a36c9196975062004c7b565b9390946200a22b565b91946200a36c91965062004c7b565b949592915092505b6200a3978262004dfe565b91600091825b8281106200a52f57505050611f48908154926200a3bf620080c0858462006258565b9360009081905b8082106200a4f457505060005b8381106200a4505750508351939150506001600160401b03831162002a23576020906200a4008462004f58565b0190600052602060002060005b8381106200a4325750505050620079dd6020916000611fb1556000611fb25562004c7b565b82516001600160a01b0316818301556020909201916001016200a40d565b6000805b8381106200a4ac575b50156200a476575b6200a4709062004c7b565b6200a3d3565b906200a470906200a4a3906001600160a01b036200a495858762004ce2565b511662001b03828a62004ce2565b9190506200a465565b6001600160a01b03806200a4c1858862004ce2565b5116906200a4d0838b62004ce2565b5116146200a4e9576200a4e39062004c7b565b6200a454565b50506001386200a45d565b9091620082566200a528916200a50a8562004e36565b905460039190911b1c6001600160a01b031662001b03828b62004ce2565b906200a3c6565b6000805b8581106200a57d575b50156200a555575b6200a54f9062004c7b565b6200a39d565b926200a54f906200a574906001600160a01b0362008248878662004ce2565b9390506200a544565b6001600160a01b03806200a592858762004ce2565b5116906200a5a1838a62004ce2565b5116146200a5ba576200a5b49062004c7b565b6200a533565b50506001386200a53c565b949592915092506200a38c565b806003959394951b9060ff600783015416156200a638576200a622620074b962000f55946200a6166200a62e9560026200a60c8762005deb565b9101549062005f19565b929062000f4e62033857565b939062000f4e62033857565b939291936200a1ff565b50939291936200a20a565b835181811015620029ab57601c036200a69c5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab57601d036200a6c2575b5050505050620079dd60209162004c7b565b8397959694975181811015620029ab57601e036200af2d5750505050604084019060a0906200a6f5828451015162004c8b565b51516200a706838551015162004caf565b5151036200aeb0576200a71d828451015162004c8b565b51516200a72e838551015162004cc0565b5151036200ae34576200a745828451015162004c8b565b51946200a756838551015162004caf565b51916200a7876200a76b858751015162004cc0565b51946200a77c818851015162004c8b565b519651015162004caf565b51958551875103620089ef5760005b86518110156200a7ef576200a7ac818862004ce2565b51906103e882101562004c995760036200a7e99260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b6200a796565b5090969192939660005b86518110156200a898576200a80f818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b016020526200a84760406000205462007dae838b62004ce2565b91906200a855828a62004ce2565b51906103e882101562004c99576200a89293600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b6200a7f9565b5093979550936200a8ac90969296620336a2565b96604051966200a8bc8862002b00565b60018852602036818a013786516001600160a01b03166200a8dd8962004c8b565b52604051966200a8ed8862002ac7565b600088526000610720525b895161072051908110156200acb5576200a913908b62004ce2565b516103a0526200a924885162004dfe565b996000976200a9348b5162004dfe565b610a60528897895b8b518110156200aa02578d8c6200a96c6001600160a01b036200a960858462004ce2565b51166103a0516203348a565b15806200a9bc575b6200a98d575b50506200a9879062004c7b565b6200a93c565b9b6200a9b19162001b0382859f62007f8f6200a9879760018060a01b039262004ce2565b9a90508d8c6200a97a565b5050506103e86103a051101562004c99576001600160a01b036200a9e1828e62004ce2565b511660005260036103a051811b016020528d8c60406000205415156200a974565b50909b989a99949691929395979b60005b8b518110156200aaa7576103e86103a051101562004c99576001600160a01b036200aa3f828e62004ce2565b511660005260036103a051811b01602052604060002054156200aa6e575b6200aa689062004c7b565b6200aa13565b9c6200aa9e6200aa68918f6200aa8d8f9160018060a01b039262004ce2565b511662001b0382610a605162004ce2565b9d90506200aa5d565b509a9b50989596919396949092946103a051996103e88b10159b8c62004c99578d9b60031b600401549d6200aadd908f62006258565b6200aae89062004dfe565b610340526000610a00528c6000610500525b62004c9957610500519c8e8e10156200abb857506200ab466200ab2960009e60046103a05160031b0162004efa565b9054610a605160039290921b1c6001600160a01b03169062033539565b156200ab66575b8c6200ab5c6105005162004c7b565b610500526200aafa565b6200ab7e6105005160046103a05160031b0162004efa565b60018060a01b0391549060031b1c166200ab9f610a00516103405162004ce2565b526200abae610a005162004c7b565b610a00526200ab4d565b939d509396999094979b50999094979960005b8281106200ac695750505062004c995761034051516001600160401b03811162002a23576200ac048160046103a05160031b0162005036565b602061034051019060046103a05160031b0160005260206000209160005b8281106200ac4b57505050506200ac3c6107205162004c7b565b6107205295989094986200a8f8565b81516001600160a01b0316818501556020909101906001016200ac22565b6200acaf906001600160a01b036200ac82828562004ce2565b51166200ac96610a00516103405162004ce2565b526200aca5610a005162004c7b565b610a005262004c7b565b6200abcb565b5094929750929750939450600094855b87518110156200ad35576200acf86200acf06200ace3838962004ce2565b51620074a9848d62004ce2565b91906202f637565b806200ad11575b506200ad0b9062004c7b565b6200acc5565b906200ad266200ad2e986200ad0b9362006049565b98906202f684565b906200acff565b509650945092909150806200ad59575b5050620079dd6020915b913880806200a6b0565b6200ad8c9060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b92906202f6dd565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106200adea575b505091620079dd91602093156200adce575b50916200ad45565b516200ade3906001600160a01b03166200662e565b386200adc6565b6200adf58162004e52565b9054855160039290921b1c6001600160a01b039081169116146200ae24576200ae1e9062004c7b565b6200adab565b506001915082905060206200adb4565b60405162461bcd60e51b815260206004820152605960248201526000805160206203413b83398151915260448201527f642070726963654172726179206973206e6f7420657175616c2061742042415460648201527810d217d095549397d513d2d15394d7d0539117d49151955391603a1b608482015260a490fd5b60405162461bcd60e51b815260206004820152605a60248201526000805160206203413b83398151915260448201527f6420616d6f756e744172726179206973206e6f7420657175616c2061742042416064820152791510d217d095549397d513d2d15394d7d0539117d4915195539160321b608482015260a490fd5b8397949695975181811015620029ab57601f036200af7157505050506020916200af6b6200af646040620079dd9401515162004c8b565b516202f83e565b6200ad4f565b835181811015620029ab576020036200af97575b5050505050620079dd6020916200ad4f565b835181811015620029ab5760218091036200afb4575b506200af85565b8451828110156200b0e1576022036200aff457505050505050620079dd602091611fb660ff1981541690556200afe962005023565b91388080806200afad565b8451828110156200b0e1576023036200b01b575b505050505050620079dd6020916200afe9565b845194828610156200b0e15760248096036200b039575b506200b008565b8051838110156200b0cd576025146200b0325751918210156200b0b95750036200b07d5750506020916200b071620079dd926202e847565b9138808080806200b032565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200b155906001600160a01b031662006658565b620076bf565b6200b1668162004ea6565b9054855160039290921b1c6001600160a01b039081169116146200b195576200b18f9062004c7b565b620076ad565b50505060013880620076b6565b600281036200b1c65760405162461bcd60e51b81528062004c7760048201620075e7565b6001146200b1d15750565b6200b1df611f4354620052ab565b805190600160401b821162002a2357613efb5482613efb5580831062014fab575b50602001613efb60005260206000206000915b83831062014f8a575050505060005b611f43548110156200b25b578062000f556200b2426200b2559362005c49565b506200b24e8362005c69565b90620154b5565b6200b222565b506200b26a611f4254620052ab565b805190600160401b821162002a2357613efa5482613efa5580831062014eee575b50602001613efa60005260206000206000915b83831062014ecd575050505060005b611f42548110156200b2df578062000f556200b2cd6200b2d99362005c89565b506200b24e8362005ca9565b6200b2ad565b5060005b6103e8811015806200b49057600160ff611fbf8460031b0154161515146200b318575b506200b3129062004c7b565b6200b2e3565b916000835b62004c9957611fbc8360031b01548110156200b387576200b37e929350600092816200b3528593611fbc8860031b0162004efa565b9054600391821b1c6001600160a01b031660009081529087901b611fbb01602052604081205562004c7b565b9093926200b31d565b5091604051906200b3988262002ac7565b6000825262004c99578051906001600160401b03821162002a23576020906200b3c983611fbc8660031b0162005036565b01611fbc8360031b01600052602060002060005b8381106200b47257505050611fbf600383901b908101805460ff191690556000611fb88201819055611fb98201819055611fba8201819055611fbd90910180546200b3129493506200b42f9062002c01565b601f908181116200b450575b5050556000611fbe8260031b0155906200b306565b6200b46a9183855260208520910160051c81019062004f3f565b38806200b43b565b82516001600160a01b0316818301556020909201916001016200b3dd565b505060005b6103e8811062014e3f575060005b611f41548110156200b4fe57806200b4bf6200b4f89262004e6e565b60018060a01b0391549060031b1c16600052613ef860205260006002604082208281556200b4f0600182016200533c565b015562004c7b565b6200b4a3565b506200b50d611f415462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613ef95483613ef95580841062014e1d575b5001613ef9600052602060002060005b83811062014dff575050505060005b611f41548110156200b5d1576200b5768162004e6e565b9054613ef95460039290921b1c6001600160a01b0316919081101562004c9957613ef9600052600080516020620340db833981519152810180546001600160a01b0319169092179091556200b5cb9062004c7b565b6200b55f565b509060005b611f41548110156200b69057806200b5f26200b6459262004e6e565b9060018060a01b03918291549060031b1c16600052611f40602052604080600020916200b61f8462004e6e565b90549060031b1c16600052613ef8602052600020908082036200b64b575b505062004c7b565b6200b5d6565b600280916200b67160ff6200b664818454168762005795565b825460081c1685620057a6565b6200b683600182016001860162015151565b015491015538806200b63d565b5060005b613f02548110156200b6e257806200b6b06200b6dc9262004e8a565b60018060a01b0391549060031b1c16600052613f0160205262000f556040600020606481019062004f3f565b6200b694565b506200b6f1611f4a5462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613f025483613f025580841062014ddd575b5001613f02600052602060002060005b83811062014dbf575050505060005b611f4a548110156200b786578062000f556200b7636200b7809362004ea6565b905460039190911b1c6001600160a01b031662001a448362004e8a565b6200b743565b5060005b611f4a548110156200b81157806200b7a66200b7f89262004ea6565b9060018060a01b03918291549060031b1c16600052611f49602052604080600020916200b7d38462004ea6565b90549060031b1c16600052613f01602052600020908082036200b7fe57505062004c7b565b6200b78a565b6200b8099162015549565b38806200b63d565b50611f4b80546000905b6064821062014da6575050611faf54613f675550611fb054613f6855611fb154613f6955611fb254613f6a55611fb3546001600160401b03811162002a2357600160401b811162002a2357613f6b5481613f6b5580821062014d78575b50613f6b60009081527f0c040229f6fc4874d4176ee508a0872dc89a48e51cc9b61a792006f29e062754805460008051602062033ebb83398151915291905b84841062014d56575050505050611fb454600160401b811162002a2357613f6c5481613f6c5580821062014d14575b50613f6c600090815260008051602062033efb8339815191527fcdf85548d0b3537a0f46212d2994f9493fe1dfa88d3af4ddb0cac3c506fd3f595b83831062014cf6575050611fb5549150506001600160401b03811162002a2357600160401b811162002a2357613f6d5481613f6d5580821062014cc8575b50613f6d60009081527f70c3d981fef3a436e3d026045c487f2278cccbfa7f9e11fbd3c1406b0017bd5d8054600080516020620340bb83398151915291905b84841062014ca657505050505060ff611fb65416151560ff8019613f6e5416911617613f6e5560005b613efe548110156200ba1157806200b9e36200ba0b9262004ec2565b905460039190911b1c6001600160a01b03166000908152613efd602052604081205562004c7b565b6200b9c7565b506200ba20611f465462004dfe565b8051906001600160401b03821162002a23576020906200ba408362004fdd565b01613efe600052602060002060005b83811062014c88575050505060005b611f46548110156200baa1578062000f556200ba7e6200ba9b9362004e52565b905460039190911b1c6001600160a01b031662001a448362004ec2565b6200ba5e565b5060005b611f46548110156200bb1057806200bac16200bb0a9262004e52565b9060018060a01b03918291549060031b1c16600052611f4560205260408060002054916200baef8462004e52565b90549060031b1c16600052613efd6020526000205562004c7b565b6200baa5565b5060005b613f00548110156200bb5e57806200bb306200bb589262004ede565b905460039190911b1c6001600160a01b03166000908152613eff602052604081205562004c7b565b6200bb14565b506200bb6d611f485462004dfe565b8051906001600160401b03821162002a23576020906200bb8d8362005000565b01613f00600052602060002060005b83811062014c6a575050505060005b611f48548110156200bbee578062000f556200bbcb6200bbe89362004e36565b905460039190911b1c6001600160a01b031662001a448362004ede565b6200bbab565b5060005b611f48548110156200bc5d57806200bc0e6200bc579262004e36565b9060018060a01b03918291549060031b1c16600052611f4760205260408060002054916200bc3c8462004e36565b90549060031b1c16600052613eff6020526000205562004c7b565b6200bbf2565b50613f02546000805b82811062014c25575b501562014bef575b5060005b60208301519081518110156200bcd35762000f55620077196200bcad620076f96020620067ff866200bccd9862004ce2565b86516001600160a01b03166000908152613f016020526040902062024340565b6200bc7b565b505060005b602083015180518210156200bd2057620076f96020620067ff846200bcfd9462004ce2565b90606482101562004c99576200bd1a914290613f03015562004c7b565b6200bcd8565b5050906000905b60208101518051831015620106d857826200bd429162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036200c31457604001906200bd8360c08351015162004c8b565b51936200bd9a60a0620077f3818651015162004c8b565b51916200bdab86518551146202e0ca565b6200bdba86518451146202e130565b60005b86518110156200bf18576200bdd3818662004ce2565b516103e881101562004c9957600160ff611fbf6200bdfa9360031b0154161515146202e192565b6200be06818562004ce2565b516200be13828762004ce2565b51906103e882101562004c9957611fbe6200be349260031b01549062006049565b906200be41838862004ce2565b51916103e883101562004c9957611fbe6200be619360031b01556202e1ea565b6200be6d818562004ce2565b516200be7a828762004ce2565b51906103e882101562004c99576200bebd91611fbb906001600160a01b036200bea4868d62004ce2565b511660005260031b016020526040600020549062006049565b91906200becb828862004ce2565b51906103e882101562004c99576200bf129362000f5592611fbb906001600160a01b036200befa878f62004ce2565b511660005260031b016020526040600020556202e249565b6200bdbd565b50926200bf2f919250620084d190959495620336a2565b916040516200bf3e8162002ac7565b6000815260003681376000945b80518610156200c2fa576200bf61868262004ce2565b516104e0526200bf72855162004dfe565b966000946200bf82845162004dfe565b6105805260009460005b88518110156200c054578a896200bfbc6001600160a01b036200bfb0858462004ce2565b51166104e051620334e1565b15806200c00c575b6200bfdd575b50506200bfd79062004c7b565b6200bf8c565b986200c0019162001b0382859c62007f8f6200bfd79760018060a01b039262004ce2565b9790508a896200bfca565b5050506103e86104e051101562004c99576001600160a01b036200c031828b62004ce2565b5116600052611fbb6104e05160031b016020528a8960406000205415156200bfc4565b50909895979498969291939660005b88518110156200c0f2576103e86104e051101562004c99576001600160a01b03806200c090838c62004ce2565b5116600052611fbb6104e05160031b01602052604060002054156200c0c2575b506200c0bc9062004c7b565b6200c063565b819b6200c0ea916200c0d96200c0bc948d62004ce2565b511662001b03826105805162004ce2565b9a906200c0b0565b509850969592919093966104e0516103e8811015806103c05262004c995760031b611fbc0154986200c129620080c0898c62006258565b6107605260006101e05260006105e0525b6103c05162004c99576105e0518a8110156200c203576200c1706200c1909160006103c052611fbc6104e05160031b0162004efa565b9054610580516001600160a01b03939260031b9190911c83169062033539565b156200c1b0575b506200c1a66105e05162004c7b565b6105e0526200c13a565b60006103c0526200c1cf6105e051611fbc6104e05160031b0162004efa565b90549060031b1c166200c1e96101e0516107605162004ce2565b526200c1f86101e05162004c7b565b6101e052386200c197565b50979294959093985095909560005b8281106200c2ae575050506103c05162004c995761076051516001600160401b03811162002a23576200c25081611fbc6104e05160031b0162005036565b60206107605101611fbc6104e05160031b01600052602060002060005b8381106200c29057505050506200c2849062004c7b565b9492959091956200bf4b565b82516001600160a01b0316818301556020909201916001016200c26d565b6200c2f4906001600160a01b036200c2c7828562004ce2565b51166200c2db6101e0516107605162004ce2565b526200c2ea6101e05162004c7b565b6101e05262004c7b565b6200c212565b5050939092506200c30c915062004c7b565b90916200bd27565b9060208294939401516026811015620029ab576002036200c4cb576040809201908151938451916200c36b6200c34f60a08098015162004c8b565b51966200c360818751015162004caf565b519551015162004cc0565b5194835187510362007c2a57835185510362007bd657835186510362007b7f575060005b86518110156200c4b8576200c3a5818862004ce2565b516103e881101562004c995760ff611fbf6200c3c89260031b015416156202e2a2565b6200c3d4818862004ce2565b516103e881101562004c995760031b611fbf01805460ff191660011790556200c3fe818562004ce2565b516200c40b828962004ce2565b51906103e882101562004c9957611fbd6200c42a9260031b01620056c2565b6200c436818662004ce2565b516200c443828962004ce2565b516103e881101562004c995760031b611fb901556200c463818762004ce2565b516200c470828962004ce2565b516103e881101562004c995760031b611fba01556200c490818862004ce2565b51906103e882101562004c99576000611fbe6200c4b29360031b015562004c7b565b6200c38f565b509592509350506200c30c915062004c7b565b90929160208401516026811015620029ab576003036200caf15760408401906200c4fa60c08351015162004c8b565b51906200c51160a0620077f3818651015162004c8b565b51936200c526835185511462000f4e62033906565b6200c539835186511462000f4e62033906565b60005b83518110156200c597576200c552818662004ce2565b51906103e882101562004c9957611fbb6200c5919260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200c53c565b509095919560005b87518110156200c6e5576200c5b5818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200c5ef60406000205462007dae838962004ce2565b906200c5fc838862004ce2565b51916103e883101562004c9957611fbb6200c6359360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200c641818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200c665848c62004ce2565b511660005260031b016020526200c6876040600020546200686c838962004ce2565b91906200c695828862004ce2565b51906103e882101562004c99576200c6df93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b511660005260031b0160205260406000205562000f4e62033a6f565b6200c59f565b50926200c704919294506200c6fd90969596620336a2565b9462033586565b92604051906200c7148262002b00565b6001825260203681840137516001600160a01b03166200c7348262004c8b565b526000945b80518610156200c2fa576200c74f868262004ce2565b51610740526200c760855162004dfe565b966000946200c770845162004dfe565b6108405260009460005b88518110156200c842578a896200c7aa6001600160a01b036200c79e858462004ce2565b511661074051620334e1565b15806200c7fa575b6200c7cb575b50506200c7c59062004c7b565b6200c77a565b986200c7ef9162001b0382859c62007f8f6200c7c59760018060a01b039262004ce2565b9790508a896200c7b8565b5050506103e861074051101562004c99576001600160a01b036200c81f828b62004ce2565b5116600052611fbb6107405160031b016020528a8960406000205415156200c7b2565b50909895979498969291939660005b88518110156200c8e7576103e861074051101562004c99576001600160a01b036200c87d828b62004ce2565b5116600052611fbb6107405160031b01602052604060002054156200c8ae575b6200c8a89062004c7b565b6200c851565b996200c8a8906200c8de906001600160a01b036200c8cd8e8d62004ce2565b511662001b03826108405162004ce2565b9a90506200c89d565b50985096959291909396610740516103e8811015806102405262004c995760031b611fbc0154986200c91e620080c0898c62006258565b6105c05260006103005260006101c0525b6102405162004c99576101c0518a8110156200c9fa576200c9656200c98291600061024052611fbc6107405160031b0162004efa565b90546108405160039290921b1c6001600160a01b03169062033539565b156200c9a1575b6200c9976101c05162004c7b565b6101c0526200c92f565b6000610240526200c9c06101c051611fbc6107405160031b0162004efa565b60018060a01b0391549060031b1c166200c9e1610300516105c05162004ce2565b526200c9f06103005162004c7b565b610300526200c989565b50979294959093985095909560005b8281106200caa5575050506102405162004c99576105c051516001600160401b03811162002a23576200ca4781611fbc6107405160031b0162005036565b60206105c05101611fbc6107405160031b01600052602060002060005b8381106200ca8757505050506200ca7b9062004c7b565b9492959091956200c739565b82516001600160a01b0316818301556020909201916001016200ca64565b6200caeb906001600160a01b036200cabe828562004ce2565b51166200cad2610300516105c05162004ce2565b526200cae16103005162004c7b565b6103005262004c7b565b6200ca09565b909260208101516026811015620029ab576004036200d11e5760400160c0936200cb2f6200cb23868451015162004c8b565b51958351015162004caf565b51906200cb4660a0620077f3818651015162004c8b565b51936200cb5b875184511462000f4e62033906565b6200cb6e875185511462000f4e62033906565b6200cb81875186511462000f4e62033906565b60005b87518110156200cbec576200cb9a818662004ce2565b51906103e882101562004c99576200cbe691611fbb906001600160a01b036200cbc4848d62004ce2565b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200cb84565b509095919593929360005b83518110156200cd4f576200cc0d818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200cc31848862004ce2565b511660005260031b016020526200cc5360406000205462007dae838862004ce2565b906200cc60838962004ce2565b51916103e883101562004c99576200cca692611fbb906001600160a01b036200cc8a878b62004ce2565b511660005260031b0160205260406000205562000f4e62033a0a565b6200ccb2818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ccd6848c62004ce2565b511660005260031b016020526200ccf86040600020546200686c838862004ce2565b9190506200cd07818862004ce2565b51916103e883101562004c99576200cd4992611fbb906001600160a01b036200cd31858e62004ce2565b511660005260031b0160205260406000205562004c7b565b6200cbf7565b5091936200cd6b91935062007e9f620084d191979697620336a2565b6000945b80518610156200c2fa576200cd85868262004ce2565b516107a0526200cd96855162004dfe565b966000946200cda6845162004dfe565b6105605260009460005b88518110156200ce78578a896200cde06001600160a01b036200cdd4858462004ce2565b51166107a051620334e1565b15806200ce30575b6200ce01575b50506200cdfb9062004c7b565b6200cdb0565b986200ce259162001b0382859c62007f8f6200cdfb9760018060a01b039262004ce2565b9790508a896200cdee565b5050506103e86107a051101562004c99576001600160a01b036200ce55828b62004ce2565b5116600052611fbb6107a05160031b016020528a8960406000205415156200cde8565b50909895979498969291939660005b88518110156200cf16576103e86107a051101562004c99576001600160a01b03806200ceb4838c62004ce2565b5116600052611fbb6107a05160031b01602052604060002054156200cee6575b506200cee09062004c7b565b6200ce87565b819b6200cf0e916200cefd6200cee0948d62004ce2565b511662001b03826105605162004ce2565b9a906200ced4565b509850969592919093966107a0516103e8811015806102c05262004c995760031b611fbc0154986200cf4d620080c0898c62006258565b6104405260006108205260006106e0525b6102c05162004c99576106e0518a8110156200d027576200cf946200cfb49160006102c052611fbc6107a05160031b0162004efa565b9054610560516001600160a01b03939260031b9190911c83169062033539565b156200cfd4575b506200cfca6106e05162004c7b565b6106e0526200cf5e565b60006102c0526200cff36106e051611fbc6107a05160031b0162004efa565b90549060031b1c166200d00d610820516104405162004ce2565b526200d01c6108205162004c7b565b61082052386200cfbb565b50979294959093985095909560005b8281106200d0d2575050506102c05162004c995761044051516001600160401b03811162002a23576200d07481611fbc6107a05160031b0162005036565b60206104405101611fbc6107a05160031b01600052602060002060005b8381106200d0b457505050506200d0a89062004c7b565b9492959091956200cd6f565b82516001600160a01b0316818301556020909201916001016200d091565b6200d118906001600160a01b036200d0eb828562004ce2565b51166200d0ff610820516104405162004ce2565b526200d10e6108205162004c7b565b6108205262004c7b565b6200d036565b60208193929301516026811015620029ab576005036200d148579062000f556200c30c926202ed18565b6020819492939401516026811015620029ab576006036200d734576040016200d17660c08251015162004c8b565b51936200d18d60a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b86518110156200d20e576200d1bc818562004ce2565b51906103e882101562004c99576200d20891611fbb906001600160a01b036200d1e6848c62004ce2565b511660005260031b0160205262000f5560406000205462007d41838962004ce2565b6200d1a6565b509060005b86518110156200d2b2576200d229818562004ce2565b516103e881101562004c9957611fbb906001600160a01b036200d24d848b62004ce2565b511660005260031b016020526200d26f60406000205462007dae838862004ce2565b91906200d27d828762004ce2565b51906103e882101562004c99576200d2ac9362000f5592611fbb906001600160a01b036200cc8a878f62004ce2565b6200d213565b50916200d2c9919350620084d190959495620336a2565b91604051926200d2d98462002ac7565b6000845260003681376000945b80518610156200c2fa576200d2fc868262004ce2565b516108e0526200d30d855162004dfe565b966000946200d31d845162004dfe565b6104605260009460005b88518110156200d3ef578a896200d3576001600160a01b036200d34b858462004ce2565b51166108e051620334e1565b15806200d3a7575b6200d378575b50506200d3729062004c7b565b6200d327565b986200d39c9162001b0382859c62007f8f6200d3729760018060a01b039262004ce2565b9790508a896200d365565b5050506103e86108e051101562004c99576001600160a01b036200d3cc828b62004ce2565b5116600052611fbb6108e05160031b016020528a8960406000205415156200d35f565b50909895979498969291939660005b88518110156200d48d576103e86108e051101562004c99576001600160a01b03806200d42b838c62004ce2565b5116600052611fbb6108e05160031b01602052604060002054156200d45d575b506200d4579062004c7b565b6200d3fe565b819b6200d485916200d4746200d457948d62004ce2565b511662001b03826104605162004ce2565b9a906200d44b565b509850969592919093966108e0516103e8811015806102805262004c995760031b611fbc0154986200d4c4620080c0898c62006258565b610260526000610960526000610780525b6102805162004c9957610780518a8110156200d59e576200d50b6200d52b91600061028052611fbc6108e05160031b0162004efa565b9054610460516001600160a01b03939260031b9190911c83169062033539565b156200d54b575b506200d5416107805162004c7b565b610780526200d4d5565b6000610280526200d56a61078051611fbc6108e05160031b0162004efa565b90549060031b1c166200d584610960516102605162004ce2565b526200d5936109605162004c7b565b61096052386200d532565b50979294959093985095909560005b8281106200d649575050506102805162004c995761026051516001600160401b03811162002a23576200d5eb81611fbc6108e05160031b0162005036565b60206102605101611fbc6108e05160031b01600052602060002060005b8381106200d62b57505050506200d61f9062004c7b565b9492959091956200d2e6565b82516001600160a01b0316818301556020909201916001016200d608565b6200d68f906001600160a01b036200d662828562004ce2565b51166200d676610960516102605162004ce2565b526200d6856109605162004c7b565b6109605262004c7b565b6200d5ad565b60405162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b6020819492939401516026811015620029ab576007036200d8cf57604001916200d76360c08451015162004c8b565b51916200d77560a08551015162004c8b565b51935151916200d78d845186511462000f4e62033906565b60005b84518110156200d8bd576001600160a01b03806200d7af838862004ce2565b5116600052613ef8806020526200d7d360ff604060002054161562000f4e620339d7565b60026200d7e1848862004ce2565b516200d84b6200d7f2868c62004ce2565b519162008de28b604051966200d8088862002a07565b60018852886200d82f8b60208b01946000865260408c0197885260608c01998a5262004ce2565b511660005260205262008dd86040600020975115158862005795565b519101556200d85b828762004ce2565b51613ef954929116600160401b83101562002a23576001830180613ef95583101562004c9957613ef9600052600080516020620340db83398151915290920180546001600160a01b0319169092179091556200d8b79062004c7b565b6200d790565b5094915092506200c30c915062004c7b565b60208101516026811015620029ab576008036200d9bd5760c060406200d8f9920151015162004c8b565b519160005b83518110156200d9ae576200d9a8906001600160a01b03806200d922838862004ce2565b5116600052613ef890816020526200d94b600160ff6040600020541615151462000f4e62033936565b806200d958848962004ce2565b5116600052816020526200d97c60ff60406000205460081c161562000f4e6203399e565b6200d988838862004ce2565b5116600052602052604060002061010061ff001982541617905562004c7b565b6200d8fe565b50926200c30c91925062004c7b565b60208101516026811015620029ab576009036200da9c5760c060406200d9e7920151015162004c8b565b519160005b83518110156200d9ae576200da96906001600160a01b03806200da10838862004ce2565b5116600052613ef890816020526200da39600160ff6040600020541615151462000f4e62033936565b806200da46848962004ce2565b5116600052816020526200da6e600160ff60406000205460081c1615151462000f4e62033969565b6200da7a838862004ce2565b5116600052602052604060002061ff0019815416905562004c7b565b6200d9ec565b60208101516026811015620029ab57600a036200db8457604001906200dad860a06200dacd60c08551015162004c8b565b519351015162004c8b565b51926200daed835185511462000f4e62033906565b60005b83518110156200db73576200db6d906001600160a01b03806200db14838862004ce2565b5116600052613ef8806020526200db3c600160ff6040600020541615151462000f4e62033936565b6200db48838962004ce2565b51916200db56848962004ce2565b511660005260205260026040600020015562004c7b565b6200daf0565b50939092506200c30c915062004c7b565b6020819493929401516026811015620029ab57600b036200dc6457604001926200dbb360c08551015162004c8b565b51935151916200dbcb855184511462000f4e62033906565b60005b85518110156200dc54576200dc4e9062000f556001600160a01b03806200dbf6848b62004ce2565b5116600052613ef8806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6200dc2a848962004ce2565b51916200dc38858c62004ce2565b51166000526020526001604060002001620056c2565b6200dbce565b509350916200c30c915062004c7b565b90919260208201516026811015620029ab57600c036200ddaf57606060408301510151926200dc93846202d715565b60005b84518110156200db735760e06200dcb68260606040880151015162004ce2565b510151156200dd3a576200dcde6200dcd78260606040880151015162004ce2565b5162005d5b565b613efa548060001981011162001e4f576200dcff6005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620092466200dd34936000190162005ca9565b6200dc96565b6200dd596200dd528260606040880151015162004ce2565b5162005d38565b613efb548060001981011162001e4f576200dd7a6005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620092466200dd34936000190162005c69565b92919060208101516026811015620029ab57600d036200def6576040019260206200dddf60a08651015162004c8b565b5194510151916200ddf485518451146202de09565b60005b85518110156200dc5457806200de126200de8b928662004ce2565b51156200de91576200de356200de29828962004ce2565b51613efa54116202de92565b6200de6160ff60056200de546200de4d858c62004ce2565b5162005ca9565b50015460081c166202deea565b6200de7960ff6005620093a26200de4d858c62004ce2565b6005620093be6200de4d838a62004ce2565b6200ddf7565b6200dead6200dea1828962004ce2565b51613efb54116202de92565b6200decc60ff60056200de546200dec5858c62004ce2565b5162005c69565b6200dee460ff6005620093a26200dec5858c62004ce2565b6005620093be6200dec5838a62004ce2565b60208101516026811015620029ab57600e036200e02c576040019260206200df2360a08651015162004c8b565b5194510151916200df3885518451146202de09565b60005b85518110156200dc5457806200df566200dfc8928662004ce2565b51156200dfce576200df796200df6d828962004ce2565b51613efa54116202dfac565b6200df9e60ff60056200df916200de4d858c62004ce2565b50015460081c166202e005565b6200dfb660ff6005620094fa6200de4d858c62004ce2565b6005620092466200de4d838a62004ce2565b6200df3b565b6200dfea6200dfde828962004ce2565b51613efb54116202dfac565b6200e00260ff60056200df916200dec5858c62004ce2565b6200e01a60ff6005620094fa6200dec5858c62004ce2565b6005620092466200dec5838a62004ce2565b90919260208201516026811015620029ab57600f036200e16957606060408301510151926200e05b846202d715565b60005b84518110156200db735760e06200e07e8260606040880151015162004ce2565b510151156200e0fb576200e09f6200dcd78260606040880151015162004ce2565b613efa548060001981011162001e4f576200e0c06005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620093be6200e0f5936000190162005ca9565b6200e05e565b6200e1136200dd528260606040880151015162004ce2565b613efb548060001981011162001e4f576200e1346005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620093be6200e0f5936000190162005c69565b92919060208101516026811015620029ab576010036200e2ae5760400151926200e19c60a0608086015195015162004c8b565b51916200e1b1855184511462000f4e62033906565b60005b85518110156200dc5457806200e1cf6200e244928862004ce2565b516200e1db8162002f45565b6200e1e7828762004ce2565b51906200e1f48162002f45565b6200e20b6200e20262033a39565b82151562004c48565b6200e2168162002f45565b600181036200e24a57506200e23a6200e22e62033a39565b61271083111562004c48565b613f675562004c7b565b6200e1b4565b6200e2558162002f45565b600281036200e2695750613f685562004c7b565b6200e2748162002f45565b600381036200e2885750613f695562004c7b565b806200e29660049262002f45565b146200e2a3575062004c7b565b613f6a55386200a16d565b60208101516026811015620029ab576011036200e55157604001906200e2df60a06200dacd60c08551015162004c8b565b51936200e2f083518651146202d58d565b60005b83518110156200e370576200e36a906200e34a6001600160a01b03806200e31b848962004ce2565b5116600052613efd90816020526200e33e6040600020546200686c868d62004ce2565b939062000f4e620338bc565b6200e356848962004ce2565b511660005260205260406000205562004c7b565b6200e2f3565b509350906200e37f9062033586565b90613efe54936200e396620080c084518762006258565b9060009260005b8781106200e511575060005b85518110156200e45e576000805b8981106200e40f575b50156200e3d9575b6200e3d39062004c7b565b6200e3a9565b936200e3d3906200e406906001600160a01b036200e3f8888a62004ce2565b511662001b03828862004ce2565b9490506200e3c8565b6200e41a8162004ec2565b90546001600160a01b0360039290921b1c8116906200e43a858b62004ce2565b5116146200e453576200e44d9062004c7b565b6200e3b7565b50506001386200e3c0565b5095509392506200e46f8262004dfe565b8051906001600160401b03821162002a23576020906200e48f8362004fdd565b01613efe600052602060002060005b8381106200e4f3575050505060005b8281106200e4c3575050506200c30c9062004c7b565b6200e4ed9062000f556001600160a01b036200e4e0838662004ce2565b511662001a448362004ec2565b6200e4ad565b82516001600160a01b0316818301556020909201916001016200e49e565b936200e5446200e54b916200e5268762004ec2565b905460039190911b1c6001600160a01b031662001b03828862004ce2565b9462004c7b565b6200e39d565b60208194929401516026811015620029ab576012036200e79557604001906200e58560a06200dacd60c08551015162004c8b565b51936200e59683518651146202d58d565b60005b83518110156200e5ea576200e5e4906200e34a6001600160a01b03806200e5c1848962004ce2565b5116600052613efd90816020526200e33e60406000205462007dae868d62004ce2565b6200e599565b50935091906200e5fa9062033586565b613efe546200e6098162004dfe565b906000926000915b8083106200e6bc575050506200e6278262004dfe565b8051906001600160401b03821162002a23576020906200e6478362004fdd565b01613efe600052602060002060005b8381106200e69e575050505060005b8281106200e67b575050506200c30c9062004c7b565b6200e6989062000f556001600160a01b036200e4e0838662004ce2565b6200e665565b82516001600160a01b0316818301556020909201916001016200e656565b91956000959193959760005b85518110156200e786576200e6dd8962004ec2565b90546001600160a01b0360039290921b1c8116906200e6fd838962004ce2565b5116146200e716576200e7109062004c7b565b6200e6c8565b509750956001959391955b806200e755575b156200e740576200e7399062004c7b565b916200e611565b936200e5446200e739916200e5268762004ec2565b506200e7618162004ec2565b60018060a01b0391549060031b1c16600052613efd602052604060002054156200e728565b5097969096959391956200e721565b60208194939401516026811015620029ab576013036200e8365760408091015101519160005b83518110156200d9ae576200e7d1818562004ce2565b5190613efc54600160401b81101562002a23576001810180613efc5581101562004c9957613efc6000526200e8309262000f55916007027f6710e0bb821cd3dfcfba05f5136082a6d0bca8d604d6d14bfd93de2dd49659d2016202f75c565b6200e7bb565b6020819493929401516026811015620029ab576014036200ed7857604001906200e86560c08351015162004c8b565b51936200e87c60a0620077f3818651015162004c8b565b51916200e88d86518551146202e0ca565b6200e89c86518451146202e130565b60005b86518110156200e996576200e8b5818562004ce2565b516200e8c2828762004ce2565b51906103e882101562004c9957611fbe6200e8e39260031b01549062006049565b906200e8f0838862004ce2565b51916103e883101562004c9957611fbe6200e9109360031b01556202e1ea565b6200e91c818562004ce2565b516200e929828762004ce2565b51906103e882101562004c99576200e95391611fbb906001600160a01b036200bea4868d62004ce2565b91906200e961828862004ce2565b51906103e882101562004c99576200e9909362000f5592611fbb906001600160a01b036200befa878f62004ce2565b6200e89f565b50926200e9ad919250620084d190959495620336a2565b916040516200e9bc8162002ac7565b6000815260003681376000945b80518610156200c2fa576200e9df868262004ce2565b516107e0526200e9f0855162004dfe565b966000946200ea00845162004dfe565b6108805260009460005b88518110156200ead2578a896200ea3a6001600160a01b036200ea2e858462004ce2565b51166107e051620334e1565b15806200ea8a575b6200ea5b575b50506200ea559062004c7b565b6200ea0a565b986200ea7f9162001b0382859c62007f8f6200ea559760018060a01b039262004ce2565b9790508a896200ea48565b5050506103e86107e051101562004c99576001600160a01b036200eaaf828b62004ce2565b5116600052611fbb6107e05160031b016020528a8960406000205415156200ea42565b50909895979498969291939660005b88518110156200eb70576103e86107e051101562004c99576001600160a01b03806200eb0e838c62004ce2565b5116600052611fbb6107e05160031b01602052604060002054156200eb40575b506200eb3a9062004c7b565b6200eae1565b819b6200eb68916200eb576200eb3a948d62004ce2565b511662001b03826108805162004ce2565b9a906200eb2e565b509850969592919093966107e0516103e8811015806108005262004c995760031b611fbc0154986200eba7620080c0898c62006258565b6102005260006106005260006103e0525b6108005162004c99576103e0518a8110156200ec81576200ebee6200ec0e91600061080052611fbc6107e05160031b0162004efa565b9054610880516001600160a01b03939260031b9190911c83169062033539565b156200ec2e575b506200ec246103e05162004c7b565b6103e0526200ebb8565b6000610800526200ec4d6103e051611fbc6107e05160031b0162004efa565b90549060031b1c166200ec67610600516102005162004ce2565b526200ec766106005162004c7b565b61060052386200ec15565b50979294959093985095909560005b8281106200ed2c575050506108005162004c995761020051516001600160401b03811162002a23576200ecce81611fbc6107e05160031b0162005036565b60206102005101611fbc6107e05160031b01600052602060002060005b8381106200ed0e57505050506200ed029062004c7b565b9492959091956200e9c9565b82516001600160a01b0316818301556020909201916001016200eceb565b6200ed72906001600160a01b036200ed45828562004ce2565b51166200ed59610600516102005162004ce2565b526200ed686106005162004c7b565b6106005262004c7b565b6200ec90565b9260208401516026811015620029ab576015036200f3795760408401906200eda560c08351015162004c8b565b51906200edbc60a0620077f3818651015162004c8b565b51936200edd1835185511462000f4e62033906565b6200ede4835186511462000f4e62033906565b60005b83518110156200ee42576200edfd818662004ce2565b51906103e882101562004c9957611fbb6200ee3c9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200ede7565b509095919560005b87518110156200ef74576200ee60818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200ee9a60406000205462007dae838962004ce2565b906200eea7838862004ce2565b51916103e883101562004c9957611fbb6200eee09360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200eeec818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ef10848c62004ce2565b511660005260031b016020526200ef326040600020546200686c838962004ce2565b91906200ef40828862004ce2565b51906103e882101562004c99576200ef6e93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b6200ee4a565b50926200ef8c919294506200c6fd90969596620336a2565b92604051906200ef9c8262002b00565b6001825260203681840137516001600160a01b03166200efbc8262004c8b565b526000945b80518610156200c2fa576200efd7868262004ce2565b51610380526200efe8855162004dfe565b966000946200eff8845162004dfe565b6105a05260009460005b88518110156200f0ca578a896200f0326001600160a01b036200f026858462004ce2565b511661038051620334e1565b15806200f082575b6200f053575b50506200f04d9062004c7b565b6200f002565b986200f0779162001b0382859c62007f8f6200f04d9760018060a01b039262004ce2565b9790508a896200f040565b5050506103e861038051101562004c99576001600160a01b036200f0a7828b62004ce2565b5116600052611fbb6103805160031b016020528a8960406000205415156200f03a565b50909895979498969291939660005b88518110156200f16f576103e861038051101562004c99576001600160a01b036200f105828b62004ce2565b5116600052611fbb6103805160031b01602052604060002054156200f136575b6200f1309062004c7b565b6200f0d9565b996200f130906200f166906001600160a01b036200f1558e8d62004ce2565b511662001b03826105a05162004ce2565b9a90506200f125565b50985096959291909396610380516103e8811015806103605262004c995760031b611fbc0154986200f1a6620080c0898c62006258565b6107c0526000610640526000610700525b6103605162004c9957610700518a8110156200f282576200f1ed6200f20a91600061036052611fbc6103805160031b0162004efa565b90546105a05160039290921b1c6001600160a01b03169062033539565b156200f229575b6200f21f6107005162004c7b565b610700526200f1b7565b6000610360526200f24861070051611fbc6103805160031b0162004efa565b60018060a01b0391549060031b1c166200f269610640516107c05162004ce2565b526200f2786106405162004c7b565b610640526200f211565b50979294959093985095909560005b8281106200f32d575050506103605162004c99576107c051516001600160401b03811162002a23576200f2cf81611fbc6103805160031b0162005036565b60206107c05101611fbc6103805160031b01600052602060002060005b8381106200f30f57505050506200f3039062004c7b565b9492959091956200efc1565b82516001600160a01b0316818301556020909201916001016200f2ec565b6200f373906001600160a01b036200f346828562004ce2565b51166200f35a610640516107c05162004ce2565b526200f3696106405162004c7b565b6106405262004c7b565b6200f291565b90919260208101516026811015620029ab576016036200f42b5760c060406200f3a6920151015162004c8b565b519160005b83518110156200d9ae576001600160a01b036200f3c9828662004ce2565b51613f6b54929116600160401b83101562002a23576001830180613f6b5583101562004c9957613f6b60005260008051602062033ebb83398151915290920180546001600160a01b0319169092179091556200f4259062004c7b565b6200f3ab565b60208101516026811015620029ab576017036200f4885760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab576018036200f5465760c060406200f4b2920151015162004c8b565b5191600160ff19613f6e541617613f6e5560005b83518110156200d9ae576001600160a01b036200f4e4828662004ce2565b51613f6d54929116600160401b83101562002a23576001830180613f6d5583101562004c9957613f6d600052600080516020620340bb83398151915290920180546001600160a01b0319169092179091556200f5409062004c7b565b6200f4c6565b6020819492939401516026811015620029ab576019036200f56e575b506200c30c9062004c7b565b60208101516026811015620029ab57601a036200f6e55760a060406200f598920151015162004c8b565b51906200f5a960038351146202d58d565b6200f5b48262004c8b565b516200f5c46200a1068462004caf565b51926200f6a9576200c30c926001036200f6a2576200f5eb6200f64991613f695462006049565b613f6955604051906200f5fe8262002a8f565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004c48565b6200f69b6200f65b613f6a5462006036565b613f6a55604051906200f66e8262002b00565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004c48565b906200f562565b506200f69b565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b036200fc7557509190613f67546200f7116200a1e362033793565b613f6a54613f685411156200f7306200f72962033801565b8262004c48565b613f6954906200f741838362005f19565b50506200f74d62033857565b506000805b6103e882106200fc26575b5050906200f78d6200f79393926200f7836200f77862033793565b612710861062004c48565b62000f4e62033801565b62005f19565b90506200f79f62033857565b5060009060005b6103e881106200fb53575b50906127106200f7c2920462006236565b90506200f7d2613f745462004dfe565b906000946000905b6103e88210156200fb46578160031b9460ff611fbf87015416156200f93057600096611fba870154156200f91f57600098975b62004c9957611fbc8701548910156200f905576200f83089611fbc890162004efa565b600160a01b6001900391549060031b1c169788600052611fbb8801602052604098868a60002054906200f8639162005f19565b9a906200f86f62033857565b6200f87a9162004c48565b60009a611fba8b01546200f88e9162005f19565b91906200f89a62033857565b6200f8a59162004c48565b82600052613eff602052600020908154906200f8c19162006049565b9091556200f8ce62033857565b6200f8d99162004c48565b6200f8e5828962004ce2565b526200f8f19062004c7b565b986200f8fd9062004c7b565b98976200f80d565b929095506200f9179196975062004c7b565b90946200f7da565b929095506200f91791965062004c7b565b95969392509350505b6200f9448262004dfe565b9160009160005b8281106200fab057505050613f0054916200f96b620080c0848462006258565b926000906000905b8082106200fa9357505060005b8381106200f9fd5750508251929150506001600160401b03821162002a23576020906200f9ad8362005000565b01613f00600052602060002060005b8381106200f9df57505050506200c30c906000613f69556000613f6a556200f69b565b82516001600160a01b0316818301556020909201916001016200f9bc565b6000805b8381106200fa4b575b50156200fa23575b6200fa1d9062004c7b565b6200f980565b906200fa1d906200fa42906001600160a01b0362008248858762004ce2565b9190506200fa12565b6001600160a01b03806200fa60858862004ce2565b5116906200fa6f838a62004ce2565b5116146200fa88576200fa829062004c7b565b6200fa01565b50506001386200fa0a565b9091620082566200faa99162009b6f8562004ede565b906200f973565b6000805b8581106200fafe575b50156200fad6575b6200fad09062004c7b565b6200f94b565b926200fad0906200faf5906001600160a01b0362008248878662004ce2565b9390506200fac5565b6001600160a01b03806200fb13858762004ce2565b5116906200fb22838a62004ce2565b5116146200fb3b576200fb359062004c7b565b6200fab4565b50506001386200fabd565b939495929150506200f939565b90918160039695961b60ff611fbf82015416156200fc1a57611fba810154611fbc8201546000928391825b8184106200fbba5750505050620074b96200fbb1936200fba962000f559796946200621c9462005f19565b929062005d7e565b9493946200f7a6565b94929462004c99576200fc13856200fc0b6200fbdf62000f5598611fbc870162004efa565b905460039190911b1c6001600160a01b03166000908152611fbb86016020526040812054909662006049565b979062005f3b565b926200fb7e565b5091909493946200f7b1565b8160039897981b60ff611fbf82015416156200fc6b57916200a622620074b96200fc61936200a61662000f5596611fba6200a60c8762005eb4565b909695966200f752565b509695966200f75d565b60208101516026811015620029ab57601c036200fcd25760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d036200fcf6575b506200c30c906200f69b565b91929060208301516026811015620029ab57601e036200ff0d576200fd2360a06040850151015162004c8b565b51516200fd3860a06040860151015162004caf565b5151036200aeb0576200fd5360a06040850151015162004c8b565b51516200fd6860a06040860151015162004cc0565b5151036200ae34576200fd8360a06040850151015162004c8b565b51926200fd9860a06040830151015162004caf565b51916200fdad60a06040840151015162004cc0565b51956200fdba836202ed18565b60009460005b87518110156200fe13576200fdde6200acf06200ace3838962004ce2565b806200fdf7575b506200fdf19062004c7b565b6200fdc0565b906200ad266200fe0c986200fdf19362006049565b906200fde5565b5096509450915091806200fe31575b506200c30c91505b906200fcea565b6200fe5c9060018060a01b038451166000526200ad84613efd91826020526040600020549062006049565b60018060a01b03845116600052602052604060002055600091600092613efe54935b8481106200fec8575b506200fe2257516001600160a01b031691600160401b81101562002a23576200c30c9262001a448260016200fec19401613efe5562004ec2565b386200fe22565b6200fed38162004ec2565b9054845160039290921b1c6001600160a01b039081169116146200ff02576200fefc9062004c7b565b6200fe7e565b50506001386200fe87565b90929160208101516026811015620029ab57601f036200ff885760406200ff379101515162004c8b565b5190613f6c54600160401b81101562002a23576001810180613f6c5581101562004c9957613f6c6000526200c30c926200ff829160008051602062033efb83398151915201620056c2565b6200fe2a565b60208101516026811015620029ab576020036200ffac575b506200c30c906200fe2a565b60208101516026811015620029ab576021146200ffa05760208101516026811015620029ab576022036201003257506200c30c9060ff19613f6e5416613f6e55613f6d546000613f6d558062010006575b505b906200ffa0565b613f6d6000526201002b90600080516020620340bb8339815191529081019062004f3f565b386200fffd565b60208101516026811015620029ab5760230362010056575b506200c30c906200ffff565b60208101516026811015620029ab576024146201004a5760208101516026811015620029ab576025146201004a5792909160208401516026811015620029ab576015036201069a576040840190620100b360c08351015162004c8b565b5190620100ca60a0620077f3818651015162004c8b565b5193620100df835185511462000f4e62033906565b620100f2835186511462000f4e62033906565b60005b835181101562010150576201010b818662004ce2565b51906103e882101562004c9957611fbb6201014a9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b620100f5565b509095919560005b875181101562010282576201016e818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b01602052620101a860406000205462007dae838962004ce2565b90620101b5838862004ce2565b51916103e883101562004c9957611fbb620101ee9360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b620101fa818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036201021e848c62004ce2565b511660005260031b01602052620102406040600020546200686c838962004ce2565b91906201024e828862004ce2565b51906103e882101562004c99576201027c93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b62010158565b50926201029a919294506200c6fd90969596620336a2565b9260405190620102aa8262002b00565b6001825260203681840137516001600160a01b0316620102ca8262004c8b565b526000945b80518610156201068757620102e5868262004ce2565b51610ac052620102f6855162004dfe565b9660009462010306845162004dfe565b6109205260009460005b8851811015620103d8578a89620103406001600160a01b0362010334858462004ce2565b5116610ac051620334e1565b158062010390575b62010361575b50506201035b9062004c7b565b62010310565b98620103859162001b0382859c62007f8f6201035b9760018060a01b039262004ce2565b9790508a896201034e565b5050506103e8610ac051101562004c99576001600160a01b03620103b5828b62004ce2565b5116600052611fbb610ac05160031b016020528a89604060002054151562010348565b50909895979498969291939660005b88518110156201047d576103e8610ac051101562004c99576001600160a01b0362010413828b62004ce2565b5116600052611fbb610ac05160031b016020526040600020541562010444575b6201043e9062004c7b565b620103e7565b996201043e9062010474906001600160a01b03620104638e8d62004ce2565b511662001b03826109205162004ce2565b9a905062010433565b50985096959291909396610ac0516103e8811015806106205262004c995760031b611fbc015498620104b4620080c0898c62006258565b6109005260006109e0526000610480525b6106205162004c9957610480518a8110156201059057620104fb6201051891600061062052611fbc610ac05160031b0162004efa565b90546109205160039290921b1c6001600160a01b03169062033539565b1562010537575b6201052d6104805162004c7b565b61048052620104c5565b6000610620526201055661048051611fbc610ac05160031b0162004efa565b60018060a01b0391549060031b1c16620105776109e0516109005162004ce2565b52620105866109e05162004c7b565b6109e0526201051f565b50979294959093985095909560005b8281106201063b575050506106205162004c995761090051516001600160401b03811162002a2357620105dd81611fbc610ac05160031b0162005036565b60206109005101611fbc610ac05160031b01600052602060002060005b8381106201061d5750505050620106119062004c7b565b949295909195620102cf565b82516001600160a01b031681830155602090920191600101620105fa565b62010681906001600160a01b0362010654828562004ce2565b5116620106686109e0516109005162004ce2565b52620106776109e05162004c7b565b6109e05262004c7b565b6201059f565b5050939092506200c30c9150906201004a565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b50919050620106e782620159a8565b92906006811015620029ab5760028103620107175760405162461bcd60e51b81528062004c7760048201620075e7565b60038103620116ab5750613f738054600260ff82166201073781620029a0565b14620116665760ff19166002179055613f78549060018201821162001e4f5760018201613f7855611f44549092600019929060005b8651811015620107e8576201078f8462010787838a62004ce2565b511062032fe8565b846002620107a9620107a2848b62004ce2565b516202f73c565b50015410620107c4575b620107be9062004c7b565b6201076c565b9350620107be6002620107dc620107a2878a62004ce2565b500154949050620107b3565b5090936000199360005b87518110156201085f576201080d8562010787838b62004ce2565b85600362010820620107a2848c62004ce2565b500154106201083b575b620108359062004c7b565b620107f2565b945062010835600362010853620107a2888b62004ce2565b5001549590506201082a565b509194600191935062010873875162004dfe565b6201087f885162004dfe565b6201088b895162004dfe565b90620108988a5162004dfe565b9260405197620108a88962002a72565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e0850152600061010085015201600052613f766020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b821162002a23576001840154826001860155808310620114a7575b5060200190600184016000526020600020916000905b82821062010e42575050505060406201096191015160028301620056c2565b60208301518051906001600160401b03821162002a2357602060038401916201098b848462005036565b0190600052602060002060005b83811062010e2d575050505060408301518051906001600160401b03821162002a235760206004840191620109ce848462005036565b0190600052602060002060005b83811062010e18575050505060608301518051906001600160401b03821162002a23576020600584019162010a11848462005036565b0190600052602060002060005b83811062010e03575050505060808301518051906001600160401b03821162002a23576020600684019162010a54848462005036565b0190600052602060002060005b83811062010dee575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029ab5761010062010ab99262010ac09560ff801985541691161783550151151590620057a6565b4262006049565b901562010dae57613f7854600052613f7660205280600760406000200155613f715562010afe613f7854918260005260076040600020015462006049565b91901562010d6b57600052613f7660205280600860406000200155613f7255613f78546000526009604060002001600260ff1982541617905560005b825181101562010b80578062000f5562010b5962010b7a938662004ce2565b51613f7854600052613f7660205262006c1783600360406000200162004efa565b62010b3a565b506000915b805183101562010d6657613f78549283600052613f7660205262010bc262010bb582600360406000200162004efa565b90549060031b1c6202f73c565b50549162010bd08362004dfe565b9260005b81811062010d1b5750506000906000915b845183101562010cea5762010bfb838662004ce2565b516103e8908181101562004c995760031b6001015462010c1c858862004ce2565b519182101562004c9957600662010c399260031b01549062005f19565b901562010ca65762010c4b9162006049565b92901562010c655762010c5e9062004c7b565b9162010be5565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b909562010d14945062000f559250600052613f7660205262006c1783600660406000200162004efa565b9162010b85565b62010d609087600052613f7660205262010d4d8162010d4662010bb588600360406000200162004efa565b5062004efa565b90549060031b1c62001b03828862004ce2565b62010bd4565b509050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b60019060208451940193818401550162010a61565b60019060208451940193818401550162010a1e565b600190602084519401938184015501620109db565b60019060208451940193818401550162010998565b805180518554602083015190916001600160a01b0316906026811015620029ab576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010e9c8484620053ca565b01906000526020600020906000905b838210620114875750505050602081015180516001600160401b03811162002a23576020600288019262010ee0838562032aee565b019160005260206000209060005b8160051c81106201144b5750601f198116810362011406575b5050506040810151805190600160401b821162002a235760038701548260038901558083106201137e575b50602001600387016000526020600020906000905b8382106201135d57505050506060810151805190600160401b821162002a23576004870154826004890155808310620112dc575b50602001600487016000526020600020906000905b838210620112bb5750505050608081015180516001600160401b03811162002a23576020600588019262010fc5838562032aee565b019160005260206000209060005b8160051c81106201127c5750601f198116928382036201122d575b505050506006850160a082015160208151916201100c838562005458565b019160005260206000206000925b828410620111c957505050506007850160c0820151602081519162011040838562005458565b019160005260206000206000925b8284106201115c575050505060e001518051906001600160401b03821162002a23576201108e8262011084600889015462002c01565b6008890162005678565b602090601f8311600114620110e1579282600993602093600196600092620110d5575b5050600019600383901b1c191690851b1760088801555b0194019101909262010942565b015190503880620110b1565b906008870160005260206000209160005b601f198516811062011143575083602093600196938793600997601f1981161062011129575b505050811b016008880155620110c8565b015160001960f88460031b161c1916905538808062011118565b91926020600181928685015181550194019201620110f2565b80518051906001600160401b03821162002a23576020906201117f838662005036565b0183600052602060002060005b838110620111ab5750505050600160208192019201930192906201104e565b82516001600160a01b0316818301556020909201916001016201118c565b80518051906001600160401b03821162002a2357602090620111ec838662005036565b0183600052602060002060005b838110620112185750505050600160208192019201930192906201101a565b600190602084519401938184015501620111f9565b6000936000905b8084038210620112505750505060051c01553880808062010fee565b909194602062011271600192858951916201126b8362002f45565b62032b58565b960192019062011234565b6000805b602081106201129757508382015560010162010fd3565b94906020620112b1600192888551916201126b8362002f45565b9201950162011280565b6006602082620112cf6001945187620057d8565b0193019101909162010f90565b600681810204810362001e4f57600683810204830362001e4f576004880160005260206000208360060281015b82600602820181106201131e57505062010f7b565b80600060069255600060018201556201133a60028201620054a7565b600060038201556201134f600482016200533c565b600060058201550162011309565b60076020826201137160019451876202f75c565b0193019101909162010f47565b600781810204810362001e4f57600783810204830362001e4f576003880160005260206000208360070281015b8260070282018110620113c057505062010f32565b80620113ce60079262004fb6565b60006001820155600060028201556000600382015560006004820155620113f8600582016200533c565b6000600682015501620113ab565b60009260005b601f198316830381106201142a57505060051c015538808062010f07565b909360206201144160019284885115159162032b58565b950191016201140c565b6000805b602081106201146657508382015560010162010eee565b949060206201147d60019288855115159162032b58565b920195016201144f565b60016020826201149a83945187620056c2565b0193019101909162010eab565b600981810204810362001e4f57600983810204830362001e4f576001850160005260206000208360090281015b8260090282018110620114e95750506201092c565b60008155620114fb600182016200538b565b62011510600282018054906000815562032ac6565b60038101546000600383015580620115f0575b506004810154600060048301558062011581575b5080620115506005600993018054906000815562032ac6565b6201155e6006820162005419565b6201156c6007820162005419565b6201157a600882016200533c565b01620114d4565b600681810204810362001e4f57600482016000526020600020906006028101905b818110620115b1575062011537565b8060006006925560006001820155620115cd60028201620054a7565b60006003820155620115e2600482016200533c565b6000600582015501620115a2565b600781810204810362001e4f57600382016000526020600020906007028101905b81811062011620575062011523565b806201162e60079262004fb6565b6000600182015560006002820155600060038201556000600482015562011658600582016200533c565b600060068201550162011611565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b60059192935014620116ba5750565b90600080611f4a54905b81811062014ba8575b50501562014b8c575b60005b6020830151908151811015620117315762000f55620077196201170b620076f96020620067ff866201172b9862004ce2565b86516001600160a01b03166000908152611f496020526040902062024340565b620116d9565b505060005b602083015180518210156201177e57620076f96020620067ff846201175b9462004ce2565b90606482101562004c995762011778914290611f4b015562004c7b565b62011736565b50506000905b602083015180518310156200b13957826201179f9162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab57600103620119e75760400190620117e060c08351015162004c8b565b5193620117f760a0620077f3818651015162004c8b565b51916201180886518551146202e0ca565b6201181786518451146202e130565b60005b86518110156201196e5762011830818662004ce2565b516103e881101562004c9957600160ff6007620118569360031b0154161515146202e192565b62011862818562004ce2565b516201186f828762004ce2565b51906103e882101562004c995760066201188f9260031b01549062006049565b906201189c838862004ce2565b51916103e883101562004c99576006620118bb9360031b01556202e1ea565b620118c7818562004ce2565b51620118d4828762004ce2565b51906103e882101562004c995762011915916003906001600160a01b03620118fd868d62004ce2565b5116600052811b016020526040600020549062006049565b919062011923828862004ce2565b51906103e882101562004c9957620119689362000f55926003906001600160a01b0362011951878f62004ce2565b5116600052811b016020526040600020556202e249565b6201181a565b5094915091620119826201198991620336a2565b9162033586565b9360405192620119998462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba620119c4938762004ce2565b620119a5565b5094509260209250620119de915062004c7b565b91905062011784565b6020819492939401516026811015620029ab5760020362011c7f5760400180519283519062011a1f62007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b865181101562011b655762011a58818862004ce2565b516103e881101562004c995760ff600762011a7a9260031b015416156202e2a2565b62011a86818862004ce2565b516103e881101562004c995760031b600701805460ff1916600117905562011aaf818562004ce2565b5162011abc828962004ce2565b51906103e882101562004c9957600562011ada9260031b01620056c2565b62011ae6818662004ce2565b5162011af3828962004ce2565b516103e881101562004c995760031b6001015562011b12818762004ce2565b5162011b1f828962004ce2565b516103e881101562004c995760031b6002015562011b3e818862004ce2565b51906103e882101562004c99576000600662011b5f9360031b015562004c7b565b62011a42565b50959150935060209250620119de915062004c7b565b60405162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b6020819493929401516026811015620029ab5760030362011cad576020919262000f55620119de926202e2ee565b60208101516026811015620029ab5760040362011f555762011cd760c06040830151015162004c8b565b519362011cec60c06040840151015162004caf565b519062011d1360a0604062011d078282880151015162004c8b565b51950151015162004caf565b519362011d28875184511462000f4e62033906565b62011d3b875185511462000f4e62033906565b62011d4e875186511462000f4e62033906565b60005b875181101562011db75762011d67818662004ce2565b51906103e882101562004c995762011db1916003906001600160a01b0362011d90848d62004ce2565b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62011d51565b509095919593929360005b835181101562011f125762011dd8818762004ce2565b516103e881101562004c99576003906001600160a01b0362011dfb848862004ce2565b5116600052811b0160205262011e1c60406000205462007dae838862004ce2565b9062011e29838962004ce2565b51916103e883101562004c995762011e6d926003906001600160a01b0362011e52878b62004ce2565b5116600052811b0160205260406000205562000f4e62033a0a565b62011e79818762004ce2565b516103e881101562004c99576003906001600160a01b0362011e9c848c62004ce2565b5116600052811b0160205262011ebd6040600020546200686c838862004ce2565b91905062011ecc818862004ce2565b51916103e883101562004c995762011f0c926003906001600160a01b0362011ef5858e62004ce2565b5116600052811b0160205260406000205562004c7b565b62011dc2565b509362011f2c9192969350620084d162007e9f91620336a2565b9260005b8351811015620119ca578062000f55620079ba62011f4f938762004ce2565b62011f30565b929060208401516026811015620029ab57600503620124c25762011f8160a06040860151015162004c8b565b519062011f9660a06040870151015162004caf565b51928251845103620089ef5760005b835181101562011ffe5762011fbb818562004ce2565b51906103e882101562004c9957600362011ff89260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62011fa5565b509060005b8351811015620120a15762012019818562004ce2565b516103e881101562004c995760039060018060a01b03895116600052811b016020526201205160406000205462007dae838862004ce2565b91906201205f828762004ce2565b51906103e882101562004c99576201209b93600362000f559360018060a01b038d5116600052811b0160205260406000205562000f4e62033a0a565b62012003565b5091620120b29194959350620336a2565b9260405192620120c28462002b00565b6001845260203681860137516001600160a01b0316620120e28462004c8b565b5260405192620120f28462002ac7565b6000845260003681376000945b8051861015620124ae5762012115868262004ce2565b516102a05262012126855162004dfe565b9660009462012136845162004dfe565b610a205260009460005b885181101562012206578a89620121706001600160a01b0362012164858462004ce2565b51166102a0516203348a565b1580620121c0575b62012191575b50506201218b9062004c7b565b62012140565b98620121b59162001b0382859c62007f8f6201218b9760018060a01b039262004ce2565b9790508a896201217e565b5050506103e86102a051101562004c99576001600160a01b03620121e5828b62004ce2565b511660005260036102a051811b016020528a89604060002054151562012178565b50909895979498969291939660005b8851811015620122a9576103e86102a051101562004c99576001600160a01b0362012241828b62004ce2565b511660005260036102a051811b016020526040600020541562012270575b6201226a9062004c7b565b62012215565b996201226a90620122a0906001600160a01b036201228f8e8d62004ce2565b511662001b0382610a205162004ce2565b9a90506201225f565b509850969592919093966102a0516103e8811015806108605262004c995760031b6004015498620122df620080c0898c62006258565b6104c0526000610aa05260006104a0525b6108605162004c99576104a0518a811015620123b95762012325620123429160006108605260046102a05160031b0162004efa565b9054610a205160039290921b1c6001600160a01b03169062033539565b1562012361575b620123576104a05162004c7b565b6104a052620122f0565b6000610860526201237f6104a05160046102a05160031b0162004efa565b60018060a01b0391549060031b1c16620123a0610aa0516104c05162004ce2565b52620123af610aa05162004c7b565b610aa05262012349565b50979294959093985095909560005b82811062012462575050506108605162004c99576104c051516001600160401b03811162002a2357620124058160046102a05160031b0162005036565b60206104c0510160046102a05160031b01600052602060002060005b838110620124445750505050620124389062004c7b565b949295909195620120ff565b82516001600160a01b03168183015560209092019160010162012421565b620124a8906001600160a01b036201247b828562004ce2565b51166201248f610aa0516104c05162004ce2565b526201249e610aa05162004c7b565b610aa05262004c7b565b620123c8565b505093620119de9193506020925062004c7b565b909260208101516026811015620029ab576006036201267b57604001620124ee60c08251015162004c8b565b51936201250560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620125845762012534818562004ce2565b51906103e882101562004c99576201257e916003906001600160a01b036201255d848c62004ce2565b5116600052811b0160205262000f5560406000205462007d41838962004ce2565b6201251e565b509060005b865181101562012625576201259f818562004ce2565b516103e881101562004c99576003906001600160a01b03620125c2848b62004ce2565b5116600052811b01602052620125e360406000205462007dae838862004ce2565b9190620125f1828762004ce2565b51906103e882101562004c99576201261f9362000f55926003906001600160a01b0362011e52878f62004ce2565b62012589565b5094916201263a9193506201198290620336a2565b91604051946201264a8662002ac7565b60008652600036813760005b8351811015620119ca578062000f55620079ba62012675938762004ce2565b62012656565b60208101516026811015620029ab576007036201278d5760400192620126a660c08551015162004c8b565b5191620126b860a08651015162004c8b565b5194515191620126d0845187511462000f4e62033906565b60005b8451811015620119ca57620127879062000f556001600160a01b0380620126fb848a62004ce2565b51166000528660028b620127776201273a876201273281611f40978860205262008d7e60ff604060002054161562000f4e620339d7565b519362004ce2565b519162008de28d60405196620127508862002a07565b60018852886200d82f8c60208b01946000865260408c0197885260608c01998a5262004ce2565b5191015562008dfd838962004ce2565b620126d3565b60208194939401516026811015620029ab57600803620128245760c06040620127ba920151015162004c8b565b519160005b835181101562012812576201280c906001600160a01b0380620127e3838862004ce2565b5116600052611f4090816020526200d94b600160ff6040600020541615151462000f4e62033936565b620127bf565b50926020919250620119de9062004c7b565b60208101516026811015620029ab57600903620128a65760c060406201284e920151015162004c8b565b519160005b83518110156201281257620128a0906001600160a01b038062012877838862004ce2565b5116600052611f4090816020526200da39600160ff6040600020541615151462000f4e62033936565b62012853565b60208101516026811015620029ab57600a03620129545760400190620128d760a06200dacd60c08551015162004c8b565b5192620128ec835185511462000f4e62033906565b60005b835181101562012941576201293b906001600160a01b038062012913838862004ce2565b5116600052611f40806020526200db3c600160ff6040600020541615151462000f4e62033936565b620128ef565b5093620119de9193506020925062004c7b565b6020819493929401516026811015620029ab57600b0362012a0757604001926201298360c08551015162004c8b565b51935151916201299b855184511462000f4e62033906565b60005b8551811015620129f457620129ee9062000f556001600160a01b0380620129c6848b62004ce2565b5116600052611f40806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6201299e565b5093509160209150620119de9062004c7b565b90919260208201516026811015620029ab57600c0362012b44576060604083015101519262012a36846202d715565b60005b8451811015620129415760e062012a598260606040880151015162004ce2565b5101511562012ad65762012a7a620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012a9b6005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c89565b62012a39565b62012aee620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012b0f6005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c49565b92919060208101516026811015620029ab57600d0362012c585760400192602062012b7460a08651015162004c8b565b51945101519162012b8985518451146202de09565b60005b8551811015620129f4578062012ba762012c00928662004ce2565b511562012c065762012bbe62009368828962004ce2565b62012bd660ff60056200de5462009389858c62004ce2565b62012bee60ff6005620093a262009389858c62004ce2565b6005620093be62009389838a62004ce2565b62012b8c565b62012c16620093f6828962004ce2565b62012c2e60ff60056200de5462009417858c62004ce2565b62012c4660ff6005620093a262009417858c62004ce2565b6005620093be62009417838a62004ce2565b60208194929401516026811015620029ab57600e0362012d1f5760400190602062012c8860a08451015162004c8b565b51925101519362012c9d83518651146202de09565b60005b8351811015620129f4578062012cbb62012cc7928862004ce2565b5162012ccd5762004c7b565b62012ca0565b62012cdd620094b3828762004ce2565b62012cf560ff60056200df9162009389858a62004ce2565b62012d0d60ff6005620094fa62009389858a62004ce2565b60056200924662009389838862004ce2565b9060208294939401516026811015620029ab57600f0362012e5d576060604083015101519262012d4f846202d715565b60005b8451811015620129415760e062012d728260606040880151015162004ce2565b5101511562012def5762012d93620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012db46005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c89565b62012d52565b62012e07620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012e286005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c49565b9060208194939401516026811015620029ab5760100362012ece57604001519062012e9160a0608084015193015162004c8b565b519362012ea6835186511462000f4e62033906565b60005b8351811015620129f4578062000f55620096a562012ec8938762004ce2565b62012ea9565b60208194929401516026811015620029ab5760110362013130576040019062012f0260a06200dacd60c08551015162004c8b565b519362012f1383518651146202d58d565b60005b835181101562012f8d5762012f879062000f556001600160a01b038062012f3e848962004ce2565b5116600052611f458060205262012f606040600020546200686c868d62004ce2565b91909262012f6f868b62004ce2565b511660005260205260406000205562000f4e620338bc565b62012f16565b5093509062012f9c9062033586565b90611f46549362012fb3620080c084518762006258565b9060009260005b87811062013115575060005b85518110156201306d576000805b8981106201301e575b501562012ff6575b62012ff09062004c7b565b62012fc6565b9362012ff09062013015906001600160a01b036200e3f8888a62004ce2565b94905062012fe5565b620130298162004e52565b90546001600160a01b0360039290921b1c81169062013049858b62004ce2565b51161462013062576201305c9062004c7b565b62012fd4565b505060013862012fdd565b5095509392506201307e8262004dfe565b8051906001600160401b03821162002a23576020906201309e8362004f93565b01611f46600052602060002060005b838110620130f7575050505060005b828110620130d457505050620119de60209162004c7b565b620130f19062000f556001600160a01b0362001a37838662004ce2565b620130bc565b82516001600160a01b031681830155602090920191600101620130ad565b936200e5446201312a916200e5268762004e52565b62012fba565b60208194929401516026811015620029ab576012036201337557604001906201316460a06200dacd60c08551015162004c8b565b51936201317583518651146202d58d565b60005b8351811015620131c857620131c29062000f556001600160a01b0380620131a0848962004ce2565b5116600052611f458060205262012f6060406000205462007dae868d62004ce2565b62013178565b5093509190620131d89062033586565b611f4654620131e78162004dfe565b906000926000915b8083106201329c57505050620132058262004dfe565b8051906001600160401b03821162002a2357602090620132258362004f93565b01611f46600052602060002060005b8381106201327e575050505060005b8281106201325b57505050620119de60209162004c7b565b620132789062000f556001600160a01b0362001a37838662004ce2565b62013243565b82516001600160a01b03168183015560209092019160010162013234565b91956000959193959760005b85518110156201336657620132bd8962004e52565b90546001600160a01b0360039290921b1c811690620132dd838962004ce2565b511614620132f657620132f09062004c7b565b620132a8565b509750956001959391955b8062013335575b156201332057620133199062004c7b565b91620131ef565b936200e54462013319916200e5268762004e52565b50620133418162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562013308565b50979690969593919562013301565b60208101516026811015620029ab57601303620133ce5760408091015101519260005b8451811015620133bd578062000f5562009c19620133b7938862004ce2565b62013398565b50925090620119de60209162004c7b565b60208101516026811015620029ab576014036201357b5760400190620133f960c08351015162004c8b565b51936201341060a0620077f3818651015162004c8b565b51916201342186518551146202e0ca565b6201343086518451146202e130565b60005b8651811015620135265762013449818562004ce2565b5162013456828762004ce2565b51906103e882101562004c99576006620134769260031b01549062006049565b9062013483838862004ce2565b51916103e883101562004c99576006620134a29360031b01556202e1ea565b620134ae818562004ce2565b51620134bb828762004ce2565b51906103e882101562004c9957620134e4916003906001600160a01b03620118fd868d62004ce2565b9190620134f2828862004ce2565b51906103e882101562004c9957620135209362000f55926003906001600160a01b0362011951878f62004ce2565b62013433565b5094915091620119826201353a91620336a2565b93604051926201354a8462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba62013575938762004ce2565b62013556565b60208101516026811015620029ab57601503620135a5576020919262000f55620119de926202e2ee565b60208101516026811015620029ab57601603620136015760c06040620135cf920151015162004c8b565b519260005b8451811015620133bd57620135fb9062000f556001600160a01b0362009e60838962004ce2565b620135d4565b60208101516026811015620029ab576017036201365e5760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601803620136c95760c0604062013688920151015162004c8b565b5192600160ff19611fb6541617611fb65560005b8451811015620133bd57620136c39062000f556001600160a01b0362009f2c838962004ce2565b6201369c565b60208193929301516026811015620029ab57601903620137b15760008080604080940160a08082510151805162013778575b5050519060e0820151916201371f6200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156201376f573d91620137408362002edc565b926201374f8351948562002b1c565b83523d6000602085013e5b1562009fe1575050620119de60209162004c7b565b6060916201375a565b620137839062004c8b565b515162013792575b80620136fb565b8192506200686590620137a89251015162004c8b565b5190386201378b565b60208101516026811015620029ab57601a03620138a757620137dc60a0604080930151015162004c8b565b51620137ec60038251146202d58d565b620137f78162004c8b565b519162013810620138088362004caf565b519262004cc0565b51916201386d575091620119de916001602094146000146200a16d576201383f6201384d91611fb15462006049565b611fb15562000f4e62033857565b62000f556201385f611fb25462006036565b611fb25562000f4e62033891565b5162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b0362013cd757509190620138d7611faf54620061966200a1e362033793565b5050620138e362033857565b506000805b6103e8811062013c8b575b5050620138ff62006172565b6201390d613f745462004dfe565b906000946000905b6103e882101562013c7e578160031b9460ff6007870154161562013a665760009660028701541562013a5557600098975b62004c9957600487015489101562013a3b5762013967896004890162004efa565b9054600391821b1c6001600160a01b03166000818152918901602052604091829020549199916201399a90889062005f19565b9a90620139a662033857565b620139b19162004c48565b60009a60028b0154620139c49162005f19565b9190620139d062033857565b620139db9162004c48565b82600052611f4760205260002090815490620139f79162006049565b90915562013a0462033857565b62013a0f9162004c48565b62013a1b828962004ce2565b5262013a279062004c7b565b9862013a339062004c7b565b989762013946565b9290955062013a4d9196975062004c7b565b909462013915565b9290955062013a4d91965062004c7b565b95969392509350505b62013a7a8262004dfe565b9160009160005b82811062013be857505050611f48549162013aa1620080c0848462006258565b926000906000905b80821062013bcb57505060005b83811062013b355750508251929150506001600160401b03821162002a235760209062013ae38362004f58565b01611f48600052602060002060005b83811062013b175750505050620119de6020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162013af2565b6000805b83811062013b83575b501562013b5b575b62013b559062004c7b565b62013ab6565b9062013b559062013b7a906001600160a01b0362008248858762004ce2565b91905062013b4a565b6001600160a01b038062013b98858862004ce2565b51169062013ba7838a62004ce2565b51161462013bc05762013bba9062004c7b565b62013b39565b505060013862013b42565b90916200825662013be19162009b6f8562004e36565b9062013aa9565b6000805b85811062013c36575b501562013c0e575b62013c089062004c7b565b62013a81565b9262013c089062013c2d906001600160a01b0362008248878662004ce2565b93905062013bfd565b6001600160a01b038062013c4b858762004ce2565b51169062013c5a838a62004ce2565b51161462013c735762013c6d9062004c7b565b62013bec565b505060013862013bf5565b9394959291505062013a6f565b8060039594951b9060ff6007830154161562013ccd576200a622620074b962000f55946200a61662013cc49560026200a60c8762005deb565b939293620138e8565b50939293620138f3565b60208101516026811015620029ab57601c0362013d345760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d0362013d5a575b50620119de60209162004c7b565b92909160208401516026811015620029ab57601e036201447c57604084019060a09062013d8b828451015162004c8b565b515162013d9c838551015162004caf565b5151036200aeb05762013db3828451015162004c8b565b515162013dc4838551015162004cc0565b5151036200ae345762013ddb828451015162004c8b565b519462013dec838551015162004caf565b519162013e016200a76b858751015162004cc0565b51958551875103620089ef5760005b865181101562013e695762013e26818862004ce2565b51906103e882101562004c9957600362013e639260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b62013e10565b5090969192939660005b865181101562013f125762013e89818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b0160205262013ec160406000205462007dae838b62004ce2565b919062013ecf828a62004ce2565b51906103e882101562004c995762013f0c93600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b62013e73565b509396929795509362013f2590620336a2565b966040519662013f358862002b00565b60018852602036818a013786516001600160a01b031662013f568962004c8b565b526040519662013f668862002ac7565b600088526000610660525b89516106605190811015620143235762013f8c908b62004ce2565b516109c05262013f9d885162004dfe565b9960009762013fad8b5162004dfe565b6109405260009760005b8b518110156201407d578d8c62013fe76001600160a01b0362013fdb858462004ce2565b51166109c0516203348a565b158062014037575b62014008575b5050620140029062004c7b565b62013fb7565b9b6201402c9162001b0382859f62007f8f620140029760018060a01b039262004ce2565b9a90508d8c62013ff5565b5050506103e86109c051101562004c99576001600160a01b036201405c828e62004ce2565b511660005260036109c051811b016020528d8c604060002054151562013fef565b50909b989a99949691929395979b60005b8b5181101562014122576103e86109c051101562004c99576001600160a01b03620140ba828e62004ce2565b511660005260036109c051811b0160205260406000205415620140e9575b620140e39062004c7b565b6201408e565b9c62014119620140e3918f620141088f9160018060a01b039262004ce2565b511662001b03826109405162004ce2565b9d9050620140d8565b509b509895909294969193966109c051996103e88b10159c8d62004c995762014159620080c060048f9e60031b01549e8f62006258565b6108c05260006108a0528d60009e5b62004c99578d8f101562014227575060009d620141b0620141938260046109c05160031b0162004efa565b90546109405160039290921b1c6001600160a01b03169062033539565b15620141ca575b620141c38f9162004c7b565b9e62014168565b620141c39e5060009e8f91620141ea8160046109c05160031b0162004efa565b60018060a01b0391549060031b1c166201420b6108a0516108c05162004ce2565b526201421a6108a05162004c7b565b6108a052915050620141b7565b9396999b929d509396999094979b5060005b828110620142d75750505062004c99576108c051516001600160401b03811162002a2357620142728160046109c05160031b0162005036565b60206108c051019060046109c05160031b0160005260206000209160005b828110620142b95750505050620142aa6106605162004c7b565b61066052959890949862013f71565b81516001600160a01b03168185015560209091019060010162014290565b6201431d906001600160a01b03620142f0828562004ce2565b5116620143046108a0516108c05162004ce2565b52620143136108a05162004c7b565b6108a05262004c7b565b62014239565b509492975094955091965060009460005b87518110156201438757620143526200acf06200ace3838962004ce2565b806201436b575b50620143659062004c7b565b62014334565b906200ad266201438098620143659362006049565b9062014359565b50965094509290915080620143a9575b5050620119de6020915b915062013d4c565b620143d49060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b60018060a01b03835116600052602052604060002055600080611f4654905b81811062014432575b505091620119de916020931562014416575b509162014397565b516201442b906001600160a01b03166200662e565b386201440e565b6201443d8162004e52565b9054855160039290921b1c6001600160a01b039081169116146201446c57620144669062004c7b565b620143f3565b50600191508290506020620143fc565b91909260208101516026811015620029ab57601f03620144b757602091620144b16200af646040620119de9401515162004c8b565b620143a1565b60208101516026811015620029ab57602003620144dd575b50620119de602091620143a1565b60208101516026811015620029ab57602114620144cf5760208101516026811015620029ab57602203620145315750620119de60209160ff19611fb65416611fb6556201452962005023565b9150620144cf565b60208101516026811015620029ab5760230362014557575b50620119de60209162014529565b60208101516026811015620029ab57602414620145495760208101516026811015620029ab57602514620145495792909160208401516026811015620029ab576015036201069a576040840190620145b460c08351015162004c8b565b5190620145cb60a0620077f3818651015162004c8b565b5193620145e0835185511462000f4e62033906565b620145f3835186511462000f4e62033906565b60005b83518110156201464f576201460c818662004ce2565b51906103e882101562004c99576003620146499260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b620145f6565b509095919560005b87518110156201477a576201466d818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620146a560406000205462007dae838962004ce2565b90620146b2838862004ce2565b51916103e883101562004c99576003620146e99360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b620146f5818662004ce2565b516103e881101562004c99576003906001600160a01b0362014718848c62004ce2565b5116600052811b01602052620147396040600020546200686c838962004ce2565b919062014747828862004ce2565b51906103e882101562004c99576201477493600362000f55938d62007e678760018060a01b039262004ce2565b62014657565b509262014792919294506200c6fd90969596620336a2565b9260405190620147a28262002b00565b6001825260203681840137516001600160a01b0316620147c28262004c8b565b526000945b805186101562014b7657620147dd868262004ce2565b51610a4052620147ee855162004dfe565b96600094620147fe845162004dfe565b6109805260009460005b8851811015620148ce578a89620148386001600160a01b036201482c858462004ce2565b5116610a40516203348a565b158062014888575b62014859575b5050620148539062004c7b565b62014808565b986201487d9162001b0382859c62007f8f620148539760018060a01b039262004ce2565b9790508a8962014846565b5050506103e8610a4051101562004c99576001600160a01b03620148ad828b62004ce2565b51166000526003610a4051811b016020528a89604060002054151562014840565b50909895979498969291939660005b885181101562014971576103e8610a4051101562004c99576001600160a01b0362014909828b62004ce2565b51166000526003610a4051811b016020526040600020541562014938575b620149329062004c7b565b620148dd565b99620149329062014968906001600160a01b03620149578e8d62004ce2565b511662001b03826109805162004ce2565b9a905062014927565b50985096959291909396610a40516103e8811015806102e05262004c995760031b6004015498620149a7620080c0898c62006258565b610220526000610a80526000610520525b6102e05162004c9957610520518a81101562014a8157620149ed62014a0a9160006102e0526004610a405160031b0162004efa565b90546109805160039290921b1c6001600160a01b03169062033539565b1562014a29575b62014a1f6105205162004c7b565b61052052620149b8565b60006102e05262014a47610520516004610a405160031b0162004efa565b60018060a01b0391549060031b1c1662014a68610a80516102205162004ce2565b5262014a77610a805162004c7b565b610a805262014a11565b50979294959093985095909560005b82811062014b2a575050506102e05162004c995761022051516001600160401b03811162002a235762014acd816004610a405160031b0162005036565b602061022051016004610a405160031b01600052602060002060005b83811062014b0c575050505062014b009062004c7b565b949295909195620147c7565b82516001600160a01b03168183015560209092019160010162014ae9565b62014b70906001600160a01b0362014b43828562004ce2565b511662014b57610a80516102205162004ce2565b5262014b66610a805162004c7b565b610a805262004c7b565b62014a90565b505093620119de91935060209250915062014549565b815162014ba2906001600160a01b031662006658565b620116d6565b62014bb38162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462014be25762014bdc9062004c7b565b620116c4565b50505060013880620116cd565b82516001600160a01b0316600160401b82101562002a235762001a4482600162014c1e9401613f025562004e8a565b386200bc77565b62014c308162004e8a565b9054865160039290921b1c6001600160a01b0390811691161462014c5f5762014c599062004c7b565b6200bc66565b50506001386200bc6f565b82516001600160a01b0316818301556020909201916001016200bb9c565b82516001600160a01b0316818301556020909201916001016200ba4f565b600191820180546001600160a01b03909216848601559390910192906200b99e565b613f6d60005262014cef90600080516020620340bb83398151915290810190830162004f3f565b386200b95f565b6001808262014d0782948662015151565b019201920191906200b921565b613f6c60005260008051602062033efb833981519152908282015b818301811062014d415750506200b8e6565b8062014d4f6001926200533c565b0162014d2f565b600191820180546001600160a01b03909216848601559390910192906200b8b7565b613f6b60005262014d9f9060008051602062033ebb83398151915290810190830162004f3f565b386200b878565b6001809193019182549381613f0301550190916200b81b565b82516001600160a01b0316818301556020909201916001016200b734565b62014df890613f026000528484600020918201910162004f3f565b386200b724565b82516001600160a01b0316818301556020909201916001016200b550565b62014e3890613ef96000528484600020918201910162004f3f565b386200b540565b8062014e619160031b600160ff60078301541615151462014e67575062004c7b565b6200b495565b62014e7a60048201611fbc8301620152ea565b611fbf8101600160ff19825416179055805481611fb801556001810154611fb98201556002810154611fba82015562014ebb60058201611fbd830162015151565b611fbe6006820154910155386200a16d565b600660208262014ee16001945186620057d8565b019201920191906200b29e565b600681810204810362001e4f57600683810204830362001e4f57613efa6000527f2dfc264c6ecd0c6ea7ea3726867a09cc7eed901a6e437c010038bab559d48ed86006840281015b826006028201811062014f4b5750506200b28b565b806000600692556000600182015562014f6760028201620054a7565b6000600382015562014f7c600482016200533c565b600060058201550162014f36565b600660208262014f9e6001945186620057d8565b019201920191906200b213565b8060060290600682040362001e4f578260060260068104840362001e4f57600090613efb82526020822092830192015b82811062014feb5750506200b200565b8082600692558260018201556201500560028201620054a7565b82600382015562015019600482016200533c565b8260058201550162014fdb565b608460405162461bcd60e51b815260206004820152604060248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b8181146201514d578154916001600160401b03831162002a23576201510f838362005036565b60005260206000209060005260206000208154916000925b84841062015136575050505050565b600180919201938454928185015501929062015127565b5050565b908082146201514d5762015166815462002c01565b906001600160401b03821162002a23578190620151908262015189865462002c01565b8662005678565b600090601f8311600114620151c957600092620151bd5750508160011b916000199060031b1c1916179055565b0154905038806200570b565b81526020808220858352818320935090601f1985169083905b8282106201521e5750509084600195949392106201520457505050811b019055565b015460001960f88460031b161c1916905538808062005758565b8495819295850154815560018091019601940190620151e2565b8181146201514d578154916201524f8383620053ca565b6000526020600020906000526020600020906000905b838210620152735750505050565b80620152826001928562015151565b92810192918101910162015265565b8181146201514d57815491620152a8838362005458565b6000526020600020906000526020600020906000905b838210620152cc5750505050565b80620152db60019285620150e9565b928101929181019101620152be565b8181146201514d578154916001600160401b03831162002a235762015310838362005036565b60005260206000209060005260206000208154916000925b84841062015337575050505050565b600191820180546001600160a01b039092168486015593909101929062015328565b8181146201514d5781549162015370838362005458565b6000526020600020906000526020600020906000905b838210620153945750505050565b80620153a360019285620152ea565b92810192918101910162015386565b8181146201514d57815491620153c983836200555b565b6000526020600020906000526020600020906000905b838210620153ed5750505050565b8060019184036201540a575b6008809101930191019091620153df565b80548455620154378280860190830160ff906201542b82825416846200563d565b5460081c169062005657565b60028082015490850155620154536003808301908601620150e9565b60048085019082018082036201546c575b5050620153f9565b620154779162015238565b62015489600580830190860162015291565b6201549b600680830190860162015359565b620154ad600780830190860162015151565b388062015464565b919062005cff57808203620154c8575050565b60ff60058062002bc394620154e1848654168262005624565b60018501546001820155620154fd6002860160028301620153b2565b6003850154600382015562015519600486016004830162015151565b0192016201552b828254168462005795565b6201553d82825460081c1684620057a6565b5460101c1690620057be565b908082146201514d57908154906000915b60648310620155695750505050565b60018091940192835494818401550191926201555a565b90611f4254916000926020820191825151906201559d8262002be9565b91620155ad604051938462002b1c565b808352620155be601f199162002be9565b01366020840137620155d38451518462005f19565b90156201595057620155e59062004dfe565b918693855151156201594657620155fc8162004dfe565b975b8651518110156201578e5760008080805b87858c888410620156a45750839450620156389392506201563291508862004ce2565b62003574565b6006811015620029ab576003146201565d575b50620156579062004c7b565b620155fe565b6000905b8a818310620156725750506201564b565b8298620156896201569d9394620156969362004ce2565b5162001b03828b62004ce2565b9762004c7b565b9062015661565b620156b7620156be939285925162004ce2565b5162015d75565b939094808311806201577a575b156201573157505091838562015727575b6006811015620029ab5760038f911462015707575b5050620156fe9062004c7b565b9190916201560f565b946201571e9162001b0382620156fe959862004ce2565b93908d620156f1565b60009550620156dc565b809492959195148062015766575b15620156f1576006811015620029ab5760038f911462015707575050620156fe9062004c7b565b506006811015620029ab578015156201573f565b506006861015620029ab57851515620156cb565b505093505090929350600093845b8351861015620158e157620157bc620157b6878662004ce2565b62005616565b90600680831015620029ab576002928303620157e7575050620157e0909562004c7b565b946201579c565b620157f7620157b6898862004ce2565b9281841015620029ab57600180941480620158cd575b156201582257505050620157e0909562004c7b565b62015837620157b68a899b9694959b62004ce2565b9280841015620029ab5760048094149283620158a1575b508262015876575b50506201586a575b50620157e09062004c7b565b9550620157e06201585e565b9091508810156201588c57871415388062015856565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620158b85789141591386201584e565b602184634e487b7160e01b6000525260246000fd5b5081831015620029ab57808314156201580d565b9250929093506006821015620029ab57600382036201593d575b620159068162004dfe565b9360005b82811062015919575050509190565b806201592a62015937928462004ce2565b5162001b03828962004ce2565b6201590a565b506000620158fb565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b90611f435491600092602082019182515190620159c58262002be9565b91620159d5604051938462002b1c565b808352620159e6601f199162002be9565b01366020840137620159fb8451518462005f19565b9015620159505762015a0d9062004dfe565b91869385515115620159465762015a248162004dfe565b975b86515181101562015b9c5760008080805b87858c88841062015ab2575083945062015a5a9392506201563291508862004ce2565b6006811015620029ab5760031462015a7f575b5062015a799062004c7b565b62015a26565b6000905b8a81831062015a9457505062015a6d565b82986201568962015aab9394620156969362004ce2565b9062015a83565b62015ac562015acc939285925162004ce2565b5162015e14565b9390948083118062015b88575b1562015b3f57505091838562015b35575b6006811015620029ab5760038f911462015b15575b505062015b0c9062004c7b565b91909162015a37565b9462015b2c9162001b038262015b0c959862004ce2565b93908d62015aff565b6000955062015aea565b809492959195148062015b74575b1562015aff576006811015620029ab5760038f911462015b1557505062015b0c9062004c7b565b506006811015620029ab5780151562015b4d565b506006861015620029ab5785151562015ad9565b505093505090929350600093845b835186101562015cbf5762015bc4620157b6878662004ce2565b90600680831015620029ab57600292830362015bef57505062015be8909562004c7b565b9462015baa565b62015bff620157b6898862004ce2565b9281841015620029ab5760038094148062015cab575b1562015c2a5750505062015be8909562004c7b565b62015c3f620157b68a899b9694959b62004ce2565b9280841015620029ab576005809414928362015c94575b508262015c7e575b505062015c72575b5062015be89062004c7b565b955062015be862015c66565b909150881015620029ab57871415388062015c5e565b908093508a1015620029ab57891415913862015c56565b5081831015620029ab578083141562015c15565b9250929093506006821015620029ab576003820362015d0e575b62015ce48162004dfe565b9360005b82811062015cf7575050509190565b806201592a62015d08928462004ce2565b62015ce8565b50600062015cd9565b1562015d1f57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9192906000908194829462015d8f611f4254841062015d17565b60ff600562015d9e8562005c89565b50015460081c161562015e07578262015dbb928592600162015fee565b62015dc7575b50929190565b809450600192935062015ddb915062005c89565b50015490600362015dfc60ff62015df28662005c89565b5054169462005c89565b500154913862015dc1565b5050509150915080918190565b9192906000908194829462015e2e611f4354841062015d17565b60ff600562015e3d8562005c49565b50015460081c161562015e07578262015e599285928362015fee565b62015e645750929190565b809450600192935062015e78915062005c49565b50015490600362015dfc60ff62015e8f8662005c49565b5054169462005c49565b9062002bc3606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262015f10815180926020868601910162002d89565b810103604181018552018362002b1c565b606d62002bc3919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262015f93815180926020605f8701910162002d89565b82016d016103737b2329034b73232bc1d160951b605f82015262015fc1825180936020878501910162002d89565b0103604d81018552018362002b1c565b805482101562004c995760005260206000209060031b0190600090565b9392919084156201637f5762016018611f4254841062000f4e620160128662005091565b62015e99565b6201604f6002620160298562005c89565b500154851062000f4e6201603d8662005091565b620160488862005091565b9062015f21565b841562016360576201607f6001620160768660026201606e8862005c89565b500162015fd1565b50015460ff1690565b945b6201608c8662002f45565b856201609d57505050505050600090565b620160a88662002f45565b600395808703620160bf5750505050505050600190565b620160ca8162002f45565b60048103620160df5750505050505050600090565b620160ea8162002f45565b60018103620161005750620032619550620163af565b919593929490620161118362002f45565b600280931462016128575b50505050505050600090565b801562016342576201615260016201614684866201606e8962005c89565b50015460081c60ff1690565b935b81156201632657856201616d84866201606e8562005c89565b500154965b6201617d8862004dfe565b9860005b8981106201629b575050505050506201619a82620029a0565b60018203620161fd57505050906001916000915b818310620161bc5750505090565b90919280620161da575b620161d2909362004c7b565b9190620161ae565b50620161d2620161f5620161ef858462004ce2565b51151590565b9050620161c6565b6201620882620029a0565b8103620162625750509060009182915b818310620162265750505090565b909192801562016245575b6201623d909362004c7b565b919062016218565b506201623d6201625a620161ef858462004ce2565b905062016231565b9091506201627081620029a0565b14620162845750388080808080806201611c565b62016297620161ef620032619262004c8b565b1590565b808b620162e4828c8a8c8a8c156201630557620162da9492620162d094926201606e620162c89362005c89565b500162004efa565b90549060031b1c90565b8787878b62015fee565b620162f8620162ff9462000f559362004ce2565b9015159052565b62016181565b620163209492620162d094926201606e620162c89362005c49565b620162da565b856201633884866201606e8562005c49565b5001549662016172565b6201635960016201614684866201606e8962005c49565b9362016154565b620163786001620160768660026201606e8862005c49565b9462016081565b62016398611f4354841062000f4e620160128662005091565b620163a96002620160298562005c49565b6201604f565b93926004620163f99186600014620165c7576002620163d487826201606e8562005c89565b500154955b8715620165b65760026201606e620163f19362005c89565b50016200363b565b916032841115620165aa576033841015806201659e575b620165915760978410158062016585575b620165785760d3841015806201656b575b6201655f5761012d8410158062016553575b62016546576101918410158062016539575b6201652c576101af841015806201651f575b62016512576101cd8410158062016505575b620164f8576101f584101580620164eb575b620164de5761025984101580620164d1575b620164c357506102bd831015620164b85750505050600090565b620032619362024231565b90506200326193506202b56e565b506102bc8411156201649e565b506200326193506201e816565b506102588411156201648c565b506200326193506202bed2565b506101f48411156201647a565b506200326193506202c935565b506101cc84111562016468565b50620032619350620239a0565b506101ae84111562016456565b50620032619350620287e2565b50610190841062016444565b506200326193620165e4565b5061012c84111562016432565b506200326193506202401c565b5060b484111562016421565b505062003261926201f476565b50609584111562016410565b506200326193620257bf565b60026201606e620163f19362005c49565b6002620165da87826201606e8562005c49565b50015495620163d9565b9260d3811462016bb35760d4811462016ba65760d5811462016b995760d6811462016b8c5760d7811462016b7f5760d8811462016b725760d9811462016b665760da811462016b595760db811462016b4c5760dc811462016b405760dd811462016b315760de811462016b225760df811462016b155760e0811462016b085760e1811462016afc5760e2811462016aef5760e3811462016ae25760e4811462016ad65760e5811462016ac75760e6811462016ab85760e7811462016aab5760e8811462016a9e5760e9811462016a915760ea811462016a845760eb811462016a775760ec811462016a6a5760ed811462016a5d5760ee811462016a505760ef811462016a435760f0811462016a365760f1811462016a295760f2811462016a1c5760f3811462016a0f5760f4811462016a025760f58114620169f55760f68114620169e85760f78114620169db5760f88114620169ce5760f98114620169c25760fa8114620169b65760fb8114620169aa5760fc81146201699e5760fd8114620169925760fe8114620169865760ff81146201697a5761010081146201696e57610101811462016962576101028114620169565761010381146201694a5761010481146201693e57610105811462016932576101068114620169265761010781146201691a5761010881146201690e576101098114620169025761010a8114620168f65761010b8114620168ea5761010c8114620168de5761010d8114620168d25761010e8114620168c65761010f8114620168ba576101108114620168ae576101118114620168a2576101128114620168965761011381146201688a5761011481146201687e5761011581146201687257610116146201686757505050600090565b62003261926201decd565b5062003261926201dca4565b5062003261926201da7b565b5062003261926201d778565b5062003261926201d557565b5062003261926201d336565b5062003261926201d104565b5062003261926201cf3b565b5062003261926201cd72565b5062003261926201cb3a565b5062003261926201c973565b5062003261926201c644565b5062003261926201c412565b5062003261926201c249565b5062003261926201c080565b5062003261926201bebb565b5062003261926201bc83565b5062003261926201babc565b5062003261926201b786565b5062003261926201b526565b5062003261926201b355565b5062003261926201b174565b5062003261926201afad565b5062003261926201ad57565b5062003261926201ab8e565b5062003261926201a9c5565b5062003261926201a6e4565b5062003261926201a3e4565b5062003261926201a0f7565b50620032619262019df7565b5062003261925062019c72565b5062003261925062019b2d565b50620032619250620199bb565b5062003261925062019876565b5062003261925062019731565b50620032619250620195ed565b5062003261925062019478565b5062003261925062019334565b50620032619250620191f0565b50620032619250620190af565b5062003261925062018f6c565b5062003261925062018e2b565b5062003261925062018ce2565b5062003261925062018b9e565b5062003261925062018a5a565b50620032619250620188e5565b5062003261925062018747565b5062003261925062018604565b509050620032619150620185a9565b5090506200326191506201854c565b5062003261926201830e565b506200326192506201817f565b5062003261925062018030565b50620032619262017e19565b5062003261925062017c71565b5062003261925062017b24565b50905062003261915062017ac9565b50905062003261915062017a5c565b50620032619262017810565b5062003261925062017681565b506200326192506201752c565b506200326192620172fe565b5062003261925062017146565b5062003261925062016fea565b5062003261925062016ee9565b5062003261925062016dbc565b5062003261925062016cbb565b50620032619250906020019060018251510362016c6257600162016bd8835162004c8b565b51510362016c085762016beb906201e1d4565b91901562006627576200686562016c03915162004c8b565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016d6357600162016cd9835162004c8b565b51510362016d095762016cec906201e1d4565b91901562006627576200686562016d04915162004c8b565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016e9057600262016dda835162004c8b565b51510362016e345762016ded906201e1d4565b9015620066275762016e0462006865835162004c8b565b51811015918262016e1457505090565b62016e2e91925062016e27905162004c8b565b5162004caf565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016f9157600162016f07835162004c8b565b51510362016f375762016f1a906201e1d4565b91901562006627576200686562016f32915162004c8b565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906040016001918282515103620170ec578262017008835162004c8b565b51510362017092576201701b906201e547565b156200661f57829160009182945b62017037575b505050905090565b80518510156201708c576001600160a01b038062017056878462004ce2565b5116906201706962006865855162004c8b565b51160362017084576201707d849562004c7b565b9462017029565b505091505090565b6201702f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620172a4578262017164835162004c8b565b5151106201724a5762017177906201e547565b156200661f57600091835b6201718e575b50505090565b81518310156201724457600080855b620171c6575b5015620171bd57620171b6849362004c7b565b9262017182565b50505050600090565b620171d78396949295965162004c8b565b515181101562017239576001600160a01b0380620171f6888562004ce2565b5116906201720a8362007497875162004c8b565b5116146201722c57906201722084939262004c7b565b9093959491926201719d565b50918094935038620171a3565b9493909294620171a3565b62017188565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620174d2578462017320845162004c8b565b515103620174785762017333906201e547565b15620173d157849315620173e8576000935b62017351575050505090565b80518410156200519a576001600160a01b038062017370868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db576002926201739b888662004ce2565b511660005284526000200154620173b762006865855162004c8b565b5103620173d157620173ca859462004c7b565b9362017345565b5050505050600090565b5050505050505050600090565b6000935b620173f8575050505090565b80518410156200519a576001600160a01b038062017417868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017442888662004ce2565b5116600052845260002001546201745e62006865855162004c8b565b5103620173d15762017471859462004c7b565b93620173ec565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201762757826201754a835162004c8b565b515103620175cd576201755d906201e547565b919091156200661f57600091835b620175795750505050600090565b8051831015620175c75783926001600160a01b03806201759a838562004ce2565b511690620175ad62006865865162004c8b565b5116146200516057620175c09062004c7b565b926201756b565b620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620177b657826201769f835162004c8b565b5151106201775c57620176b2906201e547565b156200661f5782916000935b620176cc5750505050600090565b8151841015620175c7576000835b620176f4575b50620176ed839462004c7b565b93620176be565b93929162017703825162004c8b565b515185101562017753576001600160a01b038062017722868462004ce2565b511690620177368762007497865162004c8b565b51161462017084576201774b83949562004c7b565b9092620176da565b919293620176e0565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017a02578462017832845162004c8b565b515103620179a85762017845906201e547565b91909115620173d15784931562017906576000935b62017869575050505050600090565b8151841015620179005784936001600160a01b0390816201788b828662004ce2565b5116600052611f4080845260409060ff826000205416620178bc575b5050620178b5915062004c7b565b936201785a565b8293620178cc6002948862004ce2565b511660005284526000200154620178e862006865865162004c8b565b5114620178f857803880620178a7565b505050505090565b620173d1565b6000935b62017919575050505050600090565b8151841015620179005784936001600160a01b0390816201793b828662004ce2565b5116600052613ef880845260409060ff8260002054166201796c575b505062017965915062004c7b565b936201790a565b82936201797c6002948862004ce2565b5116600052845260002001546201799862006865865162004c8b565b5114620178f85780388062017957565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62017a67816201e547565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b038062017a9c838762004ce2565b5116908351160362017ab95762017ab39062004c7b565b62017a7d565b5050905090565b50505050600190565b62017ad4816201e547565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b038062017b07838662004ce2565b511690835116146200660c5762017b1e9062004c7b565b62017ae8565b90604001600191828251510362017c17578262017b42835162004c8b565b51510362017bbd5762017b55906201e5d0565b156200661f57829160009182945b62017b7057505050905090565b80518510156201708c576001600160a01b038062017b8f878462004ce2565b51169062017ba262006865855162004c8b565b511603620170845762017bb6849562004c7b565b9462017b63565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90604001600191828251510362017dbf578262017c8f835162004c8b565b51511062017d655762017ca2906201e5d0565b156200661f57600091835b62017cb85750505090565b81518310156201724457600080855b62017ce7575b5015620171bd5762017ce0849362004c7b565b9262017cad565b62017cf88396949295965162004c8b565b515181101562017d5a576001600160a01b038062017d17888562004ce2565b51169062017d2b8362007497875162004c8b565b51161462017d4d579062017d4184939262004c7b565b90939594919262017cc7565b5091809493503862017ccd565b949390929462017ccd565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017fd6578462017e3b845162004c8b565b51510362017f7c5762017e4e906201e5d0565b15620173d15784931562017eec576000935b62017e6c575050505090565b80518410156200519a576001600160a01b038062017e8b868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db5760029262017eb6888662004ce2565b51166000528452600020015462017ed262006865855162004c8b565b5103620173d15762017ee5859462004c7b565b9362017e60565b6000935b62017efc575050505090565b80518410156200519a576001600160a01b038062017f1b868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017f46888662004ce2565b51166000528452600020015462017f6262006865855162004c8b565b5103620173d15762017f75859462004c7b565b9362017ef0565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201812557826201804e835162004c8b565b515103620180cb5762018061906201e5d0565b919091156200661f57600091835b6201807d5750505050600090565b8051831015620175c75783926001600160a01b03806201809e838562004ce2565b511690620180b162006865865162004c8b565b5116146200516057620180c49062004c7b565b926201806f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620182b457826201819d835162004c8b565b5151106201825a57620181b0906201e5d0565b156200661f5782916000935b620181ca5750505050600090565b8151841015620175c7576000835b620181f2575b50620181eb839462004c7b565b93620181bc565b93929162018201825162004c8b565b515185101562018251576001600160a01b038062018220868462004ce2565b511690620182348762007497865162004c8b565b51161462017084576201824983949562004c7b565b9092620181d8565b919293620181de565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620184f2578462018330845162004c8b565b515103620184985762018343906201e5d0565b91909115620173d157849315620183f6576000935b62018367575050505050600090565b8151841015620179005784936001600160a01b03908162018389828662004ce2565b5116600052611f4080845260409060ff826000205416620183ba575b5050620183b3915062004c7b565b9362018358565b8293620183ca6002948862004ce2565b511660005284526000200154620183e662006865865162004c8b565b5114620178f857803880620183a5565b6000935b62018409575050505050600090565b8151841015620179005784936001600160a01b0390816201842b828662004ce2565b5116600052613ef880845260409060ff8260002054166201845c575b505062018455915062004c7b565b93620183fa565b82936201846c6002948862004ce2565b5116600052845260002001546201848862006865865162004c8b565b5114620178f85780388062018447565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62018557816201e5d0565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b03806201858c838762004ce2565b5116908351160362017ab957620185a39062004c7b565b6201856d565b620185b4816201e5d0565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b0380620185e7838662004ce2565b511690835116146200660c57620185fe9062004c7b565b620185c8565b906020016001918282515103620186ed578262018622835162004c8b565b515103620186935762018635906201e609565b9050156200661f57829160009182945b6201865257505050905090565b80518510156201708c5762018668858262004ce2565b516201867962006865845162004c8b565b510362017084576201868c849562004c7b565b9462018645565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201888b578262018765835162004c8b565b515110620188315762018778906201e609565b9050156200661f57600091835b620187905750505090565b81518310156201724457600080855b620187bf575b5015620171bd57620187b8849362004c7b565b9262018785565b620187d08396949295965162004c8b565b51518110156201882657620187e6868362004ce2565b51620187f88262007497865162004c8b565b51146201881957906201880d84939262004c7b565b9093959491926201879f565b50918094935038620187a5565b9493909294620187a5565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018a0057600262018904835162004c8b565b515103620189a65762018917906201e609565b9050919091156200661f57829160009182945b6201893757505050905090565b81518510156201708c576201894d858362004ce2565b516201895e62006865835162004c8b565b5111801562018980575b620170845762018979849562004c7b565b946201892a565b506201898d858362004ce2565b516201899e62016e27835162004c8b565b511062018968565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018b44578262018a78835162004c8b565b51510362018aea5762018a8b906201e609565b9050156200661f57829160009182945b62018aa857505050905090565b80518510156201708c5762018abe858262004ce2565b5162018acf62006865845162004c8b565b511015620170845762018ae3849562004c7b565b9462018a9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018c88578262018bbc835162004c8b565b51510362018c2e5762018bcf906201e609565b9050156200661f57829160009182945b62018bec57505050905090565b80518510156201708c5762018c02858262004ce2565b5162018c1362006865845162004c8b565b511115620170845762018c27849562004c7b565b9462018bdf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018dd1578262018d00835162004c8b565b51510362018d775762018d13906201e609565b90939150156200661f578060009384925b62018d3d575b5050506200686562016c03915162004c8b565b909193815185101562018d70576200e54462018d679162018d5f878562004ce2565b519062006258565b91908162018d24565b9362018d2a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018f12578262018e49835162004c8b565b51510362018eb85762018e5c906201e609565b90939150156200661f578060009384925b62018e86575b5050506200686562016d04915162004c8b565b909193815185101562018eb1576200e54462018ea89162018d5f878562004ce2565b91908162018e6d565b9362018e73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019081835151036201905557600262018f8c845162004c8b565b51510362018ffb5762018f9f906201e609565b909150156200661f57906000918183925b62018fc9575b50505062016e0462006865835162004c8b565b909192825184101562018ff457620064d762018feb9162018d5f868662004ce2565b91908062018fb0565b9262018fb6565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620191965782620190cd835162004c8b565b5151036201913c57620190e0906201e609565b90939150156200661f578060009384925b6201910a575b5050506200686562016f32915162004c8b565b909193815185101562019135576200e5446201912c9162018d5f878562004ce2565b919081620190f1565b93620190f7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620192da57826201920e835162004c8b565b515103620192805762019221906201e609565b90929150156200661f57600091835b6201923e5750505050600090565b8051831015620175c757826201925685948362004ce2565b516201926762006865855162004c8b565b51106200516057620192799062004c7b565b9262019230565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201941e578262019352835162004c8b565b515103620193c45762019365906201e609565b92919215620171bd57600092845b62019382575050505050600090565b80518410156201790057836201939a86958462004ce2565b51620193ab62006865865162004c8b565b5111620178f857620193bd9062004c7b565b9362019373565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201959357600262019497835162004c8b565b5151036201953957620194aa906201e609565b9290919215620171bd57600092845b620194c8575050505050600090565b8051841015620179005783620194e086958562004ce2565b51620194f162006865855162004c8b565b5111158062019512575b620178f8576201950b9062004c7b565b93620194b9565b506201951f818562004ce2565b516201953062016e27855162004c8b565b511015620194fb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620196d757826201960b835162004c8b565b5151036201967d576201961e906201e609565b92919215620171bd57600092845b6201963b575050505050600090565b80518410156201790057836201965386958462004ce2565b516201966462006865865162004c8b565b5114620178f857620196769062004c7b565b936201962c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201981c57826201974f835162004c8b565b515103620197c25762019762906201e609565b9050919091156200661f57600091835b620197805750505050600090565b8051831015620175c757826201979885948362004ce2565b51620197a962006865855162004c8b565b51106200516057620197bb9062004c7b565b9262019772565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019961578262019894835162004c8b565b5151036201990757620198a7906201e609565b9050919091156200661f57600091835b620198c55750505050600090565b8051831015620175c75782620198dd85948362004ce2565b51620198ee62006865855162004c8b565b51116200516057620199009062004c7b565b92620198b7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019ad3576002620199da835162004c8b565b51510362019a7957620199ed906201e609565b9050156200661f57600091835b62019a085750505050600090565b8151831015620175c7578262019a2085948462004ce2565b5162019a3162006865845162004c8b565b5111158062019a52575b620051605762019a4b9062004c7b565b92620199fa565b5062019a5f818462004ce2565b5162019a7062016e27845162004c8b565b51101562019a3b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019c18578262019b4b835162004c8b565b51510362019bbe5762019b5e906201e609565b9050919091156200661f57600091835b62019b7c5750505050600090565b8051831015620175c7578262019b9485948362004ce2565b5162019ba562006865855162004c8b565b5114620051605762019bb79062004c7b565b9262019b6e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019d9d578262019c90835162004c8b565b51511062019d435762019ca3906201e609565b9050156200661f5782916000935b62019cbf5750505050600090565b8151841015620175c7576000835b62019ce7575b5062019ce0839462004c7b565b9362019cb1565b93929162019cf6825162004c8b565b515185101562019d3a5762019d0c848262004ce2565b5162019d1e8662007497855162004c8b565b5114620170845762019d3283949562004c7b565b909262019ccd565b91929362019cd3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a09d578462019e19845162004c8b565b5151106201a0435762019e2c906201e5d0565b92909215620173d15784931562019f40576000935b62019e4d575050505090565b82518410156200519a576001600160a01b038062019e6c868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b62019eb2575b5050505015620173d15762019eab859462004c7b565b9362019e41565b9092989591939662019ec5865162004c8b565b51518a101562019f34578162019edc8a8362004ce2565b5116600052838352600285600020015462019efd8b62007497895162004c8b565b511462019f215762019f128798999a62004c7b565b93919097999894929662019e8f565b9650509396505050843880808062019e95565b96938296995062019e95565b6000935b62019f50575050505090565b82518410156200519a576001600160a01b038062019f6f868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b62019fb5575b5050505015620173d15762019fae859462004c7b565b9362019f44565b9092989591939662019fc8865162004c8b565b51518a10156201a037578162019fdf8a8362004ce2565b511660005283835260028560002001546201a0008b62007497895162004c8b565b51146201a024576201a0158798999a62004c7b565b93919097999894929662019f92565b9650509396505050843880808062019f98565b96938296995062019f98565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a38a57836201a116835162004c8b565b5151106201a330576201a129906201e5d0565b94909415620173d1578392156201a23b5793926000905b6201a14f575050505050600090565b835181101562017900576001600160a01b03806201a16e838762004ce2565b5116600052611f4080875260409160ff8360002054166201a1a4575b505050936201a19b83949562004c7b565b9094936201a140565b6000929190865b6201a1b8575b506201a18a565b9092979193966201a1ca865162004c8b565b51518910156201a23057816201a1e1898362004ce2565b511660005283835260028560002001546201a2028a62007497895162004c8b565b51146201a224576201a21687989962004c7b565b93919097989492986201a1ab565b50505050505091505090565b96938298506201a1b1565b93926000905b6201a250575050505050600090565b835181101562017900576001600160a01b03806201a26f838762004ce2565b5116600052613ef880875260409160ff8360002054166201a2a5575b505050936201a29c83949562004c7b565b9094936201a241565b6000929190865b6201a2b9575b506201a28b565b9092979193966201a2cb865162004c8b565b51518910156201a32557816201a2e2898362004ce2565b511660005283835260028560002001546201a3038a62007497895162004c8b565b51146201a224576201a31787989962004c7b565b93919097989492986201a2ac565b96938298506201a2b2565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a68a57846201a406845162004c8b565b5151106201a630576201a419906201e547565b92909215620173d1578493156201a52d576000935b6201a43a575050505090565b82518410156200519a576001600160a01b03806201a459868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b6201a49f575b5050505015620173d1576201a498859462004c7b565b936201a42e565b909298959193966201a4b2865162004c8b565b51518a10156201a52157816201a4c98a8362004ce2565b511660005283835260028560002001546201a4ea8b62007497895162004c8b565b51146201a50e576201a4ff8798999a62004c7b565b9391909799989492966201a47c565b965050939650505084388080806201a482565b9693829699506201a482565b6000935b6201a53d575050505090565b82518410156200519a576001600160a01b03806201a55c868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b6201a5a2575b5050505015620173d1576201a59b859462004c7b565b936201a531565b909298959193966201a5b5865162004c8b565b51518a10156201a62457816201a5cc8a8362004ce2565b511660005283835260028560002001546201a5ed8b62007497895162004c8b565b51146201a611576201a6028798999a62004c7b565b9391909799989492966201a57f565b965050939650505084388080806201a585565b9693829699506201a585565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a96b57836201a703835162004c8b565b5151106201a911576201a716906201e547565b94909415620173d1578392156201a81c5793926000905b6201a73c575050505050600090565b835181101562017900576001600160a01b03806201a75b838762004ce2565b5116600052611f4080875260409160ff8360002054166201a791575b505050936201a78883949562004c7b565b9094936201a72d565b6000929190865b6201a7a5575b506201a777565b9092979193966201a7b7865162004c8b565b51518910156201a81157816201a7ce898362004ce2565b511660005283835260028560002001546201a7ef8a62007497895162004c8b565b51146201a224576201a80387989962004c7b565b93919097989492986201a798565b96938298506201a79e565b93926000905b6201a831575050505050600090565b835181101562017900576001600160a01b03806201a850838762004ce2565b5116600052613ef880875260409160ff8360002054166201a886575b505050936201a87d83949562004c7b565b9094936201a822565b6000929190865b6201a89a575b506201a86c565b9092979193966201a8ac865162004c8b565b51518910156201a90657816201a8c3898362004ce2565b511660005283835260028560002001546201a8e48a62007497895162004c8b565b51146201a224576201a8f887989962004c7b565b93919097989492986201a88d565b96938298506201a893565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201ab3457846201a9e7845162004c8b565b5151036201aada576201a9fa906201e547565b15620173d1578493156201aa71576000935b6201aa18575050505090565b80518410156200519a576001600160a01b036201aa36858362004ce2565b5116600052611f4582526040600020546201aa5662006865855162004c8b565b511015620173d1576201aa6a859462004c7b565b936201aa0c565b6000935b6201aa81575050505090565b80518410156200519a576001600160a01b036201aa9f858362004ce2565b5116600052613efd82526040600020546201aabf62006865855162004c8b565b511015620173d1576201aad3859462004c7b565b936201aa75565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201acfd57846201abb0845162004c8b565b5151036201aca3576201abc3906201e547565b15620173d1578493156201ac3a576000935b6201abe1575050505090565b80518410156200519a576001600160a01b036201abff858362004ce2565b5116600052611f4582526040600020546201ac1f62006865855162004c8b565b511115620173d1576201ac33859462004c7b565b936201abd5565b6000935b6201ac4a575050505090565b80518410156200519a576001600160a01b036201ac68858362004ce2565b5116600052613efd82526040600020546201ac8862006865855162004c8b565b511115620173d1576201ac9c859462004c7b565b936201ac3e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201af535760026201ad79835162004c8b565b5151036201aef9576201ad8c906201e547565b92909215620173d1578493156201ae4b576000935b6201adad575050505090565b82518410156200519a576001600160a01b03806201adcc868662004ce2565b5116600052611f4580835260409081600020546201adef62006865875162004c8b565b51119283156201ae15575b505050620173d1576201ae0e859462004c7b565b936201ada1565b909192506201ae25878762004ce2565b51166000528252600020546201ae4062016e27845162004c8b565b51103880806201adfa565b6000935b6201ae5b575050505090565b82518410156200519a576001600160a01b03806201ae7a868662004ce2565b5116600052613efd80835260409081600020546201ae9d62006865875162004c8b565b51119283156201aec3575b505050620173d1576201aebc859462004c7b565b936201ae4f565b909192506201aed3878762004ce2565b51166000528252600020546201aeee62016e27845162004c8b565b51103880806201aea8565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b11a57846201afcf845162004c8b565b5151036201b0c0576201afe2906201e547565b15620173d1578493156201b058576000935b6201b000575050505090565b80518410156200519a576001600160a01b036201b01e858362004ce2565b5116600052611f4582526040600020546201b03e62006865855162004c8b565b5103620173d1576201b051859462004c7b565b936201aff4565b6000935b6201b068575050505090565b80518410156200519a576001600160a01b036201b086858362004ce2565b5116600052613efd82526040600020546201b0a662006865855162004c8b565b5103620173d1576201b0b9859462004c7b565b936201b05c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b2fb57846201b196845162004c8b565b5151036201b2a1576201b1a9906201e547565b15620173d1578493156201b2345760009182945b6201b1ce575b505050505050600090565b81518510156201b22e5785946001600160a01b036201b1ee828562004ce2565b51168452611f45825260408420546201b20c62006865875162004c8b565b51106201b225576201b21e9062004c7b565b946201b1bd565b50505050505090565b6201b1c3565b60009182945b6201b24a57505050505050600090565b81518510156201b22e5785946001600160a01b036201b26a828562004ce2565b51168452613efd825260408420546201b28862006865875162004c8b565b51106201b225576201b29a9062004c7b565b946201b23a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b4cc57846201b377845162004c8b565b5151036201b472576201b38a906201e547565b15620173d1578493156201b4055760009182945b6201b3ae57505050505050600090565b81518510156201b22e5785946001600160a01b036201b3ce828562004ce2565b51168452611f45825260408420546201b3ec62006865875162004c8b565b51116201b225576201b3fe9062004c7b565b946201b39e565b60009182945b6201b41b57505050505050600090565b81518510156201b22e5785946001600160a01b036201b43b828562004ce2565b51168452613efd825260408420546201b45962006865875162004c8b565b51116201b225576201b46b9062004c7b565b946201b40b565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201b72c5760026201b548835162004c8b565b5151036201b6d2576201b55b906201e547565b91909115620173d1578493156201b61f576000935b6201b57f575050505050600090565b8151841015620179005784936001600160a01b03806201b5a0838662004ce2565b5116600052611f4580865260409081600020546201b5c362006865875162004c8b565b51111592836201b5e8575b505050620178f8576201b5e19062004c7b565b936201b570565b909192506201b5f8848762004ce2565b51166000528552600020546201b61362016e27845162004c8b565b5110153880806201b5ce565b6000935b6201b632575050505050600090565b8151841015620179005784936001600160a01b03806201b653838662004ce2565b5116600052613efd80865260409081600020546201b67662006865875162004c8b565b51111592836201b69b575b505050620178f8576201b6949062004c7b565b936201b623565b909192506201b6ab848762004ce2565b51166000528552600020546201b6c662016e27845162004c8b565b5110153880806201b681565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201b90357836201b7a5845162004c8b565b5151036201b8a957156201b82e576201b7be906201e547565b156200661f57829160009182945b6201b7d957505050905090565b80518510156201708c576201b8036001600160a01b036201b7fb878462004ce2565b51166201b9ba565b6201b81362006865845162004c8b565b51101562017084576201b827849562004c7b565b946201b7cc565b6201b839906201e547565b156200661f57829160009182945b6201b85457505050905090565b80518510156201708c576201b87e6001600160a01b036201b876878462004ce2565b51166201b95d565b6201b88e62006865845162004c8b565b51101562017084576201b8a2849562004c7b565b946201b847565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201b97257505090565b9091620082566201b9b3916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b9062006258565b906201b963565b60009081905b6103e882106201b9cf57505090565b9091620082566201ba07916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201b9c0565b600091906201ba69576000905b6103e882106201ba2a57505090565b9091620082566201ba62916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201ba1b565b81905b6103e882106201ba7b57505090565b9091620082566201bab5916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b906201ba6c565b916020019060019283835151036201bc2957836201badb845162004c8b565b5151036201bbcf57156201bb5c576201baf4906201e547565b156200661f57829160009182945b6201bb0f57505050905090565b80518510156201708c576201bb316001600160a01b036201b7fb878462004ce2565b6201bb4162006865845162004c8b565b51111562017084576201bb55849562004c7b565b946201bb02565b6201bb67906201e547565b156200661f57829160009182945b6201bb8257505050905090565b80518510156201708c576201bba46001600160a01b036201b876878462004ce2565b6201bbb462006865845162004c8b565b51111562017084576201bbc8849562004c7b565b946201bb75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201be615760026201bca3845162004c8b565b5151036201be0757156201bd5c576201bcbc906201e547565b919091156200661f57829160009182945b6201bcda57505050905090565b81518510156201708c576001600160a01b036201bcfd816201b7fb888662004ce2565b6201bd0d62006865845162004c8b565b51119081156201bd31575b5062017084576201bd2a849562004c7b565b946201bccd565b6201bd4391506201b7fb878562004ce2565b6201bd5362016e27835162004c8b565b5110386201bd18565b6201bd67906201e547565b919091156200661f57829160009182945b6201bd8557505050905090565b81518510156201708c576001600160a01b036201bda8816201b876888662004ce2565b6201bdb862006865845162004c8b565b51119081156201bddc575b5062017084576201bdd5849562004c7b565b946201bd78565b6201bdee91506201b876878562004ce2565b6201bdfe62016e27835162004c8b565b5110386201bdc3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c02657836201beda845162004c8b565b5151036201bfcc57156201bf5a576201bef3906201e547565b156200661f57829160009182945b6201bf0e57505050905090565b80518510156201708c576201bf306001600160a01b036201b7fb878462004ce2565b6201bf4062006865845162004c8b565b510362017084576201bf53849562004c7b565b946201bf01565b6201bf65906201e547565b156200661f57829160009182945b6201bf8057505050905090565b80518510156201708c576201bfa26001600160a01b036201b876878462004ce2565b6201bfb262006865845162004c8b565b510362017084576201bfc5849562004c7b565b946201bf73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c1ef57836201c09f845162004c8b565b5151036201c19557156201c121576201c0b8906201e547565b919091156200661f57600091835b6201c0d45750505050600090565b8051831015620175c75783926201c0f86001600160a01b036201b7fb838562004ce2565b6201c10862006865855162004c8b565b511062005160576201c11a9062004c7b565b926201c0c6565b6201c12c906201e547565b919091156200661f57600091835b6201c1485750505050600090565b8051831015620175c75783926201c16c6001600160a01b036201b876838562004ce2565b6201c17c62006865855162004c8b565b511062005160576201c18e9062004c7b565b926201c13a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c3b857836201c268845162004c8b565b5151036201c35e57156201c2ea576201c281906201e547565b919091156200661f57600091835b6201c29d5750505050600090565b8051831015620175c75783926201c2c16001600160a01b036201b7fb838562004ce2565b6201c2d162006865855162004c8b565b511162005160576201c2e39062004c7b565b926201c28f565b6201c2f5906201e547565b919091156200661f57600091835b6201c3115750505050600090565b8051831015620175c75783926201c3356001600160a01b036201b876838562004ce2565b6201c34562006865855162004c8b565b511162005160576201c3579062004c7b565b926201c303565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c5ea5760026201c432845162004c8b565b5151036201c59057156201c4e8576201c44b906201e547565b156200661f57600091835b6201c4645750505050600090565b8151831015620175c75783926001600160a01b036201c489816201b7fb848762004ce2565b6201c49962006865855162004c8b565b51111590816201c4bc575b5062005160576201c4b59062004c7b565b926201c456565b6201c4ce91506201b7fb838662004ce2565b6201c4de62016e27845162004c8b565b511015386201c4a4565b6201c4f3906201e547565b156200661f57600091835b6201c50c5750505050600090565b8151831015620175c75783926001600160a01b036201c531816201b876848762004ce2565b6201c54162006865855162004c8b565b51111590816201c564575b5062005160576201c55d9062004c7b565b926201c4fe565b6201c57691506201b876838662004ce2565b6201c58662016e27845162004c8b565b511015386201c54c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c7c157836201c663845162004c8b565b5151036201c76757156201c6ec576201c67c906201e547565b156200661f57829160009182945b6201c69757505050905090565b80518510156201708c576201c6c16001600160a01b036201c6b9878462004ce2565b51166201c871565b6201c6d162006865845162004c8b565b51101562017084576201c6e5849562004c7b565b946201c68a565b6201c6f7906201e547565b156200661f57829160009182945b6201c71257505050905090565b80518510156201708c576201c73c6001600160a01b036201c734878462004ce2565b51166201c81b565b6201c74c62006865845162004c8b565b51101562017084576201c760849562004c7b565b946201c705565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201c83057505090565b9091620082566201c86a916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c821565b60009081905b6103e882106201c88657505090565b9091620082566201c8be916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c877565b600091906201c920576000905b6103e882106201c8e157505090565b9091620082566201c919916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c8d2565b81905b6103e882106201c93257505090565b9091620082566201c96c916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c923565b916020019060019283835151036201cae057836201c992845162004c8b565b5151036201ca8657156201ca13576201c9ab906201e547565b156200661f57829160009182945b6201c9c657505050905090565b80518510156201708c576201c9e86001600160a01b036201c6b9878462004ce2565b6201c9f862006865845162004c8b565b51111562017084576201ca0c849562004c7b565b946201c9b9565b6201ca1e906201e547565b156200661f57829160009182945b6201ca3957505050905090565b80518510156201708c576201ca5b6001600160a01b036201c734878462004ce2565b6201ca6b62006865845162004c8b565b51111562017084576201ca7f849562004c7b565b946201ca2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cd185760026201cb5a845162004c8b565b5151036201ccbe57156201cc13576201cb73906201e547565b919091156200661f57829160009182945b6201cb9157505050905090565b81518510156201708c576001600160a01b036201cbb4816201c6b9888662004ce2565b6201cbc462006865845162004c8b565b51119081156201cbe8575b5062017084576201cbe1849562004c7b565b946201cb84565b6201cbfa91506201c6b9878562004ce2565b6201cc0a62016e27835162004c8b565b5110386201cbcf565b6201cc1e906201e547565b919091156200661f57829160009182945b6201cc3c57505050905090565b81518510156201708c576001600160a01b036201cc5f816201c734888662004ce2565b6201cc6f62006865845162004c8b565b51119081156201cc93575b5062017084576201cc8c849562004c7b565b946201cc2f565b6201cca591506201c734878562004ce2565b6201ccb562016e27835162004c8b565b5110386201cc7a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cee157836201cd91845162004c8b565b5151036201ce8757156201ce13576201cdaa906201e547565b919091156200661f57600091835b6201cdc65750505050600090565b8051831015620175c75783926201cdea6001600160a01b036201c6b9838562004ce2565b6201cdfa62006865855162004c8b565b511062005160576201ce0c9062004c7b565b926201cdb8565b6201ce1e906201e547565b919091156200661f57600091835b6201ce3a5750505050600090565b8051831015620175c75783926201ce5e6001600160a01b036201c734838562004ce2565b6201ce6e62006865855162004c8b565b511062005160576201ce809062004c7b565b926201ce2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9160200190600192836201cf50845162004c8b565b5151036201d0aa5783835151036201d05057156201cfdc576201cf73906201e547565b919091156200661f57600091835b6201cf8f5750505050600090565b8051831015620175c75783926201cfb36001600160a01b036201c6b9838562004ce2565b6201cfc362006865855162004c8b565b511162005160576201cfd59062004c7b565b926201cf81565b6201cfe7906201e547565b919091156200661f57600091835b6201d0035750505050600090565b8051831015620175c75783926201d0276001600160a01b036201c734838562004ce2565b6201d03762006865855162004c8b565b511162005160576201d0499062004c7b565b926201cff5565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b916020019060026201d117835162004c8b565b5151036201d2dc5760019283835151036201d28257156201d1da576201d13d906201e547565b156200661f57600091835b6201d1565750505050600090565b8151831015620175c75783926001600160a01b036201d17b816201c6b9848762004ce2565b6201d18b62006865855162004c8b565b51111590816201d1ae575b5062005160576201d1a79062004c7b565b926201d148565b6201d1c091506201c6b9838662004ce2565b6201d1d062016e27845162004c8b565b511015386201d196565b6201d1e5906201e547565b156200661f57600091835b6201d1fe5750505050600090565b8151831015620175c75783926001600160a01b036201d223816201c734848762004ce2565b6201d23362006865855162004c8b565b51111590816201d256575b5062005160576201d24f9062004c7b565b926201d1f0565b6201d26891506201c734838662004ce2565b6201d27862016e27845162004c8b565b511015386201d23e565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060019384835151036201d4fd5760026201d359845162004c8b565b5151036201d4a357156201d404576201d372906201e547565b92909215620171bd57600092845b6201d38c575050505090565b80518410156200519a576201d3a662006865845162004c8b565b516103e881101562004c99576001600160a01b036201d3c6868462004ce2565b5116600052600390811b0182526040600020546201d3e962016e27855162004c8b565b511015620173d1576201d3fd859462004c7b565b936201d380565b6201d40f906201e547565b92909215620171bd57600092845b6201d429575050505090565b80518410156200519a576201d44362006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d467878562004ce2565b511660005260031b0182526040600020546201d48862016e27855162004c8b565b511015620173d1576201d49c859462004c7b565b936201d41d565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208092019060019384835151036201d71e5760026201d57a845162004c8b565b5151036201d6c457156201d625576201d593906201e547565b92909215620171bd57600092845b6201d5ad575050505090565b80518410156200519a576201d5c762006865845162004c8b565b516103e881101562004c99576001600160a01b036201d5e7868462004ce2565b5116600052600390811b0182526040600020546201d60a62016e27855162004c8b565b511115620173d1576201d61e859462004c7b565b936201d5a1565b6201d630906201e547565b92909215620171bd57600092845b6201d64a575050505090565b80518410156200519a576201d66462006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d688878562004ce2565b511660005260031b0182526040600020546201d6a962016e27855162004c8b565b511115620173d1576201d6bd859462004c7b565b936201d63e565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101600392836201d78e835162004c8b565b5151036201da1c5760019485835151036201d9c257156201d8b9576201d7b4906201e547565b93909315620173d157600093855b6201d7cf57505050505090565b80518510156201d8b3576201d7e962006865845162004c8b565b516103e8908181101562004c99576001600160a01b03908490826201d80f8a8762004ce2565b5116600052811b01865260409081600020546201d83162016e27885162004c8b565b51119283156201d857575b5050506201b1c3576201d850869562004c7b565b946201d7c2565b909192506201d86b62006865875162004c8b565b519081101562004c995784916201d883898662004ce2565b5116600052811b018552600020546201d8a86201d8a1855162004c8b565b5162004cc0565b51103880806201d83c565b620178f8565b6201d8c7909392936201e547565b93909315620173d157600093855b6201d8e257505050505090565b80518510156201d8b3576201d8fc62006865845162004c8b565b516103e88082101562004c99576001600160a01b0391826201d91f898662004ce2565b5116600052611fbb8091881b01855260409182600020546201d94662016e27895162004c8b565b51119384156201d96d575b505050506201b1c3576201d966869562004c7b565b946201d8d5565b90919293506201d98262006865885162004c8b565b519182101562004c99576201d998898662004ce2565b5116600052861b018352600020546201d9b66201d8a1855162004c8b565b5110388080806201d951565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201da91835162004c8b565b5151036201dc4a5760019384835151036201dbf057156201db4d576201dab7906201e547565b92909215620171bd57600092845b6201dad4575050505050600090565b805184101562017900576201daee62006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201db11838562004ce2565b5116600052600390811b0183526040600020546201db3462016e27865162004c8b565b5110620178f8576201db469062004c7b565b936201dac5565b6201db58906201e547565b92909215620171bd57600092845b6201db75575050505050600090565b805184101562017900576201db8f62006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dbb6848662004ce2565b511660005260031b0183526040600020546201dbd762016e27865162004c8b565b5110620178f8576201dbe99062004c7b565b936201db66565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060026201dcba835162004c8b565b5151036201de735760019384835151036201de1957156201dd76576201dce0906201e547565b92909215620171bd57600092845b6201dcfd575050505050600090565b805184101562017900576201dd1762006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201dd3a838562004ce2565b5116600052600390811b0183526040600020546201dd5d62016e27865162004c8b565b5111620178f8576201dd6f9062004c7b565b936201dcee565b6201dd81906201e547565b92909215620171bd57600092845b6201dd9e575050505050600090565b805184101562017900576201ddb862006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dddf848662004ce2565b511660005260031b0183526040600020546201de0062016e27865162004c8b565b5111620178f8576201de129062004c7b565b936201dd8f565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b916020809101600392836201dee3835162004c8b565b5151036201e1755760019485835151036201e11b57156201e009576201df09906201e547565b93909315620173d157600093855b6201df2757505050505050600090565b80518510156201b22e576201df4162006865845162004c8b565b51946103e8958681101562004c995787966001600160a01b03918590836201df6a868862004ce2565b5116600052811b018752604080600020546201df8b62016e27895162004c8b565b51111592836201dfb0575b5050506201b225576201dfa99062004c7b565b946201df17565b91985091506201dfc562006865875162004c8b565b519788101562004c9957889785916201dfdf858762004ce2565b5116600052811b018652600020546201dffd6201d8a1865162004c8b565b5110153880806201df96565b6201e017909392936201e547565b93909315620173d157600093855b6201e03557505050505050600090565b80518510156201b22e576201e04f62006865845162004c8b565b51946103e88087101562004c995787966001600160a01b0390816201e075858762004ce2565b5116600052611fbb8091891b01865260409081600020546201e09c62016e278a5162004c8b565b51111593846201e0c2575b505050506201b225576201e0bb9062004c7b565b946201e025565b9193509198506201e0d862006865885162004c8b565b519081101562004c995789986201e0f0858762004ce2565b5116600052871b018452600020546201e10e6201d8a1865162004c8b565b511015388080806201e0a7565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201e1df816201e364565b156201e35b576040810190606082510151511515806201e320575b156201e20c5750516060015151600191565b604082510151511515806201e307575b156201e22e5750516040015151600191565b60808251015151151590816201e2ed575b50156201e25157516080015151600191565b805160c081015151156201e29857506201e27060c08251015162004c8b565b51516201e28157505b600090600090565b60c06201e2919151015162004c8b565b5151600191565b602081015151156201e2b05750516020015151600191565b60a0015180516201e2c4575b50506201e279565b6201e2cf9062004c8b565b51516201e2dd57806201e2bc565b60a06201e2919151015162004c8b565b6020915001516026811015620029ab57601014386201e23f565b5060208101516026811015620029ab576013146201e21c565b506020810180516026811015620029ab57600c149081156201e344575b506201e1fa565b9050516026811015620029ab57600f14386201e33d565b50600090600090565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146201e54257805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760051462017188578051838110156201e52d5760061462017188578051838110156201e52d5760071462017188578051838110156201e52d5760081462017188578051838110156201e52d5760091462017188578051838110156201e52d57600a1462017188578051838110156201e52d57600b1462017188578051838110156201e52d57600c1462017188578051838110156201e52d57600d1462017188578051838110156201e52d57600e1462017188578051838110156201e52d57600f1462017188578051838110156201e52d5760101462017188578051838110156201e52d5760111462017188578051838110156201e52d5760121462017188578051838110156201e52d5760131462017188578051838110156201e52d5760141462017188578051838110156201e52d57601514620171885751918210156201e5185750601e14620032615750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201e552816201e364565b156201e5c15760208101516026811015620029ab576004146201e5ae576040015160c0015180516201e59c57506040516201e58d8162002ac7565b60008152600036813790600090565b6201e5a79062004c8b565b5190600190565b60c060406201e5a7920151015162004caf565b506040516201e58d8162002ac7565b60208101516026811015620029ab576004146201e5f657506040516201e58d8162002ac7565b60c060406201e5a7920151015162004c8b565b6201e614816201e759565b156201e74957602081019081519160269081841015620029ab5760018094146201e72e57805182811015620029ab576003146201e72e5780519082821015620029ab5760048092146201e712578051838110156201e52d576005146201e712578051838110156201e52d576006146201e712578051838110156201e52d576014146201e712578051838110156201e52d576015146201e7125751918210156201e5185750601e146201e6f4575050604051906201e6d18262002ac7565b60008252604051916201e6e48362002ac7565b6000835260003681379190600090565b604001916201e70d60a0620077f3818651015162004c8b565b519190565b505050604001916201e70d60a0620077f3818651015162004c8b565b5050604001916201e70d60a0620077f3818651015162004c8b565b50604051906201e6d18262002ac7565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146200661f57805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760141462017188578051838110156201e52d5760151462017188578051838110156201e52d57601e1462017188578051838110156201e52d57600514620171885751918210156201e5185750600614620032615750600090565b916101f581146201e8c0576101f681146201e8b4576101f781146201e8a8576101f881146201e89c576101f981146201e890576101fa81146201e884576101fb81146201e878576101fc146201e86d575050600090565b62003261916201f311565b5062003261916201f16c565b5062003261916201f007565b5062003261916201eea2565b5062003261916201ed3d565b5062003261916201eb98565b5062003261916201ea33565b506200326191906020019060019182815151036201e9d957826201e8e5825162004c8b565b5151036201e97f5760208201516026811015620029ab576002036200661f57600091835b6201e9175750505050600090565b604081019260a0936201e92e858251015162004cc0565b51518210156201e97757816200749787966201e94d9351015162004cc0565b516201e95e62006865855162004c8b565b511062005160576201e9709062004c7b565b926201e909565b5050620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201eb3e57826201ea52825162004c8b565b5151036201eae45760208201516026811015620029ab576002036200661f57600091835b6201ea845750505050600090565b604081019260a0936201ea9b858251015162004cc0565b51518210156201e97757816200749787966201eaba9351015162004cc0565b516201eacb62006865855162004c8b565b511162005160576201eadd9062004c7b565b926201ea76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ece35760026201ebb8825162004c8b565b5151036201ec895760208201516026811015620029ab576002036200661f57600091835b6201ebea5750505050600090565b604081019260a0936201ec01858251015162004cc0565b51518210156201e9775781856201ec2282620074978a998651015162004cc0565b516201ec3362006865885162004c8b565b51111592836201ec58575b50505062005160576201ec519062004c7b565b926201ebdc565b5101516201ec6c9250620074979062004cc0565b516201ec7d62016e27855162004c8b565b5110158138806201ec3e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ee4857826201ed5c825162004c8b565b5151036201edee5760208201516026811015620029ab576002036200661f57600091835b6201ed8e5750505050600090565b604081019260a0936201eda5858251015162004cc0565b51518210156201e97757816200749787966201edc49351015162004cc0565b516201edd562006865855162004c8b565b511462005160576201ede79062004c7b565b926201ed80565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201efad57826201eec1825162004c8b565b5151036201ef535760208201516026811015620029ab576002036200661f57600091835b6201eef35750505050600090565b604081019260a0936201ef0a858251015162004cd1565b51518210156201e97757816200749787966201ef299351015162004caf565b516201ef3a62006865855162004c8b565b511062005160576201ef4c9062004c7b565b926201eee5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f11257826201f026825162004c8b565b5151036201f0b85760208201516026811015620029ab576002036200661f57600091835b6201f0585750505050600090565b604081019260a0936201f06f858251015162004cd1565b51518210156201e97757816200749787966201f08e9351015162004caf565b516201f09f62006865855162004c8b565b511162005160576201f0b19062004c7b565b926201f04a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f2b75760026201f18c825162004c8b565b5151036201f25d5760208201516026811015620029ab576002036200661f57600091835b6201f1be5750505050600090565b604081019260a0936201f1d5858251015162004cd1565b51518210156201e9775781856201f1f682620074978a998651015162004caf565b516201f20762006865885162004c8b565b51111592836201f22c575b50505062005160576201f2259062004c7b565b926201f1b0565b5101516201f2409250620074979062004caf565b516201f25162016e27855162004c8b565b5110158138806201f212565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f41c57826201f330825162004c8b565b5151036201f3c25760208201516026811015620029ab576002036200661f57600091835b6201f3625750505050600090565b604081019260a0936201f379858251015162004cd1565b51518210156201e97757816200749787966201f3989351015162004caf565b516201f3a962006865855162004c8b565b511462005160576201f3bb9062004c7b565b926201f354565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91603381036201f560575060209150016001815151036201f5105760016201f49f825162004c8b565b5151036201f4bd57620068656201f4b7915162004c8b565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201f649575060209150016001815151036201f5f95760016201f588825162004c8b565b5151036201f5a657620068656201f5a0915162004c8b565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201f75b575060209150016001815151036201f70b5760026201f671825162004c8b565b5151036201f6b1576201f68962006865825162004c8b565b5142101590816201f698575090565b6201f6aa915062016e27905162004c8b565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201f85f575060209150016001815151036201f8055760016201f783825162004c8b565b5151036201f7ab5762016c03620068656201f79e4262006274565b5050505050925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603781036201f956575060209150016001815151036201f8fc5760016201f887825162004c8b565b5151036201f8a25762016d04620068656201f79e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603881036201fa5a575060209150016001815151036201fa005760026201f97e825162004c8b565b5151036201f9a6576201f9914262006274565b505050505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603981036201fb5f575060209150016001815151036201fb055760016201fa82825162004c8b565b5151036201faab5762016c03620068656201fa9d4262006274565b505050509390505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603a81036201fc56575060209150016001815151036201fbfc5760016201fb87825162004c8b565b5151036201fba25762016d04620068656201fa9d4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603b81036201fd5b575060209150016001815151036201fd015760026201fc7e825162004c8b565b5151036201fca7576201fc914262006274565b50505050905062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603c81036201fe60575060209150016001815151036201fe065760016201fd83825162004c8b565b5151036201fdac5762016c03620068656201fd9e4262006274565b505050949150505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603d81036201ff57575060209150016001815151036201fefd5760016201fe88825162004c8b565b5151036201fea35762016d04620068656201fd9e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603e81036202005c57506020915001600181515103620200025760026201ff7f825162004c8b565b5151036201ffa8576201ff924262006274565b50505091505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603f810362020161575060209150016001815151036202010757600162020084825162004c8b565b515103620200ad5762016c03620068656202009f4262006274565b505095925050505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040928184036202025757505060200190600182515103620201ff5760016202018b835162004c8b565b515103620201a7575062016d04620068656202009f4262006274565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604182036202035957505060200190600182515103620203015760026202027f835162004c8b565b515103620202a95750620202934262006274565b50509250505062016e0462006865835162004c8b565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b909260428403620203715750620032619250620215e3565b60438403620203875750620032619250620217ed565b60448481036202039f575050620032619250620219ef565b60458503620203b657505062003261925062021c6c565b60468503620203cd57505062003261925062021e6e565b60478503620203e457505062003261925062022070565b60488503620203fb57505062003261925062022353565b604985036202041257505062003261925062022660565b604a8503620204295750506200326192506202293e565b604b85036202044057505062003261925062022d06565b604c85036202045757505062003261925062022eb1565b604d85036202046e57505062003261925062022fb5565b604e8503620204855750506200326192506202310d565b604f85036202049c5750506200326192506202328e565b60508503620204b357505062003261925062023392565b919092936055811460001462020675575060208401926002845151036202061d5760019283620204e4865162004caf565b515103620205c6575090829160009586945b62020511575b50505050506200686562016c03915162004caf565b9091929395620205248383015162004c8b565b5151871015620205bf576202057b908415620205865762009b8d906202055f6103e8620205578b620074978c5162004c8b565b51106202352c565b6201b9ac620205748a620074978b5162004c8b565b51620060c4565b9392919083620204f6565b62009b8d90620205a36103e8620205578b620074978c5162004c8b565b6201b9ac620205b88a620074978b5162004c8b565b516200614a565b95620204fc565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b60568103620207f857506020840192600284515103620207a057600192836202069f865162004caf565b51510362020749575090829160009586945b620206cc575b50505050506200686562016d04915162004caf565b9091929395620206df8383015162004c8b565b515187101562020742576202071a908415620207255762009b8d906202055f6103e8620207128b620074978c5162004c8b565b51106202359e565b9392919083620206b1565b62009b8d90620205a36103e8620207128b620074978c5162004c8b565b95620206b7565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9194909160578103620209be575060208401946002865151036202096557600262020824875162004caf565b5151036202090d5750600092835b620208408287015162004c8b565b5151851015620208d35790620208988562020840938987600014620208a2576103e86202087b6200995a946200749762020883945162004c8b565b511062023610565b6201b9ac6202057489620074978d5162004c8b565b9490915062020832565b6103e86202087b6200995a9462007497620208be945162004c8b565b6201b9ac620205b889620074978d5162004c8b565b93505093925050620208ea62006865835162004caf565b518110159182620208fa57505090565b62016e2e91925062016e27905162004caf565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b909491906058810362020b755750602084019260028451510362020b1d5760019283620209ec865162004caf565b51510362020ac6575090829160009586945b62020a185750505050506200686562016c03915162004caf565b909192939562020a2b8383015162004c8b565b5151871015620205bf5762020a8290841562020a8d5762009b8d9062020a666103e862020a5e8b620074978c5162004c8b565b511062023682565b6201b9ac62020a7b8a620074978b5162004c8b565b5162005deb565b9392919083620209fe565b62009b8d9062020aaa6103e862020a5e8b620074978c5162004c8b565b6201b9ac62020abf8a620074978b5162004c8b565b5162005eb4565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b6059810362020cf05750602084019260028451510362020c98576001928362020b9f865162004caf565b51510362020c41575090829160009586945b62020bcb5750505050506200686562016d04915162004caf565b909192939562020bde8383015162004c8b565b5151871015620207425762020c1990841562020c245762009b8d9062020a666103e862020c118b620074978c5162004c8b565b5110620236f4565b939291908362020bb1565b62009b8d9062020aaa6103e862020c118b620074978c5162004c8b565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a810362020e7c5750602084019460028651510362020e2357600262020d1c875162004caf565b51510362020dcb5750600092835b62020d388287015162004c8b565b5151851015620208d3579062020d908562020d3893898760001462020d9a576103e862020d736200995a946200749762020d7b945162004c8b565b511062023766565b6201b9ac62020a7b89620074978d5162004c8b565b9490915062020d2a565b6103e862020d736200995a946200749762020db6945162004c8b565b6201b9ac62020abf89620074978d5162004c8b565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b8103620210555750602084019260028451510362020ffd576001928362020eaa865162004caf565b51510362020fa6575090829160009586945b62020ed65750505050506200686562016c03915162004caf565b909192939562020ee98383015162004c8b565b5151871015620205bf57831562020f59576103e862020f1b8162020f138a620074978b5162004c8b565b5110620237d8565b62020f2c8862007497895162004c8b565b519081101562004c995762020f4e91600662009b8d9260031b01549062006258565b939291908362020ebc565b6103e862020f728162020f138a620074978b5162004c8b565b62020f838862007497895162004c8b565b519081101562004c995762020f4e91611fbe62009b8d9260031b01549062006258565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036202122a57506020840192600284515103620211d257600192836202107f865162004caf565b5151036202117b575090829160009586945b620210ab5750505050506200686562016d04915162004caf565b9091929395620210be8383015162004c8b565b5151871015620207425783156202112e576103e8620210f081620210e88a620074978b5162004c8b565b51106202384a565b620211018862007497895162004c8b565b519081101562004c99576202112391600662009b8d9260031b01549062006258565b939291908362021091565b6103e86202114781620210e88a620074978b5162004c8b565b620211588862007497895162004c8b565b519081101562004c99576202112391611fbe62009b8d9260031b01549062006258565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d819692939496146000146202140357506020840192600284515103620213aa5760026202125a855162004caf565b515103620213525750600080955b620212768187015162004c8b565b51518710156202133b578315620212e9576103e891620212a983620212a18a620074978a5162004c8b565b5110620238bc565b620212ba8862007497885162004c8b565b519283101562004c995762015696620212e0916006620212769560031b01549062006258565b96915062021268565b6103e8916202130383620212a18a620074978a5162004c8b565b620213148862007497885162004c8b565b519283101562004c995762015696620212e091611fbe620212769560031b01549062006258565b50929350935050620208ea62006865835162004caf565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e03620171bd5760208401926002845151036202158b576001928362021430865162004caf565b51510362021534575090829160009586945b6202145d575b50505050506200686562016f32915162004caf565b9091929395620214708383015162004c8b565b51518710156202152d578315620214e0576103e8620214a2816202149a8a620074978b5162004c8b565b51106202392e565b620214b38862007497895162004c8b565b519081101562004c9957620214d591600662009b8d9260031b01549062006258565b939291908362021442565b6103e8620214f9816202149a8a620074978b5162004c8b565b6202150a8862007497895162004c8b565b519081101562004c9957620214d591611fbe62009b8d9260031b01549062006258565b9562021448565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9060408101906001825151036202179357600162021602835162004c8b565b515103620217395760200191600183515103620216df57600162021627845162004c8b565b5151036202168557156202166157620068656202165962016c03926201b7fb6200686560018060a01b03925162004c8b565b925162004c8b565b620068656202165962016c03926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906040810190600182515103620219955760016202180c835162004c8b565b5151036202193b5760200191600183515103620218e157600162021831845162004c8b565b5151036202188757156202186357620068656202165962016d04926201b7fb6200686560018060a01b03925162004c8b565b620068656202165962016d04926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604082019160018351510362021c1257600162021a0d845162004c8b565b51510362021bb8576020019060018251510362021b5e57600262021a32835162004c8b565b51510362021b04571562021aa85760018060a01b0362021a5c816201b7fb62006865865162004c8b565b62021a6c62006865845162004c8b565b511115928362021a7c5750505090565b62021a9c92935062016e27916201b7fb6200686562021659935162004c8b565b51101538808062017188565b60018060a01b0362021ac4816201b87662006865865162004c8b565b62021ad462006865845162004c8b565b511115928362021ae45750505090565b62021a9c92935062016e27916201b8766200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b90604081019060018251510362021e1457600162021c8b835162004c8b565b51510362021dba576020019160018351510362021d6057600162021cb0845162004c8b565b51510362021d06571562021ce257620068656202165962016c03926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016c03926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060408101906001825151036202201657600162021e8d835162004c8b565b51510362021fbc576020019160018351510362021f6257600162021eb2845162004c8b565b51510362021f08571562021ee457620068656202165962016d04926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016d04926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040820191600183515103620222875760016202208e845162004c8b565b5151036202222d5760200190600182515103620221d3576002620220b3835162004c8b565b5151036202217957156202211d5760018060a01b03620220dd816201c6b962006865865162004c8b565b620220ed62006865845162004c8b565b5111159283620220fd5750505090565b62021a9c92935062016e27916201c6b96200686562021659935162004c8b565b60018060a01b0362022139816201c73462006865865162004c8b565b6202214962006865845162004c8b565b5111159283620221595750505090565b62021a9c92935062016e27916201c7346200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620222e957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202259557600162022373845162004c8b565b5151036202253c5760200192600184515103620224e357600262022398855162004c8b565b5151036202248a57156202241b576103e890620223c782620223bf62006865875162004c8b565b5110620222e1565b620223d762006865855162004c8b565b519182101562004c9957600362016e279262016c0394620224046200686560018060a01b03925162004c8b565b5116600052811b0160205260002054925162004c8b565b6103e8906202243482620223bf62006865875162004c8b565b6202244462006865855162004c8b565b519182101562004c9957611fbb62016e279262016c0394620224726200686560018060a01b03925162004c8b565b511660005260031b0160205260002054925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620225f657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202287357600162022680845162004c8b565b5151036202281a5760200192600184515103620227c1576002620226a5855162004c8b565b51510362022768571562022711576103e890620226d482620226cc62006865875162004c8b565b5110620225ee565b620226e462006865855162004c8b565b519182101562004c9957600362016e279262016d0494620224046200686560018060a01b03925162004c8b565b6103e8906202272a82620226cc62006865875162004c8b565b6202273a62006865855162004c8b565b519182101562004c9957611fbb62016e279262016d0494620224726200686560018060a01b03925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620228d457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b9060408082019260018451510362022cad5760016202295e855162004c8b565b51510362022c545760208093019260018451510362022bfc576003918262022987865162004c8b565b51510362022b9e571562022a9a576103e891620229b683620229ae62006865885162004c8b565b5110620228cc565b620229c662006865865162004c8b565b51928084101562004c995760018060a01b038281620229ea620068658b5162004c8b565b5116956000968752811b0184528585205462022a0b62016e27895162004c8b565b511115978862022a21575b505050505050505090565b90919293949596975062022a3a62006865895162004c8b565b519283101562022a8657916201d8a195939162022a626200686562022a759997955162004c8b565b51168452811b0190522054925162004c8b565b511015388080808080808062022a16565b634e487b7160e01b86526032600452602486fd5b6103e862022ab281620229ae62006865885162004c8b565b62022ac262006865865162004c8b565b51908082101562004c995760018060a01b03938462022ae6620068658a5162004c8b565b5116946000958652611fbb8094831b0185528686205462022b0c62016e278a5162004c8b565b511115988962022b23575b50505050505050505090565b9091929394959697985062022b3d620068658a5162004c8b565b519384101562022b8a579162022b789795939162022b66620068656201d8a19997955162004c8b565b511685521b0190522054925162004c8b565b51101538808080808080808062022b17565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906020019060018251510362022db057600162022d24835162004c8b565b51510362022d56571562022d445762016c03620068656202165962022e73565b62016c03620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062022e1c575090565b908160031b60ff611fbf820154161562022e6d5762022e5a62022e679262022e52611fb962022e6094015462005edc8762005f9f565b92906200605b565b62006258565b9162004c7b565b62022e0e565b50905090565b6000805b6103e8811062022e85575090565b9060ff60078360031b01541615620061e45762022e6062022eab916201b9ac84620060c4565b62022e77565b906020019060018251510362022f5b57600162022ecf835162004c8b565b51510362022f01571562022eef5762016d04620068656202165962022e73565b62016d04620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620230b357600262022fd3835162004c8b565b5151036202305957156202301d5762022feb62022e73565b62022ffb62006865835162004c8b565b511115908162023009575090565b905062016e2e62016e276202165962022e73565b6202302762022e0a565b6202303762006865835162004c8b565b511115908162023045575090565b905062016e2e62016e276202165962022e0a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620231b75760016202312b835162004c8b565b5151036202315d57156202314b5762016c03620068656202165962023250565b62016c03620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062023223575090565b9060ff611fbf8360031b01541615620061e45762022e606202324a916201b9ac8462005eb4565b62023215565b6000805b6103e8811062023262575090565b9060ff60078360031b01541615620061e45762022e6062023288916201b9ac8462005deb565b62023254565b906020019060018251510362023338576001620232ac835162004c8b565b515103620232de5715620232cc5762016d04620068656202165962023250565b62016d04620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620234d2576002620233b0835162004c8b565b515103620234785715620233fa57620233c862023250565b620233d862006865835162004c8b565b5111159081620233e6575090565b905062016e2e62016e276202165962023250565b6202340462023211565b6202341462006865835162004c8b565b511115908162023422575090565b60009150815b6103e8811062023444575b5062016e2762016e2e915162004c8b565b9160ff611fbf8460031b015416156202347157620082566202346b916201b9ac8562005eb4565b62023428565b9162023433565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b156202353457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620235a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202361857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202368a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620236fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202376e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620237e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202385257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620238c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202393657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462023a08576101928114620239fc576101938114620239f0576101968114620239e45761019714620239d9575050600090565b620032619162023f3e565b50620032619162023e59565b50620032619162023cb4565b50620032619162023b73565b5062003261919060200190600191828151510362023b19578262023a2d825162004c8b565b51510362023abf5760208201516026811015620029ab57600a036200661f57600091835b62023a5f5750505050600090565b604081019260a09362023a76858251015162004c8b565b51518210156201e977578162007497879662023a959351015162004c8b565b5162023aa662006865855162004c8b565b5114620051605762023ab89062004c7b565b9262023a51565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023c5a5760208201516026811015620029ab57600a036200661f5782916000935b62023bb05750505050600090565b6040810160a062023bc5818351015162004c8b565b51518610156201e97757906000855b62023bf0575b50505062023be9839462004c7b565b9362023ba2565b62023bfc855162004c8b565b515181101562023c545762023c1a8762007497858551015162004c8b565b5162023c2c8262007497885162004c8b565b511462023c4a579062023c4186939262004c7b565b90919262023bd4565b5050505050905090565b62023bda565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023dff57600262023cd4825162004c8b565b51510362023da55760208201516026811015620029ab57600a036200661f57600091835b62023d065750505050600090565b604081019260a09362023d1d858251015162004c8b565b51518210156201e97757818562023d3e82620074978a998651015162004c8b565b5162023d4f62006865885162004c8b565b511115928362023d74575b505050620051605762023d6d9062004c7b565b9262023cf8565b51015162023d889250620074979062004c8b565b5162023d9962016e27855162004c8b565b51101581388062023d5a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600191828151510362023ee55760208201516026811015620029ab57600b036200661f57600091835b62023e905750505050600090565b60408101515192835181101562023ede5762023ec762023eb282879662004ce2565b5162023ebf855162004c8b565b519062033cdb565b620051605762023ed79062004c7b565b9262023e82565b50620171bd565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362023fc35760208201516026811015620029ab57600b036200661f57600091835b62023f755750505050600090565b60408101515192835181101562023ede5762023fac62023f9782879662004ce2565b5162023fa4855162004c8b565b519062006570565b620051605762023fbc9062004c7b565b9262023f67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9160978114620240405760981462024035575050600090565b620032619162024151565b5060200180515162003261929060001901620240f857600162024064835162004c8b565b5151036202409e57602001516026811015620029ab5762006865620216596202408d9262033aa2565b51146202409957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b91909160208093016001918282515103620241d857938293946000935b6202417d575050505050600090565b62024189835162004c8b565b5151841015620179005781810151936026851015620029ab57620241ae869562033aa2565b620241bf8262007497875162004c8b565b5114620178f857620241d19062004c7b565b936202416e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462024334576102be811462024328576102bf81146202431c576102c0811462024310576102c1811462024304576102c28114620242f8576102c38114620242ec576102c48114620242e0576102c58114620242d4576102c68114620242c8576102c78114620242bc576102c814620242b157505050600090565b620032619262025559565b5062003261926202535e565b50620032619262025159565b50620032619262024ee9565b50620032619262024ce4565b50620032619262024ad5565b506200326192620249b6565b5062003261926202488f565b50620032619262024768565b5062003261926202460e565b506200326192620244ba565b50620032619262024351565b606482101562004c99570190600090565b916020809101926001845151036202446057600162024371855162004c8b565b515103620244065715620243cd5762021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b9062024340565b90549060031b1c4262006266565b62021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052613f01815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602080910192600184515103620245b4576001620244da855162004c8b565b5151036202455a5715620245215762021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b62021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101926001845151036202470e5760026202462e855162004c8b565b515103620246b45715620246805781516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b62016e0462006865835162004c8b565b81516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202483557600162024786845162004c8b565b515103620247db5715620247c957620076f96020620247a69201620073df565b606481101562004c9957620068656202165962016c0392611f4b01544262006266565b620076f96020620247a69201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202495c576001620248ad845162004c8b565b515103620249025715620248f057620076f96020620248cd9201620073df565b606481101562004c9957620068656202165962016d0492611f4b01544262006266565b620076f96020620248cd9201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019160018351510362024a7b576002620249d4845162004c8b565b51510362024a21571562024a0f57620076f96020620249f49201620073df565b606481101562004c99576202467090611f4b01544262006266565b620076f96020620249f49201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024c8b578462024af8835162004c8b565b51510362024c32579584959660001462024ba4576000945b62024b2057505050505050600090565b62024b2c825162004c8b565b51518510156201b22e57859460018060a01b0362024b508262007497865162004c8b565b51166000526020611f49815262024b8b6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b9288015162004c8b565b51106201b2255762024b9d9062004c7b565b9462024b10565b6000945b62024bb857505050505050600090565b62024bc4825162004c8b565b51518510156201b22e57859460018060a01b0362024be88262007497865162004c8b565b51166000526020611f49815262024c196200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51106201b2255762024c2b9062004c7b565b9462024ba8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024e90578462024d07835162004c8b565b51510362024e37579584959660001462024da9576000945b62024d2f57505050505050600090565b62024d3b825162004c8b565b51518510156201b22e57859460018060a01b0362024d5f8262007497865162004c8b565b51166000526020611f49815262024d906200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024da29062004c7b565b9462024d1f565b6000945b62024dbd57505050505050600090565b62024dc9825162004c8b565b51518510156201b22e57859460018060a01b0362024ded8262007497865162004c8b565b51166000526020611f49815262024e1e6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024e309062004c7b565b9462024dad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202510057600262024f0c825162004c8b565b515103620250a75784959660001462024fe3576000945b62024f3357505050505050600090565b62024f3f815162004c8b565b51518510156201b22e57859460018060a01b0362024f638262007497855162004c8b565b51166000526020611f49815262024f8c620243bf86600020620243b8620076f9858901620073df565b9086019062024fa062006865835162004c8b565b51811015918262024fc5575b50506201b2255762024fbe9062004c7b565b9462024f23565b62024fd891925062016e27905162004c8b565b511015388062024fac565b6000945b62024ff757505050505050600090565b62025003815162004c8b565b51518510156201b22e57859460018060a01b03620250278262007497855162004c8b565b51166000526020611f49815262025050620243bf86600020620243b8620076f9858901620073df565b908601906202506462006865835162004c8b565b51811015918262025089575b50506201b22557620250829062004c7b565b9462024fe7565b6202509c91925062016e27905162004c8b565b511015388062025070565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202530557846202517b825162004c8b565b515103620252ac5784959660001462025222576000945b6202519f57505050505090565b620251ab815162004c8b565b51518510156201d8b35760018060a01b03620251cd8662007497845162004c8b565b51166000526020611f4981526202520862006865620251fe620243bf87600020620243b8620076f9878a01620073df565b9287015162004c8b565b51116201b1c3576202521b869562004c7b565b9462025192565b6000945b6202523357505050505090565b6202523f815162004c8b565b51518510156201d8b35760018060a01b03620252618662007497845162004c8b565b51166000526020611f4981526202529262006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51116201b1c357620252a5869562004c7b565b9462025226565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9291604080820192600193848151510362025500578462025380825162004c8b565b515103620254a7578495966000146202541d576000945b620253a457505050505090565b620253b0815162004c8b565b51518510156201d8b35760018060a01b03620253d28662007497845162004c8b565b51166000526020611f4981526202540362006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c35762025416869562004c7b565b9462025397565b6000945b6202542e57505050505090565b6202543a815162004c8b565b51518510156201d8b35760018060a01b036202545c8662007497845162004c8b565b51166000526020611f4981526202548d62006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c357620254a0869562004c7b565b9462025421565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b92916040808201926001938481515103620257665760026202557c825162004c8b565b5151036202570d578495966000146202564e576000945b620255a057505050505090565b620255ac815162004c8b565b51518510156201d8b35760018060a01b03620255ce8662007497845162004c8b565b51166000526020611f498152620255f7620243bf85600020620243b8620076f9858801620073df565b908501906202560b62006865835162004c8b565b51811091821562025631575b50506201b1c3576202562a869562004c7b565b9462025593565b6202564491925062016e27905162004c8b565b5110388062025617565b6000945b6202565f57505050505090565b6202566b815162004c8b565b51518510156201d8b35760018060a01b036202568d8662007497845162004c8b565b51166000526020613f018152620256b6620243bf85600020620243b8620076f9858801620073df565b90850190620256ca62006865835162004c8b565b518110918215620256f0575b50506201b1c357620256e9869562004c7b565b9462025652565b6202570391925062016e27905162004c8b565b51103880620256d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600193808503620257d7575062003261935062025ea7565b60028103620257ed575062003261935062025f91565b60038103620258f7575050906040019180835151036202589b5762025813835162004c8b565b5151036202583c57620258366200686560018060a01b0380935116935162004c8b565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362025910575050620032619350620260d6565b60058103620259275750506200326193506202621b565b600681036202593e57505062003261935062026360565b60078103620259555750506200326193506202659c565b600881036202596c575050620032619350620267fa565b600981036202598357505062003261935062026a3a565b600a81036202599a57505062003261935062026c6e565b600b8103620259b157505062003261935062026f70565b600c8103620259c85750506200326193506202719c565b600d8103620259df575050620032619350620273ec565b600e8103620259f6575050620032619350620275e5565b600f810362025a0d57505062003261935062027935565b6010810362025a2457505062003261935062027b2e565b6011810362025a3b57505062003261935062027c4e565b6012810362025a5257505062003261935062027d6e565b6013810362025a6957505062003261935062027f04565b6014810362025a8057505062003261935062028024565b6015810362025a9757505062003261935062028144565b6019810362025aae575050620032619350620282cd565b601a810362025ac557505062003261935062028405565b601b810362025adc5750506200326193506202853d565b601c8195929394951460001462025c1f575060200193808551510362025bc65762025b08855162004c8b565b51510362025b6d57506000901562025b475750516001600160a01b03166000908152611f4760205260409020549062016c039062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016c0390620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601d810362025d5a575060200193808551510362025d015762025c43855162004c8b565b51510362025ca857506000901562025c825750516001600160a01b03166000908152611f4760205260409020549062016d049062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016d0490620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601e810362025e8c5750602001938451510362025e3357600262025d7f855162004c8b565b51510362025dda57506000901562025dbc5750516001600160a01b03166000908152611f47602052604090205462016e0462006865835162004c8b565b90516001600160a01b03168152613eff602052604090205462024670565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b9294509291601f141590506200661f576200326192620286ac565b91909160018251510362025f38571562025f0457620032619160018060a01b03905116600052611f406020526200118d62025efe62025eef6001604060002001935162004c8b565b51926040519283809262002c3e565b62033cdb565b620032619160018060a01b03905116600052613ef86020526200118d62025efe62025eef6001604060002001935162004c8b565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b91602001916001835151036202607a57600162025faf845162004c8b565b5151036202601b571562025fec57516001600160a01b03166000908152611f406020526040902060020154905162016f3290620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016f3290620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9160200191600183515103620261bf576001620260f4845162004c8b565b5151036202616057156202613157516001600160a01b03166000908152611f406020526040902060020154905162016c0390620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b91602001916001835151036202630457600162026239845162004c8b565b515103620262a557156202627657516001600160a01b03166000908152611f406020526040902060020154905162016d0490620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202654057600262026381845162004c8b565b515103620264e0576202639962006865845162004c8b565b51620263aa62016e27855162004c8b565b51106202645a57156202642b5760018060a01b039081845116600052611f4091828252600260406000200154620263e662006865865162004c8b565b5111159485620263f857505050505090565b9091929394505116600052526202641d62016e27600260406000200154925162004c8b565b5110153880808080620178f8565b60018060a01b039081845116600052613ef891828252600260406000200154620263e662006865865162004c8b565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202671b57620265bf835162004c8b565b515115620266b3579483949560001462026643576000935b620265e6575050505050600090565b620265f2835162004c8b565b51518410156201790057849360018060a01b03835116600052611f4082526002604060002001546202662a8262007497875162004c8b565b5114620178f8576202663c9062004c7b565b93620265d7565b6000935b62026656575050505050600090565b62026662835162004c8b565b51518410156201790057849360018060a01b03835116600052613ef882526002604060002001546202669a8262007497875162004c8b565b5114620178f857620266ac9062004c7b565b9362026647565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202677f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202695b57600262026818845162004c8b565b515103620268fb578015620268de57620268466103e86202683e62006865865162004c8b565b511062026777565b1562026894576202685c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016c0362016e27604060002054925162004c8b565b620268a462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016c0362016e27604060002054925162004c8b565b620268f56103e86202683e62006865865162004c8b565b62026846565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620269bf57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b916020019160018351510362026b9b57600262026a58845162004c8b565b51510362026b3b57801562026b1e5762026a866103e862026a7e62006865865162004c8b565b5110620269b7565b1562026ad45762026a9c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016d0462016e27604060002054925162004c8b565b62026ae462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016d0462016e27604060002054925162004c8b565b62026b356103e862026a7e62006865865162004c8b565b62026a86565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b1562026bff57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b91909160208092019160018351510362026ea0576003918262026c92855162004c8b565b51510362026e3d57801562026e205762026cc06103e862026cb862006865875162004c8b565b511062026bf7565b1562026d7b5762026cd662006865845162004c8b565b51916103e88084101562004c995785516001600160a01b03908116600090815294831b830184526040852054865162026d149062016e279062004c8b565b511115968762026d29575b5050505050505090565b909192939495965062026d4162006865885162004c8b565b519283101562022a865751168452811b0190526040902054905162026d6b906201d8a19062004c8b565b5110153880808080808062026d1f565b62026d8b62006865845162004c8b565b516103e88082101562004c995760018060a01b039384875116946000958652611fbb8094831b018552604086205462026dc962016e27895162004c8b565b511115978862026dde57505050505050505090565b90919293949596975062026df762006865895162004c8b565b519384101562022b8a57511685521b0190526040902054905162022a75906201d8a19062004c8b565b62026e376103e862026cb862006865875162004c8b565b62026cc0565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b1562026f0157565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b9160200191600183515103620270cb57600262026f8e845162004c8b565b51510362027071578015620270545762026fbc6103e862026fb462006865865162004c8b565b511062026ef9565b156202700a5762026fd262006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016f3262016e27604060002054925162004c8b565b6202701a62006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016f3262016e27604060002054925162004c8b565b6202706b6103e862026fb462006865865162004c8b565b62026fbc565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b156202712d57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b916020019160018351510362027392576002620271ba845162004c8b565b515103620273385780156202731b57620271e86103e8620271e062006865865162004c8b565b511062027125565b156202728d57620271fe62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202725262006865855162004c8b565b5191821015620014f757506202165962016c0392600662016e279360031b01549062005070565b634e487b7160e01b81526011600452602490fd5b6202729d62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb01602052604082205460648082029391801590850490911417156202727957620272f362006865855162004c8b565b5191821015620014f757506202165962016c0392611fbe62016e279360031b01549062005070565b620273326103e8620271e062006865865162004c8b565b620271e8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b91602001916001835151036202758b5760026202740a845162004c8b565b515103620275315715620274a3576202742862006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202747c62006865855162004c8b565b5191821015620014f757506202165962016d0492600662016e279360031b01549062005070565b620274b362006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb016020526040822054606480820293918015908504909114171562027279576202750962006865855162004c8b565b5191821015620014f757506202165962016d0492611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90602080930191600183515103620278db57600262027605845162004c8b565b51510362027881571562027745576202762362006865835162004c8b565b516103e8908181101562004c995760018060a01b03948584511693600094855260038093811b018252604085205460648102908082046064149015171562027731576202767562006865885162004c8b565b518581101562022b8a57841b60060154620276909162005070565b620276a062016e27885162004c8b565b5111159687620276b4575050505050505090565b9091929394959650620276cc62006865885162004c8b565b51918583101562022b8a5751168552821b820190526040832054606480820294918015908604909114171562027279576202770c62006865865162004c8b565b5192831015620014f757501b6006015462026d6b916201d8a191620216599162005070565b634e487b7160e01b86526011600452602486fd5b6202775562006865835162004c8b565b51906103e88083101562004c995760018060a01b039485835116936000948552611fbb809160031b0182526040852054936064850294808604606414901517156202773157620277aa62006865885162004c8b565b51948486101562022b8a57620277cb90611fbe809760031b01549062005070565b620277db62016e27895162004c8b565b5111159788620277f057505050505050505090565b9091929394959697506202780962006865895162004c8b565b5191858310156202786d575116865260031b01905260408320549260648402938085046064149015171562027279576202784862006865865162004c8b565b5191821015620014f7575060031b015462022a75916201d8a191620216599162005070565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027ad457600262027953845162004c8b565b51510362027a7a5715620279ec576202797162006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b909201602052604082205460648082029391801590850490911417156202727957620279c562006865855162004c8b565b5191821015620014f757506202165962016f3292600662016e279360031b01549062005070565b620279fc62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620272795762027a5262006865855162004c8b565b5191821015620014f757506202165962016f3292611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027bf457600162027b4c845162004c8b565b51510362027b9a57801562027b7a5762021659620068659162016c039360018060a01b03905116906201ba0e565b505162016c0390620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027d1457600162027c6c845162004c8b565b51510362027cba57801562027c9a5762021659620068659162016d049360018060a01b03905116906201ba0e565b505162016d0490620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916020019060018251510362027eaa57600262027d8d835162004c8b565b51510362027e5057801562027dfe5782516001600160a01b039062027db5908216836201ba0e565b62027dc562006865855162004c8b565b511115938462027dd6575050505090565b62027df193945091620216599162016e27935116906201ba0e565b5110153880808062005160565b5081516001600160a01b039062027e179082166201b9ba565b62027e2762006865845162004c8b565b511115928362027e375750505090565b62021a9c92935062016e2791620216599151166201b9ba565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027fca57600162027f22845162004c8b565b51510362027f7057801562027f505762021659620068659162016c039360018060a01b03905116906201c8c5565b505162016c0390620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620280ea57600162028042845162004c8b565b51510362028090578015620280705762021659620068659162016d049360018060a01b03905116906201c8c5565b505162016d0490620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602001906001825151036202827357600262028163835162004c8b565b51510362028219578015620281c75782516001600160a01b03906202818b908216836201c8c5565b6202819b62006865855162004c8b565b5111159384620281ac575050505090565b62027df193945091620216599162016e27935116906201c8c5565b5081516001600160a01b0390620281e09082166201c871565b620281f062006865845162004c8b565b5111159283620282005750505090565b62021a9c92935062016e2791620216599151166201c871565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620283ab576001620282eb845162004c8b565b5151036202835157156202832557516001600160a01b03166000908152611f456020526040902054905162016c0390620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620284e357600162028423845162004c8b565b5151036202848957156202845d57516001600160a01b03166000908152611f456020526040902054905162016d0490620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602080910191600183515103620286525760026202855e845162004c8b565b515103620285f85715620285cc5760018060a01b039081845116600052611f45918282526040600020546202859862006865865162004c8b565b5111159485620285aa57505050505090565b9091929394505116600052526202641d62016e27604060002054925162004c8b565b60018060a01b039081845116600052613efd918282526040600020546202859862006865865162004c8b565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916040016001928382515103620287885783921562028727576000925b620286d85750505050600090565b620286e4825162004c8b565b5151831015620175c757839260018060a01b0380835116906202870d8362007497875162004c8b565b5116146200516057620287209062004c7b565b92620286ca565b6000925b620287395750505050600090565b62028745825162004c8b565b5151831015620175c757839260018060a01b0380835116906202876e8362007497875162004c8b565b5116146200516057620287819062004c7b565b926202872b565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9161012d811462028a755761012e811462028a695761012f811462028a5d57610130811462028a5157610131811462028a4557610132811462028a3957610133811462028a2d57610134811462028a2157610135811462028a1557610136811462028a09576101378114620289fd576101388114620289f1576101398114620289e55761013a8114620289d95761013b8114620289cd5761013c8114620289c15761013d8114620289b45761013e8114620289a75761013f81146202899a5761014081146202898d5761014181146202898157610142811462028975576101438114620289695761014481146202895d5761014581146202895157610146811462028945576101478114620289395761017381146202892c57610174811462028920576101751462028915575050600090565b62003261916202b290565b5062003261916202b0cd565b505062003261906202b071565b5062003261916202af23565b5062003261916202abd9565b5062003261916202aa5f565b5062003261916202a8de565b5062003261916202a719565b5062003261916202a5b7565b5062003261916202a43c565b505062003261906202a335565b505062003261906202a220565b505062003261906202a11e565b505062003261906202a016565b50620032619162029e95565b50620032619162029d14565b50620032619162029b91565b50620032619162029a0e565b5062003261916202988d565b5062003261916202970c565b50620032619162029589565b50620032619162029406565b506200326191620292c7565b50620032619162029188565b50620032619162029063565b50620032619162028f3f565b50620032619162028e01565b50620032619162028cc3565b50620032619162028b9f565b5062003261919060200190600191828151510362028b465760208201516026811015620029ab57600d036200661f5762028ab083926202b43c565b6000935b62028ac25750505050600090565b62028ace825162004c8b565b5151841015620175c7576000835b62028af6575b5062028aef839462004c7b565b9362028ab4565b939291815185101562028b3d5762028b148462007497835162004c8b565b5162028b21868462004ce2565b5114620170845762028b3583949562004c7b565b909262028adc565b91929362028ae2565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028c6a5760208201516026811015620029ab57600d036200661f5762028bd483926202b43c565b6000935b62028be65750505050600090565b62028bf2825162004c8b565b5151841015620175c7576000835b62028c1a575b5062028c13839462004c7b565b9362028bd8565b939291815185101562028c615762028c388462007497835162004c8b565b5162028c45868462004ce2565b5114620170845762028c5983949562004c7b565b909262028c00565b91929362028c06565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028da85760208201516026811015620029ab57600d036200661f5762028cf883926202b43c565b6000925b62028d075750505090565b62028d13825162004c8b565b51518310156201724457600080855b62028d42575b5015620171bd5762028d3b849362004c7b565b9262028cfc565b8295939194955181101562028d9d5762028d628662007497845162004c8b565b5162028d6f828562004ce2565b511462028d90579062028d8484939262004c7b565b90939594919262028d22565b5091809493503862028d28565b949390929462028d28565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028ee65760208201516026811015620029ab57600d036200661f5762028e3683926202b43c565b6000925b62028e455750505090565b62028e51825162004c8b565b51518310156201724457600080855b62028e80575b5015620171bd5762028e79849362004c7b565b9262028e3a565b8295939194955181101562028edb5762028ea08662007497845162004c8b565b5162028ead828562004ce2565b511462028ece579062028ec284939262004c7b565b90939594919262028e60565b5091809493503862028e66565b949390929462028e66565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202900a5760208201516026811015620029ab57600e036200661f5762028f7483926202b43c565b6000935b62028f865750505050600090565b62028f92825162004c8b565b5151841015620175c7576000835b62028fba575b5062028fb3839462004c7b565b9362028f78565b9392918151851015620290015762028fd88462007497835162004c8b565b5162028fe5868462004ce2565b5114620170845762028ff983949562004c7b565b909262028fa0565b91929362028fa6565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202912e5760208201516026811015620029ab57600e036200661f576202909883926202b43c565b6000935b620290aa5750505050600090565b620290b6825162004c8b565b5151841015620175c7576000835b620290de575b50620290d7839462004c7b565b936202909c565b93929181518510156202912557620290fc8462007497835162004c8b565b5162029109868462004ce2565b511462017084576202911d83949562004c7b565b9092620290c4565b919293620290ca565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202926d5760208201516026811015620029ab57600e036200661f57620291bd83926202b43c565b6000925b620291cc5750505090565b620291d8825162004c8b565b51518310156201724457600080855b62029207575b5015620171bd5762029200849362004c7b565b92620291c1565b829593919495518110156202926257620292278662007497845162004c8b565b5162029234828562004ce2565b51146202925557906202924984939262004c7b565b909395949192620291e7565b50918094935038620291ed565b9493909294620291ed565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620293ac5760208201516026811015620029ab57600e036200661f57620292fc83926202b43c565b6000925b6202930b5750505090565b62029317825162004c8b565b51518310156201724457600080855b62029346575b5015620171bd576202933f849362004c7b565b9262029300565b82959391949551811015620293a157620293668662007497845162004c8b565b5162029373828562004ce2565b51146202939457906202938884939262004c7b565b90939594919262029326565b509180949350386202932c565b94939092946202932c565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202952f57600262029426825162004c8b565b515103620294d55760208201516026811015620029ab57600d036200661f576202945183926202b43c565b906000925b620294645750505050600090565b8151831015620175c757826202947c85948462004ce2565b516202948d62006865845162004c8b565b51111580620294ae575b6200516057620294a79062004c7b565b9262029456565b50620294bb818462004ce2565b51620294cc62016e27845162004c8b565b51101562029497565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620296b2576002620295a9825162004c8b565b515103620296585760208201516026811015620029ab57600d036200661f57620295d483926202b43c565b906000925b620295e75750505050600090565b8151831015620175c75782620295ff85948462004ce2565b516202961062006865845162004c8b565b5111158062029631575b62005160576202962a9062004c7b565b92620295d9565b506202963e818462004ce2565b516202964f62016e27845162004c8b565b5110156202961a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620298335760026202972c825162004c8b565b515103620297d95760208201516026811015620029ab57600d036200661f576202975783926202b43c565b60009182945b6202976a57505050905090565b81518510156201708c5762029780858362004ce2565b516202979162006865835162004c8b565b51118015620297b3575b6201708457620297ac849562004c7b565b946202975d565b50620297c0858362004ce2565b51620297d162016e27835162004c8b565b51106202979b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620299b4576002620298ad825162004c8b565b5151036202995a5760208201516026811015620029ab57600d036200661f57620298d883926202b43c565b60009182945b620298eb57505050905090565b81518510156201708c5762029901858362004ce2565b516202991262006865835162004c8b565b5111801562029934575b62017084576202992d849562004c7b565b94620298de565b5062029941858362004ce2565b516202995262016e27835162004c8b565b51106202991c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029b3757600262029a2e825162004c8b565b51510362029add5760208201516026811015620029ab57600e036200661f5762029a5983926202b43c565b906000925b62029a6c5750505050600090565b8151831015620175c7578262029a8485948462004ce2565b5162029a9562006865845162004c8b565b5111158062029ab6575b620051605762029aaf9062004c7b565b9262029a5e565b5062029ac3818462004ce2565b5162029ad462016e27845162004c8b565b51101562029a9f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029cba57600262029bb1825162004c8b565b51510362029c605760208201516026811015620029ab57600e036200661f5762029bdc83926202b43c565b906000925b62029bef5750505050600090565b8151831015620175c7578262029c0785948462004ce2565b5162029c1862006865845162004c8b565b5111158062029c39575b620051605762029c329062004c7b565b9262029be1565b5062029c46818462004ce2565b5162029c5762016e27845162004c8b565b51101562029c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029e3b57600262029d34825162004c8b565b51510362029de15760208201516026811015620029ab57600e036200661f5762029d5f83926202b43c565b60009182945b62029d7257505050905090565b81518510156201708c5762029d88858362004ce2565b5162029d9962006865835162004c8b565b5111801562029dbb575b620170845762029db4849562004c7b565b9462029d65565b5062029dc8858362004ce2565b5162029dd962016e27835162004c8b565b511062029da3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029fbc57600262029eb5825162004c8b565b51510362029f625760208201516026811015620029ab57600e036200661f5762029ee083926202b43c565b60009182945b62029ef357505050905090565b81518510156201708c5762029f09858362004ce2565b5162029f1a62006865835162004c8b565b5111801562029f3c575b620170845762029f35849562004c7b565b9462029ee6565b5062029f49858362004ce2565b5162029f5a62016e27835162004c8b565b511062029f24565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208082019081516026811015620029ab57600d1480156202a108575b6202a0ba575080516026811015620029ab57600f149081156202a0a3575b506202a05d5750600090565b6000805b606060408401510151805182101562017ac0576202a0828260e09262004ce2565b5101511562022e6d5760406202a09a60609262004c7b565b9150506202a061565b9050516026811015620029ab57600c14386202a051565b60009150815b816040850151015180518210156202a0fe576202a0e08260019262004ce2565b5115150362017ab9576202a0f660409162004c7b565b90506202a0c0565b5050505050600190565b5081516026811015620029ab57600e146202a033565b60208082019081516026811015620029ab57600d1480156202a20a575b6202a1c6575080516026811015620029ab57600f149081156202a1af575b506202a1655750600090565b6000805b606060408401510151805182101562017ac05760e06202a18c8360019362004ce2565b51015115151462022e6d5760406202a1a660609262004c7b565b9150506202a169565b9050516026811015620029ab57600c14386202a159565b60009150815b816040850151015180518210156202a0fe576202a1ec8260019262004ce2565b5115151462017ab9576202a20260409162004c7b565b90506202a1cc565b5081516026811015620029ab57600e146202a13b565b60208082019081516026811015620029ab57600d1480156202a31f575b6202a2d1575080516026811015620029ab57600f149081156202a2ba575b506202a2675750600090565b60005b60606040830151015180518210156200661f57819060e06202a290600193849362004ce2565b5101511515146202a2b4575060406202a2ab60609262004c7b565b9150506202a26a565b91505090565b9050516026811015620029ab57600c14386202a25b565b905060005b81604084015101518051821015620171bd5781906202a2f9600192839262004ce2565b511515146202a31857506202a31060409162004c7b565b90506202a2d6565b9250505090565b5081516026811015620029ab57600e146202a23d565b60208082019081516026811015620029ab57600d1480156202a426575b6202a3df575080516026811015620029ab57600f149081156202a3c8575b506202a37c5750600090565b60005b60606040830151015180518210156200661f576202a3a08260e09262004ce2565b510151156202a3c15760406202a3b860609262004c7b565b9150506202a37f565b5050600190565b9050516026811015620029ab57600c14386202a370565b905060005b81604084015101518051821015620171bd5781906202a407600192839262004ce2565b511515036202a31857506202a41e60409162004c7b565b90506202a3e4565b5081516026811015620029ab57600e146202a352565b60208092019160019283815151036202a55d576202a45c84915162004c8b565b5151036202a5045780820180516026811015620029ab57600f141590816202a4ec575b506200661f57600091835b6202a4985750505050600090565b60408101926060845101519384518210156201e977576202a4d36200686560a0866202a4c6868b9a62004ce2565b5101519351015162004c8b565b511462005160576202a4e59062004c7b565b926202a48a565b9050516026811015620029ab57600c1415386202a47f565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a6bf5781830180516026811015620029ab57600f141590816202a6a7575b50620171bd5783926000945b6202a600575050505050600090565b6040810160608082510151518710156202a69f57906000865b6202a635575b5050506202a62e849562004c7b565b946202a5f1565b6202a641855162004c8b565b51518110156202a69957856202a65c89858551015162004ce2565b5101516202a6708262007497885162004c8b565b51146202a68e57906202a68587939262004c7b565b9091926202a619565b505050505050905090565b6202a61f565b5050620173d1565b9050516026811015620029ab57600c1415386202a5e5565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a8845760026202a73a825162004c8b565b5151036202a82a5781830180516026811015620029ab57600f141590816202a812575b50620171bd57600092845b6202a777575050505050600090565b604081019360609485815101519586518310156202a80957828691826202a7a0838c9b62004ce2565b5101516202a7b362006865895162004c8b565b51111593846202a7d9575b50505050620178f8576202a7d29062004c7b565b936202a768565b6202a7e993945051015162004ce2565b5101516202a7fc62016e27855162004c8b565b511015848238806202a7be565b505050620173d1565b9050516026811015620029ab57600c1415386202a75d565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b602080920160019283825151036202aa0657836202a8fd835162004c8b565b5151036202a9a75780830180516026811015620029ab57600f141590816202a98f575b50620171bd57600092845b6202a93a575050505050600090565b6060604082015101519384518110156202a98857826202a95c82889762004ce2565b5101516202a96f62006865865162004c8b565b5110620178f8576202a9819062004c7b565b936202a92b565b50620173d1565b9050516026811015620029ab57600c1415386202a920565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b602080920160019283825151036202ab8057836202aa7e835162004c8b565b5151036202ab215780830180516026811015620029ab57600f141590816202ab09575b50620171bd57600092845b6202aabb575050505050600090565b6060604082015101519384518110156202a98857826202aadd82889762004ce2565b5101516202aaf062006865865162004c8b565b5111620178f8576202ab029062004c7b565b936202aaac565b9050516026811015620029ab57600c1415386202aaa1565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b906020019060019182815151036202aec957826202abf8825162004c8b565b5151036202ae69576020820180516026811015620029ab57600f141590816202ae51575b506200661f576000939291825b6202ac38575b50600093505050565b60408101946060808751015180518310156202ae48576202ac5e836202ac659262004ce2565b5162005616565b9060069182811015620029ab5715806202ae2f575b6202add5576202ac936202ac5e84838b51015162004ce2565b82811015620029ab578614806202ae15575b6202add5576202acbe6202ac5e84838b51015162004ce2565b82811015620029ab57600280911490816202adfa575b506202add5576202acee6202ac5e84838b51015162004ce2565b82811015620029ab57600380911490816202addf575b506202add5576202ad1e6202ac5e84838b51015162004ce2565b9782891015620029ab576004809914806202adbb575b6202adb057836202ad4d926202ac5e9251015162004ce2565b908110156202ad9b5784959650600580911490816202ad80575b5062005160576202ad789062004c7b565b94936202ac29565b90506202ad9262006865855162004c8b565b5114386202ad67565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b50886202adcd62006865885162004c8b565b51146202ad34565b5093955050505050565b90506202adf162006865875162004c8b565b5114386202ad04565b90506202ae0c62006865875162004c8b565b5114386202acd4565b50856202ae2762006865875162004c8b565b51146202aca5565b506202ae4062006865865162004c8b565b51156202ac7a565b5050506202ac2f565b9050516026811015620029ab57600c1415386202ac1c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202b017576020820180516026811015620029ab57600f141590816202afff575b506200661f5782916000935b6202af6b5750505050600090565b6040810160608082510151518610156201e97757906000855b6202afa0575b5050506202af99839462004c7b565b936202af5d565b6202afac855162004c8b565b51518110156202aff957826202afc788828551015162004ce2565b5101516202afdb8262007497885162004c8b565b511462023c4a57906202aff086939262004c7b565b9091926202af84565b6202af8a565b9050516026811015620029ab57600c1415386202af51565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208101516026811015620029ab576013036200750a5760005b604080830151015180518210156200661f57819060c06202b0b0600193849362004ce2565b5101511515146202a2b457506202b0c79062004c7b565b6202b08b565b6020918201805151600094936001939091600019016202b2365760026202b0f5845162004c8b565b5151036202b1dc57818101516026811015620029ab576013036202b1d2576000959493929190835b6202b12c575b50505050909150565b604080820190808251015180518a10156202b1c9578491826202b1518c809462004ce2565b5101516202b16462006865895162004c8b565b51111593846202b199575b505050506202b18f576202b1868495969762004c7b565b9695946202b11d565b5050509150915090565b6202b1a993945051015162004ce2565b5101516202b1bc62016e27855162004c8b565b511015828838806202b16f565b5050506202b123565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200160019182825151036202b3e157826202b2ae835162004c8b565b5151036202b3835760208101516026811015620029ab576013036200661f5782916000935b6202b2e15750505050600090565b6040808301908082510151518610156201e97757906000855b6202b316575b5050506202b30f839462004c7b565b936202b2d3565b6202b32687848451015162004ce2565b5151518110156202b37d576202b34e816202b34689868651015162004ce2565b515162004ce2565b516202b35f62006865865162004c8b565b511462023c4a57906202b37486939262004c7b565b9091926202b2fa565b6202b300565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b60209081810180516026811015620029ab57600d149081156202b557575b506202b47c5750506040516202b4708162002ac7565b60008152600036813790565b6040019160a0916202b49e6202b496848651015162004c8b565b515162004dfe565b93600092835b6202b4b3868451015162004c8b565b51518110156202b510576202b4cd81858551015162004ce2565b516202b4eb575b6202b4e36202b4b39162004c7b565b90506202b4a4565b936202b4e36202b506828762001b036202b4b3958c62004ce2565b959150506202b4d4565b50935050506202b5208162004dfe565b9060005b8181106202b533575090925050565b806202b5446202b551928762004ce2565b5162001b03828662004ce2565b6202b524565b9050516026811015620029ab57600e14386202b45a565b9161025981146202b8ea5761025a81146202b7fa5761025b81146202b70a5761025c81146202b5f45761025d81146202b5e85761025e81146202b5dc5761025f81146202b5d057610260146202b5c5575050600090565b62003261916202bda8565b5062003261916202bc2e565b5062003261916202bb1d565b5062003261916202b9da565b50602001906001825151036202b6b05760026202b612835162004c8b565b5151036202b65657602001908151516202b63162006865835162004c8b565b51111591826202b64057505090565b62016e2e91925062016e27905151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b7a05760016202b728835162004c8b565b5151036202b7465762006865602062016f3292015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b8905760016202b818835162004c8b565b5151036202b8365762006865602062016d0492015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b9805760016202b908835162004c8b565b5151036202b9265762006865602062016c0392015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919091602080930160019182825151036202bac357826202b9fc835162004c8b565b5151036202ba6957938293946000935b6202ba1b575050505050600090565b818101519384518110156202a988576202ba40620076f984620067ff848a9962004ce2565b6202ba5062006865865162004c8b565b5114620178f8576202ba629062004c7b565b936202ba0c565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202bbd4578293946000945b6202bb48575050505050600090565b8281018051518610156202a988576000855b6202bb75575b50506202bb6e849562004c7b565b946202bb39565b6202bb81845162004c8b565b51518110156202bbce576202bba1620076f986620067ff8a865162004ce2565b6202bbb28262007497875162004c8b565b511462023c4a57906202bbc6869262004c7b565b90916202bb5a565b6202bb60565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91909160208093019060019182815151036202bd4e57846202bc51825162004c8b565b5151920191825151036202bcd35782939460009283955b6202bc77575b50505050905090565b805180518710156202bccc57620076f983620067ff896202bc989462004ce2565b6202bca98762007497865162004c8b565b51036202bcc3576202bcbc859662004c7b565b956202bc68565b50505091505090565b506202bc6e565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202be78578293946000935b6202bdd0575050505090565b8281018051518510156202be7157856000918183905b6202be08575b50505015620173d1576202be01859462004c7b565b936202bdc4565b6202be14865162004c8b565b51518110156202be6b576202be34620076f988620067ff8b865162004ce2565b6202be458262007497895162004c8b565b51146202be5e576202be579062004c7b565b826202bde6565b505090508538806202bdec565b6202bdec565b5062005160565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916101cd81146202bf24576101ce81146202bf18576101cf81146202bf0c576101d0146202bf01575050600090565b62003261916202c532565b5062003261916202c310565b5062003261916202c11d565b5062003261919060200160019182825151036202c0c35760026202bf49835162004c8b565b5151036202c069576202bf5c816202c725565b156200661f576202bf6d906202c782565b9180939150518251036202bffe57600092845b6202bf8f575050505050600090565b80518410156201790057836202bfa786958362004ce2565b516202bfb862006865855162004c8b565b5114806202bfd8575b620178f8576202bfd19062004c7b565b936202bf80565b506202bfe5818562004ce2565b516202bff662016e27855162004c8b565b51106202bfc1565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c2b65760026202c13c835162004c8b565b5151036202c25c576202c14f816202c725565b156200661f576202c160906202c782565b9180939150518251036202c1f157600092845b6202c182575050505050600090565b80518410156201790057836202c19a86958362004ce2565b516202c1ab62006865855162004c8b565b5114806202c1cb575b620178f8576202c1c49062004c7b565b936202c173565b506202c1d8818562004ce2565b516202c1e962016e27855162004c8b565b51116202c1b4565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c4d85760036202c32f835162004c8b565b5151036202c47e576202c342816202c725565b156200661f576202c353906202c782565b9180939150518251036202c41357600092845b6202c375575050505050600090565b80518410156201790057836202c38d86958362004ce2565b516202c39e62006865855162004c8b565b5114806202c3ec575b806202c3c5575b620178f8576202c3be9062004c7b565b936202c366565b506202c3d2818562004ce2565b516202c3e36201d8a1855162004c8b565b5110156202c3ae565b506202c3f9818562004ce2565b516202c40a62016e27855162004c8b565b5111156202c3a7565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c6cb5760026202c551835162004c8b565b5151036202c671576202c564816202c725565b156200661f576202c575906202c782565b9180939150518251036202c60657600092845b6202c597575050505050600090565b80518410156201790057836202c5af86958362004ce2565b516202c5c062006865855162004c8b565b5114806202c5e0575b620178f8576202c5d99062004c7b565b936202c588565b506202c5ed818562004ce2565b516202c5fe62016e27855162004c8b565b51146202c5c9565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60200180516026811015620029ab576014149081156202c76a575b81156202c753575b506202409957600090565b9050516026811015620029ab57601e14386202c748565b809150516026811015620029ab57601514906202c740565b6202c78d816202c725565b156202c893576020810180516026811015620029ab576014146202c87e5780516026811015620029ab576015146202c84757516026811015620029ab57601e146202c81557506040516202c7e18162002ac7565b60008152604051916202c7f48362002ac7565b60008352604051916202c8078362002ac7565b600083526000368137929190565b604001906202c82960a08351015162004c8b565b51906202c84060a06200749e818651015162004caf565b5191929190565b50604001906202c85c60a08351015162004c8b565b51906202c84060a06202c873818651015162004cc0565b519451015162004cd1565b50604001906202c82960a08351015162004c8b565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202c9df576101b081146202c9d3576101b181146202c9c7576101b281146202c9bb576101b381146202c9af576101b481146202c9a3576101b581146202c997576101b6146202c98c575050600090565b62003261916202d428565b5062003261916202d283565b5062003261916202d11e565b5062003261916202cfb9565b5062003261916202ce54565b5062003261916202ccaf565b5062003261916202cb4a565b506200326191906020019060019182815151036202caf057826202ca04825162004c8b565b5151036202ca965760208201516026811015620029ab576011036200661f57600091835b6202ca365750505050600090565b604081019260a0936202ca4d858251015162004c8b565b51518210156201e97757816200749787966202ca6c9351015162004c8b565b516202ca7d62006865855162004c8b565b511062005160576202ca8f9062004c7b565b926202ca28565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cc5557826202cb69825162004c8b565b5151036202cbfb5760208201516026811015620029ab576011036200661f57600091835b6202cb9b5750505050600090565b604081019260a0936202cbb2858251015162004c8b565b51518210156201e97757816200749787966202cbd19351015162004c8b565b516202cbe262006865855162004c8b565b511162005160576202cbf49062004c7b565b926202cb8d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cdfa5760026202cccf825162004c8b565b5151036202cda05760208201516026811015620029ab576011036200661f57600091835b6202cd015750505050600090565b604081019260a0936202cd18858251015162004c8b565b51518210156201e9775781856202cd3982620074978a998651015162004c8b565b516202cd4a62006865885162004c8b565b51111592836202cd6f575b50505062005160576202cd689062004c7b565b926202ccf3565b5101516202cd839250620074979062004c8b565b516202cd9462016e27855162004c8b565b5110158138806202cd55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cf5f57826202ce73825162004c8b565b5151036202cf055760208201516026811015620029ab576011036200661f57600091835b6202cea55750505050600090565b604081019260a0936202cebc858251015162004c8b565b51518210156201e97757816200749787966202cedb9351015162004c8b565b516202ceec62006865855162004c8b565b511462005160576202cefe9062004c7b565b926202ce97565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d0c457826202cfd8825162004c8b565b5151036202d06a5760208201516026811015620029ab576012036200661f57600091835b6202d00a5750505050600090565b604081019260a0936202d021858251015162004c8b565b51518210156201e97757816200749787966202d0409351015162004c8b565b516202d05162006865855162004c8b565b511062005160576202d0639062004c7b565b926202cffc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d22957826202d13d825162004c8b565b5151036202d1cf5760208201516026811015620029ab576012036200661f57600091835b6202d16f5750505050600090565b604081019260a0936202d186858251015162004c8b565b51518210156201e97757816200749787966202d1a59351015162004c8b565b516202d1b662006865855162004c8b565b511162005160576202d1c89062004c7b565b926202d161565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d3ce5760026202d2a3825162004c8b565b5151036202d3745760208201516026811015620029ab576012036200661f57600091835b6202d2d55750505050600090565b604081019260a0936202d2ec858251015162004c8b565b51518210156201e9775781856202d30d82620074978a998651015162004c8b565b516202d31e62006865885162004c8b565b51111592836202d343575b50505062005160576202d33c9062004c7b565b926202d2c7565b5101516202d3579250620074979062004c8b565b516202d36862016e27855162004c8b565b5110158138806202d329565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d53357826202d447825162004c8b565b5151036202d4d95760208201516026811015620029ab576012036200661f57600091835b6202d4795750505050600090565b604081019260a0936202d490858251015162004c8b565b51518210156201e97757816200749787966202d4af9351015162004c8b565b516202d4c062006865855162004c8b565b511462005160576202d4d29062004c7b565b926202d46b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b156202d59557565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202d5e48162002f45565b6202d5f26200e20262033a39565b6202d5fd8162002f45565b600181036202d61b57506202d6156200e22e62033a39565b611faf55565b6202d6268162002f45565b600281036202d6365750611fb055565b6202d6418162002f45565b600381036202d6515750611fb155565b806202d65f60049262002f45565b146202d6685750565b611fb255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b825181101562010d665760e06202d731828562004ce2565b510151156202dae8576202d74a6202ac5e828562004ce2565b600680821015620029ab5760049182036202d895575060209060016003836202d774868962004ce2565b51015106036202d7915750506202d78b9062004c7b565b6202d719565b62004c7782846202d87a60636202d7c26202d7bb856202d7b2868e62004ce2565b51015162005091565b9362005091565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202d7fe62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d82782518093601396878501910162002d89565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002b1c565b5193849362461bcd60e51b8552840152602483019062002dae565b6202d8a56202ac5e848762004ce2565b818110156201e52d576001036202d9b5575060209060026003836202d8cb868962004ce2565b51015106036202d8e25750506202d78b9062004c7b565b62004c7782846202d87a605d6202d9036202d7bb856202d7b2868e62004ce2565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202d93f62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d96882518093601396878501910162002d89565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002b1c565b6202d9c56202ac5e848762004ce2565b908110156201588c576002036202dacc576020906003826202d9e8858862004ce2565b510151066202d9fe5750506202d78b9062004c7b565b62004c7782846202d87a6202da246202da1d846202d7b2858d62004ce2565b9262005091565b916202dabd60409384519586936202da4262004d4c8387016202d6dd565b0160008051602062033fdb83398151915281528151906202da6c826013948d868501910162002d89565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002b1c565b60405162461bcd60e51b815290819062004c779082016202d66e565b6202daf86202ac5e828562004ce2565b60069081811015620029ab576005036202dc135750602060016003826202db20858862004ce2565b51015106036202db3657506202d78b9062004c7b565b62004c77826202dbf660526202db576202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202db9262004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dbbc826013958c878501910162002d89565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002b1c565b5192839262461bcd60e51b84526004840152602483019062002dae565b6202dc236202ac5e838662004ce2565b9080821015620029ab5760039182036202dd3257506002602091826202dc4a858862004ce2565b51015106036202dc6057506202d78b9062004c7b565b62004c77826202dbf6605c6202dc816202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202dcbc62004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dce6826013958c878501910162002d89565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002b1c565b6202dd426202ac5e848762004ce2565b90811015620029ab576002036202ddee57602090816202dd63848762004ce2565b510151066202dd7857506202d78b9062004c7b565b62004c77826202dbf66202dd976202da1d856202d7b281988b62004ce2565b916202dddf60409384519788936202ddb562004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528151906202da6c826013948b868501910162002d89565b03601f19810186528562002b1c565b60405162461bcd60e51b81528062004c77600482016202d66e565b156202de1157565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202de9a57565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202def257565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202df5357565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202dfb457565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202e00d57565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202e06f57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202e0d257565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202e13857565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202e19a57565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202e1f257565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202e25157565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202e2aa57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202e30360c08351015162004c8b565b51916202e32560a06202e31a818451015162004c8b565b519251015162004caf565b51936202e33a845183511462000f4e62033906565b6202e34d845186511462000f4e62033906565b60005b84518110156202e3aa576202e366818462004ce2565b51906103e882101562004c99576202e3a49160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e350565b5092919360005b83518110156202e4d5576202e3c7818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e40760406000205462007dae868962004ce2565b906202e414868a62004ce2565b51918783101562004c9957846202e44193878f5116600052811b01845260406000205562000f4e62033a0a565b6202e44d848862004ce2565b518581101562004c99578290846202e466878c62004ce2565b5116600052811b0181526202e4866040600020546200686c868962004ce2565b9190926202e495868a62004ce2565b519687101562004c99576202e4cf9662000f55956202e4b5888d62004ce2565b5116600052811b01905260406000205562000f4e62033a6f565b6202e3b1565b5050620119826202e4e691620336a2565b90604051936202e4f68562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202e51d8562004c8b565b526000935b81518510156202e840576202e538858362004ce2565b51946202e546845162004dfe565b916000936202e556825162004dfe565b610b00528496855b87518110156202e5ff576202e585610ae0516202e57c838b62004ce2565b51168b6203348a565b15806202e5c7575b6202e5a4575b6202e59e9062004c7b565b6202e55e565b956202e5be6202e59e91610ae0516200a4958a8c62004ce2565b9690506202e593565b506103e88a101562004c9957610ae0516202e5e3828a62004ce2565b511660005260038a811b0160205260406000205415156202e58d565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202e699578762004c9957610ae0516202e63d828c62004ce2565b51166000528b602052604060002054156202e664575b6202e65e9062004c7b565b6202e61d565b976202e6906202e65e918b6202e67f8c610ae0519262004ce2565b511662001b0382610b005162004ce2565b9890506202e653565b5094959193965098509690959680610b405262004c995760040180610b805254956202e6ca620080c0868962006258565b610b205260009788610b60525b610b405162004c9957610b6051888110156202e775576202e7066202e71c916000610b4052610b805162004efa565b610ae05191549060031b1c16610b005162033539565b156202e73b575b6202e731610b605162004c7b565b610b60526202e6d7565b976202e76e906202e753610b6051610b805162004efa565b610ae05191549060031b1c1662001b0382610b205162004ce2565b976202e723565b5095939096509690969391936000915b8383106202e80f5750505050610b405162004c9957610b2051516001600160401b03811162002a23576202e7bd81610b805162005036565b6020610b205101610b805160005260206000206000610ae051905b8481106202e7f85750505050506202e7f09062004c7b565b93926202e522565b60019060208386511695019481850155016202e7d8565b620082566202e83991610ae0516202e828868662004ce2565b511662001b0382610b205162004ce2565b916202e785565b5050509050565b60408101906202e85c60c08351015162004c8b565b51916202e87360a06202e31a818451015162004c8b565b51936202e888845183511462000f4e62033906565b6202e89b845186511462000f4e62033906565b60005b84518110156202e8f8576202e8b4818462004ce2565b51906103e882101562004c99576202e8f29160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e89e565b5092919360005b83518110156202ea09576202e915818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e95560406000205462007dae868962004ce2565b906202e962868a62004ce2565b51918783101562004c9957846202e98f93878f5116600052811b01845260406000205562000f4e62033a0a565b6202e99b848862004ce2565b518581101562004c99578290846202e9b4878c62004ce2565b5116600052811b0181526202e9d46040600020546200686c868962004ce2565b9190926202e9e3868a62004ce2565b519687101562004c99576202ea039662000f55956202e4b5888d62004ce2565b6202e8ff565b5050620119826202ea1a91620336a2565b90604051936202ea2a8562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202ea518562004c8b565b526000935b81518510156202e840576202ea6c858362004ce2565b51946202ea7a845162004dfe565b916000936202ea8a825162004dfe565b610b00528496855b87518110156202eb2a576202eab0610ae0516202e57c838b62004ce2565b15806202eaf2575b6202eacf575b6202eac99062004c7b565b6202ea92565b956202eae96202eac991610ae0516200a4958a8c62004ce2565b9690506202eabe565b506103e88a101562004c9957610ae0516202eb0e828a62004ce2565b511660005260038a811b0160205260406000205415156202eab8565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202ebb3578762004c9957610ae0516202eb68828c62004ce2565b51166000528b602052604060002054156202eb8f575b6202eb899062004c7b565b6202eb48565b976202ebaa6202eb89918b6202e67f8c610ae0519262004ce2565b9890506202eb7e565b5094959193965098509690959680610b805262004c995760040180610b605254956202ebe4620080c0868962006258565b610b205260009788610b40525b610b805162004c9957610b4051888110156202ec5e576202e7066202ec20916000610b8052610b605162004efa565b156202ec3f575b6202ec35610b405162004c7b565b610b40526202ebf1565b976202ec57906202e753610b4051610b605162004efa565b976202ec27565b5095939096509690969391936000915b8383106202ecf85750505050610b805162004c9957610b2051516001600160401b03811162002a23576202eca681610b605162005036565b6020610b205101610b605160005260206000206000610ae051905b8481106202ece15750505050506202ecd99062004c7b565b93926202ea56565b60019060208386511695019481850155016202ecc1565b620082566202ed1191610ae0516202e828868662004ce2565b916202ec6e565b90604082016202ed3260a06202e31a818451015162004c8b565b51908051825103620089ef5760005b81518110156202ed9c576202ed57818362004ce2565b51906103e882101562004c9957611fbb6202ed969260018060a01b0388511660005260031b0160205262000f5560406000205462007d41838762004ce2565b6202ed41565b5092909260005b81518110156202ee3e576202edb9818362004ce2565b51906103e88083101562004c995760018060a01b039081865116600052611fbb60039481602091871b0181526202edfb60406000205462007dae878d62004ce2565b9290936202ee0a878a62004ce2565b519081101562004c99576202ee389762000f55968b51166000521b01905260406000205562000f4e62033a0a565b6202eda3565b506202ee4c919350620336a2565b604051926202ee5b8462002b00565b60018452602036818601376001600160a01b03610b808190529051166202ee828462004c8b565b52604051906202ee928262002ac7565b6000825260003681376000935b81518510156202e840576202eeb5858362004ce2565b51946202eec3845162004dfe565b916000936202eed3825162004dfe565b610b20528496855b87518110156202ef7e576202ef02610b80516202eef9838b62004ce2565b51168b620334e1565b15806202ef44575b6202ef21575b6202ef1b9062004c7b565b6202eedb565b956202ef3b6202ef1b91610b80516200a4958a8c62004ce2565b9690506202ef10565b506103e88a101562004c9957610b80516202ef60828a62004ce2565b5116600052611fbb8a60031b0160205260406000205415156202ef0a565b509793929096949195976000986103e88610159560031b98611fbb8a019a5b89518110156202f008578762004c9957610b80516202efbd828c62004ce2565b51166000528b602052604060002054156202efe4575b6202efde9062004c7b565b6202ef9d565b976202efff6202efde918b6202e8288c610b80519262004ce2565b9890506202efd3565b5094959193965098509690959680610b405262004c9957611fbc0180610b005254956202f03a620080c0868962006258565b610b605260009788610ae0525b610b405162004c9957610ae051888110156202f0e5576202f0766202f08c916000610b4052610b005162004efa565b610b805191549060031b1c16610b205162033539565b156202f0ab575b6202f0a1610ae05162004c7b565b610ae0526202f047565b976202f0de906202f0c3610ae051610b005162004efa565b610b805191549060031b1c1662001b0382610b605162004ce2565b976202f093565b5095939096509690969391936000915b8383106202f17f5750505050610b405162004c9957610b6051516001600160401b03811162002a23576202f12d81610b005162005036565b6020610b605101610b005160005260206000206000610b8051905b8481106202f1685750505050506202f1609062004c7b565b93926202ee9f565b60019060208386511695019481850155016202f148565b620082566202f1a991610b80516202f198868662004ce2565b511662001b0382610b605162004ce2565b916202f0f5565b9060408201916202f1cb60a0620077f3818651015162004c8b565b51928051845103620089ef5760005b81518110156202f234576202f1f0818362004ce2565b51906103e882101562004c99576202f22e9160018060a01b03855116600052600390811b0160205262000f5560406000205462007d41838962004ce2565b6202f1da565b5060005b81518110156202f2d2576202f24e818362004ce2565b51906103e8918281101562004c995760018060a01b03908186511660005260039081602091811b0181526202f28e60406000205462007dae868c62004ce2565b9190926202f29d868962004ce2565b519687101562004c99576202f2cc9662000f55958a5116600052811b01905260406000205562000f4e62033a0a565b6202f238565b506202f2e0919350620336a2565b604051926202f2ef8462002b00565b60018452602036818601376001600160a01b03610b208190529051166202f3168462004c8b565b52604051906202f3268262002ac7565b6000825260003681376000935b81518510156202e840576202f349858362004ce2565b51946202f357845162004dfe565b916000936202f367825162004dfe565b610b00528496855b87518110156202f407576202f38d610b20516202e57c838b62004ce2565b15806202f3cf575b6202f3ac575b6202f3a69062004c7b565b6202f36f565b956202f3c66202f3a691610b20516200a4958a8c62004ce2565b9690506202f39b565b506103e88a101562004c9957610b20516202f3eb828a62004ce2565b511660005260038a811b0160205260406000205415156202f395565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202f490578762004c9957610b20516202f445828c62004ce2565b51166000528b602052604060002054156202f46c575b6202f4669062004c7b565b6202f425565b976202f4876202f466918b6202e67f8c610b20519262004ce2565b9890506202f45b565b5094959193965098509690959680610b605262004c995760040180610ae05254956202f4c1620080c0868962006258565b610b805260009788610b40525b610b605162004c9957610b4051888110156202f56c576202f4fd6202f513916000610b6052610ae05162004efa565b610b205191549060031b1c16610b005162033539565b156202f532575b6202f528610b405162004c7b565b610b40526202f4ce565b976202f565906202f54a610b4051610ae05162004efa565b610b205191549060031b1c1662001b0382610b805162004ce2565b976202f51a565b5095939096509690969391936000915b8383106202f6065750505050610b605162004c9957610b8051516001600160401b03811162002a23576202f5b481610ae05162005036565b6020610b805101610ae05160005260206000206000610b2051905b8481106202f5ef5750505050506202f5e79062004c7b565b93926202f333565b60019060208386511695019481850155016202f5cf565b620082566202f63091610b20516202f61f868662004ce2565b511662001b0382610b805162004ce2565b916202f57c565b156202f63f57565b60405162461bcd60e51b815260206004820152601d60248201527f54686520726566756e6420616d6f756e74206973206f766572666c6f770000006044820152606490fd5b156202f68c57565b60405162461bcd60e51b815260206004820152602360248201527f54686520746f74616c20726566756e6420616d6f756e74206973206f766572666044820152626c6f7760e81b6064820152608490fd5b156202f6e557565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20776974686472617761626c6520616d6f756e74206973604482015268206f766572666c6f7760b81b6064820152608490fd5b611f44805482101562004c99576000526007602060002091020190600090565b815180519192916001600160401b03811162002a23576202f77e818562005036565b6020809201846000528260002060005b8381106202f7f5575050505060c08260069262002bc395940151600185015560408101516002850155606081015160038501556202f7d6608082015115156004860162005795565b6202f7e960a082015160058601620056c2565b01511515910162005795565b825182820155918401916001016202f78e565b611f448054600160401b81101562002a23576202f82b916001820190556202f73c565b91909162005cff5762002bc3916202f75c565b611fb4908154600160401b81101562002a23576001810180845581101562004c995762002bc392600052602060002001620056c2565b62006a286202f883916200754d565b613f78805480600052613f76908160205260ff60096040600020015460081c1662032a4a57613f73600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202f8e460406000206200369d565b90600080611f4a54905b81811062032a03575b505015620329e7575b60005b60208301519081518110156202f93b5762000f55620077196201170b620076f96020620067ff866202f9359862004ce2565b6202f903565b505060005b602083015180518210156202f98857620076f96020620067ff846202f9659462004ce2565b90606482101562004c99576202f982914290611f4b015562004c7b565b6202f940565b50506000905b602083015180518310156200b13957826202f9a99162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036202fbba57604001906202f9ea60c08351015162004c8b565b51936202fa0160a0620077f3818651015162004c8b565b51916202fa1286518551146202e0ca565b6202fa2186518451146202e130565b60005b86518110156202fb48576202fa3a818662004ce2565b516103e881101562004c9957600160ff60076202fa609360031b0154161515146202e192565b6202fa6c818562004ce2565b516202fa79828762004ce2565b51906103e882101562004c99576202fa9b906006809360031b01549062006049565b6202faa7848962004ce2565b51926103e884101562004c99576202fac49360031b01556202e1ea565b6202fad0818562004ce2565b516202fadd828762004ce2565b51906103e882101562004c99576202fb06916003906001600160a01b03620118fd868d62004ce2565b91906202fb14828862004ce2565b51906103e882101562004c99576202fb429362000f55926003906001600160a01b0362011951878f62004ce2565b6202fa24565b5094915091620119826202fb5c91620336a2565b93604051926202fb6c8462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6202fb97938762004ce2565b6202fb78565b50945092602092506202fbb1915062004c7b565b9190506202f98e565b6020819492939401516026811015620029ab576002036202fd4e576040018051928351906202fbf262007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b86518110156202fd38576202fc2b818862004ce2565b516103e881101562004c995760ff60076202fc4d9260031b015416156202e2a2565b6202fc59818862004ce2565b516103e881101562004c995760031b600701805460ff191660011790556202fc82818562004ce2565b516202fc8f828962004ce2565b51906103e882101562004c995760056202fcad9260031b01620056c2565b6202fcb9818662004ce2565b516202fcc6828962004ce2565b516103e881101562004c995760031b600101556202fce5818762004ce2565b516202fcf2828962004ce2565b516103e881101562004c995760031b600201556202fd11818862004ce2565b51906103e882101562004c9957600060066202fd329360031b015562004c7b565b6202fc15565b509591509350602092506202fbb1915062004c7b565b929160208401516026811015620029ab5760030362030362576202fd7a60c06040860151015162004c8b565b5160a0916202fda36202fd94846040890151015162004c8b565b51936040880151015162004caf565b51936202fdb8835185511462000f4e62033906565b6202fdcb835186511462000f4e62033906565b60005b83518110156202fe27576202fde4818662004ce2565b51906103e882101562004c995760036202fe219260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b6202fdce565b509095919560005b87518110156202ff52576202fe45818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526202fe7d60406000205462007dae838962004ce2565b906202fe8a838862004ce2565b51916103e883101562004c995760036202fec19360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b6202fecd818662004ce2565b516103e881101562004c99576003906001600160a01b036202fef0848c62004ce2565b5116600052811b016020526202ff116040600020546200686c838962004ce2565b91906202ff1f828862004ce2565b51906103e882101562004c99576202ff4c93600362000f55938d62007e678760018060a01b039262004ce2565b6202fe2f565b50926202ff6a919294506200c6fd90969596620336a2565b92604051906202ff7a8262002b00565b6001825260203681840137516001600160a01b03166202ff9a8262004c8b565b526000945b80518610156203034e576202ffb5868262004ce2565b51610960526202ffc6855162004dfe565b966000946202ffd6845162004dfe565b610a005260009460005b8851811015620300a6578a89620300106001600160a01b0362030004858462004ce2565b5116610960516203348a565b158062030060575b62030031575b50506203002b9062004c7b565b6202ffe0565b98620300559162001b0382859c62007f8f6203002b9760018060a01b039262004ce2565b9790508a896203001e565b5050506103e861096051101562004c99576001600160a01b0362030085828b62004ce2565b5116600052600361096051811b016020528a89604060002054151562030018565b50909895979498969291939660005b885181101562030149576103e861096051101562004c99576001600160a01b03620300e1828b62004ce2565b5116600052600361096051811b016020526040600020541562030110575b6203010a9062004c7b565b620300b5565b996203010a9062030140906001600160a01b036203012f8e8d62004ce2565b511662001b0382610a005162004ce2565b9a9050620300ff565b50985096959291909396610960516103e8811015806109805262004c995760031b60040154986203017f620080c0898c62006258565b610a40526000610ac0526000610aa0525b6109805162004c9957610aa0518a8110156203025957620301c5620301e29160006109805260046109605160031b0162004efa565b9054610a005160039290921b1c6001600160a01b03169062033539565b1562030201575b620301f7610aa05162004c7b565b610aa05262030190565b6000610980526203021f610aa05160046109605160031b0162004efa565b60018060a01b0391549060031b1c1662030240610ac051610a405162004ce2565b526203024f610ac05162004c7b565b610ac052620301e9565b50979294959093985095909560005b82811062030302575050506109805162004c9957610a4051516001600160401b03811162002a2357620302a58160046109605160031b0162005036565b6020610a40510160046109605160031b01600052602060002060005b838110620302e45750505050620302d89062004c7b565b9492959091956202ff9f565b82516001600160a01b031681830155602090920191600101620302c1565b62030348906001600160a01b036203031b828562004ce2565b51166203032f610ac051610a405162004ce2565b526203033e610ac05162004c7b565b610ac05262004c7b565b62030268565b5050936202fbb19193506020925062004c7b565b909260208101516026811015620029ab576004036203059a5760400160c093620303946200cb23868451015162004c8b565b5190620303ab60a0620077f3818651015162004c8b565b5193620303c0875184511462000f4e62033906565b620303d3875185511462000f4e62033906565b620303e6875186511462000f4e62033906565b60005b87518110156203042e57620303ff818662004ce2565b51906103e882101562004c995762030428916003906001600160a01b0362011d90848d62004ce2565b620303e9565b509095919593929360005b835181101562030557576203044f818762004ce2565b516103e881101562004c99576003906001600160a01b0362030472848862004ce2565b5116600052811b016020526203049360406000205462007dae838862004ce2565b90620304a0838962004ce2565b51916103e883101562004c9957620304c9926003906001600160a01b0362011e52878b62004ce2565b620304d5818762004ce2565b516103e881101562004c99576003906001600160a01b03620304f8848c62004ce2565b5116600052811b01602052620305196040600020546200686c838862004ce2565b91905062030528818862004ce2565b51916103e883101562004c995762030551926003906001600160a01b0362011ef5858e62004ce2565b62030439565b5093620305719192969350620084d162007e9f91620336a2565b9260005b83518110156202fb9d578062000f55620079ba62030594938762004ce2565b62030575565b60208101516026811015620029ab57600503620305c4576020919262000f556202fbb1926202f1b0565b60208101516026811015620029ab576006036203075a57604001620305ee60c08251015162004c8b565b51936203060560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620306635762030634818562004ce2565b51906103e882101562004c99576203065d916003906001600160a01b036201255d848c62004ce2565b6203061e565b509060005b865181101562030704576203067e818562004ce2565b516103e881101562004c99576003906001600160a01b03620306a1848b62004ce2565b5116600052811b01602052620306c260406000205462007dae838862004ce2565b9190620306d0828762004ce2565b51906103e882101562004c9957620306fe9362000f55926003906001600160a01b0362011e52878f62004ce2565b62030668565b509491620307199193506201198290620336a2565b9160405194620307298662002ac7565b60008652600036813760005b83518110156202fb9d578062000f55620079ba62030754938762004ce2565b62030735565b60208101516026811015620029ab57600703620307e057604001926203078560c08551015162004c8b565b51916203079760a08651015162004c8b565b5194515191620307af845187511462000f4e62033906565b60005b84518110156202fb9d57620307da9062000f556001600160a01b0380620126fb848a62004ce2565b620307b2565b60208194939401516026811015620029ab576008036203084e5760c060406203080d920151015162004c8b565b519160005b83518110156203083c5762030836906001600160a01b0380620127e3838862004ce2565b62030812565b509260209192506202fbb19062004c7b565b60208101516026811015620029ab57600903620308a75760c0604062030878920151015162004c8b565b519160005b83518110156203083c57620308a1906001600160a01b038062012877838862004ce2565b6203087d565b60208101516026811015620029ab57600a036203092d5760400190620308d860a06200dacd60c08551015162004c8b565b5192620308ed835185511462000f4e62033906565b60005b83518110156203091a5762030914906001600160a01b038062012913838862004ce2565b620308f0565b50936202fbb19193506020925062004c7b565b6020819493929401516026811015620029ab57600b03620309b857604001926203095c60c08551015162004c8b565b519351519162030974855184511462000f4e62033906565b60005b8551811015620309a5576203099f9062000f556001600160a01b0380620129c6848b62004ce2565b62030977565b50935091602091506202fbb19062004c7b565b90919260208201516026811015620029ab57600c0362030aeb5760606040830151015192620309e7846202d715565b60005b84518110156203091a5760e062030a0a8260606040880151015162004ce2565b5101511562030a825762030a2b620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030a4e60059162005c89565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c89565b620309ea565b62030a9a620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030abd60059162005c49565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c49565b92919060208101516026811015620029ab57600d0362030b545760400192602062030b1b60a08651015162004c8b565b51945101519162030b3085518451146202de09565b60005b8551811015620309a5578062012ba762030b4e928662004ce2565b62030b33565b60208194929401516026811015620029ab57600e0362030bbd5760400190602062030b8460a08451015162004c8b565b51925101519362030b9983518651146202de09565b60005b8351811015620309a5578062012cbb62030bb7928862004ce2565b62030b9c565b9060208294939401516026811015620029ab57600f0362030cf1576060604083015101519262030bed846202d715565b60005b84518110156203091a5760e062030c108260606040880151015162004ce2565b5101511562030c885762030c31620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030c5460059162005c89565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c89565b62030bf0565b62030ca0620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030cc360059162005c49565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c49565b9060208194939401516026811015620029ab5760100362030d6257604001519062030d2560a0608084015193015162004c8b565b519362030d3a835186511462000f4e62033906565b60005b8351811015620309a5578062000f55620096a562030d5c938762004ce2565b62030d3d565b60208194929401516026811015620029ab5760110362030f7b576040019062030d9660a06200dacd60c08551015162004c8b565b519362030da783518651146202d58d565b60005b835181101562030dd85762030dd29062000f556001600160a01b038062012f3e848962004ce2565b62030daa565b5093509062030de79062033586565b90611f46549362030dfe620080c084518762006258565b9060009260005b87811062030f60575060005b855181101562030eb8576000805b89811062030e69575b501562030e41575b62030e3b9062004c7b565b62030e11565b9362030e3b9062030e60906001600160a01b036200e3f8888a62004ce2565b94905062030e30565b62030e748162004e52565b90546001600160a01b0360039290921b1c81169062030e94858b62004ce2565b51161462030ead5762030ea79062004c7b565b62030e1f565b505060013862030e28565b50955093925062030ec98262004dfe565b8051906001600160401b03821162002a235760209062030ee98362004f93565b01611f46600052602060002060005b83811062030f42575050505060005b82811062030f1f575050506202fbb160209162004c7b565b62030f3c9062000f556001600160a01b0362001a37838662004ce2565b62030f07565b82516001600160a01b03168183015560209092019160010162030ef8565b936200e54462030f75916200e5268762004e52565b62030e05565b60208194929401516026811015620029ab576012036203119e576040019062030faf60a06200dacd60c08551015162004c8b565b519362030fc083518651146202d58d565b60005b835181101562030ff15762030feb9062000f556001600160a01b0380620131a0848962004ce2565b62030fc3565b5093509190620310019062033586565b611f4654620310108162004dfe565b906000926000915b808310620310c5575050506203102e8262004dfe565b8051906001600160401b03821162002a23576020906203104e8362004f93565b01611f46600052602060002060005b838110620310a7575050505060005b82811062031084575050506202fbb160209162004c7b565b620310a19062000f556001600160a01b0362001a37838662004ce2565b6203106c565b82516001600160a01b0316818301556020909201916001016203105d565b91956000959193959760005b85518110156203118f57620310e68962004e52565b90546001600160a01b0360039290921b1c81169062031106838962004ce2565b5116146203111f57620311199062004c7b565b620310d1565b509750956001959391955b806203115e575b156203114957620311429062004c7b565b9162031018565b936200e54462031142916200e5268762004e52565b506203116a8162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562031131565b5097969096959391956203112a565b60208101516026811015620029ab57601303620311f75760408091015101519260005b8451811015620311e6578062000f5562009c19620311e0938862004ce2565b620311c1565b509250906202fbb160209162004c7b565b60208101516026811015620029ab57601403620313a457604001906203122260c08351015162004c8b565b51936203123960a0620077f3818651015162004c8b565b51916203124a86518551146202e0ca565b6203125986518451146202e130565b60005b86518110156203134f5762031272818562004ce2565b516203127f828762004ce2565b51906103e882101562004c995760066203129f9260031b01549062006049565b90620312ac838862004ce2565b51916103e883101562004c99576006620312cb9360031b01556202e1ea565b620312d7818562004ce2565b51620312e4828762004ce2565b51906103e882101562004c99576203130d916003906001600160a01b03620118fd868d62004ce2565b91906203131b828862004ce2565b51906103e882101562004c9957620313499362000f55926003906001600160a01b0362011951878f62004ce2565b6203125c565b5094915091620119826203136391620336a2565b9360405192620313738462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6203139e938762004ce2565b6203137f565b929060208401516026811015620029ab5760150362031966576040840190620313d260c08351015162004c8b565b5190620313e960a0620077f3818651015162004c8b565b5193620313fe835185511462000f4e62033906565b62031411835186511462000f4e62033906565b60005b83518110156203146d576203142a818662004ce2565b51906103e882101562004c99576003620314679260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62031414565b509095919560005b875181101562031598576203148b818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620314c360406000205462007dae838962004ce2565b90620314d0838862004ce2565b51916103e883101562004c99576003620315079360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62031513818662004ce2565b516103e881101562004c99576003906001600160a01b0362031536848c62004ce2565b5116600052811b01602052620315576040600020546200686c838962004ce2565b919062031565828862004ce2565b51906103e882101562004c99576203159293600362000f55938d62007e678760018060a01b039262004ce2565b62031475565b5092620315b0919294506200c6fd90969596620336a2565b9260405190620315c08262002b00565b6001825260203681840137516001600160a01b0316620315e08262004c8b565b526000945b80518610156203034e57620315fb868262004ce2565b51610900526203160c855162004dfe565b966000946203161c845162004dfe565b610a205260009460005b8851811015620316ec578a89620316566001600160a01b036203164a858462004ce2565b5116610900516203348a565b1580620316a6575b62031677575b5050620316719062004c7b565b62031626565b986203169b9162001b0382859c62007f8f620316719760018060a01b039262004ce2565b9790508a8962031664565b5050506103e861090051101562004c99576001600160a01b03620316cb828b62004ce2565b5116600052600361090051811b016020528a8960406000205415156203165e565b50909895979498969291939660005b88518110156203177e576103e861090051101562004c99576001600160a01b0362031727828b62004ce2565b5116600052600361090051811b016020526040600020541562031756575b620317509062004c7b565b620316fb565b99620317509062031775906001600160a01b036201228f8e8d62004ce2565b9a905062031745565b50985096959291909396610900516103e8811015806109205262004c995760031b6004015498620317b4620080c0898c62006258565b6108c0526000610940526000610a60525b6109205162004c9957610a60518a811015620318715762012325620317fa9160006109205260046109005160031b0162004efa565b1562031819575b6203180f610a605162004c7b565b610a6052620317c5565b60006109205262031837610a605160046109005160031b0162004efa565b60018060a01b0391549060031b1c1662031858610940516108c05162004ce2565b52620318676109405162004c7b565b6109405262031801565b50979294959093985095909560005b8281106203191a575050506109205162004c99576108c051516001600160401b03811162002a2357620318bd8160046109005160031b0162005036565b60206108c0510160046109005160031b01600052602060002060005b838110620318fc5750505050620318f09062004c7b565b949295909195620315e5565b82516001600160a01b031681830155602090920191600101620318d9565b62031960906001600160a01b0362031933828562004ce2565b511662031947610940516108c05162004ce2565b52620319566109405162004c7b565b6109405262004c7b565b62031880565b909260208101516026811015620029ab57601603620319c45760c0604062031992920151015162004c8b565b519260005b8451811015620311e657620319be9062000f556001600160a01b0362009e60838962004ce2565b62031997565b60208101516026811015620029ab5760170362031a215760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab5760180362031a8b5760c0604062031a4b920151015162004c8b565b51611fb6805460ff191660011790559260005b8451811015620311e65762031a859062000f556001600160a01b0362009f2c838962004ce2565b62031a5e565b60208193929301516026811015620029ab5760190362031c005760008091604082910160a08082510151805162031bc7575b5050519060e08201519162031ae16200686560c060018060a01b0393015162004c8b565b511690602083519301915af13d1562031bbe573d9062031b018262002edc565b9162031b11604051938462002b1c565b82523d6000602084013e5b1562031b3057506202fbb160209162004c7b565b62004c779062031b9d604051916000805160206203401b833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162031b8c816059946020868601910162002d89565b810103603981018452018262002b1c565b60405162461bcd60e51b815260206004820152918291602483019062002dae565b60609062031b1c565b62031bd29062004c8b565b515162031be1575b8062031abd565b819250620068659062031bf79251015162004c8b565b51903862031bda565b60208101516026811015620029ab57601a0362031c825760a0604062031c2a920151015162004c8b565b5162031c3a60038251146202d58d565b62031c458162004c8b565b519162031c56620138088362004caf565b51916200f6a9576020926202fbb1926001036200a16d576200a14d906200a140611fb191825462006049565b60208101516026811015620029ab57601b036203206d5750919062031cb2611faf54620061966200a1e362033793565b505062031cbe62033857565b506000805b6103e8811062032021575b505062031cda62006172565b9062031ce9613f745462004dfe565b906000946000905b6103e882101562032015578160031b9260ff6007850154161562031dfd5760009660028501541562031de4576000975b62004c9957600485015488101562031de45762031ddd62031dd6899a62031d5062031d879b60048a0162004efa565b60018060a01b0391549060031b1c16806000526003890160205262031d7b8b60406000205462005f19565b9c9062000f4e62033857565b62031dca62031dae62031da260009e60028d01549062005f19565b919062000f4e62033857565b82600052611f476020526200a140604060002091825462006049565b62001b03828b62004ce2565b9962004c7b565b9762031d21565b9290935062031df591965062004c7b565b909462031cf1565b95969392509350505b62031e118262004dfe565b9160009160005b82811062031f7f57505050611f48549162031e38620080c0848462006258565b926000906000905b80821062031f6257505060005b83811062031ecc5750508251929150506001600160401b03821162002a235760209062031e7a8362004f58565b01611f48600052602060002060005b83811062031eae57505050506202fbb16020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162031e89565b6000805b83811062031f1a575b501562031ef2575b62031eec9062004c7b565b62031e4d565b9062031eec9062031f11906001600160a01b0362008248858762004ce2565b91905062031ee1565b6001600160a01b038062031f2f858862004ce2565b51169062031f3e838a62004ce2565b51161462031f575762031f519062004c7b565b62031ed0565b505060013862031ed9565b90916200825662031f789162009b6f8562004e36565b9062031e40565b6000805b85811062031fcd575b501562031fa5575b62031f9f9062004c7b565b62031e18565b9262031f9f9062031fc4906001600160a01b0362008248878662004ce2565b93905062031f94565b6001600160a01b038062031fe2858762004ce2565b51169062031ff1838a62004ce2565b5116146203200a57620320049062004c7b565b62031f83565b505060013862031f8c565b93505092939062031e06565b8060039594951b9060ff6007830154161562032063576200a622620074b962000f55946200a6166203205a9560026200a60c8762005deb565b93929362031cc3565b5093929362031cce565b60208101516026811015620029ab57601c03620320ca5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d03620320f0575b506202fbb160209162004c7b565b919060208301516026811015620029ab57601e03620322d157604083019060a09362032120858451015162004c8b565b515162032131868551015162004caf565b5151036200aeb05762032148858451015162004c8b565b515162032159868551015162004cc0565b5151036200ae34576203217462007a1a868551015162004c8b565b519362032181826202f1b0565b60009660005b8751811015620321ef57620321b26200acf0620321a5838962004ce2565b51620074a9848b62004ce2565b80620321cb575b50620321c59062004c7b565b62032187565b90620321e0620321e89a620321c59362006049565b9a906202f684565b90620321b9565b5096929450945091508062032211575b50506202fbb16020915b9150620320e2565b6203223d60018060a01b0391828451166000526200ad84611f4591826020526040600020549062006049565b82845116600052602052604060002055600080611f4654905b81811062032290575b505091602093916202fbb193156203227b575b505091620321ff565b620322889151166200662e565b388062032272565b836203229c8262004e52565b90549060031b1c168486511614620322bf57620322b99062004c7b565b62032256565b50600191508290506202fbb16203225f565b909160208101516026811015620029ab57601f036203230b57602091620323056200af6460406202fbb19401515162004c8b565b62032209565b60208101516026811015620029ab5760200362032331575b506202fbb160209162032209565b60208101516026811015620029ab57602180910362032352575b5062032323565b602082015160268110156200b0e1576022036203238e5750506202fbb1602091611fb660ff1981541690556203238762005023565b916203234b565b602082015160268110156200b0e157602303620323b5575b50506202fbb160209162032387565b602082015160268110156200b0e157602414620323a657602082015160268110156200b0e157602514620323a657602082959394920151906026821015620329d357506015036201069a5760408401906203241560c08351015162004c8b565b51906203242c60a0620077f3818651015162004c8b565b519362032441835185511462000f4e62033906565b62032454835186511462000f4e62033906565b60005b8351811015620324b0576203246d818662004ce2565b51906103e882101562004c99576003620324aa9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62032457565b509095919560005b8751811015620325db57620324ce818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526203250660406000205462007dae838962004ce2565b9062032513838862004ce2565b51916103e883101562004c995760036203254a9360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62032556818662004ce2565b516103e881101562004c99576003906001600160a01b0362032579848c62004ce2565b5116600052811b016020526203259a6040600020546200686c838962004ce2565b9190620325a8828862004ce2565b51906103e882101562004c9957620325d593600362000f55938d62007e678760018060a01b039262004ce2565b620324b8565b5092620325f3919294506200c6fd90969596620336a2565b9260405190620326038262002b00565b6001825260203681840137516001600160a01b0316620326238262004c8b565b526000945b8051861015620329be576203263e868262004ce2565b51610a80526203264f855162004dfe565b966000946203265f845162004dfe565b6109e05260009460005b88518110156203272f578a89620326996001600160a01b036203268d858462004ce2565b5116610a80516203348a565b1580620326e9575b620326ba575b5050620326b49062004c7b565b62032669565b98620326de9162001b0382859c62007f8f620326b49760018060a01b039262004ce2565b9790508a89620326a7565b5050506103e8610a8051101562004c99576001600160a01b036203270e828b62004ce2565b51166000526003610a8051811b016020528a896040600020541515620326a1565b50909895979498969291939660005b8851811015620327d2576103e8610a8051101562004c99576001600160a01b036203276a828b62004ce2565b51166000526003610a8051811b016020526040600020541562032799575b620327939062004c7b565b6203273e565b996203279390620327c9906001600160a01b03620327b88e8d62004ce2565b511662001b03826109e05162004ce2565b9a905062032788565b50985096959291909396610a80516103e8811015806109a05262004c995760031b600401549862032808620080c0898c62006258565b6108e05260006108a05260006109c0525b6109a05162004c99576109c0518a811015620328e2576203284e6203286b9160006109a0526004610a805160031b0162004efa565b90546109e05160039290921b1c6001600160a01b03169062033539565b156203288a575b620328806109c05162004c7b565b6109c05262032819565b60006109a052620328a86109c0516004610a805160031b0162004efa565b60018060a01b0391549060031b1c16620328c96108a0516108e05162004ce2565b52620328d86108a05162004c7b565b6108a05262032872565b50979294959093985095909560005b8281106203298b575050506109a05162004c99576108e051516001600160401b03811162002a23576203292e816004610a805160031b0162005036565b60206108e051016004610a805160031b01600052602060002060005b8381106203296d5750505050620329619062004c7b565b94929590919562032628565b82516001600160a01b0316818301556020909201916001016203294a565b620329b8906001600160a01b03620329a4828562004ce2565b5116620143046108a0516108e05162004ce2565b620328f1565b5050936202fbb19193506020925091620323a6565b634e487b7160e01b60005260045260246000fd5b8151620329fd906001600160a01b031662006658565b6202f900565b62032a0e8162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462032a3d5762032a379062004c7b565b6202f8ee565b505050600138806202f8f7565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062032ad1575050565b62002bc391600052601f6020600020910160051c81019062004f3f565b90600160401b811162002a2357815481835580821062032b0d57505050565b62002bc392600052601f6020600020918180850160051c840194168062032b3c575b500160051c019062004f3f565b600019908186019182549160200360031b1c1690553862032b2f565b9060ff809160031b9316831b921b19161790565b62032b8462032b7d6000936202f73c565b50620034fe565b92825b8451805182101562032c7a578162032b9f9162004ce2565b516103e881101562004c9957600390811b9460018060a01b0385166000526020918601825262032bdc604096600188600020549101549062005f19565b91901562032c45579062032bf09162006049565b95901562032c0b57505062032c059062004c7b565b62032b87565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b865162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b505092505090565b60005b613f78549081600052613f7691602092808452600393604092858460002001805486101562032de35762032cbe8662032cca9262004efa565b905490881b1c6202f73c565b509560ff6006809801541662032cf2575b505050505062032cec915062004c7b565b62032c85565b8160005283835262032d1a62032d0e8783886000200162004efa565b905490831b1c6202f73c565b509662032d3a876001809a01549285600052878752886000200162004efa565b905490831b1c918360005285855262032d5a886005896000200162004efa565b9054911b1c9060009260649283810293818504149015171562032dcf579062032d839162004f13565b1062032dc7575b62032d96578062032cdb565b6009945060005252600020019060ff19918183825416179055613f73918254161790556000613f71556000613f7255565b508562032d8a565b634e487b7160e01b84526011600452602484fd5b505050505050506000613f7854905b81600052613f76602052600380604060002001805483101562032e6857600662032e2f62032e238560ff9462004efa565b905490851b1c6202f73c565b500154161562032e635762032e448262033078565b90811015620029ab576201514d5762032e5d9062004c7b565b62032df2565b505050565b50505060ff1990613f73600383825416179055600052613f766020526009604060002001908154169055565b613f785490600090828252613f76916020928084526003906040908282852001549562032ec18762002be9565b9662032ed08451988962002b1c565b80885262032ee1601f199162002be9565b013682890137845b88865282825284848720015481101562032f32579062032f278262000f5562032f158897969562033078565b62032f21838d62004ce2565b62005277565b909192935062032ee9565b5050505090919350815b835181101562032fa95762032f52818562004ce2565b518281101562032f9557600180911462032f78575062032f729062004c7b565b62032f3c565b613f73805460ff191690911790555050613f71819055613f725550565b634e487b7160e01b84526021600452602484fd5b50909150613f728054421060001462032fd05750613f739060ff19825416179055613f7155565b9050613f73600160ff1982541617905581613f715555565b1562032ff057565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b156203303d57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b613f785490600091808352613f76806020528260408520600301906203309e9162004efa565b90549060031b1c620330b0816202f73c565b50600101549383865282602052806040872060040190620330d19162004efa565b90549060031b1c9284875280602052816040882060050190620330f49162004efa565b90549060031b1c9487526020526040862060060190620331149162004efa565b90549060031b1c9062033127906202f73c565b506006015460ff16620331735750620331639262005edc62022e5a9383620331536203315b9562005ee3565b969062033035565b929062033035565b11156203316d5790565b50600190565b6200f78d925062033163936203318d6203315b9362005ee3565b949062033035565b90929192620331a5825162004dfe565b600091620331b4815162004dfe565b8390845b86518110156203324f576001600160a01b03620331db816202e57c848b62004ce2565b15806203321a575b620331fb575b50620331f59062004c7b565b620331b8565b8196620332129162008248620331f5948b62004ce2565b9590620331e9565b506103e88a101562004c99578062033233838a62004ce2565b511660005260038a811b016020526040600020541515620331e3565b509295919694509260005b8751811015620332d0576103e886101562004c99576001600160a01b038062033284838b62004ce2565b5116600052600387811b0160205260406000205415620332b1575b50620332ab9062004c7b565b6203325a565b8195620332c8916200e3f8620332ab948c62004ce2565b94906203329f565b5092509450926103e8831015938462004c995760049586600395861b019687549462033301620080c0828862006258565b9460009689889a5b6203347557818b1015620333aa57506000998b620333446203332c838362004efa565b90546001600160a01b0392918e1b1c82168a62033539565b1562033367575b5050906203335c8b94939262004c7b565b9a9091929362033309565b91998c9594939290916203337d908c9062004efa565b9054908d1b1c1662033390828b62004ce2565b526203339c9062004c7b565b9890919293508b386203334b565b9697949a98505091975092506000915b8383106203345057505050506203343b578051926001600160401b038411620334265750620333ea838362005036565b602080910191600052806000209060005b8481106203340a575050505050565b83516001600160a01b03168382015592810192600101620333fb565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203346e9062008256906001600160a01b036200a495868662004ce2565b91620333ba565b603285634e487b7160e01b6000525260246000fd5b9060005b6103e883101562004c99576003600484821b018054831015620173d15782620334b79162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620334db9062004c7b565b6203348e565b9060005b6103e883101562004c99576003611fbc84821b018054831015620173d157826203350f9162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620335339062004c7b565b620334e5565b9060005b82518110156200661f576001600160a01b03806203355c838662004ce2565b5116908316146200660c57620335729062004c7b565b6203353d565b801562001e4f576000190190565b9081519060005b60001983810184811162001e4f5782101562033654576001820180831162001e4f575b848110620335cb575050620335c59062004c7b565b6203358d565b6001600160a01b0380620335e0858962004ce2565b511681620335ef848a62004ce2565b5116146203360a575b50620336049062004c7b565b620335b0565b828692960182811162001e4f5762033604926203364d926203363162033646938b62004ce2565b51166203363f898b62004ce2565b5262033578565b9562033578565b90620335f8565b505090620336628162004dfe565b9060005b81811062033675575090925050565b6203369c906001600160a01b036203368e828862004ce2565b511662001b03828662004ce2565b62033666565b80519160005b60001984810185811162001e4f578210156203375a576001820180831162001e4f575b858110620336e6575050620336e09062004c7b565b620336a8565b620336f2838662004ce2565b51620336ff828762004ce2565b511462033718575b620337129062004c7b565b620336cb565b948181019080821162001e4f576203374b62033752916203373e62033712948962004ce2565b516203363f8a8a62004ce2565b9662033578565b905062033707565b50509091620337698162004dfe565b9060005b8181106203377c575090925050565b806202b5446203378d928762004ce2565b6203376d565b604051620337a18162002a07565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203380f8162002a8f565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620338658162002b00565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b6040516203389f8162002b00565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620338ca8162002a8f565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620339148162002b00565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620339448162002b00565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620339778162002b00565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620339ac8162002b00565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620339e58162002b00565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b60405162033a188162002b00565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b60405162033a478162002b00565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b60405162033a7d8162002b00565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b6026811015620029ab5780156200750a57600181146203316d576002811462033cd5576003811462033ccf576004811462033cc9576005811462033cc3576006811462033cbd576007811462033cb7576008811462033cb1576009811462033cab57600a811462033ca557600b811462033c9f57600c811462033c9957600d811462033c9357600e811462033c8d57600f811462033c87576010811462033c81576011811462033c7b576012811462033c75576013811462033c6f576014811462033c69576015811462033c63576016811462033c5d576017811462033c57576018811462033c51576019811462033c4b57601a811462033c4557601b811462033c3f57601c811462033c3957601d811462033c3357601e811462033c2d57601f811462033c27576020811462033c21576021811462033c1b576022811462033c15576023811462033c0f576024811462033c095760251462033c0457600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200662757600090815b835181101562017ac0576001600160f81b03198062033d0b83876200655e565b51169062033d1a83856200655e565b51160362017ab95762033d2d9062004c7b565b62033ceb565b6040519062033d428262002a8f565b60288252604036602084013760005b6014811062033d5f57505090565b60139080820391821162001e4f57600382901b916001600160fd1b0381160362001e4f5760ff80831162001e4f5760019262033da89084901b6001600160a01b03861662005070565b60f081168282160391821162001e4f5762033dcc9060f41b600f60f81b1662033e35565b82841b916001600160ff1b038416840362001e4f5762033e099160001a62033df584896200655e565b5360f81b6001600160f81b03191662033e35565b92810180911162001e4f5762033e2862033e2f9360001a91866200655e565b5362004c7b565b62033d51565b60f81c600a81101562033e5e5760300160ff811162001e4f5760f81b6001600160f81b03191690565b60570160ff811162001e4f5760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65305d206c656e677468206973206e6f742032000000000000000000000000000034dd862f2dd4c33543972cb453e26b9cc23a6eb518176c0de5db12d08007dc6d617665203120656c656d656e7400000000000000000000000000000000000000dd388e0eb473c306304080e96aea031c0fb4686a37f7b1a3c8a2301cd0627f0b7420686176652074776f20656c656d656e747300000000000000000000000000546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f742031000000000000000000000000000000742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f74202e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973748b3bb33683ac4daad017d30a0e9972b15e6854cd1f296e14295598f57ce03d506470626d4cb7d88e800a628455fe3f45216f254e8294f25d17ea4ac7e2f4f0a35d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d70546865206c656e677468206f6620746f6b656e436c617373417272617920616e6c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a2646970667358221220b685dcba65bc09a69896a133967a43e37ffb4ec0bce8c14fedd584da1a59c96064736f6c63430008130033", - "deployedBytecode": "0x610ba08060405260043610156200001557600080fd5b600090813560e01c908163036ee8501462002925575080630fda3e1e146200288d57806310ade3ea146200285e5780631797631d14620027d75780631c75255a146200277157806323b65c7814620026ea5780632514a6b414620024c45780632eeb063b14620022f45780633fb18aec146200228a57806356424cf4146200226b5780635c00d98714620022485780635d0b184914620002055780635f1231ea146200215e5780635f5d5f0014620020d7578063681ece9d14620020925780636c0d4fa41462001eff5780637daa10ce1462001ee25780638129fc1c1462001b1357806383e4cccf14620018aa578063864f9f7a146200186c57806386ad77e2146200150b5780638c7a63ae146200147a578063942d59fa14620012975780639f36145f1462001211578063a064c4f114620011e6578063acf80bc414620011a8578063aec2668714620010be578063aefca42a146200109d578063c41f94821462001055578063c591aa981462001007578063d5a172f21462000fdb578063d6a93c511462000f89578063de0bc5721462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e362005284565b50610c80620001f162002b40565b62000200604051809262002975565bf35b80fd5b503462000202578060031936011262000202576020613f7854604051908152f35b5060031960203682011262000e60576001600160401b036004351162000e6057606090600435360301126200020257604051620002638162002a8f565b6200027360043560040162002960565b81526004356024013560e08190526001600160401b03811162000c5457600435013660238201121562000c54576004620002b4910135806101405262002be9565b90620002c4604051928362002b1c565b6101405182526020820160a0526101405160e05160043501906024369160051b8301011162000c585760240161012052825b6101405160051b60e05160043501906024610120519183010181101562000e6857356101008190526001600160401b03811162000c5457606091013603602319011262000202576200034f604051806101805262002a8f565b6200036860246101005160e05160043501010162002960565b610180515260446101005160e05160043501010135602681101562000e605760206101805101526101005160e051600435010160648101356101605260018060401b0360648201351162000e60576101006064820135909101360360231901126200020257620003de6040518060c05262002a55565b610160516101005160e0516004350101016001600160401b0360248201351162000e6057620004179060243691818101350101620048c1565b60c05152610160516101005160e0516004350101019160448301359260018060401b03841162000c545736604385830101121562000c5457620004606024858301013562002be9565b9162000470604051938462002b1c565b6024858301013583526020830190610160516101005160e0516004350101013660446024898701013560051b81840135840101011162000e6457806044809201350101915b6044610160516101005160e0516004350101016024898701013560051b9082810135010101831015620004fd5760208091620004f1856200494c565b815201920191620004b5565b5060c051602001939093525050610160516101005160e0519395600435909401010192506001600160401b0360648401351162000c58573660436064850135850101121562000c58576024606484013584010135906200055d8262002be9565b906200056d604051928362002b1c565b828252602082016064860135610160516101005160e051600435010101013660448660051b8301011162000c5057604401905b6064870135610160516101005160e0516004350101010160448660051b820101831015620006c1576001600160401b03833511620006bd5760e08335820136036043190112620006bd5760405191620005f98362002aab565b6001600160401b03843583016044013511620006b95762000626366044863585018181013501016200495a565b835283358201606481013560208501526084810135604085015260a48101356060850152620006589060c4016200494c565b60808401526001600160401b038435830160e4013511620006b9576020928392620006a8906101049062000699368935830160e48101350160440162002ef8565b60a0850152873501016200494c565b60c0820152815201910190620005a0565b8980fd5b8880fd5b505050929493509050604060c0510152610160516101005160e0516004350101019160018060401b0360848401351162000202573660436084850135850101121562000202576200072e62000720602460848601358601013562002be9565b604051806101a05262002b1c565b6101a0516024608485013585010135905260206101a05101916084840135610160516101005160e05160043501010101366044602460848801358801013560051b8301011162000c5457604401608052925b6084810135610160516101005160e0516004350101010192608051936044602460848501358501013560051b82010185101562000c5c576001600160401b0385351162000c585761010085359091013603604319011262000c5457604051620007e98162002a55565b604485356084850135610160516101005160e05160043501010101010135600681101562000c4c578152606485356084850135610160516101005160e05160043501010101010135602082015284356084840135610160516101005160e05160043501010101019460018060401b0360848701351162000c4c573660636084880135880101121562000c4c576200088a604460848801358801013562002be9565b966200089a604051988962002b1c565b604460848801358801013588526020880190608488013583356084880135610160516101005160e051600435010101010101366064604460848c01358c01013560051b8301011162000c5057606401915b608489013584356084890135610160516101005160e0516004350101010101016064604460848c01358c01013560051b82010184101562000b36576001600160401b03843511620006bd5760c08435820136036063190112620006bd5760405190620009578262002a39565b843581016064810135835260056084909101351015620006b9578435810160848101356020840152600460a4909101351015620006b9578435810160a4810135604084015260c481013560608401526001600160401b0360e49091013511620006b957620009d2368635830160e4810135016064016200495a565b60808301526001600160401b0385358201610104013511620006b9576080853582016101048101350136036063190112620006b9576040519062000a168262002a07565b6001600160401b038635820161010481013501606401351162000b325762000a52366064610104893585019081013501818101350101620048c1565b82526001600160401b038635820161010481013501608401351162000b325762000a90368735830161010481013501608481013501606401620049c0565b60208301526001600160401b03863582016101048101350160a401351162000b325762000ad136873583016101048101350160a48101350160640162004a4b565b60408301526001600160401b03863582016101048101350160c401351162000b325760209384939092909162000b1c9036908935016101048101350160c48101350160640162002ef8565b606082015260a0820152815201920191620008eb565b8a80fd5b505096505090919295604083015260a481356084880135610160516101005160e05160043501010101010135606083015280356084870135610160516101005160e051600435010101010160018060401b0360c48201351162000c4c57610124602094939262000bb562000c33936044369160c4810135010162002ef8565b608085015262000be160e4823560848c0135610160516101005160e0516004350101010101016200494c565b60a085015262000c0e610104823560848c0135610160516101005160e0516004350101010101016200494c565b60c0850152356084890135610160516101005160e0516004350101010101016200494c565b60e0820152815201916020608051016080529262000780565b8480fd5b8780fd5b8280fd5b8380fd5b50506101a05160c0516060015250610160516101005160e05194956004359095010101929091506001600160401b0360a48401351162000e605736604360a4850135850101121562000e605762000cbd602460a48501358501013562002be9565b9062000ccd604051928362002b1c565b602460a4850135850101358252602082019060a4850135610160516101005160e05160043501010101366044602460a48901358901013560051b8301011162000c4c57604401915b610160516101005160e05160043501010160a48701359081019087016024013560051b0160440183101562000d605760058335101562000c4c57823581526020928301920162000d15565b50935050929092608060c0510152610160516101005160e05160043501010160018060401b0360c48201351162000c585762000da7906024369160c48101350101620049c0565b60c05160a00152610160516101005160e0516004350101016001600160401b0360e48201351162000c585762000de8906024369160e4810135010162004a4b565b60c080510152610160516101005160e0516004350101016001600160401b036101048201351162000c585762000e2a9060243691610104810135010162002ef8565b60e060c051015260c05160406101805101526101805160a05152602060a0510160a05260206101205101610120529091620002f6565b5080fd5b8580fd5b60208401858152849084600435604401356001600160401b03811162000e605762000e9b90600436918135010162002ef8565b604084015282516001600160a01b03919062000ef490831662000eeb62000ecc62000ec63362033d33565b62004b44565b62000ee462000ede878a511662033d33565b62004baa565b9062004c01565b90331462004c48565b8251805182101562000f61579062000f5562000f5b928462000f1884339362004ce2565b5151161462000f4e62000f2f62000ec63362033d33565b62000ee462000ede8862000f45888c5162004ce2565b51511662033d33565b9062004c48565b62004c7b565b62000ef4565b62000f8562000f7086620067d6565b60405191829160208352602083019062002dae565b0390f35b503462000202578060031936011262000202575b6103e8811062000fb3575b602090604051908152f35b60ff60078260031b0154161562000fd55762000fcf9062004c7b565b62000f9d565b62000fa8565b50346200020257806003193601126200020257613f70546040516001600160a01b039091168152602090f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b036200103662002944565b168152613f778452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c06200107860043562006274565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b503462000202578060031936011262000202576020613f7254604051908152f35b50346200020257806003193601126200020257613f7590815491620010e38362002be9565b91620010f3604051938462002b1c565b8383526020938484018093835285832083915b838310620011705750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620011415785850386f35b9091929382806200115f600193603f198a8203018652885162002dae565b960192019601959291909262001133565b600188819260409a99979a5162001195816200118d818962002c3e565b038262002b1c565b8152019201920191909693959662001106565b50346200020257602036600319011262000202576020906040906001600160a01b03620011d462002944565b168152611f4783522054604051908152f35b5034620002025760203660031901126200020257602062001209600435620060c4565b604051908152f35b503462000202576020366003190112620002025760406200126c916004358152613f766020522062001243816200369d565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003202565b936020860152604085015262001288606085018383166200349d565b60081c16151560808301520390f35b5034620002025760208060031936011262000e6057604051620012ba8162002a72565b60405192620012c98462002a8f565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e083015280610100809301526004358152613f7683526040902091604051926200132a8462002a72565b62001335816200369d565b84526200134560038201620034ab565b848301908152926200135a60048301620034ab565b60408601908152956200137060058401620034ab565b868201908152926200138560068201620034ab565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff8816620013c1908762005277565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d01620013f29162003202565b9451601f198d8703810160408f0152956200140d9162002f50565b905191858d830301908d0152620014249162002f50565b905190838b82030160808c01526200143c9162002f50565b9051918982030160a08a0152620014539162002f50565b955160c08801525160e0870152519085016200146f916200349d565b511515908301520390f35b5034620002025760203660031901126200020257600435906103e8821015620014f7575060031b6001810154600282015491620014ed6005620014ce6006840154936200118d604051809481930162002c3e565b6040519485948552602085015260806040850152608084019062002dae565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b50346200020257806003193601126200020257611f4280546200152e8162002be9565b916200153e604051938462002b1c565b81835283526020808420849184015b83831062001718578585611f43805490620015688262002be9565b9362001578604051958662002b1c565b82855260208501918152602081209080925b848410620015c057620015b18662000f858960405193849360408552604085019062003038565b90838203602085015262003038565b604051620015ce8162002a55565b620015de60ff8554168262003574565b600184015460208201526002840154620015f88162002be9565b9062001608604051928362002b1c565b80825260208201600287018652602086209086905b83821062001695575050505060019282602092604060069501526003870154606082015260405162001658816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301930192916200158a565b60086020600192604051620016aa8162002a39565b8654815260ff85880154818116620016c28162002f45565b85840152851c16620016d481620029a0565b604082015260028701546060820152620016f160038801620034ab565b608082015262001704600488016200363b565b60a08201528152019301910190916200161d565b604051620017268162002a55565b6200173660ff8454168262003574565b60018301546020820152600283018054620017518162002be9565b9162001761604051938462002b1c565b81835289526020808a20908a9084015b838210620017e95750505050600192826020926040600695015260038601546060820152604051620017ac816200118d8160048b0162002c3e565b608082015260ff6005870154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019201920191906200154d565b60086020600192604051620017fe8162002a39565b8654815260ff85880154818116620018168162002f45565b85840152851c166200182881620029a0565b6040820152600287015460608201526200184560038801620034ab565b608082015262001858600488016200363b565b60a082015281520193019101909162001771565b50346200020257602036600319011262000202576020906040906001600160a01b036200189862002944565b168152611f4583522054604051908152f35b5034620002025760208060031936011262000e60578160043591620018ed4784111562000f4e620018db8662005091565b620018e64762005091565b9062004d2a565b33825262001958611f4580835262001931604085205486111562000f4e620019158862005091565b3388528487526200192a604089205462005091565b9062004d96565b3384528083526200194785604086205462005056565b929062000f4e620019158862005091565b3384528252806040842055156200199a575b508080809381811562001990575b3390f115620019845780f35b604051903d90823e3d90fd5b506108fc62001978565b9050611f46805491620019ad8362004dfe565b918593865b81811062001aa0575050620019c78462004dfe565b805192906001600160401b03841162001a8c579080849392620019ed8a98979662004f93565b0191865280862090865b84811062001a6d575050505050825b82811062001a165750506200196a565b9192509062001a639062000f556001600160a01b0362001a37838662004ce2565b511662001a448362004e52565b90919082549060031b9160018060a01b03809116831b921b1916179055565b9084929162001a06565b83516001600160a01b03168184015589975092810192600101620019f7565b634e487b7160e01b88526041600452602488fd5b62001aab8162004e52565b90546001600160a01b03916003913391831b1c83160362001ada575b505062001ad49062004c7b565b620019b2565b9662001b0a91839862001af162001ad49562004e52565b9054911b1c1662001b03828962004ce2565b5262004c7b565b95903862001ac7565b50346200020257806003193601126200020257613f7080546001600160a01b03191633179055613f73805460ff19166001908117909155604051909190819062001b5d8162002ac7565b5290611f428054600082558062001e79575b508252818060405162001b828162002ac7565b5262001e6557611f438054600082558062001de6575b508252612710613f745562001dd862001bb062005bbd565b836040519162001bc08362002ac7565b81835262001cc86040519162001bd68362002ac7565b8383526040519462001be88662002ac7565b8486526040519362001bfa8562002ac7565b8585526040519462001c0c8662002ac7565b8686526040519162001c1e8362002a07565b8252602097888301526040820152606094858201526040519162001c428362002a39565b8683526003888401528660408401528686840152608083015260a082015262001c6b8262004c8b565b5262001c778162004c8b565b506040519062001c878262002a55565b6004825287868301526040820152838382015260405162001ca88162002ac7565b84815260808201528660a08201528660c08201528660e082015262005cc9565b62001cd262005bbd565b60405162001ce08162002ac7565b83815260405162001cf18162002ac7565b84815260405162001d028162002ac7565b85815260405162001d138162002ac7565b8681526040519162001d258362002ac7565b8783526040519362001d378562002a07565b8452888401526040830152848201526040519162001d558362002a39565b8583526003878401528560408401528585840152608083015260a082015262001d7e8262004c8b565b5262001d8a8162004c8b565b50856040519462001d9b8662002a55565b60058652850152604084015282015260405162001db88162002ac7565b84815260808201528260a08201528260c08201528360e082015262005d15565b611388611faf55611fb05580f35b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001e1657505062001b98565b8086849255868682015562001e2e60028201620054a7565b86600382015562001e42600482016200533c565b8660058201550162001e06565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001e4f5760009382855260208520908101905b81811062001ea957505062001b6f565b8086849255868682015562001ec160028201620054a7565b86600382015562001ed5600482016200533c565b8660058201550162001e99565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001f1c62002b40565b6040519162001f2b8362002a55565b611faf548352611fb0549060209182850152611fb1546040850152611fb254606085015260405180611fb390848254918281520191845284842090845b81811062002074575050508162001f8191038262002b1c565b6080850152611fb4805462001f968162002be9565b9162001fa6604051938462002b1c565b818352835283832083908584015b83831062002046575050505060a085015260405180928391611fb591808354928381520192855280852094905b828210620020225750505062001ffa9250038262002b1c565b60c083015260ff611fb65416151560e083015262000f85611fb7546040519384938462002e2e565b85546001600160a01b03168452600195860195879550938101939091019062001fe1565b600187819260409998995162002062816200118d818962002c3e565b81520192019201919095949562001fb4565b82546001600160a01b03168452928601926001928301920162001f68565b5034620002025760203660031901126200020257600435906103e8821015620014f75762000f85620020ca60048460031b0162002b8b565b60405191829182620029c1565b50346200020257806003193601126200020257604051611f4180548083529083526020808301937f68ffef30f3d6829c9938575e8bc340aa2a3398e927d767947dd5024d1581d59292915b8282106200213d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002122565b503462000202576020908160031936011262000202576040906200218162002944565b8160608451620021918162002a07565b82815286810183905285810182905201526001600160a01b03168152611f4083522060405190620021c28262002a07565b6200223d81549160ff83161515845260ff8585019360081c16151583526002604051916200220183620021f9816001850162002c3e565b038462002b1c565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002dae565b905160808301520390f35b503462000202576020366003190112620002025760206200120960043562005deb565b5034620002025780600319360112620002025760206200120962006172565b50346200020257604036600319011262000202576001600160401b0360043581811162000c5457620022c190369060040162002ef8565b9160243591821162000202576020620022ea84620022e3366004870162002ef8565b9062006570565b6040519015158152f35b50346200020257806003193601126200020257604051620023158162002ac7565b604051613f0383825b60648210620024ad57505050620023358162002ae3565b815260405191620023468362002a55565b613f67548352613f68549060209182850152613f69546040850152613f6a54606085015260405180613f6b90848254918281520191845284842090845b8181106200248f57505050816200239c91038262002b1c565b6080850152613f6c8054620023b18162002be9565b91620023c1604051938462002b1c565b818352835283832083908584015b83831062002461575050505060a085015260405180928391613f6d91808354928381520192855280852094905b8282106200243d57505050620024159250038262002b1c565b60c083015260ff613f6e5416151560e083015262000f85613f6f546040519384938462002e2e565b85546001600160a01b031684526001958601958795509381019390910190620023fc565b60018781926040999899516200247d816200118d818962002c3e565b815201920192019190959495620023cf565b82546001600160a01b03168452928601926001928301920162002383565b60016020819285548152019301910190916200231e565b5034620002025760208060031936011262000e6057600435620024f34782111562000f4e620018db8462005091565b33835282808080611f479485875262002538604083205482111562000f4e6200251c8462005091565b338652898b5262002531604087205462005091565b906200520b565b338252858752620025786200255282604085205462005056565b919062000f4e620025638562005091565b3387528a8c5262002531604088205462005091565b3383528688526040832055818115620026e0575b3390f115620026d5573383528152604082205415620025a9575080f35b611f48805491620025ba8362004dfe565b918493855b8181106200267b575050620025d48462004dfe565b805192906001600160401b03841162002667578190620025f48562004f58565b0191865280862090865b8481106200264b575050505050825b8281106200261b5750505080f35b620026459062000f556001600160a01b0362002638838662004ce2565b511662001a448362004e36565b6200260d565b83516001600160a01b03168382015592810192600101620025fe565b634e487b7160e01b87526041600452602487fd5b620026868162004e36565b90546001600160a01b03916003913391831b1c831603620026b5575b5050620026af9062004c7b565b620025bf565b96620026cc91839862001af1620026af9562004e36565b959038620026a2565b6040513d84823e3d90fd5b506108fc6200258c565b50346200020257806003193601126200020257604051611f4680548083529083526020808301937f721f0813146d89d6f0f0dbb1451dd10acd9dadea7c30d73459c3079bc665b9a892915b828210620027505762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002735565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000c54576103e8821015620027c3579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b50346200020257806003193601126200020257604051611f4880548083529083526020808301937f54b856f7ae688db523226c6d190d6c3f1578f46968ba7de0cc9e487420dbf24c92915b8282106200283d5762000f8585620020ca8189038262002b1c565b83546001600160a01b03168652948501946001938401939091019062002822565b50346200020257806003193601126200020257602060ff613f735416604051906200288981620029a0565b8152f35b50346200020257602090816003193601126200020257620028ad62002944565b620028b762005284565b506001600160a01b03168152611f498252604080822090519190620028dc8362002ac7565b60405193849192915b606483106200290f57610c808587620028fe8162002ae3565b815262000200604051809262002975565b60018281928654815201940192019192620028e5565b90503462000e60578160031936011262000e6057602090613f71548152f35b600435906001600160a01b03821682036200295b57565b600080fd5b35906001600160a01b03821682036200295b57565b516000915b606483106200298857505050565b6001908251815260208091019201920191906200297a565b60041115620029ab57565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b828110620029e9575050505090565b83516001600160a01b031685529381019392810192600101620029da565b608081019081106001600160401b0382111762002a2357604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762002a2357604052565b61010081019081106001600160401b0382111762002a2357604052565b61012081019081106001600160401b0382111762002a2357604052565b606081019081106001600160401b0382111762002a2357604052565b60e081019081106001600160401b0382111762002a2357604052565b602081019081106001600160401b0382111762002a2357604052565b610c8081019081106001600160401b0382111762002a2357604052565b604081019081106001600160401b0382111762002a2357604052565b601f909101601f19168101906001600160401b0382119082101762002a2357604052565b6040519062002b4f8262002ac7565b60405182611f4b6000835b6064821062002b745750505062002b718262002ae3565b52565b600160208192855481520193019101909162002b5a565b9060405191828154918282526020928383019160005283600020936000905b82821062002bc55750505062002bc39250038362002b1c565b565b85546001600160a01b03168452600195860195889550938101939091019062002baa565b6001600160401b03811162002a235760051b60200190565b90600182811c9216801562002c33575b602083101462002c1d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162002c11565b906000929180549162002c518362002c01565b91828252600193848116908160001462002cb8575060011462002c75575b50505050565b90919394506000526020928360002092846000945b83861062002ca357505050500101903880808062002c6f565b80548587018301529401938590820162002c8a565b9294505050602093945060ff191683830152151560051b0101903880808062002c6f565b90815462002cea8162002be9565b9260409362002cfc8551918262002b1c565b828152809460208092019260005281600020906000935b85851062002d2357505050505050565b6001848192845162002d3b816200118d818a62002c3e565b81520193019401939162002d13565b90815180825260208080930193019160005b82811062002d6b575050505090565b83516001600160a01b03168552938101939281019260010162002d5c565b60005b83811062002d9d5750506000910152565b818101518382015260200162002d8c565b9060209162002dc98151809281855285808601910162002d89565b601f01601f1916010190565b90815180825260208092019182818360051b85019501936000915b84831062002e015750505050505090565b909192939495848062002e1d83856001950387528a5162002dae565b980193019301919493929062002df0565b93929162002e4085610ca09362002975565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002ecc62002e956080840151610100610d408a0152610dc089019062002d4a565b62002eb560a085015191610cbf1992838b830301610d608c015262002dd5565b9060c08501519089830301610d808a015262002d4a565b9101511515610da0860152930152565b6001600160401b03811162002a2357601f01601f191660200190565b81601f820112156200295b5780359062002f128262002edc565b9262002f22604051948562002b1c565b828452602083830101116200295b57816000926020809301838601378301015290565b60051115620029ab57565b90815180825260208080930193019160005b82811062002f71575050505090565b83518552938101939281019260010162002f62565b90815180825260208092019182818360051b82019501936000915b84831062002fb25750505050505090565b909192939495848062002fce83856001950387528a5162002f50565b980193019301919493929062002fa1565b90815180825260208092019182818360051b82019501936000915b8483106200300b5750505050505090565b90919293949584806200302783856001950387528a5162002d4a565b980193019301919493929062002ffa565b90815180825260208092019081926005928183851b82019601946000915b84831062003068575050505050505090565b9091929394959681810383528751906101008082018351906006821015620029ab5783929189945283850151848401528a60409182870151938386015283518091528561012082818801941b87010194019260005b82811062003128575050505050928291620030f260019560608085015190840152608080850151908483039085015262002dae565b9160a08082015115159083015260c08082015115159083015260e080910151151591015299019301930191959493929062003056565b9193959680620031ee600193959761011f198b82030189528951908151815283820151620031568162002f45565b84820152878201516200316981620029a0565b88820152606090818301518282015281620031de620031cd620031bc60806200319f8189015160c080848a015288019062002f50565b9560a0809901519881880391015287519080875286019062002dd5565b888701518582038a87015262002f86565b8b8601518482038d86015262002fdf565b9301519181840391015262002dae565b970195019101918b969594939192620030bd565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620032645750505050906040620032619392015190604081840391015262002dae565b90565b858703607f19018352835180516001600160a01b0316885260208101519497939492939192906026821015620029ab57604091602084015201519060606040820152620032c08251610100606084015261016083019062002dd5565b602083810151838303605f190160808501528051808452928201929101906000905b80821062003482575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b828110620033fd57505050506060840151838203605f190160c085015262003341925062003038565b608083015190605f198382030160e0840152602080835192838152019201906000905b808210620033d957505050620033cc8360209360e0620033b56200339d879660a060019a0151605f198683030161010087015262002f86565b60c0850151848203605f190161012086015262002fdf565b92015190610140605f198285030191015262002dae565b980194019291016200323b565b9091926020806001928651620033ef8162002f45565b815201940192019062003364565b90919293602080600192601f19868203018852885190620034666200342b835160e080855284019062002f50565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002dae565b60c0928301511515919092015297019695019392910162003318565b909192602080600192865115158152019401920190620032e2565b906003821015620029ab5752565b9060405191828154918282526020928383019160005283600020936000905b828210620034e35750505062002bc39250038362002b1c565b855484526001958601958895509381019390910190620034ca565b906040516200350d8162002aab565b60c060ff600683956200352081620034ab565b8552600181015460208601526002810154604086015260038101546060860152826004820154161515608086015260405162003565816200118d816005860162002c3e565b60a08601520154161515910152565b6006821015620029ab5752565b9081546200358f8162002be9565b926200359f604051948562002b1c565b818452600090815260208082208186015b848410620035bf575050505050565b6001838192620035cf85620034ab565b815201920193019290620035b0565b908154620035ec8162002be9565b92620035fc604051948562002b1c565b818452600090815260208082208186015b8484106200361c575050505050565b60018381926200362c8562002b8b565b8152019201930192906200360d565b90600360606040516200364e8162002a07565b6200369981956200365f8162002cdc565b83526200366f6001820162003581565b60208401526200368260028201620035de565b6040840152620021f9604051809681930162002c3e565b0152565b90604051620036ac8162002a8f565b82546001600160a01b03168152600183018054919384929091620036d08262002be9565b91620036e0604051938462002b1c565b80835260208301916000526020600020916000905b82821062003722575050505091620036996040926002946020840152620021f98451809681930162002c3e565b604051620037308162002a8f565b84546001600160a01b038116825260a01c60ff166026811015620029ab576020820152604051620037618162002a55565b6200376f6001870162002cdc565b815260028601604051808260208294549384815201906000526020600020926000905b80601f830110620046ef57620038cb945491818110620046d8575b818110620046be575b818110620046a4575b8181106200468a575b81811062004671575b81811062004657575b8181106200463d575b81811062004623575b81811062004609575b818110620045ef575b818110620045d5575b818110620045bb575b818110620045a1575b81811062004587575b8181106200456d575b81811062004553575b81811062004539575b8181106200451f575b81811062004505575b818110620044eb575b818110620044d1575b818110620044b7575b8181106200449d575b81811062004483575b81811062004469575b8181106200444f575b81811062004435575b8181106200441b575b81811062004401575b818110620043e7575b818110620043cd575b10620043bc575b50038262002b1c565b6020820152600386018054620038e18162002be9565b91620038f1604051938462002b1c565b81835260208301906000526020600020906000905b8382106200439b57505050506040820152600486018054620039288162002be9565b9162003938604051938462002b1c565b81835260208301906000526020600020906000905b8382106200423e57505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003f355784600997946020979460019a979462003ac494549181811062003f17575b81811062003ef6575b81811062003ed5575b81811062003eb4575b81811062003e94575b81811062003e73575b81811062003e52575b81811062003e31575b81811062003e10575b81811062003def575b81811062003dce575b81811062003dad575b81811062003d8c575b81811062003d6b575b81811062003d4a575b81811062003d29575b81811062003d08575b81811062003ce7575b81811062003cc6575b81811062003ca5575b81811062003c84575b81811062003c63575b81811062003c42575b81811062003c21575b81811062003c00575b81811062003bdf575b81811062003bbe575b81811062003b9d575b81811062003b7c575b81811062003b5b575b81811062003b3a575b1062003b1f5750038262002b1c565b608082015262003ad760068a0162003581565b60a082015262003aea60078a01620035de565b60c082015260405162003b06816200118d8160088e0162002c3e565b60e08201526040820152815201940191019092620036f5565b90889160f81c62003b308162002f45565b81520138620038c2565b928a8d9160ff8560f01c1662003b508162002f45565b815201930162003ab5565b928a8d9160ff8560e81c1662003b718162002f45565b815201930162003aac565b928a8d9160ff8560e01c1662003b928162002f45565b815201930162003aa3565b928a8d9160ff8560d81c1662003bb38162002f45565b815201930162003a9a565b928a8d9160ff8560d01c1662003bd48162002f45565b815201930162003a91565b928a8d9160ff8560c81c1662003bf58162002f45565b815201930162003a88565b928a8d9160ff8560c01c1662003c168162002f45565b815201930162003a7f565b928a8d9160ff8560b81c1662003c378162002f45565b815201930162003a76565b928a8d9160ff8560b01c1662003c588162002f45565b815201930162003a6d565b928a8d9160ff8560a81c1662003c798162002f45565b815201930162003a64565b928a8d9160ff8560a01c1662003c9a8162002f45565b815201930162003a5b565b928a8d9160ff8560981c1662003cbb8162002f45565b815201930162003a52565b928a8d9160ff8560901c1662003cdc8162002f45565b815201930162003a49565b928a8d9160ff8560881c1662003cfd8162002f45565b815201930162003a40565b928a8d9160ff8560801c1662003d1e8162002f45565b815201930162003a37565b928a8d9160ff8560781c1662003d3f8162002f45565b815201930162003a2e565b928a8d9160ff8560701c1662003d608162002f45565b815201930162003a25565b928a8d9160ff8560681c1662003d818162002f45565b815201930162003a1c565b928a8d9160ff8560601c1662003da28162002f45565b815201930162003a13565b928a8d9160ff8560581c1662003dc38162002f45565b815201930162003a0a565b928a8d9160ff8560501c1662003de48162002f45565b815201930162003a01565b928a8d9160ff8560481c1662003e058162002f45565b8152019301620039f8565b928a8d9160ff8560401c1662003e268162002f45565b8152019301620039ef565b928a8d9160ff8560381c1662003e478162002f45565b8152019301620039e6565b928a8d9160ff8560301c1662003e688162002f45565b8152019301620039dd565b928a8d9160ff8560281c1662003e898162002f45565b8152019301620039d4565b928a8d9160ff85831c1662003ea98162002f45565b8152019301620039cb565b928a8d9160ff8560181c1662003eca8162002f45565b8152019301620039c2565b928a8d9160ff8560101c1662003eeb8162002f45565b8152019301620039b9565b928a8d9160ff8560081c1662003f0c8162002f45565b8152019301620039b0565b928a8d9160ff851662003f2a8162002f45565b8152019301620039a7565b926001610400602092865460ff811662003f4f8162002f45565b825260ff8160081c1662003f638162002f45565b8583015260ff8160101c1662003f798162002f45565b604083015260ff8160181c1662003f908162002f45565b606083015260ff81861c1662003fa68162002f45565b608083015260ff8160281c1662003fbd8162002f45565b60a083015260ff8160301c1662003fd48162002f45565b60c083015262003fea60ff8260381c1662002f45565b60ff8160381c1660e083015260ff8160401c16620040088162002f45565b61010083015260ff8160481c16620040208162002f45565b61012083015260ff8160501c16620040388162002f45565b61014083015260ff8160581c16620040508162002f45565b61016083015260ff8160601c16620040688162002f45565b61018083015260ff8160681c16620040808162002f45565b6101a083015260ff8160701c16620040988162002f45565b6101c083015260ff8160781c16620040b08162002f45565b6101e083015260ff8160801c16620040c88162002f45565b61020083015260ff8160881c16620040e08162002f45565b61022083015260ff8160901c16620040f88162002f45565b61024083015260ff8160981c16620041108162002f45565b61026083015260ff8160a01c16620041288162002f45565b61028083015260ff8160a81c16620041408162002f45565b6102a083015260ff8160b01c16620041588162002f45565b6102c083015260ff8160b81c16620041708162002f45565b6102e083015260ff8160c01c16620041888162002f45565b61030083015260ff8160c81c16620041a08162002f45565b61032083015260ff8160d01c16620041b88162002f45565b61034083015260ff8160d81c16620041d08162002f45565b61036083015260ff8160e01c16620041e88162002f45565b61038083015260ff8160e81c16620042008162002f45565b6103a083015260ff8160f01c16620042188162002f45565b6103c083015260f81c6200422c8162002f45565b6103e08201520194019201916200397e565b6040516200424c8162002a55565b6200425c60ff8554168262003574565b60018401546020820152600284018054620042778162002be9565b9162004287604051938462002b1c565b81835260208301906000526020600020906000905b838210620043145750505050600192826020926040600695015260038701546060820152604051620042d7816200118d8160048c0162002c3e565b608082015260ff6005880154818116151560a0840152818160081c16151560c084015260101c16151560e08201528152019301910190916200394d565b600190602060405191620043288362002a39565b85548352838601549260ff8416620043408162002f45565b8382015260ff600894851c166200435781620029a0565b6040820152600287015460608201526200437460038801620034ab565b608082015262004387600488016200363b565b60a08201528152019301910190916200429c565b60076020600192620043ad86620034fe565b81520193019101909162003906565b60f81c1515815260200138620038c2565b92602060019160ff8560f01c1615158152019301620038bb565b92602060019160ff8560e81c1615158152019301620038b2565b92602060019160ff8560e01c1615158152019301620038a9565b92602060019160ff8560d81c1615158152019301620038a0565b92602060019160ff8560d01c161515815201930162003897565b92602060019160ff8560c81c16151581520193016200388e565b92602060019160ff8560c01c161515815201930162003885565b92602060019160ff8560b81c16151581520193016200387c565b92602060019160ff8560b01c161515815201930162003873565b92602060019160ff8560a81c16151581520193016200386a565b92602060019160ff8560a01c161515815201930162003861565b92602060019160ff8560981c161515815201930162003858565b92602060019160ff8560901c16151581520193016200384f565b92602060019160ff8560881c161515815201930162003846565b92602060019160ff8560801c16151581520193016200383d565b92602060019160ff8560781c161515815201930162003834565b92602060019160ff8560701c16151581520193016200382b565b92602060019160ff8560681c161515815201930162003822565b92602060019160ff8560601c161515815201930162003819565b92602060019160ff8560581c161515815201930162003810565b92602060019160ff8560501c161515815201930162003807565b92602060019160ff8560481c1615158152019301620037fe565b92602060019160ff8560401c1615158152019301620037f5565b92602060019160ff8560381c1615158152019301620037ec565b92602060019160ff8560301c1615158152019301620037e3565b92602060019160ff8560281c1615158152019301620037da565b92602060019160ff85831c1615158152019301620037d1565b92602060019160ff8560181c1615158152019301620037c8565b92602060019160ff8560101c1615158152019301620037bf565b92602060019160ff8560081c1615158152019301620037b6565b92602060019160ff851615158152019301620037ad565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003792565b9080601f830112156200295b57813590620048dc8262002be9565b92620048ec604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b8483106200491c5750505050505090565b82356001600160401b0381116200295b578691620049408484809489010162002ef8565b8152019201916200490b565b359081151582036200295b57565b81601f820112156200295b57803591620049748362002be9565b9262004984604051948562002b1c565b808452602092838086019260051b8201019283116200295b578301905b828210620049b0575050505090565b81358152908301908301620049a1565b9080601f830112156200295b57813590620049db8262002be9565b92620049eb604051948562002b1c565b828452602092838086019160051b830101928084116200295b57848301915b84831062004a1b5750505050505090565b82356001600160401b0381116200295b57869162004a3f848480948901016200495a565b81520192019162004a0a565b9080601f830112156200295b5781359162004a668362002be9565b9260409262004a788451958662002b1c565b8185526020938486019185600594851b860101948186116200295b57868101935b86851062004aac57505050505050505090565b84356001600160401b0381116200295b57820183603f820112156200295b57888101359062004adb8262002be9565b9162004aea8751938462002b1c565b808352868b8401918a1b830101918683116200295b5791878c94929593015b81811062004b2257505082935081520194019362004a99565b91938091939562004b338462002960565b8152019101918b9391949262004b09565b9062002bc3604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004b99815180926020868601910162002d89565b810103602581018552018362002b1c565b9062002bc36040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004bf0815180926020868601910162002d89565b810103602081018552018362002b1c565b602062002bc391939293604051948162004c25879351809286808701910162002d89565b820162004c3b8251809386808501910162002d89565b0103808552018362002b1c565b1562004c515750565b60405162461bcd60e51b81526020600482015290819062004c7790602483019062002dae565b0390fd5b600019811462001e4f5760010190565b80511562004c995760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004c995760400190565b80516002101562004c995760600190565b80516003101562004c995760800190565b805182101562004c995760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002bc3916020949360405195869262004d5a62004d4c83860162004cf7565b918281519485920162002d89565b016e0161030b732103130b630b731b29d1608d1b815262004d85825180936020878501910162002d89565b010360101981018552018362002b1c565b601962002bc3916020949360405195869262004db862004d4c83860162004cf7565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004ded825180936020878501910162002d89565b010360061981018552018362002b1c565b9062004e0a8262002be9565b62004e19604051918262002b1c565b828152809262004e2c601f199162002be9565b0190602036910137565b611f48805482101562004c995760005260206000200190600090565b611f46805482101562004c995760005260206000200190600090565b611f41805482101562004c995760005260206000200190600090565b613f02805482101562004c995760005260206000200190600090565b611f4a805482101562004c995760005260206000200190600090565b613efe805482101562004c995760005260206000200190600090565b613f00805482101562004c995760005260206000200190600090565b805482101562004c995760005260206000200190600090565b8181029291811591840414171562001e4f57565b919082549060031b91821b91600019901b1916179055565b81811062004f4b575050565b6000815560010162004f3f565b600160401b811162002a2357611f489081549080835581811062004f7b57505050565b62002bc3926000526020600020918201910162004f3f565b600160401b811162002a2357611f469081549080835581811062004f7b57505050565b8054600082558062004fc6575050565b62002bc39160005260206000209081019062004f3f565b600160401b811162002a2357613efe9081549080835581811062004f7b57505050565b600160401b811162002a2357613f009081549080835581811062004f7b57505050565b611fb58054600082558062004fc6575050565b90600160401b811162002a235781549080835581811062004f7b57505050565b919082811162005067576001920390565b50600091508190565b81156200507b570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b80821015620051fc575b506904ee2d6d415b85acef8160201b80831015620051ec575b50662386f26fc1000080831015620051dc575b506305f5e10080831015620051cc575b5061271080831015620051bc575b506064821015620051ab575b600a80921015620051a0575b600190816021818601956200512d8762002edc565b966200513d604051988962002b1c565b8088526200514e601f199162002edc565b01366020890137860101905b62005167575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156200519a579190826200515a565b62005160565b916001019162005118565b91906064600291049101916200510c565b6004919392049101913862005100565b60089193920491019138620050f2565b60109193920491019138620050e2565b60209193920491019138620050cf565b604093508104915038620050b6565b601e62002bc391602094936040519586926200522d62004d4c83860162004cf7565b017f2c20616e6420776974686472617761626c65206469766964656e64733a200000815262005266825180936020878501910162002d89565b010360011981018552018362002b1c565b6003821015620029ab5752565b60405190620052938262002ac7565b60405182620052a28262002ae3565b610c8036833752565b90620052b78262002be9565b604090620052c88251918262002b1c565b8381528093620052db601f199162002be9565b019160005b838110620052ee5750505050565b6020908251620052fe8162002a55565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c0830152600060e0830152828601015201620052e0565b62005348815462002c01565b908162005353575050565b81601f6000931160011462005366575055565b90808391825262005387601f60208420940160051c84016001850162004f3f565b5555565b80549060008155816200539c575050565b6000526020600020908101905b818110620053b5575050565b80620053c36001926200533c565b01620053a9565b90600160401b811162002a2357815491818155828210620053ea57505050565b600052602060002091820191015b81811062005404575050565b80620054126001926200533c565b01620053f8565b80549060008155816200542a575050565b6000526020600020908101905b81811062005443575050565b806200545160019262004fb6565b0162005437565b90600160401b811162002a23578154918181558282106200547857505050565b600052602060002091820191015b81811062005492575050565b80620054a060019262004fb6565b0162005486565b805460009182815581620054ba57505050565b6001600160fd1b0382168203620055475782526020822091600391821b8301925b838110620054e95750505050565b8082600892558260018201558260028201556200550884820162004fb6565b62005516600482016200538b565b620055246005820162005419565b620055326006820162005419565b62005540600782016200533c565b01620054db565b634e487b7160e01b83526011600452602483fd5b600160401b821162002a23578054908281558183106200557a57505050565b6001600160fd1b03828116830362001e4f578316830362001e4f57600090815260208120600392831b810193831b015b838110620055b85750505050565b808260089255826001820155826002820155620055d784820162004fb6565b620055e5600482016200538b565b620055f36005820162005419565b620056016006820162005419565b6200560f600782016200533c565b01620055aa565b516006811015620029ab5790565b906006811015620029ab5760ff80198354169116179055565b90620056498162002f45565b60ff80198354169116179055565b906200566381620029a0565b61ff0082549160081b169061ff001916179055565b9190601f81116200568857505050565b62002bc3926000526020600020906020601f840160051c83019310620056b7575b601f0160051c019062004f3f565b9091508190620056a9565b81519192916001600160401b03811162002a2357620056ee81620056e7845462002c01565b8462005678565b602080601f83116001146200572d57508192939460009262005721575b50508160011b916000199060031b1c1916179055565b0151905038806200570b565b90601f198316958460005282600020926000905b8882106200577c5750508360019596971062005762575b505050811b019055565b015160001960f88460031b161c1916905538808062005758565b8060018596829496860151815501950193019062005741565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b9062ff0000825491151560101b169062ff00001916179055565b81516006811015620029ab57620057f0908262005624565b6020820151600182015560028101604083015160208151916200581483856200555b565b01916000526020600020916000905b8282106200588757505050509060e0600562002bc3936060840151600382015562005856608085015160048301620056c2565b01916200586a60a082015115158462005795565b6200587c60c0820151151584620057a6565b0151151590620057be565b805180518555620058c760018601620058b06020840151620058a98162002f45565b826200563d565b604083015190620058c182620029a0565b62005657565b60608101516002860155608081015180519060038701906001600160401b03831162002a2357602090620058fc848462005036565b0190600052602060002060005b83811062005ba8575050505060a0015180518051906004870190602090620059328484620053ca565b01906000526020600020906000905b83821062005b885750505050600585016020820151602081519162005967838562005458565b019160005260206000206000925b82841062005b24575050505060068501604082015160208151916200599b838562005458565b019160005260206000206000925b82841062005ab75750505050606001518051906001600160401b03821162002a2357620059e982620059df600789015462002c01565b6007890162005678565b602090601f831160011462005a3c57928260089360209360019660009262005a30575b5050600019600383901b1c191690851b1760078801555b0194019101909262005823565b01519050388062005a0c565b906007870160005260206000209160005b601f198516811062005a9e575083602093600196938793600897601f1981161062005a84575b505050811b01600788015562005a23565b015160001960f88460031b161c1916905538808062005a73565b9192602060018192868501518155019401920162005a4d565b80518051906001600160401b03821162002a235760209062005ada838662005036565b0183600052602060002060005b83811062005b06575050505060016020819201920193019290620059a9565b82516001600160a01b03168183015560209092019160010162005ae7565b80518051906001600160401b03821162002a235760209062005b47838662005036565b0183600052602060002060005b83811062005b7357505050506001602081920192019301929062005975565b60019060208451940193818401550162005b54565b600160208262005b9b83945187620056c2565b0193019101909162005941565b60019060208451940193818401550162005909565b60409081519162005bce8362002b00565b60018352829160005b60208082101562005c415783516020929162005bf38262002a39565b60008252600081830152600086830152606060008184015280608084015286519062005c1f8262002a07565b808252808383015280888301528082015260a083015282880101520162005bd7565b505091925050565b611f43805482101562004c99576000526006602060002091020190600090565b613efb805482101562004c99576000526006602060002091020190600090565b611f42805482101562004c99576000526006602060002091020190600090565b613efa805482101562004c99576000526006602060002091020190600090565b611f428054600160401b81101562002a235762005cec9160018201905562005c89565b91909162005cff5762002bc391620057d8565b634e487b7160e01b600052600060045260246000fd5b611f438054600160401b81101562002a235762005cec9160018201905562005c49565b613efb8054600160401b81101562002a235762005cec9160018201905562005c69565b613efa8054600160401b81101562002a235762005cec9160018201905562005ca9565b1562005d8657565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b6103e881101562004c9957600390811b60028101549060009260049384830191825492829682849601935b85871062005e3d5750505050505050620032619162005e359162005f19565b919062005d7e565b98979091929394959862005e9f5762005e938962005e8b62005e6562000f559b9c8762004efa565b905490881b1c6001600160a01b0316600090815260208990526040812054909462006049565b9a9062005f3b565b95949392919062005e16565b603282634e487b7160e01b6000525260246000fd5b6103e881101562004c995762005e358162005edc611fba620032619460031b01549162005f9f565b9062005f19565b90811562005f1057606462005efc818402938462005070565b0362005f085760019190565b600091508190565b60019150600090565b9190821562005f315762005efc818402938462005070565b5060019150600090565b1562005f4357565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6103e8811015908162004c995790600391821b90611fbc820190815490600094611fbb869501915b83861062005fd85750505050505090565b9590919293949562004c99576200602b866200602362005ffd62000f55998962004efa565b905490861b1c6001600160a01b0316600090815260208790526040812054909462006049565b989062005f3b565b949392919062005fc7565b906001820191821062005f085760019190565b9190820191821062005f085760019190565b156200606357565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b6103e881101562004c9957600390811b60018101549060009260049384830191825492829682849601935b85871062006116575050505050505062003261916200610e9162005f19565b91906200605b565b98979091929394959862005e9f576200613e8962005e8b62005e6562000f559b9c8762004efa565b959493929190620060ef565b6103e881101562004c99576200610e8162005edc611fb9620032619460031b01549162005f9f565b611faf54620061b86200618462033793565b91620061966127109384831062004c48565b620061ae611fb254611fb054111562000f4e62033801565b611fb15462005f19565b919050620061c562033857565b5060009081925b6103e88410620061e9575b620061e493500462006236565b905090565b9160ff60078560031b015416156200622f57836200621c62006228926200621562000f55969762005deb565b9062006049565b949062000f4e62033857565b92620061cc565b91620061d7565b9080156200624e57620062499162005070565b600191565b5050600090600090565b9190820180921162001e4f57565b9190820391821162001e4f57565b906107b2906301e1853e80840483810180821162001e4f576001820181811162001e4f57604583019082821162001e4f576064620062b792049060021c62006266565b9561017183019682881162001e4f57620062d8906101908099049062006258565b9084840294848604148415171562001e4f5762015180948583029280840487149015171562001e4f576200631892620063119162006258565b9062006266565b9160049586910815958662006537575b506040516101a081016001600160401b038111828210176200652257604052600c9687825261018080366020850137601f9182620063668562004c8b565b5215620065185760ff601d5b166200637e8462004caf565b52816200638b8462004cc0565b52601e620063998462004cd1565b52825188101562006503578160a08401528251600510156200650357601e60c084015282516006101562006503578160e08401528251600710156200650357816101008401528251600810156200650357601e6101208401528251600910156200650357816101408401528251600a10156200650357601e6101608401528251600b10156200650357820152600096905b8188106200647e575b50508282049460018601809611620064695760018701809711620064695750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b9096926200648d848362004ce2565b5185810290808204871490151715620064e6578110620064fb57620064b3848362004ce2565b519085820291808304871490151715620064e657620064de91620064d79162006266565b9362004c7b565b96906200642a565b601188634e487b7160e01b6000525260246000fd5b929662006433565b603288634e487b7160e01b6000525260246000fd5b60ff601c62006372565b604187634e487b7160e01b6000525260246000fd5b90955060648606159081159162006552575b50943862006328565b90508506153862006549565b90815181101562004c99570160200190565b90815181511162006627576000905b6200658e835182519062006266565b82116200661f5760019260005b825181101562006614576001600160f81b031980620065c6620065bf848862006258565b856200655e565b511690620065d583866200655e565b511603620065ee57620065e89062004c7b565b6200659b565b5092509060005b6200660c57620066059062004c7b565b906200657f565b505050600190565b5092919091620065f5565b505050600090565b5050600090565b611f4680549190600160401b83101562002a23578262001a4491600162002bc39501905562004e52565b611f4a80549190600160401b83101562002a23578262001a4491600162002bc39501905562004ea6565b611fb5805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611fb3805490600160401b82101562002a23576001820180825582101562004c99576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611f4180549190600160401b83101562002a23578262001a4491600162002bc39501905562004e6e565b60405190620067518262002b00565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b60405190620067878262002a8f565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b602080830190815180518710156200696d5781620067ff88620068079362004ce2565b5101620073df565b60269283821015620029ab57601a918203620068c557876200682a915162004ce2565b51928284015190811015620029ab570362006883575093620068746200687c926200686c6200686560a0604062000f559a0151015162004c8b565b5162004c8b565b519062006049565b9590620073ed565b92620067dc565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b92919050620068de81620067ff89869a979a5162004ce2565b82811015620029ab5760140362006917575050906200687462000f55956200621562006910846200687c965162004ce2565b516200743a565b6200692990620067ff85855162004ce2565b90811015620029ab5760151462006947575b506200687c9062004c7b565b906200687462006966956200621562006910846200687c965162004ce2565b906200693b565b505050909250803410600014620069e35760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b80341162007264575b50613f739182549260ff84169362006a0485620029a0565b60019480860362006a3e5750505062006a3491925062006a2e62006a2882620074d1565b620075a8565b62007632565b6200326162006742565b62006a4981620029a0565b60028114808062007257575b1562006e805750505062006a6982620074e6565b1562006e415762006a7a82620074e6565b1562006e055762006ab390602080930190600260ff8560018060a01b0362006aa3865162004c8b565b5151169460409687915162004c8b565b510151015192541662006ac681620029a0565b0362006dc55781600052613f778085528360002092613f7880549485600052875260ff86600020541662006d875783519480600052613f7693848952600396878960002001540362006d215783600052885286600020906000528752856000208960ff19825416179055886000905b62006b7f575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b6862032c82565b519162006b758362002b00565b6015835282015290565b845181101562006d1b5786825480600052858a5262006ba48389846000200162004efa565b905490891b1c908a84888b62006bbb838d62004ce2565b511562006c7957505050505062006c1e62006bfe85549283600052888d526200621562006bf087600480986000200162004efa565b9054908d1b1c918962032b6c565b9092600052878c5262006c1785858d6000200162004efa565b9062004f27565b1562006c37575062006c309062004c7b565b8962006b35565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006cb662006cc8966200621587999462006c17979860005284895262006ca987600580986000200162004efa565b9054911b1c918d62032b6c565b959097600052528c6000200162004efa565b1562006cd95762006c309062004c7b565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006b3b565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e90829794959697620029a0565b600382149182806200724a575b1562006f1f5750505050505062006eb4816200754d565b1562006ecf5762006ec5906202f874565b6200326162006778565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006f2a81620029a0565b81806200723c575b806200722f575b156200715957505050509060ff9062006f5162032e94565b54169062006f5f82620029a0565b81036200701d575062006f7281620074d1565b1562006f8c578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b806200702b600392620029a0565b146200706457505b604051620070418162002b00565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200706f816200754d565b15620070805762006ec5906202f874565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b6200716481620029a0565b82156200721a575b5050806200720c575b62007184575050505062007033565b60ff19161790556200719681620074d1565b15620071b0578062006a2e62006a2862006a3493620074d1565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b50613f725442101562007175565b62007227919250620029a0565b38806200716c565b50613f7254421062006f39565b50613f715442101562006f32565b50613f7254421062006e9d565b50613f7154421062006a55565b60018060a01b039081845116600052611f459081602052604060002054156200735a575b62007294903462005056565b90156200731657620072b790838651166000528260205260406000205462006049565b929015620072d55784511660005260205260406000205538620069ec565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b611f4654939291906000805b8681106200739c575b506200729492939495501562007388575b905062007288565b62007396848751166200662e565b62007380565b84620073a88262004e52565b919054818b51169260031b1c1614620073cc57620073c69062004c7b565b62007366565b509394508493506001620072946200736f565b516026811015620029ab5790565b15620073f557565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a062007454818351015162004caf565b5151841015620074c9579262006874620074b9604094620074b185620074a986620074978b6200749e8362000f559f9e6200749790620074bf9e51015162004caf565b5162004ce2565b519451015162004cc0565b519062005f19565b9290620073ed565b62006049565b919290506200743f565b509093505050565b602001515115620074e157600190565b600090565b6020015160018151036200750a5762007503620032619162004c8b565b5162007510565b50600090565b60208101516026811015620029ab576020036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b6020015160018151036200750a576200756a620032619162004c8b565b5160208101516026811015620029ab576021036200750a576040015160a0810151516200750a5760c0810151516200750a575151620074e157600190565b15620075b057565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b6200763d8162015580565b516201507f576006811015620029ab57600381146201502657806200769a5760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200b1a25750600080611f4a54905b8181106200b15b575b5050156200b13f575b60005b6020908183015191825182101562007727576200771981611f49620076ff620076f962000f5595620067ff88620077219a62004ce2565b62033aa2565b9160018060a01b0388511660005252604060002062024340565b429162004f27565b620076c2565b50505060005b602080830151805183101562007775576200775291620067ff84620076f99362004ce2565b90606482101562004c99576200776f914290611f4b015562004c7b565b6200772d565b505050906000905b602083015180518310156200b1395782620077989162004ce2565b5160208101805160269081811015620029ab57156200b0f657815181811015620029ab57600103620079e6575050604080910190620077dc60c08351015162004c8b565b5192620077fe60a0620077f3818651015162004c8b565b519451015162004caf565b51956200780f85518551146202e0ca565b6200781e85518851146202e130565b60005b8551811015620079645762007837818662004ce2565b516103e8908181101562004c9957600160ff60076200785f9360031b0154161515146202e192565b6200786b828a62004ce2565b5162007878838862004ce2565b51908282101562004c99576006620078969260031b01549062006049565b90620078a3848962004ce2565b51918383101562004c99576006620078c09360031b01556202e1ea565b620078cc828a62004ce2565b5190620078da838862004ce2565b518181101562004c99576001600160a01b0393926200791a916003908662007903878e62004ce2565b5116600052811b0160205287600020549062006049565b62007926848a62004ce2565b519283101562004c9957600362000f55936200795e9662007948878e62004ce2565b5116600052811b0160205287600020556202e249565b62007821565b50939262007981919296506200797a90620336a2565b9262033586565b9451926200798f8462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba620079c3938762004ce2565b51878a62033195565b6200799b565b5094509260209250620079dd915062004c7b565b9190506200777d565b815181811015620029ab5760020362007c7d575050604080910180519283519562007a2b62007a1a60a08097015162004c8b565b51956200749e818651015162004caf565b5193875186510362007c2a57875184510362007bd657875185510362007b7f575060005b855181101562007b695762007a65818762004ce2565b51906103e8918281101562004c995762007a8b60ff6007809360031b015416156202e2a2565b62007a97828962004ce2565b518381101562004c995760031b01805460ff1916600117905562007abc818a62004ce2565b5162007ac9828962004ce2565b51908382101562004c9957600562007ae59260031b01620056c2565b62007af1818662004ce2565b5162007afe828962004ce2565b518381101562004c995760031b6001015562007b1b818762004ce2565b5162007b28828962004ce2565b518381101562004c995760031b6002015562007b45818862004ce2565b519182101562004c99576000600662007b639360031b015562004c7b565b62007a4f565b50955093905060209250620079dd915062004c7b565b5162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b8195939492955181811015620029ab5760030362008279575050604084019062007cac60c08351015162004c8b565b519362007cc360a0620077f3818651015162004c8b565b519362007cd8865185511462000f4e62033906565b62007ceb865186511462000f4e62033906565b60005b865181101562007d545762007d04818662004ce2565b51906103e882101562004c9957600362007d4e9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b51111562000f4e62033a0a565b62007cee565b50909493919460005b855181101562007e885762007d73818662004ce2565b51906103e88083101562004c9957600360018060a01b0393848c5116600052811b0160205262007db660406000205462007dae848962004ce2565b519062005056565b9062007dc3848a62004ce2565b51918383101562004c9957600362007df293878f5116600052811b0160205260406000205562000f4e62033a0a565b62007dfe828862004ce2565b518181101562004c99576003908462007e18858c62004ce2565b5116600052811b0160205262007e396040600020546200686c848962004ce2565b62007e45848a62004ce2565b519283101562004c9957600362000f559362007e829662007e67878e62004ce2565b5116600052811b0160205260406000205562000f4e62033a6f565b62007d5d565b5091509162007e9f62007ea69196959496620336a2565b9562033586565b926040519462007eb68662002b00565b6001865260203681880137516001600160a01b031662007ed68662004c8b565b526000905b8651821015620082645762007ef1828862004ce2565b516106c05262007f02855162004dfe565b9660009462007f12885162004dfe565b610400528594865b885181101562007fe9578a8962007f4a6001600160a01b0362007f3e858462004ce2565b51166106c0516203348a565b158062007fa3575b62007f6b575b505062007f659062004c7b565b62007f1a565b9862007f989162001b0382859c62007f8f62007f659760018060a01b039262004ce2565b51169262004ce2565b9790508a8962007f58565b5050506103e86106c051101562004c99576001600160a01b0362007fc8828b62004ce2565b511660005260036106c051811b016020528a89604060002054151562007f52565b509098949897969291939760005b88518110156200808b576103e86106c051101562004c99576001600160a01b0362008023828b62004ce2565b511660005260036106c051811b016020526040600020541562008052575b6200804c9062004c7b565b62007ff7565b996200804c9062008082906001600160a01b03620080718e8d62004ce2565b511662001b03826104005162004ce2565b9a905062008041565b5098509694939291956106c0516103e8811015806104205262004c995760031b6004015496620080c6620080c0878a62006258565b62004dfe565b996000998a6109a0525b6104205162004c99576109a0518a811015620081855762008105620081229160006104205260046106c05160031b0162004efa565b90546104005160039290921b1c6001600160a01b03169062033539565b1562008141575b620081376109a05162004c7b565b6109a052620080d0565b99808c62001b036200817e93620081656109a05160046106c05160031b0162004efa565b905460039190911b1c6001600160a01b03169262004ce2565b9962008129565b509a939794969299919850946000915b8383106200822a57505050506104205162004c99578051906001600160401b03821162002a2357602090620081d48360046106c05160031b0162005036565b0160046106c05160031b01600052602060002060005b8381106200820c5750505050620082019062004c7b565b909295919562007edb565b82516001600160a01b031681830155602090920191600101620081ea565b6200825d9062008256906001600160a01b0362008248868662004ce2565b511662001b03828962004ce2565b9262004c7b565b9162008195565b91945050620079dd9194506020925062004c7b565b8195939492955181811015620029ab5760040362008501575050604080920160c094620082ba620082ae878451015162004c8b565b51968351015162004caf565b5194620082d160a0620077f3818651015162004c8b565b5193620082e6885188511462000f4e62033906565b620082f9885185511462000f4e62033906565b6200830c885186511462000f4e62033906565b60005b8851811015620083745762008325818662004ce2565b51906103e882101562004c99576200836e916003906001600160a01b036200834e848e62004ce2565b5116600052811b0160205262000f55886000205462007d41838a62004ce2565b6200830f565b50909691959294939660005b8351811015620084b55762008396818862004ce2565b51906103e8918281101562004c99576001600160a01b039060039082620083be858a62004ce2565b5116600052811b01602052620083df8b62007dae848b600020549262004ce2565b90620083ec848c62004ce2565b51918583101562004c995760036200842593856200840b888d62004ce2565b5116600052811b016020528a6000205562000f4e62033a0a565b62008431828a62004ce2565b518381101562004c9957600390826200844b858b62004ce2565b5116600052811b016020526200846c8b6200686c848b600020549262004ce2565b9190506200847b838b62004ce2565b519384101562004c9957620084af9360039162008499858b62004ce2565b5116600052811b01602052876000205562004c7b565b62008380565b5094620084d892975062007e9f91939450620084d190620336a2565b9362033586565b9260005b8351811015620079c9578062000f55620079ba620084fb938762004ce2565b620084dc565b8195949395519080821015620029ab57600591820362008a525750505060408401906200854360a062008538818551015162004c8b565b519351015162004caf565b51928251845103620089ef5760005b8351811015620085ab5762008568818562004ce2565b51906103e882101562004c99576003620085a59260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62008552565b509060005b83518110156200864557620085c6818562004ce2565b51906103e88083101562004c9957600360018060a01b0393848b5116600052811b016020526200860160406000205462007dae848a62004ce2565b6200860d848962004ce2565b519283101562004c9957600362000f55936200863f968d5116600052811b0160205260406000205562000f4e62033a0a565b620085b0565b5094939250906200865690620336a2565b9360405193620086668562002b00565b6001855260203681870137516001600160a01b0316620086868562004c8b565b5260405192620086968462002ac7565b6000845260003681376000905b86518210156200826457620086b9828862004ce2565b5161032052620086ca855162004dfe565b96600094620086da885162004dfe565b6106a0528594865b8851811015620087a8578a89620087126001600160a01b0362008706858462004ce2565b5116610320516203348a565b158062008762575b62008733575b50506200872d9062004c7b565b620086e2565b98620087579162001b0382859c62007f8f6200872d9760018060a01b039262004ce2565b9790508a8962008720565b5050506103e861032051101562004c99576001600160a01b0362008787828b62004ce2565b5116600052600361032051811b016020528a8960406000205415156200871a565b509098949897969291939760005b88518110156200884a576103e861032051101562004c99576001600160a01b03620087e2828b62004ce2565b5116600052600361032051811b016020526040600020541562008811575b6200880b9062004c7b565b620087b6565b996200880b9062008841906001600160a01b03620088308e8d62004ce2565b511662001b03826106a05162004ce2565b9a905062008800565b509850969493929195610320516103e8811015806106805262004c995760031b60040154966200887f620080c0878a62006258565b996000998a610540525b6106805162004c9957610540518a8110156200892557620088be620088db9160006106805260046103205160031b0162004efa565b90546106a05160039290921b1c6001600160a01b03169062033539565b15620088fa575b620088f06105405162004c7b565b6105405262008889565b99808c62001b036200891e93620081656105405160046103205160031b0162004efa565b99620088e2565b509a939794969299919850946000915b838310620089ca57505050506106805162004c99578051906001600160401b03821162002a2357602090620089748360046103205160031b0162005036565b0160046103205160031b01600052602060002060005b838110620089ac5750505050620089a19062004c7b565b9092959195620086a3565b82516001600160a01b0316818301556020909201916001016200898a565b620089e89062008256906001600160a01b0362008248868662004ce2565b9162008935565b60405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82969394965181811015620029ab5760060362008cbc5750505090604080920162008a8260c08251015162004c8b565b519462008a9960a062008538818551015162004c8b565b5192865183510362008c6b57865184510362008c1f5760005b875181101562008b175762008ac8818562004ce2565b51906103e882101562004c995762008b11916003906001600160a01b0362008af1848d62004ce2565b5116600052811b0160205262000f55876000205462007d41838962004ce2565b62008ab2565b509092919260005b875181101562008bcb5762008b35818662004ce2565b516103e88082101562004c99576001600160a01b0392916003908462008b5c858e62004ce2565b5116600052811b0160205262008b7c886000205462007dae848962004ce2565b62008b88848a62004ce2565b519283101562004c9957600362000f559362008bc59662008bab8f889062004ce2565b5116600052811b01602052896000205562000f4e62033a0a565b62008b1f565b50959262008be09192506200797a90620336a2565b92519462008bee8662002ac7565b60008652600036813760005b8351811015620079c9578062000f55620079ba62008c19938762004ce2565b62008bfa565b845162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b825181811015620029ab5760070362008e0b5750505060408091019362008ce860c08651015162004c8b565b519262008cfa60a08751015162004c8b565b519551519162008d12855188511462000f4e62033906565b60005b855181101562007b695762008e059062000f556001600160a01b038260028862008ded8e62008de28e62008dd88f8962008d508a8562004ce2565b511660005262008d8c8962008d8481611f409a8b60205262008d7e60ff8760002054161562000f4e620339d7565b62004ce2565b519662004ce2565b51968a62008dc283519b8c9662008da38862002a07565b600188526060602089019860008a528781019b8c52019b8c5262004ce2565b5116600052602052600020975115158862005795565b51151586620057a6565b5160018501620056c2565b5191015562008dfd838a62004ce2565b511662006718565b62008d15565b825195969593949281851015620029ab57600894850362008f025750505062008e3d60c0604080950151015162004c8b565b519360005b855181101562008eed5762008ee7906001600160a01b038062008e66838a62004ce2565b5116600052611f40908160205262008ebc60ff62008e936001828c600020541615151462000f4e62033936565b8262008ea0868d62004ce2565b5116600052836020528960002054891c161562000f4e6203399e565b62008ec8838a62004ce2565b51166000526020528560002061010061ff001982541617905562004c7b565b62008e42565b509490935060209250620079dd915062004c7b565b805182811015620029ab5760090362008fd65750505062008f2c60c0604080950151015162004c8b565b519360005b855181101562008eed5762008fd090866001600160a01b038062008f56848462004ce2565b511660005262008fa96001898362008f8b87611f40978860205262008d7e8660ff8097600020541615151462000f4e62033936565b5116600052846020528a600020548a1c1615151462000f4e62033969565b62008fb5838a62004ce2565b51166000526020528560002061ff0019815416905562004c7b565b62008f31565b80979694929395975182811015620029ab57600a03620090b457505050506040809401916200901b60a06200901060c08651015162004c8b565b519451015162004c8b565b519162009030845184511462000f4e62033906565b60005b8451811015620079c957620090ae906001600160a01b038062009057838962004ce2565b5116600052611f40806020526200907e600160ff8c600020541615151462000f4e62033936565b6200908a838862004ce2565b519162009098848a62004ce2565b5116600052602052600289600020015562004c7b565b62009033565b809795975182811015620029ab57600b03620091835750505050604080920193620090e460c08651015162004c8b565b5194515191620090fc865184511462000f4e62033906565b60005b8651811015620079c9576200917d9062000f556001600160a01b038062009127848c62004ce2565b5116600052611f40806020526200914e600160ff8b600020541615151462000f4e62033936565b6200915a848962004ce2565b519162009168858d62004ce2565b511660005260205260018860002001620056c2565b620090ff565b809794959396975182811015620029ab57600c03620092da57505050604001606091828251015193620091b6856202d715565b60005b8551811015620092c45760e0620091d582878751015162004ce2565b510151156200925c57620091f9620091f282878751015162004ce2565b5162005cc9565b611f42805460001992919083810190811162001e4f576200921b8a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c89565b5001805460ff1916905562004c7b565b620091b9565b620092776200927082878751015162004ce2565b5162005d15565b611f42805460001992919083810190811162001e4f57620092998a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f578762009246620092569362005c49565b50959150935060209250620079dd915062004c7b565b80979695939294975182811015620029ab57600d036200942f5750506040019460206200930c60a08851015162004c8b565b5196510151916200932187518451146202de09565b60005b875181101562007b69578080878a62009342620093d1958962004ce2565b5115620093d757620093a26200938984836200937462009368620093ad98889762004ce2565b51611f4254116202de92565b62008d7e8d6200939062009389858562004ce2565b5162005c89565b509060ff9889920154901c166202deea565b50015416156202df4b565b86620093be62009389838c62004ce2565b5001805460ff1916600117905562004c7b565b62009324565b620093a262009417848362009402620093f66200941e98889762004ce2565b51611f4354116202de92565b62008d7e8d6200939062009417858562004ce2565b5162005c49565b86620093be62009417838c62004ce2565b80979493975182811015620029ab57600e03620095155750506040019160206200945e60a08551015162004c8b565b5193510151956200947384518851146202de09565b60005b845181101562007b695780620094916200949d928a62004ce2565b51620094a35762004c7b565b62009476565b620094bf620094b3828862004ce2565b51611f4254116202dfac565b6200950487620094e9620094d862009389858b62004ce2565b5060ff9283910154891c166202e005565b88620094fa62009389858b62004ce2565b500154166202e067565b866200924662009389838962004ce2565b8091929350969495965182811015620029ab57600f036200963957505060400160609182825101519362009549856202d715565b60005b8551811015620092c45760e06200956882878751015162004ce2565b51015115620095d85762009585620091f282878751015162004ce2565b611f42805460001992919083810190811162001e4f57620095a78a9162005c89565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c89565b6200954c565b620095ec6200927082878751015162004ce2565b611f42805460001992919083810190811162001e4f576200960e8a9162005c49565b5001805461ff0019166101001790555491820191821162001e4f5787620093be620095d29362005c49565b80919293949695505182811015620029ab57601003620096de57505060400151906200966e60a0608084015193015162004c8b565b519362009683835186511462000f4e62033906565b60005b8351811015620096cb578062000f55620096a5620096c5938762004ce2565b51620096b18162002f45565b620096bd838a62004ce2565b51906202d5d9565b62009686565b5093509160209150620079dd9062004c7b565b809592955182811015620029ab5760110362009967575050906040809401916200971360a06200901060c08651015162004c8b565b51916200972484518451146202d58d565b60005b84518110156200979c57620097969062000f556001600160a01b03806200974f848a62004ce2565b5116600052611f4580602052620097708b600020546200686c868b62004ce2565b9190926200977f868c62004ce2565b51166000526020528a6000205562000f4e620338bc565b62009727565b5093945091620097ad915062033586565b90611f4692835494620097c6620080c085518862006258565b91600093845b88811062009927575060005b86518110156200987f576000805b8a811062009830575b501562009808575b620098029062004c7b565b620097d8565b94620098029062009827906001600160a01b0362008248898b62004ce2565b959050620097f7565b6200983b8162004e52565b90546001600160a01b0360039290921b1c8116906200985b858c62004ce2565b51161462009874576200986e9062004c7b565b620097e6565b5050600138620097ef565b50965094909350620098918362004dfe565b805191906001600160401b03831162002a2357602090620098b28462004f93565b0190600052602060002060005b83811062009909575050505060005b828110620098e657505050620079dd60209162004c7b565b620099039062000f556001600160a01b0362001a37838662004ce2565b620098ce565b82516001600160a01b031681830155602090920191600101620098bf565b946200995a62009961916200993c8862004e52565b905460039190911b1c6001600160a01b031662001b03828962004ce2565b9562004c7b565b620097cc565b805182811015620029ab5760120362009bd65750506040809401916200999860a06200901060c08651015162004c8b565b5191620099a984518451146202d58d565b60005b8451811015620099fb57620099f59062000f556001600160a01b0380620099d4848a62004ce2565b5116600052611f4580602052620097708b6000205462007dae868b62004ce2565b620099ac565b50949150929162009a0c9062033586565b90611f46805462009a1d8162004dfe565b9260009485925b80841062009ad1575050505062009a3b8362004dfe565b805191906001600160401b03831162002a235760209062009a5c8462004f93565b0190600052602060002060005b83811062009ab3575050505060005b82811062009a9057505050620079dd60209162004c7b565b62009aad9062000f556001600160a01b0362001a37838662004ce2565b62009a78565b82516001600160a01b03168183015560209092019160010162009a69565b9297600097929597949194998a5b865181101562009bc45762009af48b62004e52565b90546001600160a01b0360039290921b1c81169062009b14838a62004ce2565b51161462009b2d5762009b279062004c7b565b62009adf565b509950976001979592979491945b8062009b94575b1562009b5a5762009b539062004c7b565b9262009a24565b9562009b8d62009b539162009b6f8962004e52565b905460039190911b1c6001600160a01b031662001b03828a62004ce2565b9662004c7b565b5062009ba08162004e52565b60018060a01b0391549060031b1c16600052611f4560205282600020541562009b42565b50999890989795929794919462009b3b565b809592955182811015620029ab5760130362009c3757505060408091015101519260005b845181101562009c26578062000f5562009c1962009c20938862004ce2565b516202f808565b62009bfa565b50925090620079dd60209162004c7b565b80519180831015620029ab57601492830362009dda5750505060408091019062009c6660c08351015162004c8b565b519262009c7d60a0620077f3818651015162004c8b565b519562009c8e85518551146202e0ca565b62009c9d85518851146202e130565b60005b855181101562009d855762009cb6818962004ce2565b5162009cc3828762004ce2565b516103e8918282101562004c9957600662009ce49260031b01549062006049565b9062009cf1848962004ce2565b51918383101562004c9957600662009d0e9360031b01556202e1ea565b62009d1a828a62004ce2565b519062009d28838862004ce2565b518181101562004c99576001600160a01b03939262009d51916003908662007903878e62004ce2565b62009d5d848a62004ce2565b519283101562004c9957600362000f559362009d7f9662007948878e62004ce2565b62009ca0565b50939262009d9b919296506200797a90620336a2565b94519262009da98462002ac7565b60008452600036813760005b8351811015620079c9578062000f55620079ba62009dd4938762004ce2565b62009db5565b815181811015620029ab57601590810362009e0657505050506020919262000f55620079dd926202e847565b82519180831015620029ab57601692830362009e6e57505050505060c0604062009e34920151015162004c8b565b519260005b845181101562009c265762009e689062000f556001600160a01b0362009e60838962004ce2565b5116620066cd565b62009e39565b835181811015620029ab5760170362009ec75760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab5760180362009f3a57505050505060c0604062009ef2920151015162004c8b565b51611fb6805460ff191660011790559260005b845181101562009c265762009f349062000f556001600160a01b0362009f2c838962004ce2565b511662006682565b62009f05565b839796975181811015620029ab576019036200a0ae57505050505060008080604080940160a0808251015180516200a075575b5050519060e08201519162009f916200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156200a06c573d9162009fb28362002edc565b9262009fc18351948562002b1c565b83523d6000602085013e5b1562009fe1575050620079dd60209162004c7b565b62004c7792506200a04d8151926000805160206203401b833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b838501528381516200a03c816059946020868601910162002d89565b810103603981018552018362002b1c565b5162461bcd60e51b815260206004820152918291602483019062002dae565b60609162009fcc565b6200a0809062004c8b565b51516200a08f575b8062009f6d565b81925062006865906200a0a59251015162004c8b565b5190386200a088565b835181811015620029ab57601a036200a1ae57505050506200a0d960a0604080940151015162004c8b565b51906200a0ea60038351146202d58d565b6200a0f58262004c8b565b51926200a10e6200a1068462004caf565b519362004cc0565b51926200a17457505091620079dd916001602094146000146200a16d576200a14d906200a140611fb191825462006049565b90915562000f4e62033857565b62000f55611fb26200a160815462006036565b90915562000f4e62033891565b5062004c7b565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b9091928094505181811015620029ab57601b036200a64357505050505091906200a1ee611faf54620061966200a1e362033793565b612710831062004c48565b50506200a1fa62033857565b506000805b6103e881106200a5d2575b50506200a21662006172565b6200a224613f745462004dfe565b9060009485935b6103e88510156200a5c55760ff60078660031b015416156200a3845760009560028660031b0154156200a37557869796975b62004c995760048660031b01548810156200a35c576200a285886004600389901b0162004efa565b600160a01b6001900391549060031b1c1696876000528660031b600301602052604097858960002054906200a2ba9162005f19565b99906200a2c662033857565b6200a2d19162004c48565b6000998960031b600201546200a2e79162005f19565b91906200a2f362033857565b6200a2fe9162004c48565b828b52611f476020528a20908154906200a3189162006049565b9091556200a32562033857565b6200a3309162004c48565b6200a33c828862004ce2565b526200a3489062004c7b565b976200a3549062004c7b565b97966200a25d565b91946200a36c9196975062004c7b565b9390946200a22b565b91946200a36c91965062004c7b565b949592915092505b6200a3978262004dfe565b91600091825b8281106200a52f57505050611f48908154926200a3bf620080c0858462006258565b9360009081905b8082106200a4f457505060005b8381106200a4505750508351939150506001600160401b03831162002a23576020906200a4008462004f58565b0190600052602060002060005b8381106200a4325750505050620079dd6020916000611fb1556000611fb25562004c7b565b82516001600160a01b0316818301556020909201916001016200a40d565b6000805b8381106200a4ac575b50156200a476575b6200a4709062004c7b565b6200a3d3565b906200a470906200a4a3906001600160a01b036200a495858762004ce2565b511662001b03828a62004ce2565b9190506200a465565b6001600160a01b03806200a4c1858862004ce2565b5116906200a4d0838b62004ce2565b5116146200a4e9576200a4e39062004c7b565b6200a454565b50506001386200a45d565b9091620082566200a528916200a50a8562004e36565b905460039190911b1c6001600160a01b031662001b03828b62004ce2565b906200a3c6565b6000805b8581106200a57d575b50156200a555575b6200a54f9062004c7b565b6200a39d565b926200a54f906200a574906001600160a01b0362008248878662004ce2565b9390506200a544565b6001600160a01b03806200a592858762004ce2565b5116906200a5a1838a62004ce2565b5116146200a5ba576200a5b49062004c7b565b6200a533565b50506001386200a53c565b949592915092506200a38c565b806003959394951b9060ff600783015416156200a638576200a622620074b962000f55946200a6166200a62e9560026200a60c8762005deb565b9101549062005f19565b929062000f4e62033857565b939062000f4e62033857565b939291936200a1ff565b50939291936200a20a565b835181811015620029ab57601c036200a69c5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b835181811015620029ab57601d036200a6c2575b5050505050620079dd60209162004c7b565b8397959694975181811015620029ab57601e036200af2d5750505050604084019060a0906200a6f5828451015162004c8b565b51516200a706838551015162004caf565b5151036200aeb0576200a71d828451015162004c8b565b51516200a72e838551015162004cc0565b5151036200ae34576200a745828451015162004c8b565b51946200a756838551015162004caf565b51916200a7876200a76b858751015162004cc0565b51946200a77c818851015162004c8b565b519651015162004caf565b51958551875103620089ef5760005b86518110156200a7ef576200a7ac818862004ce2565b51906103e882101562004c995760036200a7e99260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b6200a796565b5090969192939660005b86518110156200a898576200a80f818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b016020526200a84760406000205462007dae838b62004ce2565b91906200a855828a62004ce2565b51906103e882101562004c99576200a89293600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b6200a7f9565b5093979550936200a8ac90969296620336a2565b96604051966200a8bc8862002b00565b60018852602036818a013786516001600160a01b03166200a8dd8962004c8b565b52604051966200a8ed8862002ac7565b600088526000610720525b895161072051908110156200acb5576200a913908b62004ce2565b516103a0526200a924885162004dfe565b996000976200a9348b5162004dfe565b610a60528897895b8b518110156200aa02578d8c6200a96c6001600160a01b036200a960858462004ce2565b51166103a0516203348a565b15806200a9bc575b6200a98d575b50506200a9879062004c7b565b6200a93c565b9b6200a9b19162001b0382859f62007f8f6200a9879760018060a01b039262004ce2565b9a90508d8c6200a97a565b5050506103e86103a051101562004c99576001600160a01b036200a9e1828e62004ce2565b511660005260036103a051811b016020528d8c60406000205415156200a974565b50909b989a99949691929395979b60005b8b518110156200aaa7576103e86103a051101562004c99576001600160a01b036200aa3f828e62004ce2565b511660005260036103a051811b01602052604060002054156200aa6e575b6200aa689062004c7b565b6200aa13565b9c6200aa9e6200aa68918f6200aa8d8f9160018060a01b039262004ce2565b511662001b0382610a605162004ce2565b9d90506200aa5d565b509a9b50989596919396949092946103a051996103e88b10159b8c62004c99578d9b60031b600401549d6200aadd908f62006258565b6200aae89062004dfe565b610340526000610a00528c6000610500525b62004c9957610500519c8e8e10156200abb857506200ab466200ab2960009e60046103a05160031b0162004efa565b9054610a605160039290921b1c6001600160a01b03169062033539565b156200ab66575b8c6200ab5c6105005162004c7b565b610500526200aafa565b6200ab7e6105005160046103a05160031b0162004efa565b60018060a01b0391549060031b1c166200ab9f610a00516103405162004ce2565b526200abae610a005162004c7b565b610a00526200ab4d565b939d509396999094979b50999094979960005b8281106200ac695750505062004c995761034051516001600160401b03811162002a23576200ac048160046103a05160031b0162005036565b602061034051019060046103a05160031b0160005260206000209160005b8281106200ac4b57505050506200ac3c6107205162004c7b565b6107205295989094986200a8f8565b81516001600160a01b0316818501556020909101906001016200ac22565b6200acaf906001600160a01b036200ac82828562004ce2565b51166200ac96610a00516103405162004ce2565b526200aca5610a005162004c7b565b610a005262004c7b565b6200abcb565b5094929750929750939450600094855b87518110156200ad35576200acf86200acf06200ace3838962004ce2565b51620074a9848d62004ce2565b91906202f637565b806200ad11575b506200ad0b9062004c7b565b6200acc5565b906200ad266200ad2e986200ad0b9362006049565b98906202f684565b906200acff565b509650945092909150806200ad59575b5050620079dd6020915b913880806200a6b0565b6200ad8c9060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b92906202f6dd565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106200adea575b505091620079dd91602093156200adce575b50916200ad45565b516200ade3906001600160a01b03166200662e565b386200adc6565b6200adf58162004e52565b9054855160039290921b1c6001600160a01b039081169116146200ae24576200ae1e9062004c7b565b6200adab565b506001915082905060206200adb4565b60405162461bcd60e51b815260206004820152605960248201526000805160206203413b83398151915260448201527f642070726963654172726179206973206e6f7420657175616c2061742042415460648201527810d217d095549397d513d2d15394d7d0539117d49151955391603a1b608482015260a490fd5b60405162461bcd60e51b815260206004820152605a60248201526000805160206203413b83398151915260448201527f6420616d6f756e744172726179206973206e6f7420657175616c2061742042416064820152791510d217d095549397d513d2d15394d7d0539117d4915195539160321b608482015260a490fd5b8397949695975181811015620029ab57601f036200af7157505050506020916200af6b6200af646040620079dd9401515162004c8b565b516202f83e565b6200ad4f565b835181811015620029ab576020036200af97575b5050505050620079dd6020916200ad4f565b835181811015620029ab5760218091036200afb4575b506200af85565b8451828110156200b0e1576022036200aff457505050505050620079dd602091611fb660ff1981541690556200afe962005023565b91388080806200afad565b8451828110156200b0e1576023036200b01b575b505050505050620079dd6020916200afe9565b845194828610156200b0e15760248096036200b039575b506200b008565b8051838110156200b0cd576025146200b0325751918210156200b0b95750036200b07d5750506020916200b071620079dd926202e847565b9138808080806200b032565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200b155906001600160a01b031662006658565b620076bf565b6200b1668162004ea6565b9054855160039290921b1c6001600160a01b039081169116146200b195576200b18f9062004c7b565b620076ad565b50505060013880620076b6565b600281036200b1c65760405162461bcd60e51b81528062004c7760048201620075e7565b6001146200b1d15750565b6200b1df611f4354620052ab565b805190600160401b821162002a2357613efb5482613efb5580831062014fab575b50602001613efb60005260206000206000915b83831062014f8a575050505060005b611f43548110156200b25b578062000f556200b2426200b2559362005c49565b506200b24e8362005c69565b90620154b5565b6200b222565b506200b26a611f4254620052ab565b805190600160401b821162002a2357613efa5482613efa5580831062014eee575b50602001613efa60005260206000206000915b83831062014ecd575050505060005b611f42548110156200b2df578062000f556200b2cd6200b2d99362005c89565b506200b24e8362005ca9565b6200b2ad565b5060005b6103e8811015806200b49057600160ff611fbf8460031b0154161515146200b318575b506200b3129062004c7b565b6200b2e3565b916000835b62004c9957611fbc8360031b01548110156200b387576200b37e929350600092816200b3528593611fbc8860031b0162004efa565b9054600391821b1c6001600160a01b031660009081529087901b611fbb01602052604081205562004c7b565b9093926200b31d565b5091604051906200b3988262002ac7565b6000825262004c99578051906001600160401b03821162002a23576020906200b3c983611fbc8660031b0162005036565b01611fbc8360031b01600052602060002060005b8381106200b47257505050611fbf600383901b908101805460ff191690556000611fb88201819055611fb98201819055611fba8201819055611fbd90910180546200b3129493506200b42f9062002c01565b601f908181116200b450575b5050556000611fbe8260031b0155906200b306565b6200b46a9183855260208520910160051c81019062004f3f565b38806200b43b565b82516001600160a01b0316818301556020909201916001016200b3dd565b505060005b6103e8811062014e3f575060005b611f41548110156200b4fe57806200b4bf6200b4f89262004e6e565b60018060a01b0391549060031b1c16600052613ef860205260006002604082208281556200b4f0600182016200533c565b015562004c7b565b6200b4a3565b506200b50d611f415462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613ef95483613ef95580841062014e1d575b5001613ef9600052602060002060005b83811062014dff575050505060005b611f41548110156200b5d1576200b5768162004e6e565b9054613ef95460039290921b1c6001600160a01b0316919081101562004c9957613ef9600052600080516020620340db833981519152810180546001600160a01b0319169092179091556200b5cb9062004c7b565b6200b55f565b509060005b611f41548110156200b69057806200b5f26200b6459262004e6e565b9060018060a01b03918291549060031b1c16600052611f40602052604080600020916200b61f8462004e6e565b90549060031b1c16600052613ef8602052600020908082036200b64b575b505062004c7b565b6200b5d6565b600280916200b67160ff6200b664818454168762005795565b825460081c1685620057a6565b6200b683600182016001860162015151565b015491015538806200b63d565b5060005b613f02548110156200b6e257806200b6b06200b6dc9262004e8a565b60018060a01b0391549060031b1c16600052613f0160205262000f556040600020606481019062004f3f565b6200b694565b506200b6f1611f4a5462004dfe565b8051906001600160401b03821162002a2357600160401b821162002a2357602090613f025483613f025580841062014ddd575b5001613f02600052602060002060005b83811062014dbf575050505060005b611f4a548110156200b786578062000f556200b7636200b7809362004ea6565b905460039190911b1c6001600160a01b031662001a448362004e8a565b6200b743565b5060005b611f4a548110156200b81157806200b7a66200b7f89262004ea6565b9060018060a01b03918291549060031b1c16600052611f49602052604080600020916200b7d38462004ea6565b90549060031b1c16600052613f01602052600020908082036200b7fe57505062004c7b565b6200b78a565b6200b8099162015549565b38806200b63d565b50611f4b80546000905b6064821062014da6575050611faf54613f675550611fb054613f6855611fb154613f6955611fb254613f6a55611fb3546001600160401b03811162002a2357600160401b811162002a2357613f6b5481613f6b5580821062014d78575b50613f6b60009081527f0c040229f6fc4874d4176ee508a0872dc89a48e51cc9b61a792006f29e062754805460008051602062033ebb83398151915291905b84841062014d56575050505050611fb454600160401b811162002a2357613f6c5481613f6c5580821062014d14575b50613f6c600090815260008051602062033efb8339815191527fcdf85548d0b3537a0f46212d2994f9493fe1dfa88d3af4ddb0cac3c506fd3f595b83831062014cf6575050611fb5549150506001600160401b03811162002a2357600160401b811162002a2357613f6d5481613f6d5580821062014cc8575b50613f6d60009081527f70c3d981fef3a436e3d026045c487f2278cccbfa7f9e11fbd3c1406b0017bd5d8054600080516020620340bb83398151915291905b84841062014ca657505050505060ff611fb65416151560ff8019613f6e5416911617613f6e5560005b613efe548110156200ba1157806200b9e36200ba0b9262004ec2565b905460039190911b1c6001600160a01b03166000908152613efd602052604081205562004c7b565b6200b9c7565b506200ba20611f465462004dfe565b8051906001600160401b03821162002a23576020906200ba408362004fdd565b01613efe600052602060002060005b83811062014c88575050505060005b611f46548110156200baa1578062000f556200ba7e6200ba9b9362004e52565b905460039190911b1c6001600160a01b031662001a448362004ec2565b6200ba5e565b5060005b611f46548110156200bb1057806200bac16200bb0a9262004e52565b9060018060a01b03918291549060031b1c16600052611f4560205260408060002054916200baef8462004e52565b90549060031b1c16600052613efd6020526000205562004c7b565b6200baa5565b5060005b613f00548110156200bb5e57806200bb306200bb589262004ede565b905460039190911b1c6001600160a01b03166000908152613eff602052604081205562004c7b565b6200bb14565b506200bb6d611f485462004dfe565b8051906001600160401b03821162002a23576020906200bb8d8362005000565b01613f00600052602060002060005b83811062014c6a575050505060005b611f48548110156200bbee578062000f556200bbcb6200bbe89362004e36565b905460039190911b1c6001600160a01b031662001a448362004ede565b6200bbab565b5060005b611f48548110156200bc5d57806200bc0e6200bc579262004e36565b9060018060a01b03918291549060031b1c16600052611f4760205260408060002054916200bc3c8462004e36565b90549060031b1c16600052613eff6020526000205562004c7b565b6200bbf2565b50613f02546000805b82811062014c25575b501562014bef575b5060005b60208301519081518110156200bcd35762000f55620077196200bcad620076f96020620067ff866200bccd9862004ce2565b86516001600160a01b03166000908152613f016020526040902062024340565b6200bc7b565b505060005b602083015180518210156200bd2057620076f96020620067ff846200bcfd9462004ce2565b90606482101562004c99576200bd1a914290613f03015562004c7b565b6200bcd8565b5050906000905b60208101518051831015620106d857826200bd429162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036200c31457604001906200bd8360c08351015162004c8b565b51936200bd9a60a0620077f3818651015162004c8b565b51916200bdab86518551146202e0ca565b6200bdba86518451146202e130565b60005b86518110156200bf18576200bdd3818662004ce2565b516103e881101562004c9957600160ff611fbf6200bdfa9360031b0154161515146202e192565b6200be06818562004ce2565b516200be13828762004ce2565b51906103e882101562004c9957611fbe6200be349260031b01549062006049565b906200be41838862004ce2565b51916103e883101562004c9957611fbe6200be619360031b01556202e1ea565b6200be6d818562004ce2565b516200be7a828762004ce2565b51906103e882101562004c99576200bebd91611fbb906001600160a01b036200bea4868d62004ce2565b511660005260031b016020526040600020549062006049565b91906200becb828862004ce2565b51906103e882101562004c99576200bf129362000f5592611fbb906001600160a01b036200befa878f62004ce2565b511660005260031b016020526040600020556202e249565b6200bdbd565b50926200bf2f919250620084d190959495620336a2565b916040516200bf3e8162002ac7565b6000815260003681376000945b80518610156200c2fa576200bf61868262004ce2565b516104e0526200bf72855162004dfe565b966000946200bf82845162004dfe565b6105805260009460005b88518110156200c054578a896200bfbc6001600160a01b036200bfb0858462004ce2565b51166104e051620334e1565b15806200c00c575b6200bfdd575b50506200bfd79062004c7b565b6200bf8c565b986200c0019162001b0382859c62007f8f6200bfd79760018060a01b039262004ce2565b9790508a896200bfca565b5050506103e86104e051101562004c99576001600160a01b036200c031828b62004ce2565b5116600052611fbb6104e05160031b016020528a8960406000205415156200bfc4565b50909895979498969291939660005b88518110156200c0f2576103e86104e051101562004c99576001600160a01b03806200c090838c62004ce2565b5116600052611fbb6104e05160031b01602052604060002054156200c0c2575b506200c0bc9062004c7b565b6200c063565b819b6200c0ea916200c0d96200c0bc948d62004ce2565b511662001b03826105805162004ce2565b9a906200c0b0565b509850969592919093966104e0516103e8811015806103c05262004c995760031b611fbc0154986200c129620080c0898c62006258565b6107605260006101e05260006105e0525b6103c05162004c99576105e0518a8110156200c203576200c1706200c1909160006103c052611fbc6104e05160031b0162004efa565b9054610580516001600160a01b03939260031b9190911c83169062033539565b156200c1b0575b506200c1a66105e05162004c7b565b6105e0526200c13a565b60006103c0526200c1cf6105e051611fbc6104e05160031b0162004efa565b90549060031b1c166200c1e96101e0516107605162004ce2565b526200c1f86101e05162004c7b565b6101e052386200c197565b50979294959093985095909560005b8281106200c2ae575050506103c05162004c995761076051516001600160401b03811162002a23576200c25081611fbc6104e05160031b0162005036565b60206107605101611fbc6104e05160031b01600052602060002060005b8381106200c29057505050506200c2849062004c7b565b9492959091956200bf4b565b82516001600160a01b0316818301556020909201916001016200c26d565b6200c2f4906001600160a01b036200c2c7828562004ce2565b51166200c2db6101e0516107605162004ce2565b526200c2ea6101e05162004c7b565b6101e05262004c7b565b6200c212565b5050939092506200c30c915062004c7b565b90916200bd27565b9060208294939401516026811015620029ab576002036200c4cb576040809201908151938451916200c36b6200c34f60a08098015162004c8b565b51966200c360818751015162004caf565b519551015162004cc0565b5194835187510362007c2a57835185510362007bd657835186510362007b7f575060005b86518110156200c4b8576200c3a5818862004ce2565b516103e881101562004c995760ff611fbf6200c3c89260031b015416156202e2a2565b6200c3d4818862004ce2565b516103e881101562004c995760031b611fbf01805460ff191660011790556200c3fe818562004ce2565b516200c40b828962004ce2565b51906103e882101562004c9957611fbd6200c42a9260031b01620056c2565b6200c436818662004ce2565b516200c443828962004ce2565b516103e881101562004c995760031b611fb901556200c463818762004ce2565b516200c470828962004ce2565b516103e881101562004c995760031b611fba01556200c490818862004ce2565b51906103e882101562004c99576000611fbe6200c4b29360031b015562004c7b565b6200c38f565b509592509350506200c30c915062004c7b565b90929160208401516026811015620029ab576003036200caf15760408401906200c4fa60c08351015162004c8b565b51906200c51160a0620077f3818651015162004c8b565b51936200c526835185511462000f4e62033906565b6200c539835186511462000f4e62033906565b60005b83518110156200c597576200c552818662004ce2565b51906103e882101562004c9957611fbb6200c5919260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200c53c565b509095919560005b87518110156200c6e5576200c5b5818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200c5ef60406000205462007dae838962004ce2565b906200c5fc838862004ce2565b51916103e883101562004c9957611fbb6200c6359360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200c641818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200c665848c62004ce2565b511660005260031b016020526200c6876040600020546200686c838962004ce2565b91906200c695828862004ce2565b51906103e882101562004c99576200c6df93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b511660005260031b0160205260406000205562000f4e62033a6f565b6200c59f565b50926200c704919294506200c6fd90969596620336a2565b9462033586565b92604051906200c7148262002b00565b6001825260203681840137516001600160a01b03166200c7348262004c8b565b526000945b80518610156200c2fa576200c74f868262004ce2565b51610740526200c760855162004dfe565b966000946200c770845162004dfe565b6108405260009460005b88518110156200c842578a896200c7aa6001600160a01b036200c79e858462004ce2565b511661074051620334e1565b15806200c7fa575b6200c7cb575b50506200c7c59062004c7b565b6200c77a565b986200c7ef9162001b0382859c62007f8f6200c7c59760018060a01b039262004ce2565b9790508a896200c7b8565b5050506103e861074051101562004c99576001600160a01b036200c81f828b62004ce2565b5116600052611fbb6107405160031b016020528a8960406000205415156200c7b2565b50909895979498969291939660005b88518110156200c8e7576103e861074051101562004c99576001600160a01b036200c87d828b62004ce2565b5116600052611fbb6107405160031b01602052604060002054156200c8ae575b6200c8a89062004c7b565b6200c851565b996200c8a8906200c8de906001600160a01b036200c8cd8e8d62004ce2565b511662001b03826108405162004ce2565b9a90506200c89d565b50985096959291909396610740516103e8811015806102405262004c995760031b611fbc0154986200c91e620080c0898c62006258565b6105c05260006103005260006101c0525b6102405162004c99576101c0518a8110156200c9fa576200c9656200c98291600061024052611fbc6107405160031b0162004efa565b90546108405160039290921b1c6001600160a01b03169062033539565b156200c9a1575b6200c9976101c05162004c7b565b6101c0526200c92f565b6000610240526200c9c06101c051611fbc6107405160031b0162004efa565b60018060a01b0391549060031b1c166200c9e1610300516105c05162004ce2565b526200c9f06103005162004c7b565b610300526200c989565b50979294959093985095909560005b8281106200caa5575050506102405162004c99576105c051516001600160401b03811162002a23576200ca4781611fbc6107405160031b0162005036565b60206105c05101611fbc6107405160031b01600052602060002060005b8381106200ca8757505050506200ca7b9062004c7b565b9492959091956200c739565b82516001600160a01b0316818301556020909201916001016200ca64565b6200caeb906001600160a01b036200cabe828562004ce2565b51166200cad2610300516105c05162004ce2565b526200cae16103005162004c7b565b6103005262004c7b565b6200ca09565b909260208101516026811015620029ab576004036200d11e5760400160c0936200cb2f6200cb23868451015162004c8b565b51958351015162004caf565b51906200cb4660a0620077f3818651015162004c8b565b51936200cb5b875184511462000f4e62033906565b6200cb6e875185511462000f4e62033906565b6200cb81875186511462000f4e62033906565b60005b87518110156200cbec576200cb9a818662004ce2565b51906103e882101562004c99576200cbe691611fbb906001600160a01b036200cbc4848d62004ce2565b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200cb84565b509095919593929360005b83518110156200cd4f576200cc0d818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200cc31848862004ce2565b511660005260031b016020526200cc5360406000205462007dae838862004ce2565b906200cc60838962004ce2565b51916103e883101562004c99576200cca692611fbb906001600160a01b036200cc8a878b62004ce2565b511660005260031b0160205260406000205562000f4e62033a0a565b6200ccb2818762004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ccd6848c62004ce2565b511660005260031b016020526200ccf86040600020546200686c838862004ce2565b9190506200cd07818862004ce2565b51916103e883101562004c99576200cd4992611fbb906001600160a01b036200cd31858e62004ce2565b511660005260031b0160205260406000205562004c7b565b6200cbf7565b5091936200cd6b91935062007e9f620084d191979697620336a2565b6000945b80518610156200c2fa576200cd85868262004ce2565b516107a0526200cd96855162004dfe565b966000946200cda6845162004dfe565b6105605260009460005b88518110156200ce78578a896200cde06001600160a01b036200cdd4858462004ce2565b51166107a051620334e1565b15806200ce30575b6200ce01575b50506200cdfb9062004c7b565b6200cdb0565b986200ce259162001b0382859c62007f8f6200cdfb9760018060a01b039262004ce2565b9790508a896200cdee565b5050506103e86107a051101562004c99576001600160a01b036200ce55828b62004ce2565b5116600052611fbb6107a05160031b016020528a8960406000205415156200cde8565b50909895979498969291939660005b88518110156200cf16576103e86107a051101562004c99576001600160a01b03806200ceb4838c62004ce2565b5116600052611fbb6107a05160031b01602052604060002054156200cee6575b506200cee09062004c7b565b6200ce87565b819b6200cf0e916200cefd6200cee0948d62004ce2565b511662001b03826105605162004ce2565b9a906200ced4565b509850969592919093966107a0516103e8811015806102c05262004c995760031b611fbc0154986200cf4d620080c0898c62006258565b6104405260006108205260006106e0525b6102c05162004c99576106e0518a8110156200d027576200cf946200cfb49160006102c052611fbc6107a05160031b0162004efa565b9054610560516001600160a01b03939260031b9190911c83169062033539565b156200cfd4575b506200cfca6106e05162004c7b565b6106e0526200cf5e565b60006102c0526200cff36106e051611fbc6107a05160031b0162004efa565b90549060031b1c166200d00d610820516104405162004ce2565b526200d01c6108205162004c7b565b61082052386200cfbb565b50979294959093985095909560005b8281106200d0d2575050506102c05162004c995761044051516001600160401b03811162002a23576200d07481611fbc6107a05160031b0162005036565b60206104405101611fbc6107a05160031b01600052602060002060005b8381106200d0b457505050506200d0a89062004c7b565b9492959091956200cd6f565b82516001600160a01b0316818301556020909201916001016200d091565b6200d118906001600160a01b036200d0eb828562004ce2565b51166200d0ff610820516104405162004ce2565b526200d10e6108205162004c7b565b6108205262004c7b565b6200d036565b60208193929301516026811015620029ab576005036200d148579062000f556200c30c926202ed18565b6020819492939401516026811015620029ab576006036200d734576040016200d17660c08251015162004c8b565b51936200d18d60a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b86518110156200d20e576200d1bc818562004ce2565b51906103e882101562004c99576200d20891611fbb906001600160a01b036200d1e6848c62004ce2565b511660005260031b0160205262000f5560406000205462007d41838962004ce2565b6200d1a6565b509060005b86518110156200d2b2576200d229818562004ce2565b516103e881101562004c9957611fbb906001600160a01b036200d24d848b62004ce2565b511660005260031b016020526200d26f60406000205462007dae838862004ce2565b91906200d27d828762004ce2565b51906103e882101562004c99576200d2ac9362000f5592611fbb906001600160a01b036200cc8a878f62004ce2565b6200d213565b50916200d2c9919350620084d190959495620336a2565b91604051926200d2d98462002ac7565b6000845260003681376000945b80518610156200c2fa576200d2fc868262004ce2565b516108e0526200d30d855162004dfe565b966000946200d31d845162004dfe565b6104605260009460005b88518110156200d3ef578a896200d3576001600160a01b036200d34b858462004ce2565b51166108e051620334e1565b15806200d3a7575b6200d378575b50506200d3729062004c7b565b6200d327565b986200d39c9162001b0382859c62007f8f6200d3729760018060a01b039262004ce2565b9790508a896200d365565b5050506103e86108e051101562004c99576001600160a01b036200d3cc828b62004ce2565b5116600052611fbb6108e05160031b016020528a8960406000205415156200d35f565b50909895979498969291939660005b88518110156200d48d576103e86108e051101562004c99576001600160a01b03806200d42b838c62004ce2565b5116600052611fbb6108e05160031b01602052604060002054156200d45d575b506200d4579062004c7b565b6200d3fe565b819b6200d485916200d4746200d457948d62004ce2565b511662001b03826104605162004ce2565b9a906200d44b565b509850969592919093966108e0516103e8811015806102805262004c995760031b611fbc0154986200d4c4620080c0898c62006258565b610260526000610960526000610780525b6102805162004c9957610780518a8110156200d59e576200d50b6200d52b91600061028052611fbc6108e05160031b0162004efa565b9054610460516001600160a01b03939260031b9190911c83169062033539565b156200d54b575b506200d5416107805162004c7b565b610780526200d4d5565b6000610280526200d56a61078051611fbc6108e05160031b0162004efa565b90549060031b1c166200d584610960516102605162004ce2565b526200d5936109605162004c7b565b61096052386200d532565b50979294959093985095909560005b8281106200d649575050506102805162004c995761026051516001600160401b03811162002a23576200d5eb81611fbc6108e05160031b0162005036565b60206102605101611fbc6108e05160031b01600052602060002060005b8381106200d62b57505050506200d61f9062004c7b565b9492959091956200d2e6565b82516001600160a01b0316818301556020909201916001016200d608565b6200d68f906001600160a01b036200d662828562004ce2565b51166200d676610960516102605162004ce2565b526200d6856109605162004c7b565b6109605262004c7b565b6200d5ad565b60405162461bcd60e51b815260206004820152603060248201526000805160206203423b83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b8152602060048201526035602482015260008051602062033e7b8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b6020819492939401516026811015620029ab576007036200d8cf57604001916200d76360c08451015162004c8b565b51916200d77560a08551015162004c8b565b51935151916200d78d845186511462000f4e62033906565b60005b84518110156200d8bd576001600160a01b03806200d7af838862004ce2565b5116600052613ef8806020526200d7d360ff604060002054161562000f4e620339d7565b60026200d7e1848862004ce2565b516200d84b6200d7f2868c62004ce2565b519162008de28b604051966200d8088862002a07565b60018852886200d82f8b60208b01946000865260408c0197885260608c01998a5262004ce2565b511660005260205262008dd86040600020975115158862005795565b519101556200d85b828762004ce2565b51613ef954929116600160401b83101562002a23576001830180613ef95583101562004c9957613ef9600052600080516020620340db83398151915290920180546001600160a01b0319169092179091556200d8b79062004c7b565b6200d790565b5094915092506200c30c915062004c7b565b60208101516026811015620029ab576008036200d9bd5760c060406200d8f9920151015162004c8b565b519160005b83518110156200d9ae576200d9a8906001600160a01b03806200d922838862004ce2565b5116600052613ef890816020526200d94b600160ff6040600020541615151462000f4e62033936565b806200d958848962004ce2565b5116600052816020526200d97c60ff60406000205460081c161562000f4e6203399e565b6200d988838862004ce2565b5116600052602052604060002061010061ff001982541617905562004c7b565b6200d8fe565b50926200c30c91925062004c7b565b60208101516026811015620029ab576009036200da9c5760c060406200d9e7920151015162004c8b565b519160005b83518110156200d9ae576200da96906001600160a01b03806200da10838862004ce2565b5116600052613ef890816020526200da39600160ff6040600020541615151462000f4e62033936565b806200da46848962004ce2565b5116600052816020526200da6e600160ff60406000205460081c1615151462000f4e62033969565b6200da7a838862004ce2565b5116600052602052604060002061ff0019815416905562004c7b565b6200d9ec565b60208101516026811015620029ab57600a036200db8457604001906200dad860a06200dacd60c08551015162004c8b565b519351015162004c8b565b51926200daed835185511462000f4e62033906565b60005b83518110156200db73576200db6d906001600160a01b03806200db14838862004ce2565b5116600052613ef8806020526200db3c600160ff6040600020541615151462000f4e62033936565b6200db48838962004ce2565b51916200db56848962004ce2565b511660005260205260026040600020015562004c7b565b6200daf0565b50939092506200c30c915062004c7b565b6020819493929401516026811015620029ab57600b036200dc6457604001926200dbb360c08551015162004c8b565b51935151916200dbcb855184511462000f4e62033906565b60005b85518110156200dc54576200dc4e9062000f556001600160a01b03806200dbf6848b62004ce2565b5116600052613ef8806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6200dc2a848962004ce2565b51916200dc38858c62004ce2565b51166000526020526001604060002001620056c2565b6200dbce565b509350916200c30c915062004c7b565b90919260208201516026811015620029ab57600c036200ddaf57606060408301510151926200dc93846202d715565b60005b84518110156200db735760e06200dcb68260606040880151015162004ce2565b510151156200dd3a576200dcde6200dcd78260606040880151015162004ce2565b5162005d5b565b613efa548060001981011162001e4f576200dcff6005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620092466200dd34936000190162005ca9565b6200dc96565b6200dd596200dd528260606040880151015162004ce2565b5162005d38565b613efb548060001981011162001e4f576200dd7a6005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620092466200dd34936000190162005c69565b92919060208101516026811015620029ab57600d036200def6576040019260206200dddf60a08651015162004c8b565b5194510151916200ddf485518451146202de09565b60005b85518110156200dc5457806200de126200de8b928662004ce2565b51156200de91576200de356200de29828962004ce2565b51613efa54116202de92565b6200de6160ff60056200de546200de4d858c62004ce2565b5162005ca9565b50015460081c166202deea565b6200de7960ff6005620093a26200de4d858c62004ce2565b6005620093be6200de4d838a62004ce2565b6200ddf7565b6200dead6200dea1828962004ce2565b51613efb54116202de92565b6200decc60ff60056200de546200dec5858c62004ce2565b5162005c69565b6200dee460ff6005620093a26200dec5858c62004ce2565b6005620093be6200dec5838a62004ce2565b60208101516026811015620029ab57600e036200e02c576040019260206200df2360a08651015162004c8b565b5194510151916200df3885518451146202de09565b60005b85518110156200dc5457806200df566200dfc8928662004ce2565b51156200dfce576200df796200df6d828962004ce2565b51613efa54116202dfac565b6200df9e60ff60056200df916200de4d858c62004ce2565b50015460081c166202e005565b6200dfb660ff6005620094fa6200de4d858c62004ce2565b6005620092466200de4d838a62004ce2565b6200df3b565b6200dfea6200dfde828962004ce2565b51613efb54116202dfac565b6200e00260ff60056200df916200dec5858c62004ce2565b6200e01a60ff6005620094fa6200dec5858c62004ce2565b6005620092466200dec5838a62004ce2565b90919260208201516026811015620029ab57600f036200e16957606060408301510151926200e05b846202d715565b60005b84518110156200db735760e06200e07e8260606040880151015162004ce2565b510151156200e0fb576200e09f6200dcd78260606040880151015162004ce2565b613efa548060001981011162001e4f576200e0c06005916000190162005ca9565b5001805461ff001916610100179055613efa54906000198201821062001e4f576005620093be6200e0f5936000190162005ca9565b6200e05e565b6200e1136200dd528260606040880151015162004ce2565b613efb548060001981011162001e4f576200e1346005916000190162005c69565b5001805461ff001916610100179055613efb54906000198201821062001e4f576005620093be6200e0f5936000190162005c69565b92919060208101516026811015620029ab576010036200e2ae5760400151926200e19c60a0608086015195015162004c8b565b51916200e1b1855184511462000f4e62033906565b60005b85518110156200dc5457806200e1cf6200e244928862004ce2565b516200e1db8162002f45565b6200e1e7828762004ce2565b51906200e1f48162002f45565b6200e20b6200e20262033a39565b82151562004c48565b6200e2168162002f45565b600181036200e24a57506200e23a6200e22e62033a39565b61271083111562004c48565b613f675562004c7b565b6200e1b4565b6200e2558162002f45565b600281036200e2695750613f685562004c7b565b6200e2748162002f45565b600381036200e2885750613f695562004c7b565b806200e29660049262002f45565b146200e2a3575062004c7b565b613f6a55386200a16d565b60208101516026811015620029ab576011036200e55157604001906200e2df60a06200dacd60c08551015162004c8b565b51936200e2f083518651146202d58d565b60005b83518110156200e370576200e36a906200e34a6001600160a01b03806200e31b848962004ce2565b5116600052613efd90816020526200e33e6040600020546200686c868d62004ce2565b939062000f4e620338bc565b6200e356848962004ce2565b511660005260205260406000205562004c7b565b6200e2f3565b509350906200e37f9062033586565b90613efe54936200e396620080c084518762006258565b9060009260005b8781106200e511575060005b85518110156200e45e576000805b8981106200e40f575b50156200e3d9575b6200e3d39062004c7b565b6200e3a9565b936200e3d3906200e406906001600160a01b036200e3f8888a62004ce2565b511662001b03828862004ce2565b9490506200e3c8565b6200e41a8162004ec2565b90546001600160a01b0360039290921b1c8116906200e43a858b62004ce2565b5116146200e453576200e44d9062004c7b565b6200e3b7565b50506001386200e3c0565b5095509392506200e46f8262004dfe565b8051906001600160401b03821162002a23576020906200e48f8362004fdd565b01613efe600052602060002060005b8381106200e4f3575050505060005b8281106200e4c3575050506200c30c9062004c7b565b6200e4ed9062000f556001600160a01b036200e4e0838662004ce2565b511662001a448362004ec2565b6200e4ad565b82516001600160a01b0316818301556020909201916001016200e49e565b936200e5446200e54b916200e5268762004ec2565b905460039190911b1c6001600160a01b031662001b03828862004ce2565b9462004c7b565b6200e39d565b60208194929401516026811015620029ab576012036200e79557604001906200e58560a06200dacd60c08551015162004c8b565b51936200e59683518651146202d58d565b60005b83518110156200e5ea576200e5e4906200e34a6001600160a01b03806200e5c1848962004ce2565b5116600052613efd90816020526200e33e60406000205462007dae868d62004ce2565b6200e599565b50935091906200e5fa9062033586565b613efe546200e6098162004dfe565b906000926000915b8083106200e6bc575050506200e6278262004dfe565b8051906001600160401b03821162002a23576020906200e6478362004fdd565b01613efe600052602060002060005b8381106200e69e575050505060005b8281106200e67b575050506200c30c9062004c7b565b6200e6989062000f556001600160a01b036200e4e0838662004ce2565b6200e665565b82516001600160a01b0316818301556020909201916001016200e656565b91956000959193959760005b85518110156200e786576200e6dd8962004ec2565b90546001600160a01b0360039290921b1c8116906200e6fd838962004ce2565b5116146200e716576200e7109062004c7b565b6200e6c8565b509750956001959391955b806200e755575b156200e740576200e7399062004c7b565b916200e611565b936200e5446200e739916200e5268762004ec2565b506200e7618162004ec2565b60018060a01b0391549060031b1c16600052613efd602052604060002054156200e728565b5097969096959391956200e721565b60208194939401516026811015620029ab576013036200e8365760408091015101519160005b83518110156200d9ae576200e7d1818562004ce2565b5190613efc54600160401b81101562002a23576001810180613efc5581101562004c9957613efc6000526200e8309262000f55916007027f6710e0bb821cd3dfcfba05f5136082a6d0bca8d604d6d14bfd93de2dd49659d2016202f75c565b6200e7bb565b6020819493929401516026811015620029ab576014036200ed7857604001906200e86560c08351015162004c8b565b51936200e87c60a0620077f3818651015162004c8b565b51916200e88d86518551146202e0ca565b6200e89c86518451146202e130565b60005b86518110156200e996576200e8b5818562004ce2565b516200e8c2828762004ce2565b51906103e882101562004c9957611fbe6200e8e39260031b01549062006049565b906200e8f0838862004ce2565b51916103e883101562004c9957611fbe6200e9109360031b01556202e1ea565b6200e91c818562004ce2565b516200e929828762004ce2565b51906103e882101562004c99576200e95391611fbb906001600160a01b036200bea4868d62004ce2565b91906200e961828862004ce2565b51906103e882101562004c99576200e9909362000f5592611fbb906001600160a01b036200befa878f62004ce2565b6200e89f565b50926200e9ad919250620084d190959495620336a2565b916040516200e9bc8162002ac7565b6000815260003681376000945b80518610156200c2fa576200e9df868262004ce2565b516107e0526200e9f0855162004dfe565b966000946200ea00845162004dfe565b6108805260009460005b88518110156200ead2578a896200ea3a6001600160a01b036200ea2e858462004ce2565b51166107e051620334e1565b15806200ea8a575b6200ea5b575b50506200ea559062004c7b565b6200ea0a565b986200ea7f9162001b0382859c62007f8f6200ea559760018060a01b039262004ce2565b9790508a896200ea48565b5050506103e86107e051101562004c99576001600160a01b036200eaaf828b62004ce2565b5116600052611fbb6107e05160031b016020528a8960406000205415156200ea42565b50909895979498969291939660005b88518110156200eb70576103e86107e051101562004c99576001600160a01b03806200eb0e838c62004ce2565b5116600052611fbb6107e05160031b01602052604060002054156200eb40575b506200eb3a9062004c7b565b6200eae1565b819b6200eb68916200eb576200eb3a948d62004ce2565b511662001b03826108805162004ce2565b9a906200eb2e565b509850969592919093966107e0516103e8811015806108005262004c995760031b611fbc0154986200eba7620080c0898c62006258565b6102005260006106005260006103e0525b6108005162004c99576103e0518a8110156200ec81576200ebee6200ec0e91600061080052611fbc6107e05160031b0162004efa565b9054610880516001600160a01b03939260031b9190911c83169062033539565b156200ec2e575b506200ec246103e05162004c7b565b6103e0526200ebb8565b6000610800526200ec4d6103e051611fbc6107e05160031b0162004efa565b90549060031b1c166200ec67610600516102005162004ce2565b526200ec766106005162004c7b565b61060052386200ec15565b50979294959093985095909560005b8281106200ed2c575050506108005162004c995761020051516001600160401b03811162002a23576200ecce81611fbc6107e05160031b0162005036565b60206102005101611fbc6107e05160031b01600052602060002060005b8381106200ed0e57505050506200ed029062004c7b565b9492959091956200e9c9565b82516001600160a01b0316818301556020909201916001016200eceb565b6200ed72906001600160a01b036200ed45828562004ce2565b51166200ed59610600516102005162004ce2565b526200ed686106005162004c7b565b6106005262004c7b565b6200ec90565b9260208401516026811015620029ab576015036200f3795760408401906200eda560c08351015162004c8b565b51906200edbc60a0620077f3818651015162004c8b565b51936200edd1835185511462000f4e62033906565b6200ede4835186511462000f4e62033906565b60005b83518110156200ee42576200edfd818662004ce2565b51906103e882101562004c9957611fbb6200ee3c9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b6200ede7565b509095919560005b87518110156200ef74576200ee60818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b016020526200ee9a60406000205462007dae838962004ce2565b906200eea7838862004ce2565b51916103e883101562004c9957611fbb6200eee09360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b6200eeec818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036200ef10848c62004ce2565b511660005260031b016020526200ef326040600020546200686c838962004ce2565b91906200ef40828862004ce2565b51906103e882101562004c99576200ef6e93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b6200ee4a565b50926200ef8c919294506200c6fd90969596620336a2565b92604051906200ef9c8262002b00565b6001825260203681840137516001600160a01b03166200efbc8262004c8b565b526000945b80518610156200c2fa576200efd7868262004ce2565b51610380526200efe8855162004dfe565b966000946200eff8845162004dfe565b6105a05260009460005b88518110156200f0ca578a896200f0326001600160a01b036200f026858462004ce2565b511661038051620334e1565b15806200f082575b6200f053575b50506200f04d9062004c7b565b6200f002565b986200f0779162001b0382859c62007f8f6200f04d9760018060a01b039262004ce2565b9790508a896200f040565b5050506103e861038051101562004c99576001600160a01b036200f0a7828b62004ce2565b5116600052611fbb6103805160031b016020528a8960406000205415156200f03a565b50909895979498969291939660005b88518110156200f16f576103e861038051101562004c99576001600160a01b036200f105828b62004ce2565b5116600052611fbb6103805160031b01602052604060002054156200f136575b6200f1309062004c7b565b6200f0d9565b996200f130906200f166906001600160a01b036200f1558e8d62004ce2565b511662001b03826105a05162004ce2565b9a90506200f125565b50985096959291909396610380516103e8811015806103605262004c995760031b611fbc0154986200f1a6620080c0898c62006258565b6107c0526000610640526000610700525b6103605162004c9957610700518a8110156200f282576200f1ed6200f20a91600061036052611fbc6103805160031b0162004efa565b90546105a05160039290921b1c6001600160a01b03169062033539565b156200f229575b6200f21f6107005162004c7b565b610700526200f1b7565b6000610360526200f24861070051611fbc6103805160031b0162004efa565b60018060a01b0391549060031b1c166200f269610640516107c05162004ce2565b526200f2786106405162004c7b565b610640526200f211565b50979294959093985095909560005b8281106200f32d575050506103605162004c99576107c051516001600160401b03811162002a23576200f2cf81611fbc6103805160031b0162005036565b60206107c05101611fbc6103805160031b01600052602060002060005b8381106200f30f57505050506200f3039062004c7b565b9492959091956200efc1565b82516001600160a01b0316818301556020909201916001016200f2ec565b6200f373906001600160a01b036200f346828562004ce2565b51166200f35a610640516107c05162004ce2565b526200f3696106405162004c7b565b6106405262004c7b565b6200f291565b90919260208101516026811015620029ab576016036200f42b5760c060406200f3a6920151015162004c8b565b519160005b83518110156200d9ae576001600160a01b036200f3c9828662004ce2565b51613f6b54929116600160401b83101562002a23576001830180613f6b5583101562004c9957613f6b60005260008051602062033ebb83398151915290920180546001600160a01b0319169092179091556200f4259062004c7b565b6200f3ab565b60208101516026811015620029ab576017036200f4885760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab576018036200f5465760c060406200f4b2920151015162004c8b565b5191600160ff19613f6e541617613f6e5560005b83518110156200d9ae576001600160a01b036200f4e4828662004ce2565b51613f6d54929116600160401b83101562002a23576001830180613f6d5583101562004c9957613f6d600052600080516020620340bb83398151915290920180546001600160a01b0319169092179091556200f5409062004c7b565b6200f4c6565b6020819492939401516026811015620029ab576019036200f56e575b506200c30c9062004c7b565b60208101516026811015620029ab57601a036200f6e55760a060406200f598920151015162004c8b565b51906200f5a960038351146202d58d565b6200f5b48262004c8b565b516200f5c46200a1068462004caf565b51926200f6a9576200c30c926001036200f6a2576200f5eb6200f64991613f695462006049565b613f6955604051906200f5fe8262002a8f565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004c48565b6200f69b6200f65b613f6a5462006036565b613f6a55604051906200f66e8262002b00565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004c48565b906200f562565b506200f69b565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b036200fc7557509190613f67546200f7116200a1e362033793565b613f6a54613f685411156200f7306200f72962033801565b8262004c48565b613f6954906200f741838362005f19565b50506200f74d62033857565b506000805b6103e882106200fc26575b5050906200f78d6200f79393926200f7836200f77862033793565b612710861062004c48565b62000f4e62033801565b62005f19565b90506200f79f62033857565b5060009060005b6103e881106200fb53575b50906127106200f7c2920462006236565b90506200f7d2613f745462004dfe565b906000946000905b6103e88210156200fb46578160031b9460ff611fbf87015416156200f93057600096611fba870154156200f91f57600098975b62004c9957611fbc8701548910156200f905576200f83089611fbc890162004efa565b600160a01b6001900391549060031b1c169788600052611fbb8801602052604098868a60002054906200f8639162005f19565b9a906200f86f62033857565b6200f87a9162004c48565b60009a611fba8b01546200f88e9162005f19565b91906200f89a62033857565b6200f8a59162004c48565b82600052613eff602052600020908154906200f8c19162006049565b9091556200f8ce62033857565b6200f8d99162004c48565b6200f8e5828962004ce2565b526200f8f19062004c7b565b986200f8fd9062004c7b565b98976200f80d565b929095506200f9179196975062004c7b565b90946200f7da565b929095506200f91791965062004c7b565b95969392509350505b6200f9448262004dfe565b9160009160005b8281106200fab057505050613f0054916200f96b620080c0848462006258565b926000906000905b8082106200fa9357505060005b8381106200f9fd5750508251929150506001600160401b03821162002a23576020906200f9ad8362005000565b01613f00600052602060002060005b8381106200f9df57505050506200c30c906000613f69556000613f6a556200f69b565b82516001600160a01b0316818301556020909201916001016200f9bc565b6000805b8381106200fa4b575b50156200fa23575b6200fa1d9062004c7b565b6200f980565b906200fa1d906200fa42906001600160a01b0362008248858762004ce2565b9190506200fa12565b6001600160a01b03806200fa60858862004ce2565b5116906200fa6f838a62004ce2565b5116146200fa88576200fa829062004c7b565b6200fa01565b50506001386200fa0a565b9091620082566200faa99162009b6f8562004ede565b906200f973565b6000805b8581106200fafe575b50156200fad6575b6200fad09062004c7b565b6200f94b565b926200fad0906200faf5906001600160a01b0362008248878662004ce2565b9390506200fac5565b6001600160a01b03806200fb13858762004ce2565b5116906200fb22838a62004ce2565b5116146200fb3b576200fb359062004c7b565b6200fab4565b50506001386200fabd565b939495929150506200f939565b90918160039695961b60ff611fbf82015416156200fc1a57611fba810154611fbc8201546000928391825b8184106200fbba5750505050620074b96200fbb1936200fba962000f559796946200621c9462005f19565b929062005d7e565b9493946200f7a6565b94929462004c99576200fc13856200fc0b6200fbdf62000f5598611fbc870162004efa565b905460039190911b1c6001600160a01b03166000908152611fbb86016020526040812054909662006049565b979062005f3b565b926200fb7e565b5091909493946200f7b1565b8160039897981b60ff611fbf82015416156200fc6b57916200a622620074b96200fc61936200a61662000f5596611fba6200a60c8762005eb4565b909695966200f752565b509695966200f75d565b60208101516026811015620029ab57601c036200fcd25760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d036200fcf6575b506200c30c906200f69b565b91929060208301516026811015620029ab57601e036200ff0d576200fd2360a06040850151015162004c8b565b51516200fd3860a06040860151015162004caf565b5151036200aeb0576200fd5360a06040850151015162004c8b565b51516200fd6860a06040860151015162004cc0565b5151036200ae34576200fd8360a06040850151015162004c8b565b51926200fd9860a06040830151015162004caf565b51916200fdad60a06040840151015162004cc0565b51956200fdba836202ed18565b60009460005b87518110156200fe13576200fdde6200acf06200ace3838962004ce2565b806200fdf7575b506200fdf19062004c7b565b6200fdc0565b906200ad266200fe0c986200fdf19362006049565b906200fde5565b5096509450915091806200fe31575b506200c30c91505b906200fcea565b6200fe5c9060018060a01b038451166000526200ad84613efd91826020526040600020549062006049565b60018060a01b03845116600052602052604060002055600091600092613efe54935b8481106200fec8575b506200fe2257516001600160a01b031691600160401b81101562002a23576200c30c9262001a448260016200fec19401613efe5562004ec2565b386200fe22565b6200fed38162004ec2565b9054845160039290921b1c6001600160a01b039081169116146200ff02576200fefc9062004c7b565b6200fe7e565b50506001386200fe87565b90929160208101516026811015620029ab57601f036200ff885760406200ff379101515162004c8b565b5190613f6c54600160401b81101562002a23576001810180613f6c5581101562004c9957613f6c6000526200c30c926200ff829160008051602062033efb83398151915201620056c2565b6200fe2a565b60208101516026811015620029ab576020036200ffac575b506200c30c906200fe2a565b60208101516026811015620029ab576021146200ffa05760208101516026811015620029ab576022036201003257506200c30c9060ff19613f6e5416613f6e55613f6d546000613f6d558062010006575b505b906200ffa0565b613f6d6000526201002b90600080516020620340bb8339815191529081019062004f3f565b386200fffd565b60208101516026811015620029ab5760230362010056575b506200c30c906200ffff565b60208101516026811015620029ab576024146201004a5760208101516026811015620029ab576025146201004a5792909160208401516026811015620029ab576015036201069a576040840190620100b360c08351015162004c8b565b5190620100ca60a0620077f3818651015162004c8b565b5193620100df835185511462000f4e62033906565b620100f2835186511462000f4e62033906565b60005b835181101562010150576201010b818662004ce2565b51906103e882101562004c9957611fbb6201014a9260018060a01b038b511660005260031b0160205262000f5560406000205462007d41838a62004ce2565b620100f5565b509095919560005b875181101562010282576201016e818662004ce2565b516103e881101562004c9957611fbb9060018060a01b0386511660005260031b01602052620101a860406000205462007dae838962004ce2565b90620101b5838862004ce2565b51916103e883101562004c9957611fbb620101ee9360018060a01b0389511660005260031b0160205260406000205562000f4e62033a0a565b620101fa818662004ce2565b516103e881101562004c9957611fbb906001600160a01b036201021e848c62004ce2565b511660005260031b01602052620102406040600020546200686c838962004ce2565b91906201024e828862004ce2565b51906103e882101562004c99576201027c93611fbb62000f55938d6200c6c38760018060a01b039262004ce2565b62010158565b50926201029a919294506200c6fd90969596620336a2565b9260405190620102aa8262002b00565b6001825260203681840137516001600160a01b0316620102ca8262004c8b565b526000945b80518610156201068757620102e5868262004ce2565b51610ac052620102f6855162004dfe565b9660009462010306845162004dfe565b6109205260009460005b8851811015620103d8578a89620103406001600160a01b0362010334858462004ce2565b5116610ac051620334e1565b158062010390575b62010361575b50506201035b9062004c7b565b62010310565b98620103859162001b0382859c62007f8f6201035b9760018060a01b039262004ce2565b9790508a896201034e565b5050506103e8610ac051101562004c99576001600160a01b03620103b5828b62004ce2565b5116600052611fbb610ac05160031b016020528a89604060002054151562010348565b50909895979498969291939660005b88518110156201047d576103e8610ac051101562004c99576001600160a01b0362010413828b62004ce2565b5116600052611fbb610ac05160031b016020526040600020541562010444575b6201043e9062004c7b565b620103e7565b996201043e9062010474906001600160a01b03620104638e8d62004ce2565b511662001b03826109205162004ce2565b9a905062010433565b50985096959291909396610ac0516103e8811015806106205262004c995760031b611fbc015498620104b4620080c0898c62006258565b6109005260006109e0526000610480525b6106205162004c9957610480518a8110156201059057620104fb6201051891600061062052611fbc610ac05160031b0162004efa565b90546109205160039290921b1c6001600160a01b03169062033539565b1562010537575b6201052d6104805162004c7b565b61048052620104c5565b6000610620526201055661048051611fbc610ac05160031b0162004efa565b60018060a01b0391549060031b1c16620105776109e0516109005162004ce2565b52620105866109e05162004c7b565b6109e0526201051f565b50979294959093985095909560005b8281106201063b575050506106205162004c995761090051516001600160401b03811162002a2357620105dd81611fbc610ac05160031b0162005036565b60206109005101611fbc610ac05160031b01600052602060002060005b8381106201061d5750505050620106119062004c7b565b949295909195620102cf565b82516001600160a01b031681830155602090920191600101620105fa565b62010681906001600160a01b0362010654828562004ce2565b5116620106686109e0516109005162004ce2565b52620106776109e05162004c7b565b6109e05262004c7b565b6201059f565b5050939092506200c30c9150906201004a565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b50919050620106e782620159a8565b92906006811015620029ab5760028103620107175760405162461bcd60e51b81528062004c7760048201620075e7565b60038103620116ab5750613f738054600260ff82166201073781620029a0565b14620116665760ff19166002179055613f78549060018201821162001e4f5760018201613f7855611f44549092600019929060005b8651811015620107e8576201078f8462010787838a62004ce2565b511062032fe8565b846002620107a9620107a2848b62004ce2565b516202f73c565b50015410620107c4575b620107be9062004c7b565b6201076c565b9350620107be6002620107dc620107a2878a62004ce2565b500154949050620107b3565b5090936000199360005b87518110156201085f576201080d8562010787838b62004ce2565b85600362010820620107a2848c62004ce2565b500154106201083b575b620108359062004c7b565b620107f2565b945062010835600362010853620107a2888b62004ce2565b5001549590506201082a565b509194600191935062010873875162004dfe565b6201087f885162004dfe565b6201088b895162004dfe565b90620108988a5162004dfe565b9260405197620108a88962002a72565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e0850152600061010085015201600052613f766020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b821162002a23576001840154826001860155808310620114a7575b5060200190600184016000526020600020916000905b82821062010e42575050505060406201096191015160028301620056c2565b60208301518051906001600160401b03821162002a2357602060038401916201098b848462005036565b0190600052602060002060005b83811062010e2d575050505060408301518051906001600160401b03821162002a235760206004840191620109ce848462005036565b0190600052602060002060005b83811062010e18575050505060608301518051906001600160401b03821162002a23576020600584019162010a11848462005036565b0190600052602060002060005b83811062010e03575050505060808301518051906001600160401b03821162002a23576020600684019162010a54848462005036565b0190600052602060002060005b83811062010dee575050505060a0830151600782015560c0830151600882015560e083015192906009016003841015620029ab5761010062010ab99262010ac09560ff801985541691161783550151151590620057a6565b4262006049565b901562010dae57613f7854600052613f7660205280600760406000200155613f715562010afe613f7854918260005260076040600020015462006049565b91901562010d6b57600052613f7660205280600860406000200155613f7255613f78546000526009604060002001600260ff1982541617905560005b825181101562010b80578062000f5562010b5962010b7a938662004ce2565b51613f7854600052613f7660205262006c1783600360406000200162004efa565b62010b3a565b506000915b805183101562010d6657613f78549283600052613f7660205262010bc262010bb582600360406000200162004efa565b90549060031b1c6202f73c565b50549162010bd08362004dfe565b9260005b81811062010d1b5750506000906000915b845183101562010cea5762010bfb838662004ce2565b516103e8908181101562004c995760031b6001015462010c1c858862004ce2565b519182101562004c9957600662010c399260031b01549062005f19565b901562010ca65762010c4b9162006049565b92901562010c655762010c5e9062004c7b565b9162010be5565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b909562010d14945062000f559250600052613f7660205262006c1783600660406000200162004efa565b9162010b85565b62010d609087600052613f7660205262010d4d8162010d4662010bb588600360406000200162004efa565b5062004efa565b90549060031b1c62001b03828862004ce2565b62010bd4565b509050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b60019060208451940193818401550162010a61565b60019060208451940193818401550162010a1e565b600190602084519401938184015501620109db565b60019060208451940193818401550162010998565b805180518554602083015190916001600160a01b0316906026811015620029ab576001600160a81b03199092161760a09190911b60ff60a01b16178555604001518051805190600187019060209062010e9c8484620053ca565b01906000526020600020906000905b838210620114875750505050602081015180516001600160401b03811162002a23576020600288019262010ee0838562032aee565b019160005260206000209060005b8160051c81106201144b5750601f198116810362011406575b5050506040810151805190600160401b821162002a235760038701548260038901558083106201137e575b50602001600387016000526020600020906000905b8382106201135d57505050506060810151805190600160401b821162002a23576004870154826004890155808310620112dc575b50602001600487016000526020600020906000905b838210620112bb5750505050608081015180516001600160401b03811162002a23576020600588019262010fc5838562032aee565b019160005260206000209060005b8160051c81106201127c5750601f198116928382036201122d575b505050506006850160a082015160208151916201100c838562005458565b019160005260206000206000925b828410620111c957505050506007850160c0820151602081519162011040838562005458565b019160005260206000206000925b8284106201115c575050505060e001518051906001600160401b03821162002a23576201108e8262011084600889015462002c01565b6008890162005678565b602090601f8311600114620110e1579282600993602093600196600092620110d5575b5050600019600383901b1c191690851b1760088801555b0194019101909262010942565b015190503880620110b1565b906008870160005260206000209160005b601f198516811062011143575083602093600196938793600997601f1981161062011129575b505050811b016008880155620110c8565b015160001960f88460031b161c1916905538808062011118565b91926020600181928685015181550194019201620110f2565b80518051906001600160401b03821162002a23576020906201117f838662005036565b0183600052602060002060005b838110620111ab5750505050600160208192019201930192906201104e565b82516001600160a01b0316818301556020909201916001016201118c565b80518051906001600160401b03821162002a2357602090620111ec838662005036565b0183600052602060002060005b838110620112185750505050600160208192019201930192906201101a565b600190602084519401938184015501620111f9565b6000936000905b8084038210620112505750505060051c01553880808062010fee565b909194602062011271600192858951916201126b8362002f45565b62032b58565b960192019062011234565b6000805b602081106201129757508382015560010162010fd3565b94906020620112b1600192888551916201126b8362002f45565b9201950162011280565b6006602082620112cf6001945187620057d8565b0193019101909162010f90565b600681810204810362001e4f57600683810204830362001e4f576004880160005260206000208360060281015b82600602820181106201131e57505062010f7b565b80600060069255600060018201556201133a60028201620054a7565b600060038201556201134f600482016200533c565b600060058201550162011309565b60076020826201137160019451876202f75c565b0193019101909162010f47565b600781810204810362001e4f57600783810204830362001e4f576003880160005260206000208360070281015b8260070282018110620113c057505062010f32565b80620113ce60079262004fb6565b60006001820155600060028201556000600382015560006004820155620113f8600582016200533c565b6000600682015501620113ab565b60009260005b601f198316830381106201142a57505060051c015538808062010f07565b909360206201144160019284885115159162032b58565b950191016201140c565b6000805b602081106201146657508382015560010162010eee565b949060206201147d60019288855115159162032b58565b920195016201144f565b60016020826201149a83945187620056c2565b0193019101909162010eab565b600981810204810362001e4f57600983810204830362001e4f576001850160005260206000208360090281015b8260090282018110620114e95750506201092c565b60008155620114fb600182016200538b565b62011510600282018054906000815562032ac6565b60038101546000600383015580620115f0575b506004810154600060048301558062011581575b5080620115506005600993018054906000815562032ac6565b6201155e6006820162005419565b6201156c6007820162005419565b6201157a600882016200533c565b01620114d4565b600681810204810362001e4f57600482016000526020600020906006028101905b818110620115b1575062011537565b8060006006925560006001820155620115cd60028201620054a7565b60006003820155620115e2600482016200533c565b6000600582015501620115a2565b600781810204810362001e4f57600382016000526020600020906007028101905b81811062011620575062011523565b806201162e60079262004fb6565b6000600182015560006002820155600060038201556000600482015562011658600582016200533c565b600060068201550162011611565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b60059192935014620116ba5750565b90600080611f4a54905b81811062014ba8575b50501562014b8c575b60005b6020830151908151811015620117315762000f55620077196201170b620076f96020620067ff866201172b9862004ce2565b86516001600160a01b03166000908152611f496020526040902062024340565b620116d9565b505060005b602083015180518210156201177e57620076f96020620067ff846201175b9462004ce2565b90606482101562004c995762011778914290611f4b015562004c7b565b62011736565b50506000905b602083015180518310156200b13957826201179f9162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab57600103620119e75760400190620117e060c08351015162004c8b565b5193620117f760a0620077f3818651015162004c8b565b51916201180886518551146202e0ca565b6201181786518451146202e130565b60005b86518110156201196e5762011830818662004ce2565b516103e881101562004c9957600160ff6007620118569360031b0154161515146202e192565b62011862818562004ce2565b516201186f828762004ce2565b51906103e882101562004c995760066201188f9260031b01549062006049565b906201189c838862004ce2565b51916103e883101562004c99576006620118bb9360031b01556202e1ea565b620118c7818562004ce2565b51620118d4828762004ce2565b51906103e882101562004c995762011915916003906001600160a01b03620118fd868d62004ce2565b5116600052811b016020526040600020549062006049565b919062011923828862004ce2565b51906103e882101562004c9957620119689362000f55926003906001600160a01b0362011951878f62004ce2565b5116600052811b016020526040600020556202e249565b6201181a565b5094915091620119826201198991620336a2565b9162033586565b9360405192620119998462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba620119c4938762004ce2565b620119a5565b5094509260209250620119de915062004c7b565b91905062011784565b6020819492939401516026811015620029ab5760020362011c7f5760400180519283519062011a1f62007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b865181101562011b655762011a58818862004ce2565b516103e881101562004c995760ff600762011a7a9260031b015416156202e2a2565b62011a86818862004ce2565b516103e881101562004c995760031b600701805460ff1916600117905562011aaf818562004ce2565b5162011abc828962004ce2565b51906103e882101562004c9957600562011ada9260031b01620056c2565b62011ae6818662004ce2565b5162011af3828962004ce2565b516103e881101562004c995760031b6001015562011b12818762004ce2565b5162011b1f828962004ce2565b516103e881101562004c995760031b6002015562011b3e818862004ce2565b51906103e882101562004c99576000600662011b5f9360031b015562004c7b565b62011a42565b50959150935060209250620119de915062004c7b565b60405162461bcd60e51b815260206004820152603c602482015260008051602062033f3b83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b8152602060048201526039602482015260008051602062033f3b8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526038602482015260008051602062033f3b8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b6020819493929401516026811015620029ab5760030362011cad576020919262000f55620119de926202e2ee565b60208101516026811015620029ab5760040362011f555762011cd760c06040830151015162004c8b565b519362011cec60c06040840151015162004caf565b519062011d1360a0604062011d078282880151015162004c8b565b51950151015162004caf565b519362011d28875184511462000f4e62033906565b62011d3b875185511462000f4e62033906565b62011d4e875186511462000f4e62033906565b60005b875181101562011db75762011d67818662004ce2565b51906103e882101562004c995762011db1916003906001600160a01b0362011d90848d62004ce2565b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62011d51565b509095919593929360005b835181101562011f125762011dd8818762004ce2565b516103e881101562004c99576003906001600160a01b0362011dfb848862004ce2565b5116600052811b0160205262011e1c60406000205462007dae838862004ce2565b9062011e29838962004ce2565b51916103e883101562004c995762011e6d926003906001600160a01b0362011e52878b62004ce2565b5116600052811b0160205260406000205562000f4e62033a0a565b62011e79818762004ce2565b516103e881101562004c99576003906001600160a01b0362011e9c848c62004ce2565b5116600052811b0160205262011ebd6040600020546200686c838862004ce2565b91905062011ecc818862004ce2565b51916103e883101562004c995762011f0c926003906001600160a01b0362011ef5858e62004ce2565b5116600052811b0160205260406000205562004c7b565b62011dc2565b509362011f2c9192969350620084d162007e9f91620336a2565b9260005b8351811015620119ca578062000f55620079ba62011f4f938762004ce2565b62011f30565b929060208401516026811015620029ab57600503620124c25762011f8160a06040860151015162004c8b565b519062011f9660a06040870151015162004caf565b51928251845103620089ef5760005b835181101562011ffe5762011fbb818562004ce2565b51906103e882101562004c9957600362011ff89260018060a01b038a5116600052811b0160205262000f5560406000205462007d41838962004ce2565b62011fa5565b509060005b8351811015620120a15762012019818562004ce2565b516103e881101562004c995760039060018060a01b03895116600052811b016020526201205160406000205462007dae838862004ce2565b91906201205f828762004ce2565b51906103e882101562004c99576201209b93600362000f559360018060a01b038d5116600052811b0160205260406000205562000f4e62033a0a565b62012003565b5091620120b29194959350620336a2565b9260405192620120c28462002b00565b6001845260203681860137516001600160a01b0316620120e28462004c8b565b5260405192620120f28462002ac7565b6000845260003681376000945b8051861015620124ae5762012115868262004ce2565b516102a05262012126855162004dfe565b9660009462012136845162004dfe565b610a205260009460005b885181101562012206578a89620121706001600160a01b0362012164858462004ce2565b51166102a0516203348a565b1580620121c0575b62012191575b50506201218b9062004c7b565b62012140565b98620121b59162001b0382859c62007f8f6201218b9760018060a01b039262004ce2565b9790508a896201217e565b5050506103e86102a051101562004c99576001600160a01b03620121e5828b62004ce2565b511660005260036102a051811b016020528a89604060002054151562012178565b50909895979498969291939660005b8851811015620122a9576103e86102a051101562004c99576001600160a01b0362012241828b62004ce2565b511660005260036102a051811b016020526040600020541562012270575b6201226a9062004c7b565b62012215565b996201226a90620122a0906001600160a01b036201228f8e8d62004ce2565b511662001b0382610a205162004ce2565b9a90506201225f565b509850969592919093966102a0516103e8811015806108605262004c995760031b6004015498620122df620080c0898c62006258565b6104c0526000610aa05260006104a0525b6108605162004c99576104a0518a811015620123b95762012325620123429160006108605260046102a05160031b0162004efa565b9054610a205160039290921b1c6001600160a01b03169062033539565b1562012361575b620123576104a05162004c7b565b6104a052620122f0565b6000610860526201237f6104a05160046102a05160031b0162004efa565b60018060a01b0391549060031b1c16620123a0610aa0516104c05162004ce2565b52620123af610aa05162004c7b565b610aa05262012349565b50979294959093985095909560005b82811062012462575050506108605162004c99576104c051516001600160401b03811162002a2357620124058160046102a05160031b0162005036565b60206104c0510160046102a05160031b01600052602060002060005b838110620124445750505050620124389062004c7b565b949295909195620120ff565b82516001600160a01b03168183015560209092019160010162012421565b620124a8906001600160a01b036201247b828562004ce2565b51166201248f610aa0516104c05162004ce2565b526201249e610aa05162004c7b565b610aa05262004c7b565b620123c8565b505093620119de9193506020925062004c7b565b909260208101516026811015620029ab576006036201267b57604001620124ee60c08251015162004c8b565b51936201250560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620125845762012534818562004ce2565b51906103e882101562004c99576201257e916003906001600160a01b036201255d848c62004ce2565b5116600052811b0160205262000f5560406000205462007d41838962004ce2565b6201251e565b509060005b865181101562012625576201259f818562004ce2565b516103e881101562004c99576003906001600160a01b03620125c2848b62004ce2565b5116600052811b01602052620125e360406000205462007dae838862004ce2565b9190620125f1828762004ce2565b51906103e882101562004c99576201261f9362000f55926003906001600160a01b0362011e52878f62004ce2565b62012589565b5094916201263a9193506201198290620336a2565b91604051946201264a8662002ac7565b60008652600036813760005b8351811015620119ca578062000f55620079ba62012675938762004ce2565b62012656565b60208101516026811015620029ab576007036201278d5760400192620126a660c08551015162004c8b565b5191620126b860a08651015162004c8b565b5194515191620126d0845187511462000f4e62033906565b60005b8451811015620119ca57620127879062000f556001600160a01b0380620126fb848a62004ce2565b51166000528660028b620127776201273a876201273281611f40978860205262008d7e60ff604060002054161562000f4e620339d7565b519362004ce2565b519162008de28d60405196620127508862002a07565b60018852886200d82f8c60208b01946000865260408c0197885260608c01998a5262004ce2565b5191015562008dfd838962004ce2565b620126d3565b60208194939401516026811015620029ab57600803620128245760c06040620127ba920151015162004c8b565b519160005b835181101562012812576201280c906001600160a01b0380620127e3838862004ce2565b5116600052611f4090816020526200d94b600160ff6040600020541615151462000f4e62033936565b620127bf565b50926020919250620119de9062004c7b565b60208101516026811015620029ab57600903620128a65760c060406201284e920151015162004c8b565b519160005b83518110156201281257620128a0906001600160a01b038062012877838862004ce2565b5116600052611f4090816020526200da39600160ff6040600020541615151462000f4e62033936565b62012853565b60208101516026811015620029ab57600a03620129545760400190620128d760a06200dacd60c08551015162004c8b565b5192620128ec835185511462000f4e62033906565b60005b835181101562012941576201293b906001600160a01b038062012913838862004ce2565b5116600052611f40806020526200db3c600160ff6040600020541615151462000f4e62033936565b620128ef565b5093620119de9193506020925062004c7b565b6020819493929401516026811015620029ab57600b0362012a0757604001926201298360c08551015162004c8b565b51935151916201299b855184511462000f4e62033906565b60005b8551811015620129f457620129ee9062000f556001600160a01b0380620129c6848b62004ce2565b5116600052611f40806020526200dc1e600160ff6040600020541615151462000f4e62033936565b6201299e565b5093509160209150620119de9062004c7b565b90919260208201516026811015620029ab57600c0362012b44576060604083015101519262012a36846202d715565b60005b8451811015620129415760e062012a598260606040880151015162004ce2565b5101511562012ad65762012a7a620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012a9b6005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c89565b62012a39565b62012aee620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012b0f6005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f5760056200924662012ad0936000190162005c49565b92919060208101516026811015620029ab57600d0362012c585760400192602062012b7460a08651015162004c8b565b51945101519162012b8985518451146202de09565b60005b8551811015620129f4578062012ba762012c00928662004ce2565b511562012c065762012bbe62009368828962004ce2565b62012bd660ff60056200de5462009389858c62004ce2565b62012bee60ff6005620093a262009389858c62004ce2565b6005620093be62009389838a62004ce2565b62012b8c565b62012c16620093f6828962004ce2565b62012c2e60ff60056200de5462009417858c62004ce2565b62012c4660ff6005620093a262009417858c62004ce2565b6005620093be62009417838a62004ce2565b60208194929401516026811015620029ab57600e0362012d1f5760400190602062012c8860a08451015162004c8b565b51925101519362012c9d83518651146202de09565b60005b8351811015620129f4578062012cbb62012cc7928862004ce2565b5162012ccd5762004c7b565b62012ca0565b62012cdd620094b3828762004ce2565b62012cf560ff60056200df9162009389858a62004ce2565b62012d0d60ff6005620094fa62009389858a62004ce2565b60056200924662009389838862004ce2565b9060208294939401516026811015620029ab57600f0362012e5d576060604083015101519262012d4f846202d715565b60005b8451811015620129415760e062012d728260606040880151015162004ce2565b5101511562012def5762012d93620091f28260606040880151015162004ce2565b611f42548060001981011162001e4f5762012db46005916000190162005c89565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c89565b62012d52565b62012e07620092708260606040880151015162004ce2565b611f42548060001981011162001e4f5762012e286005916000190162005c49565b5001805461ff001916610100179055611f4254906000198201821062001e4f576005620093be62012de9936000190162005c49565b9060208194939401516026811015620029ab5760100362012ece57604001519062012e9160a0608084015193015162004c8b565b519362012ea6835186511462000f4e62033906565b60005b8351811015620129f4578062000f55620096a562012ec8938762004ce2565b62012ea9565b60208194929401516026811015620029ab5760110362013130576040019062012f0260a06200dacd60c08551015162004c8b565b519362012f1383518651146202d58d565b60005b835181101562012f8d5762012f879062000f556001600160a01b038062012f3e848962004ce2565b5116600052611f458060205262012f606040600020546200686c868d62004ce2565b91909262012f6f868b62004ce2565b511660005260205260406000205562000f4e620338bc565b62012f16565b5093509062012f9c9062033586565b90611f46549362012fb3620080c084518762006258565b9060009260005b87811062013115575060005b85518110156201306d576000805b8981106201301e575b501562012ff6575b62012ff09062004c7b565b62012fc6565b9362012ff09062013015906001600160a01b036200e3f8888a62004ce2565b94905062012fe5565b620130298162004e52565b90546001600160a01b0360039290921b1c81169062013049858b62004ce2565b51161462013062576201305c9062004c7b565b62012fd4565b505060013862012fdd565b5095509392506201307e8262004dfe565b8051906001600160401b03821162002a23576020906201309e8362004f93565b01611f46600052602060002060005b838110620130f7575050505060005b828110620130d457505050620119de60209162004c7b565b620130f19062000f556001600160a01b0362001a37838662004ce2565b620130bc565b82516001600160a01b031681830155602090920191600101620130ad565b936200e5446201312a916200e5268762004e52565b62012fba565b60208194929401516026811015620029ab576012036201337557604001906201316460a06200dacd60c08551015162004c8b565b51936201317583518651146202d58d565b60005b8351811015620131c857620131c29062000f556001600160a01b0380620131a0848962004ce2565b5116600052611f458060205262012f6060406000205462007dae868d62004ce2565b62013178565b5093509190620131d89062033586565b611f4654620131e78162004dfe565b906000926000915b8083106201329c57505050620132058262004dfe565b8051906001600160401b03821162002a2357602090620132258362004f93565b01611f46600052602060002060005b8381106201327e575050505060005b8281106201325b57505050620119de60209162004c7b565b620132789062000f556001600160a01b0362001a37838662004ce2565b62013243565b82516001600160a01b03168183015560209092019160010162013234565b91956000959193959760005b85518110156201336657620132bd8962004e52565b90546001600160a01b0360039290921b1c811690620132dd838962004ce2565b511614620132f657620132f09062004c7b565b620132a8565b509750956001959391955b8062013335575b156201332057620133199062004c7b565b91620131ef565b936200e54462013319916200e5268762004e52565b50620133418162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562013308565b50979690969593919562013301565b60208101516026811015620029ab57601303620133ce5760408091015101519260005b8451811015620133bd578062000f5562009c19620133b7938862004ce2565b62013398565b50925090620119de60209162004c7b565b60208101516026811015620029ab576014036201357b5760400190620133f960c08351015162004c8b565b51936201341060a0620077f3818651015162004c8b565b51916201342186518551146202e0ca565b6201343086518451146202e130565b60005b8651811015620135265762013449818562004ce2565b5162013456828762004ce2565b51906103e882101562004c99576006620134769260031b01549062006049565b9062013483838862004ce2565b51916103e883101562004c99576006620134a29360031b01556202e1ea565b620134ae818562004ce2565b51620134bb828762004ce2565b51906103e882101562004c9957620134e4916003906001600160a01b03620118fd868d62004ce2565b9190620134f2828862004ce2565b51906103e882101562004c9957620135209362000f55926003906001600160a01b0362011951878f62004ce2565b62013433565b5094915091620119826201353a91620336a2565b93604051926201354a8462002ac7565b60008452600036813760005b8351811015620119ca578062000f55620079ba62013575938762004ce2565b62013556565b60208101516026811015620029ab57601503620135a5576020919262000f55620119de926202e2ee565b60208101516026811015620029ab57601603620136015760c06040620135cf920151015162004c8b565b519260005b8451811015620133bd57620135fb9062000f556001600160a01b0362009e60838962004ce2565b620135d4565b60208101516026811015620029ab576017036201365e5760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601803620136c95760c0604062013688920151015162004c8b565b5192600160ff19611fb6541617611fb65560005b8451811015620133bd57620136c39062000f556001600160a01b0362009f2c838962004ce2565b6201369c565b60208193929301516026811015620029ab57601903620137b15760008080604080940160a08082510151805162013778575b5050519060e0820151916201371f6200686560c060018060a01b0393015162004c8b565b511690602083519301915af1903d156201376f573d91620137408362002edc565b926201374f8351948562002b1c565b83523d6000602085013e5b1562009fe1575050620119de60209162004c7b565b6060916201375a565b620137839062004c8b565b515162013792575b80620136fb565b8192506200686590620137a89251015162004c8b565b5190386201378b565b60208101516026811015620029ab57601a03620138a757620137dc60a0604080930151015162004c8b565b51620137ec60038251146202d58d565b620137f78162004c8b565b519162013810620138088362004caf565b519262004cc0565b51916201386d575091620119de916001602094146000146200a16d576201383f6201384d91611fb15462006049565b611fb15562000f4e62033857565b62000f556201385f611fb25462006036565b611fb25562000f4e62033891565b5162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b60208101516026811015620029ab57601b0362013cd757509190620138d7611faf54620061966200a1e362033793565b5050620138e362033857565b506000805b6103e8811062013c8b575b5050620138ff62006172565b6201390d613f745462004dfe565b906000946000905b6103e882101562013c7e578160031b9460ff6007870154161562013a665760009660028701541562013a5557600098975b62004c9957600487015489101562013a3b5762013967896004890162004efa565b9054600391821b1c6001600160a01b03166000818152918901602052604091829020549199916201399a90889062005f19565b9a90620139a662033857565b620139b19162004c48565b60009a60028b0154620139c49162005f19565b9190620139d062033857565b620139db9162004c48565b82600052611f4760205260002090815490620139f79162006049565b90915562013a0462033857565b62013a0f9162004c48565b62013a1b828962004ce2565b5262013a279062004c7b565b9862013a339062004c7b565b989762013946565b9290955062013a4d9196975062004c7b565b909462013915565b9290955062013a4d91965062004c7b565b95969392509350505b62013a7a8262004dfe565b9160009160005b82811062013be857505050611f48549162013aa1620080c0848462006258565b926000906000905b80821062013bcb57505060005b83811062013b355750508251929150506001600160401b03821162002a235760209062013ae38362004f58565b01611f48600052602060002060005b83811062013b175750505050620119de6020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162013af2565b6000805b83811062013b83575b501562013b5b575b62013b559062004c7b565b62013ab6565b9062013b559062013b7a906001600160a01b0362008248858762004ce2565b91905062013b4a565b6001600160a01b038062013b98858862004ce2565b51169062013ba7838a62004ce2565b51161462013bc05762013bba9062004c7b565b62013b39565b505060013862013b42565b90916200825662013be19162009b6f8562004e36565b9062013aa9565b6000805b85811062013c36575b501562013c0e575b62013c089062004c7b565b62013a81565b9262013c089062013c2d906001600160a01b0362008248878662004ce2565b93905062013bfd565b6001600160a01b038062013c4b858762004ce2565b51169062013c5a838a62004ce2565b51161462013c735762013c6d9062004c7b565b62013bec565b505060013862013bf5565b9394959291505062013a6f565b8060039594951b9060ff6007830154161562013ccd576200a622620074b962000f55946200a61662013cc49560026200a60c8762005deb565b939293620138e8565b50939293620138f3565b60208101516026811015620029ab57601c0362013d345760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d0362013d5a575b50620119de60209162004c7b565b92909160208401516026811015620029ab57601e036201447c57604084019060a09062013d8b828451015162004c8b565b515162013d9c838551015162004caf565b5151036200aeb05762013db3828451015162004c8b565b515162013dc4838551015162004cc0565b5151036200ae345762013ddb828451015162004c8b565b519462013dec838551015162004caf565b519162013e016200a76b858751015162004cc0565b51958551875103620089ef5760005b865181101562013e695762013e26818862004ce2565b51906103e882101562004c9957600362013e639260018060a01b038d5116600052811b0160205262000f5560406000205462007d41838c62004ce2565b62013e10565b5090969192939660005b865181101562013f125762013e89818862004ce2565b516103e881101562004c995760039060018060a01b038c5116600052811b0160205262013ec160406000205462007dae838b62004ce2565b919062013ecf828a62004ce2565b51906103e882101562004c995762013f0c93600362000f55938f60018060a01b03905116600052811b0160205260406000205562000f4e62033a0a565b62013e73565b509396929795509362013f2590620336a2565b966040519662013f358862002b00565b60018852602036818a013786516001600160a01b031662013f568962004c8b565b526040519662013f668862002ac7565b600088526000610660525b89516106605190811015620143235762013f8c908b62004ce2565b516109c05262013f9d885162004dfe565b9960009762013fad8b5162004dfe565b6109405260009760005b8b518110156201407d578d8c62013fe76001600160a01b0362013fdb858462004ce2565b51166109c0516203348a565b158062014037575b62014008575b5050620140029062004c7b565b62013fb7565b9b6201402c9162001b0382859f62007f8f620140029760018060a01b039262004ce2565b9a90508d8c62013ff5565b5050506103e86109c051101562004c99576001600160a01b036201405c828e62004ce2565b511660005260036109c051811b016020528d8c604060002054151562013fef565b50909b989a99949691929395979b60005b8b5181101562014122576103e86109c051101562004c99576001600160a01b03620140ba828e62004ce2565b511660005260036109c051811b0160205260406000205415620140e9575b620140e39062004c7b565b6201408e565b9c62014119620140e3918f620141088f9160018060a01b039262004ce2565b511662001b03826109405162004ce2565b9d9050620140d8565b509b509895909294969193966109c051996103e88b10159c8d62004c995762014159620080c060048f9e60031b01549e8f62006258565b6108c05260006108a0528d60009e5b62004c99578d8f101562014227575060009d620141b0620141938260046109c05160031b0162004efa565b90546109405160039290921b1c6001600160a01b03169062033539565b15620141ca575b620141c38f9162004c7b565b9e62014168565b620141c39e5060009e8f91620141ea8160046109c05160031b0162004efa565b60018060a01b0391549060031b1c166201420b6108a0516108c05162004ce2565b526201421a6108a05162004c7b565b6108a052915050620141b7565b9396999b929d509396999094979b5060005b828110620142d75750505062004c99576108c051516001600160401b03811162002a2357620142728160046109c05160031b0162005036565b60206108c051019060046109c05160031b0160005260206000209160005b828110620142b95750505050620142aa6106605162004c7b565b61066052959890949862013f71565b81516001600160a01b03168185015560209091019060010162014290565b6201431d906001600160a01b03620142f0828562004ce2565b5116620143046108a0516108c05162004ce2565b52620143136108a05162004c7b565b6108a05262004c7b565b62014239565b509492975094955091965060009460005b87518110156201438757620143526200acf06200ace3838962004ce2565b806201436b575b50620143659062004c7b565b62014334565b906200ad266201438098620143659362006049565b9062014359565b50965094509290915080620143a9575b5050620119de6020915b915062013d4c565b620143d49060018060a01b038351166000526200ad84611f4591826020526040600020549062006049565b60018060a01b03835116600052602052604060002055600080611f4654905b81811062014432575b505091620119de916020931562014416575b509162014397565b516201442b906001600160a01b03166200662e565b386201440e565b6201443d8162004e52565b9054855160039290921b1c6001600160a01b039081169116146201446c57620144669062004c7b565b620143f3565b50600191508290506020620143fc565b91909260208101516026811015620029ab57601f03620144b757602091620144b16200af646040620119de9401515162004c8b565b620143a1565b60208101516026811015620029ab57602003620144dd575b50620119de602091620143a1565b60208101516026811015620029ab57602114620144cf5760208101516026811015620029ab57602203620145315750620119de60209160ff19611fb65416611fb6556201452962005023565b9150620144cf565b60208101516026811015620029ab5760230362014557575b50620119de60209162014529565b60208101516026811015620029ab57602414620145495760208101516026811015620029ab57602514620145495792909160208401516026811015620029ab576015036201069a576040840190620145b460c08351015162004c8b565b5190620145cb60a0620077f3818651015162004c8b565b5193620145e0835185511462000f4e62033906565b620145f3835186511462000f4e62033906565b60005b83518110156201464f576201460c818662004ce2565b51906103e882101562004c99576003620146499260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b620145f6565b509095919560005b87518110156201477a576201466d818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620146a560406000205462007dae838962004ce2565b90620146b2838862004ce2565b51916103e883101562004c99576003620146e99360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b620146f5818662004ce2565b516103e881101562004c99576003906001600160a01b0362014718848c62004ce2565b5116600052811b01602052620147396040600020546200686c838962004ce2565b919062014747828862004ce2565b51906103e882101562004c99576201477493600362000f55938d62007e678760018060a01b039262004ce2565b62014657565b509262014792919294506200c6fd90969596620336a2565b9260405190620147a28262002b00565b6001825260203681840137516001600160a01b0316620147c28262004c8b565b526000945b805186101562014b7657620147dd868262004ce2565b51610a4052620147ee855162004dfe565b96600094620147fe845162004dfe565b6109805260009460005b8851811015620148ce578a89620148386001600160a01b036201482c858462004ce2565b5116610a40516203348a565b158062014888575b62014859575b5050620148539062004c7b565b62014808565b986201487d9162001b0382859c62007f8f620148539760018060a01b039262004ce2565b9790508a8962014846565b5050506103e8610a4051101562004c99576001600160a01b03620148ad828b62004ce2565b51166000526003610a4051811b016020528a89604060002054151562014840565b50909895979498969291939660005b885181101562014971576103e8610a4051101562004c99576001600160a01b0362014909828b62004ce2565b51166000526003610a4051811b016020526040600020541562014938575b620149329062004c7b565b620148dd565b99620149329062014968906001600160a01b03620149578e8d62004ce2565b511662001b03826109805162004ce2565b9a905062014927565b50985096959291909396610a40516103e8811015806102e05262004c995760031b6004015498620149a7620080c0898c62006258565b610220526000610a80526000610520525b6102e05162004c9957610520518a81101562014a8157620149ed62014a0a9160006102e0526004610a405160031b0162004efa565b90546109805160039290921b1c6001600160a01b03169062033539565b1562014a29575b62014a1f6105205162004c7b565b61052052620149b8565b60006102e05262014a47610520516004610a405160031b0162004efa565b60018060a01b0391549060031b1c1662014a68610a80516102205162004ce2565b5262014a77610a805162004c7b565b610a805262014a11565b50979294959093985095909560005b82811062014b2a575050506102e05162004c995761022051516001600160401b03811162002a235762014acd816004610a405160031b0162005036565b602061022051016004610a405160031b01600052602060002060005b83811062014b0c575050505062014b009062004c7b565b949295909195620147c7565b82516001600160a01b03168183015560209092019160010162014ae9565b62014b70906001600160a01b0362014b43828562004ce2565b511662014b57610a80516102205162004ce2565b5262014b66610a805162004c7b565b610a805262004c7b565b62014a90565b505093620119de91935060209250915062014549565b815162014ba2906001600160a01b031662006658565b620116d6565b62014bb38162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462014be25762014bdc9062004c7b565b620116c4565b50505060013880620116cd565b82516001600160a01b0316600160401b82101562002a235762001a4482600162014c1e9401613f025562004e8a565b386200bc77565b62014c308162004e8a565b9054865160039290921b1c6001600160a01b0390811691161462014c5f5762014c599062004c7b565b6200bc66565b50506001386200bc6f565b82516001600160a01b0316818301556020909201916001016200bb9c565b82516001600160a01b0316818301556020909201916001016200ba4f565b600191820180546001600160a01b03909216848601559390910192906200b99e565b613f6d60005262014cef90600080516020620340bb83398151915290810190830162004f3f565b386200b95f565b6001808262014d0782948662015151565b019201920191906200b921565b613f6c60005260008051602062033efb833981519152908282015b818301811062014d415750506200b8e6565b8062014d4f6001926200533c565b0162014d2f565b600191820180546001600160a01b03909216848601559390910192906200b8b7565b613f6b60005262014d9f9060008051602062033ebb83398151915290810190830162004f3f565b386200b878565b6001809193019182549381613f0301550190916200b81b565b82516001600160a01b0316818301556020909201916001016200b734565b62014df890613f026000528484600020918201910162004f3f565b386200b724565b82516001600160a01b0316818301556020909201916001016200b550565b62014e3890613ef96000528484600020918201910162004f3f565b386200b540565b8062014e619160031b600160ff60078301541615151462014e67575062004c7b565b6200b495565b62014e7a60048201611fbc8301620152ea565b611fbf8101600160ff19825416179055805481611fb801556001810154611fb98201556002810154611fba82015562014ebb60058201611fbd830162015151565b611fbe6006820154910155386200a16d565b600660208262014ee16001945186620057d8565b019201920191906200b29e565b600681810204810362001e4f57600683810204830362001e4f57613efa6000527f2dfc264c6ecd0c6ea7ea3726867a09cc7eed901a6e437c010038bab559d48ed86006840281015b826006028201811062014f4b5750506200b28b565b806000600692556000600182015562014f6760028201620054a7565b6000600382015562014f7c600482016200533c565b600060058201550162014f36565b600660208262014f9e6001945186620057d8565b019201920191906200b213565b8060060290600682040362001e4f578260060260068104840362001e4f57600090613efb82526020822092830192015b82811062014feb5750506200b200565b8082600692558260018201556201500560028201620054a7565b82600382015562015019600482016200533c565b8260058201550162014fdb565b608460405162461bcd60e51b815260206004820152604060248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206203409b83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b8181146201514d578154916001600160401b03831162002a23576201510f838362005036565b60005260206000209060005260206000208154916000925b84841062015136575050505050565b600180919201938454928185015501929062015127565b5050565b908082146201514d5762015166815462002c01565b906001600160401b03821162002a23578190620151908262015189865462002c01565b8662005678565b600090601f8311600114620151c957600092620151bd5750508160011b916000199060031b1c1916179055565b0154905038806200570b565b81526020808220858352818320935090601f1985169083905b8282106201521e5750509084600195949392106201520457505050811b019055565b015460001960f88460031b161c1916905538808062005758565b8495819295850154815560018091019601940190620151e2565b8181146201514d578154916201524f8383620053ca565b6000526020600020906000526020600020906000905b838210620152735750505050565b80620152826001928562015151565b92810192918101910162015265565b8181146201514d57815491620152a8838362005458565b6000526020600020906000526020600020906000905b838210620152cc5750505050565b80620152db60019285620150e9565b928101929181019101620152be565b8181146201514d578154916001600160401b03831162002a235762015310838362005036565b60005260206000209060005260206000208154916000925b84841062015337575050505050565b600191820180546001600160a01b039092168486015593909101929062015328565b8181146201514d5781549162015370838362005458565b6000526020600020906000526020600020906000905b838210620153945750505050565b80620153a360019285620152ea565b92810192918101910162015386565b8181146201514d57815491620153c983836200555b565b6000526020600020906000526020600020906000905b838210620153ed5750505050565b8060019184036201540a575b6008809101930191019091620153df565b80548455620154378280860190830160ff906201542b82825416846200563d565b5460081c169062005657565b60028082015490850155620154536003808301908601620150e9565b60048085019082018082036201546c575b5050620153f9565b620154779162015238565b62015489600580830190860162015291565b6201549b600680830190860162015359565b620154ad600780830190860162015151565b388062015464565b919062005cff57808203620154c8575050565b60ff60058062002bc394620154e1848654168262005624565b60018501546001820155620154fd6002860160028301620153b2565b6003850154600382015562015519600486016004830162015151565b0192016201552b828254168462005795565b6201553d82825460081c1684620057a6565b5460101c1690620057be565b908082146201514d57908154906000915b60648310620155695750505050565b60018091940192835494818401550191926201555a565b90611f4254916000926020820191825151906201559d8262002be9565b91620155ad604051938462002b1c565b808352620155be601f199162002be9565b01366020840137620155d38451518462005f19565b90156201595057620155e59062004dfe565b918693855151156201594657620155fc8162004dfe565b975b8651518110156201578e5760008080805b87858c888410620156a45750839450620156389392506201563291508862004ce2565b62003574565b6006811015620029ab576003146201565d575b50620156579062004c7b565b620155fe565b6000905b8a818310620156725750506201564b565b8298620156896201569d9394620156969362004ce2565b5162001b03828b62004ce2565b9762004c7b565b9062015661565b620156b7620156be939285925162004ce2565b5162015d75565b939094808311806201577a575b156201573157505091838562015727575b6006811015620029ab5760038f911462015707575b5050620156fe9062004c7b565b9190916201560f565b946201571e9162001b0382620156fe959862004ce2565b93908d620156f1565b60009550620156dc565b809492959195148062015766575b15620156f1576006811015620029ab5760038f911462015707575050620156fe9062004c7b565b506006811015620029ab578015156201573f565b506006861015620029ab57851515620156cb565b505093505090929350600093845b8351861015620158e157620157bc620157b6878662004ce2565b62005616565b90600680831015620029ab576002928303620157e7575050620157e0909562004c7b565b946201579c565b620157f7620157b6898862004ce2565b9281841015620029ab57600180941480620158cd575b156201582257505050620157e0909562004c7b565b62015837620157b68a899b9694959b62004ce2565b9280841015620029ab5760048094149283620158a1575b508262015876575b50506201586a575b50620157e09062004c7b565b9550620157e06201585e565b9091508810156201588c57871415388062015856565b602182634e487b7160e01b6000525260246000fd5b908093508a1015620158b85789141591386201584e565b602184634e487b7160e01b6000525260246000fd5b5081831015620029ab57808314156201580d565b9250929093506006821015620029ab57600382036201593d575b620159068162004dfe565b9360005b82811062015919575050509190565b806201592a62015937928462004ce2565b5162001b03828962004ce2565b6201590a565b506000620158fb565b5091949350505050565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b90611f435491600092602082019182515190620159c58262002be9565b91620159d5604051938462002b1c565b808352620159e6601f199162002be9565b01366020840137620159fb8451518462005f19565b9015620159505762015a0d9062004dfe565b91869385515115620159465762015a248162004dfe565b975b86515181101562015b9c5760008080805b87858c88841062015ab2575083945062015a5a9392506201563291508862004ce2565b6006811015620029ab5760031462015a7f575b5062015a799062004c7b565b62015a26565b6000905b8a81831062015a9457505062015a6d565b82986201568962015aab9394620156969362004ce2565b9062015a83565b62015ac562015acc939285925162004ce2565b5162015e14565b9390948083118062015b88575b1562015b3f57505091838562015b35575b6006811015620029ab5760038f911462015b15575b505062015b0c9062004c7b565b91909162015a37565b9462015b2c9162001b038262015b0c959862004ce2565b93908d62015aff565b6000955062015aea565b809492959195148062015b74575b1562015aff576006811015620029ab5760038f911462015b1557505062015b0c9062004c7b565b506006811015620029ab5780151562015b4d565b506006861015620029ab5785151562015ad9565b505093505090929350600093845b835186101562015cbf5762015bc4620157b6878662004ce2565b90600680831015620029ab57600292830362015bef57505062015be8909562004c7b565b9462015baa565b62015bff620157b6898862004ce2565b9281841015620029ab5760038094148062015cab575b1562015c2a5750505062015be8909562004c7b565b62015c3f620157b68a899b9694959b62004ce2565b9280841015620029ab576005809414928362015c94575b508262015c7e575b505062015c72575b5062015be89062004c7b565b955062015be862015c66565b909150881015620029ab57871415388062015c5e565b908093508a1015620029ab57891415913862015c56565b5081831015620029ab578083141562015c15565b9250929093506006821015620029ab576003820362015d0e575b62015ce48162004dfe565b9360005b82811062015cf7575050509190565b806201592a62015d08928462004ce2565b62015ce8565b50600062015cd9565b1562015d1f57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9192906000908194829462015d8f611f4254841062015d17565b60ff600562015d9e8562005c89565b50015460081c161562015e07578262015dbb928592600162015fee565b62015dc7575b50929190565b809450600192935062015ddb915062005c89565b50015490600362015dfc60ff62015df28662005c89565b5054169462005c89565b500154913862015dc1565b5050509150915080918190565b9192906000908194829462015e2e611f4354841062015d17565b60ff600562015e3d8562005c49565b50015460081c161562015e07578262015e599285928362015fee565b62015e645750929190565b809450600192935062015e78915062005c49565b50015490600362015dfc60ff62015e8f8662005c49565b5054169462005c49565b9062002bc3606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262015f10815180926020868601910162002d89565b810103604181018552018362002b1c565b606d62002bc3919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262015f93815180926020605f8701910162002d89565b82016d016103737b2329034b73232bc1d160951b605f82015262015fc1825180936020878501910162002d89565b0103604d81018552018362002b1c565b805482101562004c995760005260206000209060031b0190600090565b9392919084156201637f5762016018611f4254841062000f4e620160128662005091565b62015e99565b6201604f6002620160298562005c89565b500154851062000f4e6201603d8662005091565b620160488862005091565b9062015f21565b841562016360576201607f6001620160768660026201606e8862005c89565b500162015fd1565b50015460ff1690565b945b6201608c8662002f45565b856201609d57505050505050600090565b620160a88662002f45565b600395808703620160bf5750505050505050600190565b620160ca8162002f45565b60048103620160df5750505050505050600090565b620160ea8162002f45565b60018103620161005750620032619550620163af565b919593929490620161118362002f45565b600280931462016128575b50505050505050600090565b801562016342576201615260016201614684866201606e8962005c89565b50015460081c60ff1690565b935b81156201632657856201616d84866201606e8562005c89565b500154965b6201617d8862004dfe565b9860005b8981106201629b575050505050506201619a82620029a0565b60018203620161fd57505050906001916000915b818310620161bc5750505090565b90919280620161da575b620161d2909362004c7b565b9190620161ae565b50620161d2620161f5620161ef858462004ce2565b51151590565b9050620161c6565b6201620882620029a0565b8103620162625750509060009182915b818310620162265750505090565b909192801562016245575b6201623d909362004c7b565b919062016218565b506201623d6201625a620161ef858462004ce2565b905062016231565b9091506201627081620029a0565b14620162845750388080808080806201611c565b62016297620161ef620032619262004c8b565b1590565b808b620162e4828c8a8c8a8c156201630557620162da9492620162d094926201606e620162c89362005c89565b500162004efa565b90549060031b1c90565b8787878b62015fee565b620162f8620162ff9462000f559362004ce2565b9015159052565b62016181565b620163209492620162d094926201606e620162c89362005c49565b620162da565b856201633884866201606e8562005c49565b5001549662016172565b6201635960016201614684866201606e8962005c49565b9362016154565b620163786001620160768660026201606e8862005c49565b9462016081565b62016398611f4354841062000f4e620160128662005091565b620163a96002620160298562005c49565b6201604f565b93926004620163f99186600014620165c7576002620163d487826201606e8562005c89565b500154955b8715620165b65760026201606e620163f19362005c89565b50016200363b565b916032841115620165aa576033841015806201659e575b620165915760978410158062016585575b620165785760d3841015806201656b575b6201655f5761012d8410158062016553575b62016546576101918410158062016539575b6201652c576101af841015806201651f575b62016512576101cd8410158062016505575b620164f8576101f584101580620164eb575b620164de5761025984101580620164d1575b620164c357506102bd831015620164b85750505050600090565b620032619362024231565b90506200326193506202b56e565b506102bc8411156201649e565b506200326193506201e816565b506102588411156201648c565b506200326193506202bed2565b506101f48411156201647a565b506200326193506202c935565b506101cc84111562016468565b50620032619350620239a0565b506101ae84111562016456565b50620032619350620287e2565b50610190841062016444565b506200326193620165e4565b5061012c84111562016432565b506200326193506202401c565b5060b484111562016421565b505062003261926201f476565b50609584111562016410565b506200326193620257bf565b60026201606e620163f19362005c49565b6002620165da87826201606e8562005c49565b50015495620163d9565b9260d3811462016bb35760d4811462016ba65760d5811462016b995760d6811462016b8c5760d7811462016b7f5760d8811462016b725760d9811462016b665760da811462016b595760db811462016b4c5760dc811462016b405760dd811462016b315760de811462016b225760df811462016b155760e0811462016b085760e1811462016afc5760e2811462016aef5760e3811462016ae25760e4811462016ad65760e5811462016ac75760e6811462016ab85760e7811462016aab5760e8811462016a9e5760e9811462016a915760ea811462016a845760eb811462016a775760ec811462016a6a5760ed811462016a5d5760ee811462016a505760ef811462016a435760f0811462016a365760f1811462016a295760f2811462016a1c5760f3811462016a0f5760f4811462016a025760f58114620169f55760f68114620169e85760f78114620169db5760f88114620169ce5760f98114620169c25760fa8114620169b65760fb8114620169aa5760fc81146201699e5760fd8114620169925760fe8114620169865760ff81146201697a5761010081146201696e57610101811462016962576101028114620169565761010381146201694a5761010481146201693e57610105811462016932576101068114620169265761010781146201691a5761010881146201690e576101098114620169025761010a8114620168f65761010b8114620168ea5761010c8114620168de5761010d8114620168d25761010e8114620168c65761010f8114620168ba576101108114620168ae576101118114620168a2576101128114620168965761011381146201688a5761011481146201687e5761011581146201687257610116146201686757505050600090565b62003261926201decd565b5062003261926201dca4565b5062003261926201da7b565b5062003261926201d778565b5062003261926201d557565b5062003261926201d336565b5062003261926201d104565b5062003261926201cf3b565b5062003261926201cd72565b5062003261926201cb3a565b5062003261926201c973565b5062003261926201c644565b5062003261926201c412565b5062003261926201c249565b5062003261926201c080565b5062003261926201bebb565b5062003261926201bc83565b5062003261926201babc565b5062003261926201b786565b5062003261926201b526565b5062003261926201b355565b5062003261926201b174565b5062003261926201afad565b5062003261926201ad57565b5062003261926201ab8e565b5062003261926201a9c5565b5062003261926201a6e4565b5062003261926201a3e4565b5062003261926201a0f7565b50620032619262019df7565b5062003261925062019c72565b5062003261925062019b2d565b50620032619250620199bb565b5062003261925062019876565b5062003261925062019731565b50620032619250620195ed565b5062003261925062019478565b5062003261925062019334565b50620032619250620191f0565b50620032619250620190af565b5062003261925062018f6c565b5062003261925062018e2b565b5062003261925062018ce2565b5062003261925062018b9e565b5062003261925062018a5a565b50620032619250620188e5565b5062003261925062018747565b5062003261925062018604565b509050620032619150620185a9565b5090506200326191506201854c565b5062003261926201830e565b506200326192506201817f565b5062003261925062018030565b50620032619262017e19565b5062003261925062017c71565b5062003261925062017b24565b50905062003261915062017ac9565b50905062003261915062017a5c565b50620032619262017810565b5062003261925062017681565b506200326192506201752c565b506200326192620172fe565b5062003261925062017146565b5062003261925062016fea565b5062003261925062016ee9565b5062003261925062016dbc565b5062003261925062016cbb565b50620032619250906020019060018251510362016c6257600162016bd8835162004c8b565b51510362016c085762016beb906201e1d4565b91901562006627576200686562016c03915162004c8b565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016d6357600162016cd9835162004c8b565b51510362016d095762016cec906201e1d4565b91901562006627576200686562016d04915162004c8b565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016e9057600262016dda835162004c8b565b51510362016e345762016ded906201e1d4565b9015620066275762016e0462006865835162004c8b565b51811015918262016e1457505090565b62016e2e91925062016e27905162004c8b565b5162004caf565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016f9157600162016f07835162004c8b565b51510362016f375762016f1a906201e1d4565b91901562006627576200686562016f32915162004c8b565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906040016001918282515103620170ec578262017008835162004c8b565b51510362017092576201701b906201e547565b156200661f57829160009182945b62017037575b505050905090565b80518510156201708c576001600160a01b038062017056878462004ce2565b5116906201706962006865855162004c8b565b51160362017084576201707d849562004c7b565b9462017029565b505091505090565b6201702f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620172a4578262017164835162004c8b565b5151106201724a5762017177906201e547565b156200661f57600091835b6201718e575b50505090565b81518310156201724457600080855b620171c6575b5015620171bd57620171b6849362004c7b565b9262017182565b50505050600090565b620171d78396949295965162004c8b565b515181101562017239576001600160a01b0380620171f6888562004ce2565b5116906201720a8362007497875162004c8b565b5116146201722c57906201722084939262004c7b565b9093959491926201719d565b50918094935038620171a3565b9493909294620171a3565b62017188565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620174d2578462017320845162004c8b565b515103620174785762017333906201e547565b15620173d157849315620173e8576000935b62017351575050505090565b80518410156200519a576001600160a01b038062017370868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db576002926201739b888662004ce2565b511660005284526000200154620173b762006865855162004c8b565b5103620173d157620173ca859462004c7b565b9362017345565b5050505050600090565b5050505050505050600090565b6000935b620173f8575050505090565b80518410156200519a576001600160a01b038062017417868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017442888662004ce2565b5116600052845260002001546201745e62006865855162004c8b565b5103620173d15762017471859462004c7b565b93620173ec565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201762757826201754a835162004c8b565b515103620175cd576201755d906201e547565b919091156200661f57600091835b620175795750505050600090565b8051831015620175c75783926001600160a01b03806201759a838562004ce2565b511690620175ad62006865865162004c8b565b5116146200516057620175c09062004c7b565b926201756b565b620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620177b657826201769f835162004c8b565b5151106201775c57620176b2906201e547565b156200661f5782916000935b620176cc5750505050600090565b8151841015620175c7576000835b620176f4575b50620176ed839462004c7b565b93620176be565b93929162017703825162004c8b565b515185101562017753576001600160a01b038062017722868462004ce2565b511690620177368762007497865162004c8b565b51161462017084576201774b83949562004c7b565b9092620176da565b919293620176e0565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017a02578462017832845162004c8b565b515103620179a85762017845906201e547565b91909115620173d15784931562017906576000935b62017869575050505050600090565b8151841015620179005784936001600160a01b0390816201788b828662004ce2565b5116600052611f4080845260409060ff826000205416620178bc575b5050620178b5915062004c7b565b936201785a565b8293620178cc6002948862004ce2565b511660005284526000200154620178e862006865865162004c8b565b5114620178f857803880620178a7565b505050505090565b620173d1565b6000935b62017919575050505050600090565b8151841015620179005784936001600160a01b0390816201793b828662004ce2565b5116600052613ef880845260409060ff8260002054166201796c575b505062017965915062004c7b565b936201790a565b82936201797c6002948862004ce2565b5116600052845260002001546201799862006865865162004c8b565b5114620178f85780388062017957565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62017a67816201e547565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b038062017a9c838762004ce2565b5116908351160362017ab95762017ab39062004c7b565b62017a7d565b5050905090565b50505050600190565b62017ad4816201e547565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b038062017b07838662004ce2565b511690835116146200660c5762017b1e9062004c7b565b62017ae8565b90604001600191828251510362017c17578262017b42835162004c8b565b51510362017bbd5762017b55906201e5d0565b156200661f57829160009182945b62017b7057505050905090565b80518510156201708c576001600160a01b038062017b8f878462004ce2565b51169062017ba262006865855162004c8b565b511603620170845762017bb6849562004c7b565b9462017b63565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90604001600191828251510362017dbf578262017c8f835162004c8b565b51511062017d655762017ca2906201e5d0565b156200661f57600091835b62017cb85750505090565b81518310156201724457600080855b62017ce7575b5015620171bd5762017ce0849362004c7b565b9262017cad565b62017cf88396949295965162004c8b565b515181101562017d5a576001600160a01b038062017d17888562004ce2565b51169062017d2b8362007497875162004c8b565b51161462017d4d579062017d4184939262004c7b565b90939594919262017cc7565b5091809493503862017ccd565b949390929462017ccd565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910190600193848351510362017fd6578462017e3b845162004c8b565b51510362017f7c5762017e4e906201e5d0565b15620173d15784931562017eec576000935b62017e6c575050505090565b80518410156200519a576001600160a01b038062017e8b868462004ce2565b5116600052611f4080845260409060ff82600020541615620173db5760029262017eb6888662004ce2565b51166000528452600020015462017ed262006865855162004c8b565b5103620173d15762017ee5859462004c7b565b9362017e60565b6000935b62017efc575050505090565b80518410156200519a576001600160a01b038062017f1b868462004ce2565b5116600052613ef880845260409060ff82600020541615620173db5760029262017f46888662004ce2565b51166000528452600020015462017f6262006865855162004c8b565b5103620173d15762017f75859462004c7b565b9362017ef0565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060400160019182825151036201812557826201804e835162004c8b565b515103620180cb5762018061906201e5d0565b919091156200661f57600091835b6201807d5750505050600090565b8051831015620175c75783926001600160a01b03806201809e838562004ce2565b511690620180b162006865865162004c8b565b5116146200516057620180c49062004c7b565b926201806f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906040016001918282515103620182b457826201819d835162004c8b565b5151106201825a57620181b0906201e5d0565b156200661f5782916000935b620181ca5750505050600090565b8151841015620175c7576000835b620181f2575b50620181eb839462004c7b565b93620181bc565b93929162018201825162004c8b565b515185101562018251576001600160a01b038062018220868462004ce2565b511690620182348762007497865162004c8b565b51161462017084576201824983949562004c7b565b9092620181d8565b919293620181de565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90916020809101906001938483515103620184f2578462018330845162004c8b565b515103620184985762018343906201e5d0565b91909115620173d157849315620183f6576000935b62018367575050505050600090565b8151841015620179005784936001600160a01b03908162018389828662004ce2565b5116600052611f4080845260409060ff826000205416620183ba575b5050620183b3915062004c7b565b9362018358565b8293620183ca6002948862004ce2565b511660005284526000200154620183e662006865865162004c8b565b5114620178f857803880620183a5565b6000935b62018409575050505050600090565b8151841015620179005784936001600160a01b0390816201842b828662004ce2565b5116600052613ef880845260409060ff8260002054166201845c575b505062018455915062004c7b565b93620183fa565b82936201846c6002948862004ce2565b5116600052845260002001546201848862006865865162004c8b565b5114620178f85780388062018447565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b62018557816201e5d0565b9190911562006627578151156200662757600090815b835181101562017ac0576001600160a01b03806201858c838762004ce2565b5116908351160362017ab957620185a39062004c7b565b6201856d565b620185b4816201e5d0565b919091156200662757815115620066275760005b82518110156200661f576001600160a01b0380620185e7838662004ce2565b511690835116146200660c57620185fe9062004c7b565b620185c8565b906020016001918282515103620186ed578262018622835162004c8b565b515103620186935762018635906201e609565b9050156200661f57829160009182945b6201865257505050905090565b80518510156201708c5762018668858262004ce2565b516201867962006865845162004c8b565b510362017084576201868c849562004c7b565b9462018645565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201888b578262018765835162004c8b565b515110620188315762018778906201e609565b9050156200661f57600091835b620187905750505090565b81518310156201724457600080855b620187bf575b5015620171bd57620187b8849362004c7b565b9262018785565b620187d08396949295965162004c8b565b51518110156201882657620187e6868362004ce2565b51620187f88262007497865162004c8b565b51146201881957906201880d84939262004c7b565b9093959491926201879f565b50918094935038620187a5565b9493909294620187a5565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018a0057600262018904835162004c8b565b515103620189a65762018917906201e609565b9050919091156200661f57829160009182945b6201893757505050905090565b81518510156201708c576201894d858362004ce2565b516201895e62006865835162004c8b565b5111801562018980575b620170845762018979849562004c7b565b946201892a565b506201898d858362004ce2565b516201899e62016e27835162004c8b565b511062018968565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018b44578262018a78835162004c8b565b51510362018aea5762018a8b906201e609565b9050156200661f57829160009182945b62018aa857505050905090565b80518510156201708c5762018abe858262004ce2565b5162018acf62006865845162004c8b565b511015620170845762018ae3849562004c7b565b9462018a9b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018c88578262018bbc835162004c8b565b51510362018c2e5762018bcf906201e609565b9050156200661f57829160009182945b62018bec57505050905090565b80518510156201708c5762018c02858262004ce2565b5162018c1362006865845162004c8b565b511115620170845762018c27849562004c7b565b9462018bdf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018dd1578262018d00835162004c8b565b51510362018d775762018d13906201e609565b90939150156200661f578060009384925b62018d3d575b5050506200686562016c03915162004c8b565b909193815185101562018d70576200e54462018d679162018d5f878562004ce2565b519062006258565b91908162018d24565b9362018d2a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362018f12578262018e49835162004c8b565b51510362018eb85762018e5c906201e609565b90939150156200661f578060009384925b62018e86575b5050506200686562016d04915162004c8b565b909193815185101562018eb1576200e54462018ea89162018d5f878562004ce2565b91908162018e6d565b9362018e73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019081835151036201905557600262018f8c845162004c8b565b51510362018ffb5762018f9f906201e609565b909150156200661f57906000918183925b62018fc9575b50505062016e0462006865835162004c8b565b909192825184101562018ff457620064d762018feb9162018d5f868662004ce2565b91908062018fb0565b9262018fb6565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620191965782620190cd835162004c8b565b5151036201913c57620190e0906201e609565b90939150156200661f578060009384925b6201910a575b5050506200686562016f32915162004c8b565b909193815185101562019135576200e5446201912c9162018d5f878562004ce2565b919081620190f1565b93620190f7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620192da57826201920e835162004c8b565b515103620192805762019221906201e609565b90929150156200661f57600091835b6201923e5750505050600090565b8051831015620175c757826201925685948362004ce2565b516201926762006865855162004c8b565b51106200516057620192799062004c7b565b9262019230565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201941e578262019352835162004c8b565b515103620193c45762019365906201e609565b92919215620171bd57600092845b62019382575050505050600090565b80518410156201790057836201939a86958462004ce2565b51620193ab62006865865162004c8b565b5111620178f857620193bd9062004c7b565b9362019373565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201959357600262019497835162004c8b565b5151036201953957620194aa906201e609565b9290919215620171bd57600092845b620194c8575050505050600090565b8051841015620179005783620194e086958562004ce2565b51620194f162006865855162004c8b565b5111158062019512575b620178f8576201950b9062004c7b565b93620194b9565b506201951f818562004ce2565b516201953062016e27855162004c8b565b511015620194fb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020016001918282515103620196d757826201960b835162004c8b565b5151036201967d576201961e906201e609565b92919215620171bd57600092845b6201963b575050505050600090565b80518410156201790057836201965386958462004ce2565b516201966462006865865162004c8b565b5114620178f857620196769062004c7b565b936201962c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036201981c57826201974f835162004c8b565b515103620197c25762019762906201e609565b9050919091156200661f57600091835b620197805750505050600090565b8051831015620175c757826201979885948362004ce2565b51620197a962006865855162004c8b565b51106200516057620197bb9062004c7b565b9262019772565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019961578262019894835162004c8b565b5151036201990757620198a7906201e609565b9050919091156200661f57600091835b620198c55750505050600090565b8051831015620175c75782620198dd85948362004ce2565b51620198ee62006865855162004c8b565b51116200516057620199009062004c7b565b92620198b7565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019ad3576002620199da835162004c8b565b51510362019a7957620199ed906201e609565b9050156200661f57600091835b62019a085750505050600090565b8151831015620175c7578262019a2085948462004ce2565b5162019a3162006865845162004c8b565b5111158062019a52575b620051605762019a4b9062004c7b565b92620199fa565b5062019a5f818462004ce2565b5162019a7062016e27845162004c8b565b51101562019a3b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019c18578262019b4b835162004c8b565b51510362019bbe5762019b5e906201e609565b9050919091156200661f57600091835b62019b7c5750505050600090565b8051831015620175c7578262019b9485948362004ce2565b5162019ba562006865855162004c8b565b5114620051605762019bb79062004c7b565b9262019b6e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b90602001600191828251510362019d9d578262019c90835162004c8b565b51511062019d435762019ca3906201e609565b9050156200661f5782916000935b62019cbf5750505050600090565b8151841015620175c7576000835b62019ce7575b5062019ce0839462004c7b565b9362019cb1565b93929162019cf6825162004c8b565b515185101562019d3a5762019d0c848262004ce2565b5162019d1e8662007497855162004c8b565b5114620170845762019d3283949562004c7b565b909262019ccd565b91929362019cd3565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a09d578462019e19845162004c8b565b5151106201a0435762019e2c906201e5d0565b92909215620173d15784931562019f40576000935b62019e4d575050505090565b82518410156200519a576001600160a01b038062019e6c868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b62019eb2575b5050505015620173d15762019eab859462004c7b565b9362019e41565b9092989591939662019ec5865162004c8b565b51518a101562019f34578162019edc8a8362004ce2565b5116600052838352600285600020015462019efd8b62007497895162004c8b565b511462019f215762019f128798999a62004c7b565b93919097999894929662019e8f565b9650509396505050843880808062019e95565b96938296995062019e95565b6000935b62019f50575050505090565b82518410156200519a576001600160a01b038062019f6f868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b62019fb5575b5050505015620173d15762019fae859462004c7b565b9362019f44565b9092989591939662019fc8865162004c8b565b51518a10156201a037578162019fdf8a8362004ce2565b511660005283835260028560002001546201a0008b62007497895162004c8b565b51146201a024576201a0158798999a62004c7b565b93919097999894929662019f92565b9650509396505050843880808062019f98565b96938296995062019f98565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a38a57836201a116835162004c8b565b5151106201a330576201a129906201e5d0565b94909415620173d1578392156201a23b5793926000905b6201a14f575050505050600090565b835181101562017900576001600160a01b03806201a16e838762004ce2565b5116600052611f4080875260409160ff8360002054166201a1a4575b505050936201a19b83949562004c7b565b9094936201a140565b6000929190865b6201a1b8575b506201a18a565b9092979193966201a1ca865162004c8b565b51518910156201a23057816201a1e1898362004ce2565b511660005283835260028560002001546201a2028a62007497895162004c8b565b51146201a224576201a21687989962004c7b565b93919097989492986201a1ab565b50505050505091505090565b96938298506201a1b1565b93926000905b6201a250575050505050600090565b835181101562017900576001600160a01b03806201a26f838762004ce2565b5116600052613ef880875260409160ff8360002054166201a2a5575b505050936201a29c83949562004c7b565b9094936201a241565b6000929190865b6201a2b9575b506201a28b565b9092979193966201a2cb865162004c8b565b51518910156201a32557816201a2e2898362004ce2565b511660005283835260028560002001546201a3038a62007497895162004c8b565b51146201a224576201a31787989962004c7b565b93919097989492986201a2ac565b96938298506201a2b2565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201a68a57846201a406845162004c8b565b5151106201a630576201a419906201e547565b92909215620173d1578493156201a52d576000935b6201a43a575050505090565b82518410156200519a576001600160a01b03806201a459868662004ce2565b5116600052611f40808452604060ff81600020541615620173db57879160009384935b6201a49f575b5050505015620173d1576201a498859462004c7b565b936201a42e565b909298959193966201a4b2865162004c8b565b51518a10156201a52157816201a4c98a8362004ce2565b511660005283835260028560002001546201a4ea8b62007497895162004c8b565b51146201a50e576201a4ff8798999a62004c7b565b9391909799989492966201a47c565b965050939650505084388080806201a482565b9693829699506201a482565b6000935b6201a53d575050505090565b82518410156200519a576001600160a01b03806201a55c868662004ce2565b5116600052613ef8808452604060ff81600020541615620173db57879160009384935b6201a5a2575b5050505015620173d1576201a59b859462004c7b565b936201a531565b909298959193966201a5b5865162004c8b565b51518a10156201a62457816201a5cc8a8362004ce2565b511660005283835260028560002001546201a5ed8b62007497895162004c8b565b51146201a611576201a6028798999a62004c7b565b9391909799989492966201a57f565b965050939650505084388080806201a585565b9693829699506201a585565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b602080930160019283825151036201a96b57836201a703835162004c8b565b5151106201a911576201a716906201e547565b94909415620173d1578392156201a81c5793926000905b6201a73c575050505050600090565b835181101562017900576001600160a01b03806201a75b838762004ce2565b5116600052611f4080875260409160ff8360002054166201a791575b505050936201a78883949562004c7b565b9094936201a72d565b6000929190865b6201a7a5575b506201a777565b9092979193966201a7b7865162004c8b565b51518910156201a81157816201a7ce898362004ce2565b511660005283835260028560002001546201a7ef8a62007497895162004c8b565b51146201a224576201a80387989962004c7b565b93919097989492986201a798565b96938298506201a79e565b93926000905b6201a831575050505050600090565b835181101562017900576001600160a01b03806201a850838762004ce2565b5116600052613ef880875260409160ff8360002054166201a886575b505050936201a87d83949562004c7b565b9094936201a822565b6000929190865b6201a89a575b506201a86c565b9092979193966201a8ac865162004c8b565b51518910156201a90657816201a8c3898362004ce2565b511660005283835260028560002001546201a8e48a62007497895162004c8b565b51146201a224576201a8f887989962004c7b565b93919097989492986201a88d565b96938298506201a893565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b3060448201526000805160206203417b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201ab3457846201a9e7845162004c8b565b5151036201aada576201a9fa906201e547565b15620173d1578493156201aa71576000935b6201aa18575050505090565b80518410156200519a576001600160a01b036201aa36858362004ce2565b5116600052611f4582526040600020546201aa5662006865855162004c8b565b511015620173d1576201aa6a859462004c7b565b936201aa0c565b6000935b6201aa81575050505090565b80518410156200519a576001600160a01b036201aa9f858362004ce2565b5116600052613efd82526040600020546201aabf62006865855162004c8b565b511015620173d1576201aad3859462004c7b565b936201aa75565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201acfd57846201abb0845162004c8b565b5151036201aca3576201abc3906201e547565b15620173d1578493156201ac3a576000935b6201abe1575050505090565b80518410156200519a576001600160a01b036201abff858362004ce2565b5116600052611f4582526040600020546201ac1f62006865855162004c8b565b511115620173d1576201ac33859462004c7b565b936201abd5565b6000935b6201ac4a575050505090565b80518410156200519a576001600160a01b036201ac68858362004ce2565b5116600052613efd82526040600020546201ac8862006865855162004c8b565b511115620173d1576201ac9c859462004c7b565b936201ac3e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201af535760026201ad79835162004c8b565b5151036201aef9576201ad8c906201e547565b92909215620173d1578493156201ae4b576000935b6201adad575050505090565b82518410156200519a576001600160a01b03806201adcc868662004ce2565b5116600052611f4580835260409081600020546201adef62006865875162004c8b565b51119283156201ae15575b505050620173d1576201ae0e859462004c7b565b936201ada1565b909192506201ae25878762004ce2565b51166000528252600020546201ae4062016e27845162004c8b565b51103880806201adfa565b6000935b6201ae5b575050505090565b82518410156200519a576001600160a01b03806201ae7a868662004ce2565b5116600052613efd80835260409081600020546201ae9d62006865875162004c8b565b51119283156201aec3575b505050620173d1576201aebc859462004c7b565b936201ae4f565b909192506201aed3878762004ce2565b51166000528252600020546201aeee62016e27845162004c8b565b51103880806201aea8565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b11a57846201afcf845162004c8b565b5151036201b0c0576201afe2906201e547565b15620173d1578493156201b058576000935b6201b000575050505090565b80518410156200519a576001600160a01b036201b01e858362004ce2565b5116600052611f4582526040600020546201b03e62006865855162004c8b565b5103620173d1576201b051859462004c7b565b936201aff4565b6000935b6201b068575050505090565b80518410156200519a576001600160a01b036201b086858362004ce2565b5116600052613efd82526040600020546201b0a662006865855162004c8b565b5103620173d1576201b0b9859462004c7b565b936201b05c565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b2fb57846201b196845162004c8b565b5151036201b2a1576201b1a9906201e547565b15620173d1578493156201b2345760009182945b6201b1ce575b505050505050600090565b81518510156201b22e5785946001600160a01b036201b1ee828562004ce2565b51168452611f45825260408420546201b20c62006865875162004c8b565b51106201b225576201b21e9062004c7b565b946201b1bd565b50505050505090565b6201b1c3565b60009182945b6201b24a57505050505050600090565b81518510156201b22e5785946001600160a01b036201b26a828562004ce2565b51168452613efd825260408420546201b28862006865875162004c8b565b51106201b225576201b29a9062004c7b565b946201b23a565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909160208091019060019384835151036201b4cc57846201b377845162004c8b565b5151036201b472576201b38a906201e547565b15620173d1578493156201b4055760009182945b6201b3ae57505050505050600090565b81518510156201b22e5785946001600160a01b036201b3ce828562004ce2565b51168452611f45825260408420546201b3ec62006865875162004c8b565b51116201b225576201b3fe9062004c7b565b946201b39e565b60009182945b6201b41b57505050505050600090565b81518510156201b22e5785946001600160a01b036201b43b828562004ce2565b51168452613efd825260408420546201b45962006865875162004c8b565b51116201b225576201b46b9062004c7b565b946201b40b565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9091602080910160019384825151036201b72c5760026201b548835162004c8b565b5151036201b6d2576201b55b906201e547565b91909115620173d1578493156201b61f576000935b6201b57f575050505050600090565b8151841015620179005784936001600160a01b03806201b5a0838662004ce2565b5116600052611f4580865260409081600020546201b5c362006865875162004c8b565b51111592836201b5e8575b505050620178f8576201b5e19062004c7b565b936201b570565b909192506201b5f8848762004ce2565b51166000528552600020546201b61362016e27845162004c8b565b5110153880806201b5ce565b6000935b6201b632575050505050600090565b8151841015620179005784936001600160a01b03806201b653838662004ce2565b5116600052613efd80865260409081600020546201b67662006865875162004c8b565b51111592836201b69b575b505050620178f8576201b6949062004c7b565b936201b623565b909192506201b6ab848762004ce2565b51166000528552600020546201b6c662016e27845162004c8b565b5110153880806201b681565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201b90357836201b7a5845162004c8b565b5151036201b8a957156201b82e576201b7be906201e547565b156200661f57829160009182945b6201b7d957505050905090565b80518510156201708c576201b8036001600160a01b036201b7fb878462004ce2565b51166201b9ba565b6201b81362006865845162004c8b565b51101562017084576201b827849562004c7b565b946201b7cc565b6201b839906201e547565b156200661f57829160009182945b6201b85457505050905090565b80518510156201708c576201b87e6001600160a01b036201b876878462004ce2565b51166201b95d565b6201b88e62006865845162004c8b565b51101562017084576201b8a2849562004c7b565b946201b847565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201b97257505090565b9091620082566201b9b3916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b9062006258565b906201b963565b60009081905b6103e882106201b9cf57505090565b9091620082566201ba07916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201b9c0565b600091906201ba69576000905b6103e882106201ba2a57505090565b9091620082566201ba62916201b9ac600386811b9060018060a01b038716600052810160205260016040600020549101549062004f13565b906201ba1b565b81905b6103e882106201ba7b57505090565b9091620082566201bab5916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f13565b906201ba6c565b916020019060019283835151036201bc2957836201badb845162004c8b565b5151036201bbcf57156201bb5c576201baf4906201e547565b156200661f57829160009182945b6201bb0f57505050905090565b80518510156201708c576201bb316001600160a01b036201b7fb878462004ce2565b6201bb4162006865845162004c8b565b51111562017084576201bb55849562004c7b565b946201bb02565b6201bb67906201e547565b156200661f57829160009182945b6201bb8257505050905090565b80518510156201708c576201bba46001600160a01b036201b876878462004ce2565b6201bbb462006865845162004c8b565b51111562017084576201bbc8849562004c7b565b946201bb75565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201be615760026201bca3845162004c8b565b5151036201be0757156201bd5c576201bcbc906201e547565b919091156200661f57829160009182945b6201bcda57505050905090565b81518510156201708c576001600160a01b036201bcfd816201b7fb888662004ce2565b6201bd0d62006865845162004c8b565b51119081156201bd31575b5062017084576201bd2a849562004c7b565b946201bccd565b6201bd4391506201b7fb878562004ce2565b6201bd5362016e27835162004c8b565b5110386201bd18565b6201bd67906201e547565b919091156200661f57829160009182945b6201bd8557505050905090565b81518510156201708c576001600160a01b036201bda8816201b876888662004ce2565b6201bdb862006865845162004c8b565b51119081156201bddc575b5062017084576201bdd5849562004c7b565b946201bd78565b6201bdee91506201b876878562004ce2565b6201bdfe62016e27835162004c8b565b5110386201bdc3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c02657836201beda845162004c8b565b5151036201bfcc57156201bf5a576201bef3906201e547565b156200661f57829160009182945b6201bf0e57505050905090565b80518510156201708c576201bf306001600160a01b036201b7fb878462004ce2565b6201bf4062006865845162004c8b565b510362017084576201bf53849562004c7b565b946201bf01565b6201bf65906201e547565b156200661f57829160009182945b6201bf8057505050905090565b80518510156201708c576201bfa26001600160a01b036201b876878462004ce2565b6201bfb262006865845162004c8b565b510362017084576201bfc5849562004c7b565b946201bf73565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c1ef57836201c09f845162004c8b565b5151036201c19557156201c121576201c0b8906201e547565b919091156200661f57600091835b6201c0d45750505050600090565b8051831015620175c75783926201c0f86001600160a01b036201b7fb838562004ce2565b6201c10862006865855162004c8b565b511062005160576201c11a9062004c7b565b926201c0c6565b6201c12c906201e547565b919091156200661f57600091835b6201c1485750505050600090565b8051831015620175c75783926201c16c6001600160a01b036201b876838562004ce2565b6201c17c62006865855162004c8b565b511062005160576201c18e9062004c7b565b926201c13a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c3b857836201c268845162004c8b565b5151036201c35e57156201c2ea576201c281906201e547565b919091156200661f57600091835b6201c29d5750505050600090565b8051831015620175c75783926201c2c16001600160a01b036201b7fb838562004ce2565b6201c2d162006865855162004c8b565b511162005160576201c2e39062004c7b565b926201c28f565b6201c2f5906201e547565b919091156200661f57600091835b6201c3115750505050600090565b8051831015620175c75783926201c3356001600160a01b036201b876838562004ce2565b6201c34562006865855162004c8b565b511162005160576201c3579062004c7b565b926201c303565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c5ea5760026201c432845162004c8b565b5151036201c59057156201c4e8576201c44b906201e547565b156200661f57600091835b6201c4645750505050600090565b8151831015620175c75783926001600160a01b036201c489816201b7fb848762004ce2565b6201c49962006865855162004c8b565b51111590816201c4bc575b5062005160576201c4b59062004c7b565b926201c456565b6201c4ce91506201b7fb838662004ce2565b6201c4de62016e27845162004c8b565b511015386201c4a4565b6201c4f3906201e547565b156200661f57600091835b6201c50c5750505050600090565b8151831015620175c75783926001600160a01b036201c531816201b876848762004ce2565b6201c54162006865855162004c8b565b51111590816201c564575b5062005160576201c55d9062004c7b565b926201c4fe565b6201c57691506201b876838662004ce2565b6201c58662016e27845162004c8b565b511015386201c54c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201c7c157836201c663845162004c8b565b5151036201c76757156201c6ec576201c67c906201e547565b156200661f57829160009182945b6201c69757505050905090565b80518510156201708c576201c6c16001600160a01b036201c6b9878462004ce2565b51166201c871565b6201c6d162006865845162004c8b565b51101562017084576201c6e5849562004c7b565b946201c68a565b6201c6f7906201e547565b156200661f57829160009182945b6201c71257505050905090565b80518510156201708c576201c73c6001600160a01b036201c734878462004ce2565b51166201c81b565b6201c74c62006865845162004c8b565b51101562017084576201c760849562004c7b565b946201c705565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60009081905b6103e882106201c83057505090565b9091620082566201c86a916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c821565b60009081905b6103e882106201c88657505090565b9091620082566201c8be916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c877565b600091906201c920576000905b6103e882106201c8e157505090565b9091620082566201c919916201b9ac600386811b9060018060a01b038716600052810160205260026040600020549101549062004f13565b906201c8d2565b81905b6103e882106201c93257505090565b9091620082566201c96c916201b9ac8560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f13565b906201c923565b916020019060019283835151036201cae057836201c992845162004c8b565b5151036201ca8657156201ca13576201c9ab906201e547565b156200661f57829160009182945b6201c9c657505050905090565b80518510156201708c576201c9e86001600160a01b036201c6b9878462004ce2565b6201c9f862006865845162004c8b565b51111562017084576201ca0c849562004c7b565b946201c9b9565b6201ca1e906201e547565b156200661f57829160009182945b6201ca3957505050905090565b80518510156201708c576201ca5b6001600160a01b036201c734878462004ce2565b6201ca6b62006865845162004c8b565b51111562017084576201ca7f849562004c7b565b946201ca2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cd185760026201cb5a845162004c8b565b5151036201ccbe57156201cc13576201cb73906201e547565b919091156200661f57829160009182945b6201cb9157505050905090565b81518510156201708c576001600160a01b036201cbb4816201c6b9888662004ce2565b6201cbc462006865845162004c8b565b51119081156201cbe8575b5062017084576201cbe1849562004c7b565b946201cb84565b6201cbfa91506201c6b9878562004ce2565b6201cc0a62016e27835162004c8b565b5110386201cbcf565b6201cc1e906201e547565b919091156200661f57829160009182945b6201cc3c57505050905090565b81518510156201708c576001600160a01b036201cc5f816201c734888662004ce2565b6201cc6f62006865845162004c8b565b51119081156201cc93575b5062017084576201cc8c849562004c7b565b946201cc2f565b6201cca591506201c734878562004ce2565b6201ccb562016e27835162004c8b565b5110386201cc7a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019060019283835151036201cee157836201cd91845162004c8b565b5151036201ce8757156201ce13576201cdaa906201e547565b919091156200661f57600091835b6201cdc65750505050600090565b8051831015620175c75783926201cdea6001600160a01b036201c6b9838562004ce2565b6201cdfa62006865855162004c8b565b511062005160576201ce0c9062004c7b565b926201cdb8565b6201ce1e906201e547565b919091156200661f57600091835b6201ce3a5750505050600090565b8051831015620175c75783926201ce5e6001600160a01b036201c734838562004ce2565b6201ce6e62006865855162004c8b565b511062005160576201ce809062004c7b565b926201ce2c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9160200190600192836201cf50845162004c8b565b5151036201d0aa5783835151036201d05057156201cfdc576201cf73906201e547565b919091156200661f57600091835b6201cf8f5750505050600090565b8051831015620175c75783926201cfb36001600160a01b036201c6b9838562004ce2565b6201cfc362006865855162004c8b565b511162005160576201cfd59062004c7b565b926201cf81565b6201cfe7906201e547565b919091156200661f57600091835b6201d0035750505050600090565b8051831015620175c75783926201d0276001600160a01b036201c734838562004ce2565b6201d03762006865855162004c8b565b511162005160576201d0499062004c7b565b926201cff5565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b916020019060026201d117835162004c8b565b5151036201d2dc5760019283835151036201d28257156201d1da576201d13d906201e547565b156200661f57600091835b6201d1565750505050600090565b8151831015620175c75783926001600160a01b036201d17b816201c6b9848762004ce2565b6201d18b62006865855162004c8b565b51111590816201d1ae575b5062005160576201d1a79062004c7b565b926201d148565b6201d1c091506201c6b9838662004ce2565b6201d1d062016e27845162004c8b565b511015386201d196565b6201d1e5906201e547565b156200661f57600091835b6201d1fe5750505050600090565b8151831015620175c75783926001600160a01b036201d223816201c734848762004ce2565b6201d23362006865855162004c8b565b51111590816201d256575b5062005160576201d24f9062004c7b565b926201d1f0565b6201d26891506201c734838662004ce2565b6201d27862016e27845162004c8b565b511015386201d23e565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060019384835151036201d4fd5760026201d359845162004c8b565b5151036201d4a357156201d404576201d372906201e547565b92909215620171bd57600092845b6201d38c575050505090565b80518410156200519a576201d3a662006865845162004c8b565b516103e881101562004c99576001600160a01b036201d3c6868462004ce2565b5116600052600390811b0182526040600020546201d3e962016e27855162004c8b565b511015620173d1576201d3fd859462004c7b565b936201d380565b6201d40f906201e547565b92909215620171bd57600092845b6201d429575050505090565b80518410156200519a576201d44362006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d467878562004ce2565b511660005260031b0182526040600020546201d48862016e27855162004c8b565b511015620173d1576201d49c859462004c7b565b936201d41d565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208092019060019384835151036201d71e5760026201d57a845162004c8b565b5151036201d6c457156201d625576201d593906201e547565b92909215620171bd57600092845b6201d5ad575050505090565b80518410156200519a576201d5c762006865845162004c8b565b516103e881101562004c99576001600160a01b036201d5e7868462004ce2565b5116600052600390811b0182526040600020546201d60a62016e27855162004c8b565b511115620173d1576201d61e859462004c7b565b936201d5a1565b6201d630906201e547565b92909215620171bd57600092845b6201d64a575050505090565b80518410156200519a576201d66462006865845162004c8b565b516103e881101562004c9957611fbb906001600160a01b036201d688878562004ce2565b511660005260031b0182526040600020546201d6a962016e27855162004c8b565b511115620173d1576201d6bd859462004c7b565b936201d63e565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101600392836201d78e835162004c8b565b5151036201da1c5760019485835151036201d9c257156201d8b9576201d7b4906201e547565b93909315620173d157600093855b6201d7cf57505050505090565b80518510156201d8b3576201d7e962006865845162004c8b565b516103e8908181101562004c99576001600160a01b03908490826201d80f8a8762004ce2565b5116600052811b01865260409081600020546201d83162016e27885162004c8b565b51119283156201d857575b5050506201b1c3576201d850869562004c7b565b946201d7c2565b909192506201d86b62006865875162004c8b565b519081101562004c995784916201d883898662004ce2565b5116600052811b018552600020546201d8a86201d8a1855162004c8b565b5162004cc0565b51103880806201d83c565b620178f8565b6201d8c7909392936201e547565b93909315620173d157600093855b6201d8e257505050505090565b80518510156201d8b3576201d8fc62006865845162004c8b565b516103e88082101562004c99576001600160a01b0391826201d91f898662004ce2565b5116600052611fbb8091881b01855260409182600020546201d94662016e27895162004c8b565b51119384156201d96d575b505050506201b1c3576201d966869562004c7b565b946201d8d5565b90919293506201d98262006865885162004c8b565b519182101562004c99576201d998898662004ce2565b5116600052861b018352600020546201d9b66201d8a1855162004c8b565b5110388080806201d951565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201da91835162004c8b565b5151036201dc4a5760019384835151036201dbf057156201db4d576201dab7906201e547565b92909215620171bd57600092845b6201dad4575050505050600090565b805184101562017900576201daee62006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201db11838562004ce2565b5116600052600390811b0183526040600020546201db3462016e27865162004c8b565b5110620178f8576201db469062004c7b565b936201dac5565b6201db58906201e547565b92909215620171bd57600092845b6201db75575050505050600090565b805184101562017900576201db8f62006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dbb6848662004ce2565b511660005260031b0183526040600020546201dbd762016e27865162004c8b565b5110620178f8576201dbe99062004c7b565b936201db66565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b919060208092019060026201dcba835162004c8b565b5151036201de735760019384835151036201de1957156201dd76576201dce0906201e547565b92909215620171bd57600092845b6201dcfd575050505050600090565b805184101562017900576201dd1762006865845162004c8b565b51936103e885101562004c995785946001600160a01b036201dd3a838562004ce2565b5116600052600390811b0183526040600020546201dd5d62016e27865162004c8b565b5111620178f8576201dd6f9062004c7b565b936201dcee565b6201dd81906201e547565b92909215620171bd57600092845b6201dd9e575050505050600090565b805184101562017900576201ddb862006865845162004c8b565b51936103e885101562004c99578594611fbb906001600160a01b036201dddf848662004ce2565b511660005260031b0183526040600020546201de0062016e27865162004c8b565b5111620178f8576201de129062004c7b565b936201dd8f565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b916020809101600392836201dee3835162004c8b565b5151036201e1755760019485835151036201e11b57156201e009576201df09906201e547565b93909315620173d157600093855b6201df2757505050505050600090565b80518510156201b22e576201df4162006865845162004c8b565b51946103e8958681101562004c995787966001600160a01b03918590836201df6a868862004ce2565b5116600052811b018752604080600020546201df8b62016e27895162004c8b565b51111592836201dfb0575b5050506201b225576201dfa99062004c7b565b946201df17565b91985091506201dfc562006865875162004c8b565b519788101562004c9957889785916201dfdf858762004ce2565b5116600052811b018652600020546201dffd6201d8a1865162004c8b565b5110153880806201df96565b6201e017909392936201e547565b93909315620173d157600093855b6201e03557505050505050600090565b80518510156201b22e576201e04f62006865845162004c8b565b51946103e88087101562004c995787966001600160a01b0390816201e075858762004ce2565b5116600052611fbb8091891b01865260409081600020546201e09c62016e278a5162004c8b565b51111593846201e0c2575b505050506201b225576201e0bb9062004c7b565b946201e025565b9193509198506201e0d862006865885162004c8b565b519081101562004c995789986201e0f0858762004ce2565b5116600052871b018452600020546201e10e6201d8a1865162004c8b565b511015388080806201e0a7565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201e1df816201e364565b156201e35b576040810190606082510151511515806201e320575b156201e20c5750516060015151600191565b604082510151511515806201e307575b156201e22e5750516040015151600191565b60808251015151151590816201e2ed575b50156201e25157516080015151600191565b805160c081015151156201e29857506201e27060c08251015162004c8b565b51516201e28157505b600090600090565b60c06201e2919151015162004c8b565b5151600191565b602081015151156201e2b05750516020015151600191565b60a0015180516201e2c4575b50506201e279565b6201e2cf9062004c8b565b51516201e2dd57806201e2bc565b60a06201e2919151015162004c8b565b6020915001516026811015620029ab57601014386201e23f565b5060208101516026811015620029ab576013146201e21c565b506020810180516026811015620029ab57600c149081156201e344575b506201e1fa565b9050516026811015620029ab57600f14386201e33d565b50600090600090565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146201e54257805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760051462017188578051838110156201e52d5760061462017188578051838110156201e52d5760071462017188578051838110156201e52d5760081462017188578051838110156201e52d5760091462017188578051838110156201e52d57600a1462017188578051838110156201e52d57600b1462017188578051838110156201e52d57600c1462017188578051838110156201e52d57600d1462017188578051838110156201e52d57600e1462017188578051838110156201e52d57600f1462017188578051838110156201e52d5760101462017188578051838110156201e52d5760111462017188578051838110156201e52d5760121462017188578051838110156201e52d5760131462017188578051838110156201e52d5760141462017188578051838110156201e52d57601514620171885751918210156201e5185750601e14620032615750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201e552816201e364565b156201e5c15760208101516026811015620029ab576004146201e5ae576040015160c0015180516201e59c57506040516201e58d8162002ac7565b60008152600036813790600090565b6201e5a79062004c8b565b5190600190565b60c060406201e5a7920151015162004caf565b506040516201e58d8162002ac7565b60208101516026811015620029ab576004146201e5f657506040516201e58d8162002ac7565b60c060406201e5a7920151015162004c8b565b6201e614816201e759565b156201e74957602081019081519160269081841015620029ab5760018094146201e72e57805182811015620029ab576003146201e72e5780519082821015620029ab5760048092146201e712578051838110156201e52d576005146201e712578051838110156201e52d576006146201e712578051838110156201e52d576014146201e712578051838110156201e52d576015146201e7125751918210156201e5185750601e146201e6f4575050604051906201e6d18262002ac7565b60008252604051916201e6e48362002ac7565b6000835260003681379190600090565b604001916201e70d60a0620077f3818651015162004c8b565b519190565b505050604001916201e70d60a0620077f3818651015162004c8b565b5050604001916201e70d60a0620077f3818651015162004c8b565b50604051906201e6d18262002ac7565b60200180519060269081831015620029ab5760018093146201e54257805182811015620029ab576002146200661f57805182811015620029ab576003146201e5425780519082821015620029ab57600480921462017188578051838110156201e52d5760141462017188578051838110156201e52d5760151462017188578051838110156201e52d57601e1462017188578051838110156201e52d57600514620171885751918210156201e5185750600614620032615750600090565b916101f581146201e8c0576101f681146201e8b4576101f781146201e8a8576101f881146201e89c576101f981146201e890576101fa81146201e884576101fb81146201e878576101fc146201e86d575050600090565b62003261916201f311565b5062003261916201f16c565b5062003261916201f007565b5062003261916201eea2565b5062003261916201ed3d565b5062003261916201eb98565b5062003261916201ea33565b506200326191906020019060019182815151036201e9d957826201e8e5825162004c8b565b5151036201e97f5760208201516026811015620029ab576002036200661f57600091835b6201e9175750505050600090565b604081019260a0936201e92e858251015162004cc0565b51518210156201e97757816200749787966201e94d9351015162004cc0565b516201e95e62006865855162004c8b565b511062005160576201e9709062004c7b565b926201e909565b5050620171bd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201eb3e57826201ea52825162004c8b565b5151036201eae45760208201516026811015620029ab576002036200661f57600091835b6201ea845750505050600090565b604081019260a0936201ea9b858251015162004cc0565b51518210156201e97757816200749787966201eaba9351015162004cc0565b516201eacb62006865855162004c8b565b511162005160576201eadd9062004c7b565b926201ea76565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ece35760026201ebb8825162004c8b565b5151036201ec895760208201516026811015620029ab576002036200661f57600091835b6201ebea5750505050600090565b604081019260a0936201ec01858251015162004cc0565b51518210156201e9775781856201ec2282620074978a998651015162004cc0565b516201ec3362006865885162004c8b565b51111592836201ec58575b50505062005160576201ec519062004c7b565b926201ebdc565b5101516201ec6c9250620074979062004cc0565b516201ec7d62016e27855162004c8b565b5110158138806201ec3e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201ee4857826201ed5c825162004c8b565b5151036201edee5760208201516026811015620029ab576002036200661f57600091835b6201ed8e5750505050600090565b604081019260a0936201eda5858251015162004cc0565b51518210156201e97757816200749787966201edc49351015162004cc0565b516201edd562006865855162004c8b565b511462005160576201ede79062004c7b565b926201ed80565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201efad57826201eec1825162004c8b565b5151036201ef535760208201516026811015620029ab576002036200661f57600091835b6201eef35750505050600090565b604081019260a0936201ef0a858251015162004cd1565b51518210156201e97757816200749787966201ef299351015162004caf565b516201ef3a62006865855162004c8b565b511062005160576201ef4c9062004c7b565b926201eee5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f11257826201f026825162004c8b565b5151036201f0b85760208201516026811015620029ab576002036200661f57600091835b6201f0585750505050600090565b604081019260a0936201f06f858251015162004cd1565b51518210156201e97757816200749787966201f08e9351015162004caf565b516201f09f62006865855162004c8b565b511162005160576201f0b19062004c7b565b926201f04a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f2b75760026201f18c825162004c8b565b5151036201f25d5760208201516026811015620029ab576002036200661f57600091835b6201f1be5750505050600090565b604081019260a0936201f1d5858251015162004cd1565b51518210156201e9775781856201f1f682620074978a998651015162004caf565b516201f20762006865885162004c8b565b51111592836201f22c575b50505062005160576201f2259062004c7b565b926201f1b0565b5101516201f2409250620074979062004caf565b516201f25162016e27855162004c8b565b5110158138806201f212565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036201f41c57826201f330825162004c8b565b5151036201f3c25760208201516026811015620029ab576002036200661f57600091835b6201f3625750505050600090565b604081019260a0936201f379858251015162004cd1565b51518210156201e97757816200749787966201f3989351015162004caf565b516201f3a962006865855162004c8b565b511462005160576201f3bb9062004c7b565b926201f354565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91603381036201f560575060209150016001815151036201f5105760016201f49f825162004c8b565b5151036201f4bd57620068656201f4b7915162004c8b565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201f649575060209150016001815151036201f5f95760016201f588825162004c8b565b5151036201f5a657620068656201f5a0915162004c8b565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201f75b575060209150016001815151036201f70b5760026201f671825162004c8b565b5151036201f6b1576201f68962006865825162004c8b565b5142101590816201f698575090565b6201f6aa915062016e27905162004c8b565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201f85f575060209150016001815151036201f8055760016201f783825162004c8b565b5151036201f7ab5762016c03620068656201f79e4262006274565b5050505050925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603781036201f956575060209150016001815151036201f8fc5760016201f887825162004c8b565b5151036201f8a25762016d04620068656201f79e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603881036201fa5a575060209150016001815151036201fa005760026201f97e825162004c8b565b5151036201f9a6576201f9914262006274565b505050505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603981036201fb5f575060209150016001815151036201fb055760016201fa82825162004c8b565b5151036201faab5762016c03620068656201fa9d4262006274565b505050509390505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603a81036201fc56575060209150016001815151036201fbfc5760016201fb87825162004c8b565b5151036201fba25762016d04620068656201fa9d4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603b81036201fd5b575060209150016001815151036201fd015760026201fc7e825162004c8b565b5151036201fca7576201fc914262006274565b50505050905062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603c81036201fe60575060209150016001815151036201fe065760016201fd83825162004c8b565b5151036201fdac5762016c03620068656201fd9e4262006274565b505050949150505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603d81036201ff57575060209150016001815151036201fefd5760016201fe88825162004c8b565b5151036201fea35762016d04620068656201fd9e4262006274565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603e81036202005c57506020915001600181515103620200025760026201ff7f825162004c8b565b5151036201ffa8576201ff924262006274565b50505091505062016e0462006865835162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b603f810362020161575060209150016001815151036202010757600162020084825162004c8b565b515103620200ad5762016c03620068656202009f4262006274565b505095925050505162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040928184036202025757505060200190600182515103620201ff5760016202018b835162004c8b565b515103620201a7575062016d04620068656202009f4262006274565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604182036202035957505060200190600182515103620203015760026202027f835162004c8b565b515103620202a95750620202934262006274565b50509250505062016e0462006865835162004c8b565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b909260428403620203715750620032619250620215e3565b60438403620203875750620032619250620217ed565b60448481036202039f575050620032619250620219ef565b60458503620203b657505062003261925062021c6c565b60468503620203cd57505062003261925062021e6e565b60478503620203e457505062003261925062022070565b60488503620203fb57505062003261925062022353565b604985036202041257505062003261925062022660565b604a8503620204295750506200326192506202293e565b604b85036202044057505062003261925062022d06565b604c85036202045757505062003261925062022eb1565b604d85036202046e57505062003261925062022fb5565b604e8503620204855750506200326192506202310d565b604f85036202049c5750506200326192506202328e565b60508503620204b357505062003261925062023392565b919092936055811460001462020675575060208401926002845151036202061d5760019283620204e4865162004caf565b515103620205c6575090829160009586945b62020511575b50505050506200686562016c03915162004caf565b9091929395620205248383015162004c8b565b5151871015620205bf576202057b908415620205865762009b8d906202055f6103e8620205578b620074978c5162004c8b565b51106202352c565b6201b9ac620205748a620074978b5162004c8b565b51620060c4565b9392919083620204f6565b62009b8d90620205a36103e8620205578b620074978c5162004c8b565b6201b9ac620205b88a620074978b5162004c8b565b516200614a565b95620204fc565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b60568103620207f857506020840192600284515103620207a057600192836202069f865162004caf565b51510362020749575090829160009586945b620206cc575b50505050506200686562016d04915162004caf565b9091929395620206df8383015162004c8b565b515187101562020742576202071a908415620207255762009b8d906202055f6103e8620207128b620074978c5162004c8b565b51106202359e565b9392919083620206b1565b62009b8d90620205a36103e8620207128b620074978c5162004c8b565b95620206b7565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9194909160578103620209be575060208401946002865151036202096557600262020824875162004caf565b5151036202090d5750600092835b620208408287015162004c8b565b5151851015620208d35790620208988562020840938987600014620208a2576103e86202087b6200995a946200749762020883945162004c8b565b511062023610565b6201b9ac6202057489620074978d5162004c8b565b9490915062020832565b6103e86202087b6200995a9462007497620208be945162004c8b565b6201b9ac620205b889620074978d5162004c8b565b93505093925050620208ea62006865835162004caf565b518110159182620208fa57505090565b62016e2e91925062016e27905162004caf565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b909491906058810362020b755750602084019260028451510362020b1d5760019283620209ec865162004caf565b51510362020ac6575090829160009586945b62020a185750505050506200686562016c03915162004caf565b909192939562020a2b8383015162004c8b565b5151871015620205bf5762020a8290841562020a8d5762009b8d9062020a666103e862020a5e8b620074978c5162004c8b565b511062023682565b6201b9ac62020a7b8a620074978b5162004c8b565b5162005deb565b9392919083620209fe565b62009b8d9062020aaa6103e862020a5e8b620074978c5162004c8b565b6201b9ac62020abf8a620074978b5162004c8b565b5162005eb4565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b6059810362020cf05750602084019260028451510362020c98576001928362020b9f865162004caf565b51510362020c41575090829160009586945b62020bcb5750505050506200686562016d04915162004caf565b909192939562020bde8383015162004c8b565b5151871015620207425762020c1990841562020c245762009b8d9062020a666103e862020c118b620074978c5162004c8b565b5110620236f4565b939291908362020bb1565b62009b8d9062020aaa6103e862020c118b620074978c5162004c8b565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a810362020e7c5750602084019460028651510362020e2357600262020d1c875162004caf565b51510362020dcb5750600092835b62020d388287015162004c8b565b5151851015620208d3579062020d908562020d3893898760001462020d9a576103e862020d736200995a946200749762020d7b945162004c8b565b511062023766565b6201b9ac62020a7b89620074978d5162004c8b565b9490915062020d2a565b6103e862020d736200995a946200749762020db6945162004c8b565b6201b9ac62020abf89620074978d5162004c8b565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b8103620210555750602084019260028451510362020ffd576001928362020eaa865162004caf565b51510362020fa6575090829160009586945b62020ed65750505050506200686562016c03915162004caf565b909192939562020ee98383015162004c8b565b5151871015620205bf57831562020f59576103e862020f1b8162020f138a620074978b5162004c8b565b5110620237d8565b62020f2c8862007497895162004c8b565b519081101562004c995762020f4e91600662009b8d9260031b01549062006258565b939291908362020ebc565b6103e862020f728162020f138a620074978b5162004c8b565b62020f838862007497895162004c8b565b519081101562004c995762020f4e91611fbe62009b8d9260031b01549062006258565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c81036202122a57506020840192600284515103620211d257600192836202107f865162004caf565b5151036202117b575090829160009586945b620210ab5750505050506200686562016d04915162004caf565b9091929395620210be8383015162004c8b565b5151871015620207425783156202112e576103e8620210f081620210e88a620074978b5162004c8b565b51106202384a565b620211018862007497895162004c8b565b519081101562004c99576202112391600662009b8d9260031b01549062006258565b939291908362021091565b6103e86202114781620210e88a620074978b5162004c8b565b620211588862007497895162004c8b565b519081101562004c99576202112391611fbe62009b8d9260031b01549062006258565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d819692939496146000146202140357506020840192600284515103620213aa5760026202125a855162004caf565b515103620213525750600080955b620212768187015162004c8b565b51518710156202133b578315620212e9576103e891620212a983620212a18a620074978a5162004c8b565b5110620238bc565b620212ba8862007497885162004c8b565b519283101562004c995762015696620212e0916006620212769560031b01549062006258565b96915062021268565b6103e8916202130383620212a18a620074978a5162004c8b565b620213148862007497885162004c8b565b519283101562004c995762015696620212e091611fbe620212769560031b01549062006258565b50929350935050620208ea62006865835162004caf565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b835260206004840152603160248401528201526000805160206203407b8339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e03620171bd5760208401926002845151036202158b576001928362021430865162004caf565b51510362021534575090829160009586945b6202145d575b50505050506200686562016f32915162004caf565b9091929395620214708383015162004c8b565b51518710156202152d578315620214e0576103e8620214a2816202149a8a620074978b5162004c8b565b51106202392e565b620214b38862007497895162004c8b565b519081101562004c9957620214d591600662009b8d9260031b01549062006258565b939291908362021442565b6103e8620214f9816202149a8a620074978b5162004c8b565b6202150a8862007497895162004c8b565b519081101562004c9957620214d591611fbe62009b8d9260031b01549062006258565b9562021448565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b83526020600484015260306024840152820152600080516020620341bb8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b9060408101906001825151036202179357600162021602835162004c8b565b515103620217395760200191600183515103620216df57600162021627845162004c8b565b5151036202168557156202166157620068656202165962016c03926201b7fb6200686560018060a01b03925162004c8b565b925162004c8b565b620068656202165962016c03926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906040810190600182515103620219955760016202180c835162004c8b565b5151036202193b5760200191600183515103620218e157600162021831845162004c8b565b5151036202188757156202186357620068656202165962016d04926201b7fb6200686560018060a01b03925162004c8b565b620068656202165962016d04926201b8766200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b604082019160018351510362021c1257600162021a0d845162004c8b565b51510362021bb8576020019060018251510362021b5e57600262021a32835162004c8b565b51510362021b04571562021aa85760018060a01b0362021a5c816201b7fb62006865865162004c8b565b62021a6c62006865845162004c8b565b511115928362021a7c5750505090565b62021a9c92935062016e27916201b7fb6200686562021659935162004c8b565b51101538808062017188565b60018060a01b0362021ac4816201b87662006865865162004c8b565b62021ad462006865845162004c8b565b511115928362021ae45750505090565b62021a9c92935062016e27916201b8766200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b90604081019060018251510362021e1457600162021c8b835162004c8b565b51510362021dba576020019160018351510362021d6057600162021cb0845162004c8b565b51510362021d06571562021ce257620068656202165962016c03926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016c03926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060408101906001825151036202201657600162021e8d835162004c8b565b51510362021fbc576020019160018351510362021f6257600162021eb2845162004c8b565b51510362021f08571562021ee457620068656202165962016d04926201c6b96200686560018060a01b03925162004c8b565b620068656202165962016d04926201c7346200686560018060a01b03925162004c8b565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6040820191600183515103620222875760016202208e845162004c8b565b5151036202222d5760200190600182515103620221d3576002620220b3835162004c8b565b5151036202217957156202211d5760018060a01b03620220dd816201c6b962006865865162004c8b565b620220ed62006865845162004c8b565b5111159283620220fd5750505090565b62021a9c92935062016e27916201c6b96200686562021659935162004c8b565b60018060a01b0362022139816201c73462006865865162004c8b565b6202214962006865845162004c8b565b5111159283620221595750505090565b62021a9c92935062016e27916201c7346200686562021659935162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620222e957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202259557600162022373845162004c8b565b5151036202253c5760200192600184515103620224e357600262022398855162004c8b565b5151036202248a57156202241b576103e890620223c782620223bf62006865875162004c8b565b5110620222e1565b620223d762006865855162004c8b565b519182101562004c9957600362016e279262016c0394620224046200686560018060a01b03925162004c8b565b5116600052811b0160205260002054925162004c8b565b6103e8906202243482620223bf62006865875162004c8b565b6202244462006865855162004c8b565b519182101562004c9957611fbb62016e279262016c0394620224726200686560018060a01b03925162004c8b565b511660005260031b0160205260002054925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620225f657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202287357600162022680845162004c8b565b5151036202281a5760200192600184515103620227c1576002620226a5855162004c8b565b51510362022768571562022711576103e890620226d482620226cc62006865875162004c8b565b5110620225ee565b620226e462006865855162004c8b565b519182101562004c9957600362016e279262016d0494620224046200686560018060a01b03925162004c8b565b6103e8906202272a82620226cc62006865875162004c8b565b6202273a62006865855162004c8b565b519182101562004c9957611fbb62016e279262016d0494620224726200686560018060a01b03925162004c8b565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b15620228d457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203403b833981519152606482015266662072616e676560c81b608482015260a490fd5b9060408082019260018451510362022cad5760016202295e855162004c8b565b51510362022c545760208093019260018451510362022bfc576003918262022987865162004c8b565b51510362022b9e571562022a9a576103e891620229b683620229ae62006865885162004c8b565b5110620228cc565b620229c662006865865162004c8b565b51928084101562004c995760018060a01b038281620229ea620068658b5162004c8b565b5116956000968752811b0184528585205462022a0b62016e27895162004c8b565b511115978862022a21575b505050505050505090565b90919293949596975062022a3a62006865895162004c8b565b519283101562022a8657916201d8a195939162022a626200686562022a759997955162004c8b565b51168452811b0190522054925162004c8b565b511015388080808080808062022a16565b634e487b7160e01b86526032600452602486fd5b6103e862022ab281620229ae62006865885162004c8b565b62022ac262006865865162004c8b565b51908082101562004c995760018060a01b03938462022ae6620068658a5162004c8b565b5116946000958652611fbb8094831b0185528686205462022b0c62016e278a5162004c8b565b511115988962022b23575b50505050505050505090565b9091929394959697985062022b3d620068658a5162004c8b565b519384101562022b8a579162022b789795939162022b66620068656201d8a19997955162004c8b565b511685521b0190522054925162004c8b565b51101538808080808080808062022b17565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b906020019060018251510362022db057600162022d24835162004c8b565b51510362022d56571562022d445762016c03620068656202165962022e73565b62016c03620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062022e1c575090565b908160031b60ff611fbf820154161562022e6d5762022e5a62022e679262022e52611fb962022e6094015462005edc8762005f9f565b92906200605b565b62006258565b9162004c7b565b62022e0e565b50905090565b6000805b6103e8811062022e85575090565b9060ff60078360031b01541615620061e45762022e6062022eab916201b9ac84620060c4565b62022e77565b906020019060018251510362022f5b57600162022ecf835162004c8b565b51510362022f01571562022eef5762016d04620068656202165962022e73565b62016d04620068656202165962022e0a565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620230b357600262022fd3835162004c8b565b5151036202305957156202301d5762022feb62022e73565b62022ffb62006865835162004c8b565b511115908162023009575090565b905062016e2e62016e276202165962022e73565b6202302762022e0a565b6202303762006865835162004c8b565b511115908162023045575090565b905062016e2e62016e276202165962022e0a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620231b75760016202312b835162004c8b565b5151036202315d57156202314b5762016c03620068656202165962023250565b62016c03620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b6000805b6103e8811062023223575090565b9060ff611fbf8360031b01541615620061e45762022e606202324a916201b9ac8462005eb4565b62023215565b6000805b6103e8811062023262575090565b9060ff60078360031b01541615620061e45762022e6062023288916201b9ac8462005deb565b62023254565b906020019060018251510362023338576001620232ac835162004c8b565b515103620232de5715620232cc5762016d04620068656202165962023250565b62016d04620068656202165962023211565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d75736044820152600080516020620341bb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b9060200190600182515103620234d2576002620233b0835162004c8b565b515103620234785715620233fa57620233c862023250565b620233d862006865835162004c8b565b5111159081620233e6575090565b905062016e2e62016e276202165962023250565b6202340462023211565b6202341462006865835162004c8b565b511115908162023422575090565b60009150815b6103e8811062023444575b5062016e2762016e2e915162004c8b565b9160ff611fbf8460031b015416156202347157620082566202346b916201b9ac8562005eb4565b62023428565b9162023433565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203407b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033edb8339815191526064820152608490fd5b156202353457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620235a657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202361857565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202368a57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620236fc57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202376e57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620237e057565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202385257565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b15620238c457565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b156202393657565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203405b833981519152606482015266662072616e676560c81b608482015260a490fd5b91610191811462023a08576101928114620239fc576101938114620239f0576101968114620239e45761019714620239d9575050600090565b620032619162023f3e565b50620032619162023e59565b50620032619162023cb4565b50620032619162023b73565b5062003261919060200190600191828151510362023b19578262023a2d825162004c8b565b51510362023abf5760208201516026811015620029ab57600a036200661f57600091835b62023a5f5750505050600090565b604081019260a09362023a76858251015162004c8b565b51518210156201e977578162007497879662023a959351015162004c8b565b5162023aa662006865855162004c8b565b5114620051605762023ab89062004c7b565b9262023a51565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023c5a5760208201516026811015620029ab57600a036200661f5782916000935b62023bb05750505050600090565b6040810160a062023bc5818351015162004c8b565b51518610156201e97757906000855b62023bf0575b50505062023be9839462004c7b565b9362023ba2565b62023bfc855162004c8b565b515181101562023c545762023c1a8762007497858551015162004c8b565b5162023c2c8262007497885162004c8b565b511462023c4a579062023c4186939262004c7b565b90919262023bd4565b5050505050905090565b62023bda565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200190600191828151510362023dff57600262023cd4825162004c8b565b51510362023da55760208201516026811015620029ab57600a036200661f57600091835b62023d065750505050600090565b604081019260a09362023d1d858251015162004c8b565b51518210156201e97757818562023d3e82620074978a998651015162004c8b565b5162023d4f62006865885162004c8b565b511115928362023d74575b505050620051605762023d6d9062004c7b565b9262023cf8565b51015162023d889250620074979062004c8b565b5162023d9962016e27855162004c8b565b51101581388062023d5a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600191828151510362023ee55760208201516026811015620029ab57600b036200661f57600091835b62023e905750505050600090565b60408101515192835181101562023ede5762023ec762023eb282879662004ce2565b5162023ebf855162004c8b565b519062033cdb565b620051605762023ed79062004c7b565b9262023e82565b50620171bd565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362023fc35760208201516026811015620029ab57600b036200661f57600091835b62023f755750505050600090565b60408101515192835181101562023ede5762023fac62023f9782879662004ce2565b5162023fa4855162004c8b565b519062006570565b620051605762023fbc9062004c7b565b9262023f67565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9160978114620240405760981462024035575050600090565b620032619162024151565b5060200180515162003261929060001901620240f857600162024064835162004c8b565b5151036202409e57602001516026811015620029ab5762006865620216596202408d9262033aa2565b51146202409957600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c604482015260008051602062033ffb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b91909160208093016001918282515103620241d857938293946000935b6202417d575050505050600090565b62024189835162004c8b565b5151841015620179005781810151936026851015620029ab57620241ae869562033aa2565b620241bf8262007497875162004c8b565b5114620178f857620241d19062004c7b565b936202416e565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd811462024334576102be811462024328576102bf81146202431c576102c0811462024310576102c1811462024304576102c28114620242f8576102c38114620242ec576102c48114620242e0576102c58114620242d4576102c68114620242c8576102c78114620242bc576102c814620242b157505050600090565b620032619262025559565b5062003261926202535e565b50620032619262025159565b50620032619262024ee9565b50620032619262024ce4565b50620032619262024ad5565b506200326192620249b6565b5062003261926202488f565b50620032619262024768565b5062003261926202460e565b506200326192620244ba565b50620032619262024351565b606482101562004c99570190600090565b916020809101926001845151036202446057600162024371855162004c8b565b515103620244065715620243cd5762021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b9062024340565b90549060031b1c4262006266565b62021659620243bf62016c0393620243b8620076f9620068659560018060a01b03845116600052613f01815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602080910192600184515103620245b4576001620244da855162004c8b565b5151036202455a5715620245215762021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b62021659620243bf62016d0493620243b8620076f9620068659560018060a01b03845116600052611f49815260406000209301620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020809101926001845151036202470e5760026202462e855162004c8b565b515103620246b45715620246805781516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b62016e0462006865835162004c8b565b81516001600160a01b03166000908152611f498252604090206202467092620243bf92620243b891620076f99101620073df565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202483557600162024786845162004c8b565b515103620247db5715620247c957620076f96020620247a69201620073df565b606481101562004c9957620068656202165962016c0392611f4b01544262006266565b620076f96020620247a69201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91602001916001835151036202495c576001620248ad845162004c8b565b515103620249025715620248f057620076f96020620248cd9201620073df565b606481101562004c9957620068656202165962016d0492611f4b01544262006266565b620076f96020620248cd9201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916020019160018351510362024a7b576002620249d4845162004c8b565b51510362024a21571562024a0f57620076f96020620249f49201620073df565b606481101562004c99576202467090611f4b01544262006266565b620076f96020620249f49201620073df565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024c8b578462024af8835162004c8b565b51510362024c32579584959660001462024ba4576000945b62024b2057505050505050600090565b62024b2c825162004c8b565b51518510156201b22e57859460018060a01b0362024b508262007497865162004c8b565b51166000526020611f49815262024b8b6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b9288015162004c8b565b51106201b2255762024b9d9062004c7b565b9462024b10565b6000945b62024bb857505050505050600090565b62024bc4825162004c8b565b51518510156201b22e57859460018060a01b0362024be88262007497865162004c8b565b51166000526020611f49815262024c196200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51106201b2255762024c2b9062004c7b565b9462024ba8565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b909291604093848201600193848251510362024e90578462024d07835162004c8b565b51510362024e37579584959660001462024da9576000945b62024d2f57505050505050600090565b62024d3b825162004c8b565b51518510156201b22e57859460018060a01b0362024d5f8262007497865162004c8b565b51166000526020611f49815262024d906200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024da29062004c7b565b9462024d1f565b6000945b62024dbd57505050505050600090565b62024dc9825162004c8b565b51518510156201b22e57859460018060a01b0362024ded8262007497865162004c8b565b51166000526020611f49815262024e1e6200686562024b81620243bf86600020620243b8620076f9878c01620073df565b51116201b2255762024e309062004c7b565b9462024dad565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202510057600262024f0c825162004c8b565b515103620250a75784959660001462024fe3576000945b62024f3357505050505050600090565b62024f3f815162004c8b565b51518510156201b22e57859460018060a01b0362024f638262007497855162004c8b565b51166000526020611f49815262024f8c620243bf86600020620243b8620076f9858901620073df565b9086019062024fa062006865835162004c8b565b51811015918262024fc5575b50506201b2255762024fbe9062004c7b565b9462024f23565b62024fd891925062016e27905162004c8b565b511015388062024fac565b6000945b62024ff757505050505050600090565b62025003815162004c8b565b51518510156201b22e57859460018060a01b03620250278262007497855162004c8b565b51166000526020611f49815262025050620243bf86600020620243b8620076f9858901620073df565b908601906202506462006865835162004c8b565b51811015918262025089575b50506201b22557620250829062004c7b565b9462024fe7565b6202509c91925062016e27905162004c8b565b511015388062025070565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b929160408082019260019384815151036202530557846202517b825162004c8b565b515103620252ac5784959660001462025222576000945b6202519f57505050505090565b620251ab815162004c8b565b51518510156201d8b35760018060a01b03620251cd8662007497845162004c8b565b51166000526020611f4981526202520862006865620251fe620243bf87600020620243b8620076f9878a01620073df565b9287015162004c8b565b51116201b1c3576202521b869562004c7b565b9462025192565b6000945b6202523357505050505090565b6202523f815162004c8b565b51518510156201d8b35760018060a01b03620252618662007497845162004c8b565b51166000526020611f4981526202529262006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51116201b1c357620252a5869562004c7b565b9462025226565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9291604080820192600193848151510362025500578462025380825162004c8b565b515103620254a7578495966000146202541d576000945b620253a457505050505090565b620253b0815162004c8b565b51518510156201d8b35760018060a01b03620253d28662007497845162004c8b565b51166000526020611f4981526202540362006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c35762025416869562004c7b565b9462025397565b6000945b6202542e57505050505090565b6202543a815162004c8b565b51518510156201d8b35760018060a01b036202545c8662007497845162004c8b565b51166000526020611f4981526202548d62006865620251fe620243bf87600020620243b8620076f9878a01620073df565b51106201b1c357620254a0869562004c7b565b9462025421565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b92916040808201926001938481515103620257665760026202557c825162004c8b565b5151036202570d578495966000146202564e576000945b620255a057505050505090565b620255ac815162004c8b565b51518510156201d8b35760018060a01b03620255ce8662007497845162004c8b565b51166000526020611f498152620255f7620243bf85600020620243b8620076f9858801620073df565b908501906202560b62006865835162004c8b565b51811091821562025631575b50506201b1c3576202562a869562004c7b565b9462025593565b6202564491925062016e27905162004c8b565b5110388062025617565b6000945b6202565f57505050505090565b6202566b815162004c8b565b51518510156201d8b35760018060a01b036202568d8662007497845162004c8b565b51166000526020613f018152620256b6620243bf85600020620243b8620076f9858801620073df565b90850190620256ca62006865835162004c8b565b518110918215620256f0575b50506201b1c357620256e9869562004c7b565b9462025652565b6202570391925062016e27905162004c8b565b51103880620256d6565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b600193808503620257d7575062003261935062025ea7565b60028103620257ed575062003261935062025f91565b60038103620258f7575050906040019180835151036202589b5762025813835162004c8b565b5151036202583c57620258366200686560018060a01b0380935116935162004c8b565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362025910575050620032619350620260d6565b60058103620259275750506200326193506202621b565b600681036202593e57505062003261935062026360565b60078103620259555750506200326193506202659c565b600881036202596c575050620032619350620267fa565b600981036202598357505062003261935062026a3a565b600a81036202599a57505062003261935062026c6e565b600b8103620259b157505062003261935062026f70565b600c8103620259c85750506200326193506202719c565b600d8103620259df575050620032619350620273ec565b600e8103620259f6575050620032619350620275e5565b600f810362025a0d57505062003261935062027935565b6010810362025a2457505062003261935062027b2e565b6011810362025a3b57505062003261935062027c4e565b6012810362025a5257505062003261935062027d6e565b6013810362025a6957505062003261935062027f04565b6014810362025a8057505062003261935062028024565b6015810362025a9757505062003261935062028144565b6019810362025aae575050620032619350620282cd565b601a810362025ac557505062003261935062028405565b601b810362025adc5750506200326193506202853d565b601c8195929394951460001462025c1f575060200193808551510362025bc65762025b08855162004c8b565b51510362025b6d57506000901562025b475750516001600160a01b03166000908152611f4760205260409020549062016c039062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016c0390620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601d810362025d5a575060200193808551510362025d015762025c43855162004c8b565b51510362025ca857506000901562025c825750516001600160a01b03166000908152611f4760205260409020549062016d049062006865905162004c8b565b90516001600160a01b03168152613eff60205260409020549062016d0490620068659081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b601e810362025e8c5750602001938451510362025e3357600262025d7f855162004c8b565b51510362025dda57506000901562025dbc5750516001600160a01b03166000908152611f47602052604090205462016e0462006865835162004c8b565b90516001600160a01b03168152613eff602052604090205462024670565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b9294509291601f141590506200661f576200326192620286ac565b91909160018251510362025f38571562025f0457620032619160018060a01b03905116600052611f406020526200118d62025efe62025eef6001604060002001935162004c8b565b51926040519283809262002c3e565b62033cdb565b620032619160018060a01b03905116600052613ef86020526200118d62025efe62025eef6001604060002001935162004c8b565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b91602001916001835151036202607a57600162025faf845162004c8b565b5151036202601b571562025fec57516001600160a01b03166000908152611f406020526040902060020154905162016f3290620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016f3290620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9160200191600183515103620261bf576001620260f4845162004c8b565b5151036202616057156202613157516001600160a01b03166000908152611f406020526040902060020154905162016c0390620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b91602001916001835151036202630457600162026239845162004c8b565b515103620262a557156202627657516001600160a01b03166000908152611f406020526040902060020154905162016d0490620068659062004c8b565b516001600160a01b03166000908152613ef86020526040902060020154905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b90916020809101916001835151036202654057600262026381845162004c8b565b515103620264e0576202639962006865845162004c8b565b51620263aa62016e27855162004c8b565b51106202645a57156202642b5760018060a01b039081845116600052611f4091828252600260406000200154620263e662006865865162004c8b565b5111159485620263f857505050505090565b9091929394505116600052526202641d62016e27600260406000200154925162004c8b565b5110153880808080620178f8565b60018060a01b039081845116600052613ef891828252600260406000200154620263e662006865865162004c8b565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202671b57620265bf835162004c8b565b515115620266b3579483949560001462026643576000935b620265e6575050505050600090565b620265f2835162004c8b565b51518410156201790057849360018060a01b03835116600052611f4082526002604060002001546202662a8262007497875162004c8b565b5114620178f8576202663c9062004c7b565b93620265d7565b6000935b62026656575050505050600090565b62026662835162004c8b565b51518410156201790057849360018060a01b03835116600052613ef882526002604060002001546202669a8262007497875162004c8b565b5114620178f857620266ac9062004c7b565b9362026647565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202677f57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b91602001916001835151036202695b57600262026818845162004c8b565b515103620268fb578015620268de57620268466103e86202683e62006865865162004c8b565b511062026777565b1562026894576202685c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016c0362016e27604060002054925162004c8b565b620268a462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016c0362016e27604060002054925162004c8b565b620268f56103e86202683e62006865865162004c8b565b62026846565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b15620269bf57565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d20286044820152600080516020620341db833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b916020019160018351510362026b9b57600262026a58845162004c8b565b51510362026b3b57801562026b1e5762026a866103e862026a7e62006865865162004c8b565b5110620269b7565b1562026ad45762026a9c62006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016d0462016e27604060002054925162004c8b565b62026ae462006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016d0462016e27604060002054925162004c8b565b62026b356103e862026a7e62006865865162004c8b565b62026a86565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b1562026bff57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b91909160208092019160018351510362026ea0576003918262026c92855162004c8b565b51510362026e3d57801562026e205762026cc06103e862026cb862006865875162004c8b565b511062026bf7565b1562026d7b5762026cd662006865845162004c8b565b51916103e88084101562004c995785516001600160a01b03908116600090815294831b830184526040852054865162026d149062016e279062004c8b565b511115968762026d29575b5050505050505090565b909192939495965062026d4162006865885162004c8b565b519283101562022a865751168452811b0190526040902054905162026d6b906201d8a19062004c8b565b5110153880808080808062026d1f565b62026d8b62006865845162004c8b565b516103e88082101562004c995760018060a01b039384875116946000958652611fbb8094831b018552604086205462026dc962016e27895162004c8b565b511115978862026dde57505050505050505090565b90919293949596975062026df762006865895162004c8b565b519384101562022b8a57511685521b0190526040902054905162022a75906201d8a19062004c8b565b62026e376103e862026cb862006865875162004c8b565b62026cc0565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152fd5b1562026f0157565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b9160200191600183515103620270cb57600262026f8e845162004c8b565b51510362027071578015620270545762026fbc6103e862026fb462006865865162004c8b565b511062026ef9565b156202700a5762026fd262006865835162004c8b565b516103e881101562004c995760039160018060a01b03905116600052811b0160205262016f3262016e27604060002054925162004c8b565b6202701a62006865835162004c8b565b516103e881101562004c9957611fbb9160018060a01b0390511660005260031b0160205262016f3262016e27604060002054925162004c8b565b6202706b6103e862026fb462006865865162004c8b565b62026fbc565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b156202712d57565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d206044820152600080516020620341fb833981519152606482015260008051602062033f5b833981519152608482015260a490fd5b916020019160018351510362027392576002620271ba845162004c8b565b515103620273385780156202731b57620271e86103e8620271e062006865865162004c8b565b511062027125565b156202728d57620271fe62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202725262006865855162004c8b565b5191821015620014f757506202165962016c0392600662016e279360031b01549062005070565b634e487b7160e01b81526011600452602490fd5b6202729d62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb01602052604082205460648082029391801590850490911417156202727957620272f362006865855162004c8b565b5191821015620014f757506202165962016c0392611fbe62016e279360031b01549062005070565b620273326103e8620271e062006865865162004c8b565b620271e8565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b91602001916001835151036202758b5760026202740a845162004c8b565b515103620275315715620274a3576202742862006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b9092016020526040822054606480820293918015908504909114171562027279576202747c62006865855162004c8b565b5191821015620014f757506202165962016d0492600662016e279360031b01549062005070565b620274b362006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb016020526040822054606480820293918015908504909114171562027279576202750962006865855162004c8b565b5191821015620014f757506202165962016d0492611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90602080930191600183515103620278db57600262027605845162004c8b565b51510362027881571562027745576202762362006865835162004c8b565b516103e8908181101562004c995760018060a01b03948584511693600094855260038093811b018252604085205460648102908082046064149015171562027731576202767562006865885162004c8b565b518581101562022b8a57841b60060154620276909162005070565b620276a062016e27885162004c8b565b5111159687620276b4575050505050505090565b9091929394959650620276cc62006865885162004c8b565b51918583101562022b8a5751168552821b820190526040832054606480820294918015908604909114171562027279576202770c62006865865162004c8b565b5192831015620014f757501b6006015462026d6b916201d8a191620216599162005070565b634e487b7160e01b86526011600452602486fd5b6202775562006865835162004c8b565b51906103e88083101562004c995760018060a01b039485835116936000948552611fbb809160031b0182526040852054936064850294808604606414901517156202773157620277aa62006865885162004c8b565b51948486101562022b8a57620277cb90611fbe809760031b01549062005070565b620277db62016e27895162004c8b565b5111159788620277f057505050505050505090565b9091929394959697506202780962006865895162004c8b565b5191858310156202786d575116865260031b01905260408320549260648402938085046064149015171562027279576202784862006865865162004c8b565b5191821015620014f7575060031b015462022a75916201d8a191620216599162005070565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027ad457600262027953845162004c8b565b51510362027a7a5715620279ec576202797162006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b03166000908152600392831b909201602052604082205460648082029391801590850490911417156202727957620279c562006865855162004c8b565b5191821015620014f757506202165962016f3292600662016e279360031b01549062005070565b620279fc62006865835162004c8b565b51906103e8908183101562004c9957516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620272795762027a5262006865855162004c8b565b5191821015620014f757506202165962016f3292611fbe62016e279360031b01549062005070565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027bf457600162027b4c845162004c8b565b51510362027b9a57801562027b7a5762021659620068659162016c039360018060a01b03905116906201ba0e565b505162016c0390620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027d1457600162027c6c845162004c8b565b51510362027cba57801562027c9a5762021659620068659162016d049360018060a01b03905116906201ba0e565b505162016d0490620068659062021659906001600160a01b03166201b9ba565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916020019060018251510362027eaa57600262027d8d835162004c8b565b51510362027e5057801562027dfe5782516001600160a01b039062027db5908216836201ba0e565b62027dc562006865855162004c8b565b511115938462027dd6575050505090565b62027df193945091620216599162016e27935116906201ba0e565b5110153880808062005160565b5081516001600160a01b039062027e179082166201b9ba565b62027e2762006865845162004c8b565b511115928362027e375750505090565b62021a9c92935062016e2791620216599151166201b9ba565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b916020019160018351510362027fca57600162027f22845162004c8b565b51510362027f7057801562027f505762021659620068659162016c039360018060a01b03905116906201c8c5565b505162016c0390620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620280ea57600162028042845162004c8b565b51510362028090578015620280705762021659620068659162016d049360018060a01b03905116906201c8c5565b505162016d0490620068659062021659906001600160a01b03166201c871565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602001906001825151036202827357600262028163835162004c8b565b51510362028219578015620281c75782516001600160a01b03906202818b908216836201c8c5565b6202819b62006865855162004c8b565b5111159384620281ac575050505090565b62027df193945091620216599162016e27935116906201c8c5565b5081516001600160a01b0390620281e09082166201c871565b620281f062006865845162004c8b565b5111159283620282005750505090565b62021a9c92935062016e2791620216599151166201c871565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620283ab576001620282eb845162004c8b565b5151036202835157156202832557516001600160a01b03166000908152611f456020526040902054905162016c0390620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016c0390620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9160200191600183515103620284e357600162028423845162004c8b565b5151036202848957156202845d57516001600160a01b03166000908152611f456020526040902054905162016d0490620068659062004c8b565b516001600160a01b03166000908152613efd6020526040902054905162016d0490620068659062004c8b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033fbb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9091602080910191600183515103620286525760026202855e845162004c8b565b515103620285f85715620285cc5760018060a01b039081845116600052611f45918282526040600020546202859862006865865162004c8b565b5111159485620285aa57505050505090565b9091929394505116600052526202641d62016e27604060002054925162004c8b565b60018060a01b039081845116600052613efd918282526040600020546202859862006865865162004c8b565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033f1b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b90916040016001928382515103620287885783921562028727576000925b620286d85750505050600090565b620286e4825162004c8b565b5151831015620175c757839260018060a01b0380835116906202870d8362007497875162004c8b565b5116146200516057620287209062004c7b565b92620286ca565b6000925b620287395750505050600090565b62028745825162004c8b565b5151831015620175c757839260018060a01b0380835116906202876e8362007497875162004c8b565b5116146200516057620287819062004c7b565b926202872b565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d757374206860448201526000805160206203419b8339815191526064820152608490fd5b9161012d811462028a755761012e811462028a695761012f811462028a5d57610130811462028a5157610131811462028a4557610132811462028a3957610133811462028a2d57610134811462028a2157610135811462028a1557610136811462028a09576101378114620289fd576101388114620289f1576101398114620289e55761013a8114620289d95761013b8114620289cd5761013c8114620289c15761013d8114620289b45761013e8114620289a75761013f81146202899a5761014081146202898d5761014181146202898157610142811462028975576101438114620289695761014481146202895d5761014581146202895157610146811462028945576101478114620289395761017381146202892c57610174811462028920576101751462028915575050600090565b62003261916202b290565b5062003261916202b0cd565b505062003261906202b071565b5062003261916202af23565b5062003261916202abd9565b5062003261916202aa5f565b5062003261916202a8de565b5062003261916202a719565b5062003261916202a5b7565b5062003261916202a43c565b505062003261906202a335565b505062003261906202a220565b505062003261906202a11e565b505062003261906202a016565b50620032619162029e95565b50620032619162029d14565b50620032619162029b91565b50620032619162029a0e565b5062003261916202988d565b5062003261916202970c565b50620032619162029589565b50620032619162029406565b506200326191620292c7565b50620032619162029188565b50620032619162029063565b50620032619162028f3f565b50620032619162028e01565b50620032619162028cc3565b50620032619162028b9f565b5062003261919060200190600191828151510362028b465760208201516026811015620029ab57600d036200661f5762028ab083926202b43c565b6000935b62028ac25750505050600090565b62028ace825162004c8b565b5151841015620175c7576000835b62028af6575b5062028aef839462004c7b565b9362028ab4565b939291815185101562028b3d5762028b148462007497835162004c8b565b5162028b21868462004ce2565b5114620170845762028b3583949562004c7b565b909262028adc565b91929362028ae2565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028c6a5760208201516026811015620029ab57600d036200661f5762028bd483926202b43c565b6000935b62028be65750505050600090565b62028bf2825162004c8b565b5151841015620175c7576000835b62028c1a575b5062028c13839462004c7b565b9362028bd8565b939291815185101562028c615762028c388462007497835162004c8b565b5162028c45868462004ce2565b5114620170845762028c5983949562004c7b565b909262028c00565b91929362028c06565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028da85760208201516026811015620029ab57600d036200661f5762028cf883926202b43c565b6000925b62028d075750505090565b62028d13825162004c8b565b51518310156201724457600080855b62028d42575b5015620171bd5762028d3b849362004c7b565b9262028cfc565b8295939194955181101562028d9d5762028d628662007497845162004c8b565b5162028d6f828562004ce2565b511462028d90579062028d8484939262004c7b565b90939594919262028d22565b5091809493503862028d28565b949390929462028d28565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028ee65760208201516026811015620029ab57600d036200661f5762028e3683926202b43c565b6000925b62028e455750505090565b62028e51825162004c8b565b51518310156201724457600080855b62028e80575b5015620171bd5762028e79849362004c7b565b9262028e3a565b8295939194955181101562028edb5762028ea08662007497845162004c8b565b5162028ead828562004ce2565b511462028ece579062028ec284939262004c7b565b90939594919262028e60565b5091809493503862028e66565b949390929462028e66565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202900a5760208201516026811015620029ab57600e036200661f5762028f7483926202b43c565b6000935b62028f865750505050600090565b62028f92825162004c8b565b5151841015620175c7576000835b62028fba575b5062028fb3839462004c7b565b9362028f78565b9392918151851015620290015762028fd88462007497835162004c8b565b5162028fe5868462004ce2565b5114620170845762028ff983949562004c7b565b909262028fa0565b91929362028fa6565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060019182815151036202912e5760208201516026811015620029ab57600e036200661f576202909883926202b43c565b6000935b620290aa5750505050600090565b620290b6825162004c8b565b5151841015620175c7576000835b620290de575b50620290d7839462004c7b565b936202909c565b93929181518510156202912557620290fc8462007497835162004c8b565b5162029109868462004ce2565b511462017084576202911d83949562004c7b565b9092620290c4565b919293620290ca565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202926d5760208201516026811015620029ab57600e036200661f57620291bd83926202b43c565b6000925b620291cc5750505090565b620291d8825162004c8b565b51518310156201724457600080855b62029207575b5015620171bd5762029200849362004c7b565b92620291c1565b829593919495518110156202926257620292278662007497845162004c8b565b5162029234828562004ce2565b51146202925557906202924984939262004c7b565b909395949192620291e7565b50918094935038620291ed565b9493909294620291ed565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620293ac5760208201516026811015620029ab57600e036200661f57620292fc83926202b43c565b6000925b6202930b5750505090565b62029317825162004c8b565b51518310156201724457600080855b62029346575b5015620171bd576202933f849362004c7b565b9262029300565b82959391949551811015620293a157620293668662007497845162004c8b565b5162029373828562004ce2565b51146202939457906202938884939262004c7b565b90939594919262029326565b509180949350386202932c565b94939092946202932c565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202952f57600262029426825162004c8b565b515103620294d55760208201516026811015620029ab57600d036200661f576202945183926202b43c565b906000925b620294645750505050600090565b8151831015620175c757826202947c85948462004ce2565b516202948d62006865845162004c8b565b51111580620294ae575b6200516057620294a79062004c7b565b9262029456565b50620294bb818462004ce2565b51620294cc62016e27845162004c8b565b51101562029497565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620296b2576002620295a9825162004c8b565b515103620296585760208201516026811015620029ab57600d036200661f57620295d483926202b43c565b906000925b620295e75750505050600090565b8151831015620175c75782620295ff85948462004ce2565b516202961062006865845162004c8b565b5111158062029631575b62005160576202962a9062004c7b565b92620295d9565b506202963e818462004ce2565b516202964f62016e27845162004c8b565b5110156202961a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620298335760026202972c825162004c8b565b515103620297d95760208201516026811015620029ab57600d036200661f576202975783926202b43c565b60009182945b6202976a57505050905090565b81518510156201708c5762029780858362004ce2565b516202979162006865835162004c8b565b51118015620297b3575b6201708457620297ac849562004c7b565b946202975d565b50620297c0858362004ce2565b51620297d162016e27835162004c8b565b51106202979b565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b90602001906001918281515103620299b4576002620298ad825162004c8b565b5151036202995a5760208201516026811015620029ab57600d036200661f57620298d883926202b43c565b60009182945b620298eb57505050905090565b81518510156201708c5762029901858362004ce2565b516202991262006865835162004c8b565b5111801562029934575b62017084576202992d849562004c7b565b94620298de565b5062029941858362004ce2565b516202995262016e27835162004c8b565b51106202991c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029b3757600262029a2e825162004c8b565b51510362029add5760208201516026811015620029ab57600e036200661f5762029a5983926202b43c565b906000925b62029a6c5750505050600090565b8151831015620175c7578262029a8485948462004ce2565b5162029a9562006865845162004c8b565b5111158062029ab6575b620051605762029aaf9062004c7b565b9262029a5e565b5062029ac3818462004ce2565b5162029ad462016e27845162004c8b565b51101562029a9f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029cba57600262029bb1825162004c8b565b51510362029c605760208201516026811015620029ab57600e036200661f5762029bdc83926202b43c565b906000925b62029bef5750505050600090565b8151831015620175c7578262029c0785948462004ce2565b5162029c1862006865845162004c8b565b5111158062029c39575b620051605762029c329062004c7b565b9262029be1565b5062029c46818462004ce2565b5162029c5762016e27845162004c8b565b51101562029c22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029e3b57600262029d34825162004c8b565b51510362029de15760208201516026811015620029ab57600e036200661f5762029d5f83926202b43c565b60009182945b62029d7257505050905090565b81518510156201708c5762029d88858362004ce2565b5162029d9962006865835162004c8b565b5111801562029dbb575b620170845762029db4849562004c7b565b9462029d65565b5062029dc8858362004ce2565b5162029dd962016e27835162004c8b565b511062029da3565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200190600191828151510362029fbc57600262029eb5825162004c8b565b51510362029f625760208201516026811015620029ab57600e036200661f5762029ee083926202b43c565b60009182945b62029ef357505050905090565b81518510156201708c5762029f09858362004ce2565b5162029f1a62006865835162004c8b565b5111801562029f3c575b620170845762029f35849562004c7b565b9462029ee6565b5062029f49858362004ce2565b5162029f5a62016e27835162004c8b565b511062029f24565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208082019081516026811015620029ab57600d1480156202a108575b6202a0ba575080516026811015620029ab57600f149081156202a0a3575b506202a05d5750600090565b6000805b606060408401510151805182101562017ac0576202a0828260e09262004ce2565b5101511562022e6d5760406202a09a60609262004c7b565b9150506202a061565b9050516026811015620029ab57600c14386202a051565b60009150815b816040850151015180518210156202a0fe576202a0e08260019262004ce2565b5115150362017ab9576202a0f660409162004c7b565b90506202a0c0565b5050505050600190565b5081516026811015620029ab57600e146202a033565b60208082019081516026811015620029ab57600d1480156202a20a575b6202a1c6575080516026811015620029ab57600f149081156202a1af575b506202a1655750600090565b6000805b606060408401510151805182101562017ac05760e06202a18c8360019362004ce2565b51015115151462022e6d5760406202a1a660609262004c7b565b9150506202a169565b9050516026811015620029ab57600c14386202a159565b60009150815b816040850151015180518210156202a0fe576202a1ec8260019262004ce2565b5115151462017ab9576202a20260409162004c7b565b90506202a1cc565b5081516026811015620029ab57600e146202a13b565b60208082019081516026811015620029ab57600d1480156202a31f575b6202a2d1575080516026811015620029ab57600f149081156202a2ba575b506202a2675750600090565b60005b60606040830151015180518210156200661f57819060e06202a290600193849362004ce2565b5101511515146202a2b4575060406202a2ab60609262004c7b565b9150506202a26a565b91505090565b9050516026811015620029ab57600c14386202a25b565b905060005b81604084015101518051821015620171bd5781906202a2f9600192839262004ce2565b511515146202a31857506202a31060409162004c7b565b90506202a2d6565b9250505090565b5081516026811015620029ab57600e146202a23d565b60208082019081516026811015620029ab57600d1480156202a426575b6202a3df575080516026811015620029ab57600f149081156202a3c8575b506202a37c5750600090565b60005b60606040830151015180518210156200661f576202a3a08260e09262004ce2565b510151156202a3c15760406202a3b860609262004c7b565b9150506202a37f565b5050600190565b9050516026811015620029ab57600c14386202a370565b905060005b81604084015101518051821015620171bd5781906202a407600192839262004ce2565b511515036202a31857506202a41e60409162004c7b565b90506202a3e4565b5081516026811015620029ab57600e146202a352565b60208092019160019283815151036202a55d576202a45c84915162004c8b565b5151036202a5045780820180516026811015620029ab57600f141590816202a4ec575b506200661f57600091835b6202a4985750505050600090565b60408101926060845101519384518210156201e977576202a4d36200686560a0866202a4c6868b9a62004ce2565b5101519351015162004c8b565b511462005160576202a4e59062004c7b565b926202a48a565b9050516026811015620029ab57600c1415386202a47f565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a6bf5781830180516026811015620029ab57600f141590816202a6a7575b50620171bd5783926000945b6202a600575050505050600090565b6040810160608082510151518710156202a69f57906000865b6202a635575b5050506202a62e849562004c7b565b946202a5f1565b6202a641855162004c8b565b51518110156202a69957856202a65c89858551015162004ce2565b5101516202a6708262007497885162004c8b565b51146202a68e57906202a68587939262004c7b565b9091926202a619565b505050505050905090565b6202a61f565b5050620173d1565b9050516026811015620029ab57600c1415386202a5e5565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208092019160019283815151036202a8845760026202a73a825162004c8b565b5151036202a82a5781830180516026811015620029ab57600f141590816202a812575b50620171bd57600092845b6202a777575050505050600090565b604081019360609485815101519586518310156202a80957828691826202a7a0838c9b62004ce2565b5101516202a7b362006865895162004c8b565b51111593846202a7d9575b50505050620178f8576202a7d29062004c7b565b936202a768565b6202a7e993945051015162004ce2565b5101516202a7fc62016e27855162004c8b565b511015848238806202a7be565b505050620173d1565b9050516026811015620029ab57600c1415386202a75d565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b602080920160019283825151036202aa0657836202a8fd835162004c8b565b5151036202a9a75780830180516026811015620029ab57600f141590816202a98f575b50620171bd57600092845b6202a93a575050505050600090565b6060604082015101519384518110156202a98857826202a95c82889762004ce2565b5101516202a96f62006865865162004c8b565b5110620178f8576202a9819062004c7b565b936202a92b565b50620173d1565b9050516026811015620029ab57600c1415386202a920565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b602080920160019283825151036202ab8057836202aa7e835162004c8b565b5151036202ab215780830180516026811015620029ab57600f141590816202ab09575b50620171bd57600092845b6202aabb575050505050600090565b6060604082015101519384518110156202a98857826202aadd82889762004ce2565b5101516202aaf062006865865162004c8b565b5111620178f8576202ab029062004c7b565b936202aaac565b9050516026811015620029ab57600c1415386202aaa1565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152fd5b906020019060019182815151036202aec957826202abf8825162004c8b565b5151036202ae69576020820180516026811015620029ab57600f141590816202ae51575b506200661f576000939291825b6202ac38575b50600093505050565b60408101946060808751015180518310156202ae48576202ac5e836202ac659262004ce2565b5162005616565b9060069182811015620029ab5715806202ae2f575b6202add5576202ac936202ac5e84838b51015162004ce2565b82811015620029ab578614806202ae15575b6202add5576202acbe6202ac5e84838b51015162004ce2565b82811015620029ab57600280911490816202adfa575b506202add5576202acee6202ac5e84838b51015162004ce2565b82811015620029ab57600380911490816202addf575b506202add5576202ad1e6202ac5e84838b51015162004ce2565b9782891015620029ab576004809914806202adbb575b6202adb057836202ad4d926202ac5e9251015162004ce2565b908110156202ad9b5784959650600580911490816202ad80575b5062005160576202ad789062004c7b565b94936202ac29565b90506202ad9262006865855162004c8b565b5114386202ad67565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b50886202adcd62006865885162004c8b565b51146202ad34565b5093955050505050565b90506202adf162006865875162004c8b565b5114386202ad04565b90506202ae0c62006865875162004c8b565b5114386202acd4565b50856202ae2762006865875162004c8b565b51146202aca5565b506202ae4062006865865162004c8b565b51156202ac7a565b5050506202ac2f565b9050516026811015620029ab57600c1415386202ac1c565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b906020019060019182815151036202b017576020820180516026811015620029ab57600f141590816202afff575b506200661f5782916000935b6202af6b5750505050600090565b6040810160608082510151518610156201e97757906000855b6202afa0575b5050506202af99839462004c7b565b936202af5d565b6202afac855162004c8b565b51518110156202aff957826202afc788828551015162004ce2565b5101516202afdb8262007497885162004c8b565b511462023c4a57906202aff086939262004c7b565b9091926202af84565b6202af8a565b9050516026811015620029ab57600c1415386202af51565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b60208101516026811015620029ab576013036200750a5760005b604080830151015180518210156200661f57819060c06202b0b0600193849362004ce2565b5101511515146202a2b457506202b0c79062004c7b565b6202b08b565b6020918201805151600094936001939091600019016202b2365760026202b0f5845162004c8b565b5151036202b1dc57818101516026811015620029ab576013036202b1d2576000959493929190835b6202b12c575b50505050909150565b604080820190808251015180518a10156202b1c9578491826202b1518c809462004ce2565b5101516202b16462006865895162004c8b565b51111593846202b199575b505050506202b18f576202b1868495969762004c7b565b9695946202b11d565b5050509150915090565b6202b1a993945051015162004ce2565b5101516202b1bc62016e27855162004c8b565b511015828838806202b16f565b5050506202b123565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b604482015260008051602062033e9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f324441525241592060448201526000805160206203415b8339815191526064820152608490fd5b9060200160019182825151036202b3e157826202b2ae835162004c8b565b5151036202b3835760208101516026811015620029ab576013036200661f5782916000935b6202b2e15750505050600090565b6040808301908082510151518610156201e97757906000855b6202b316575b5050506202b30f839462004c7b565b936202b2d3565b6202b32687848451015162004ce2565b5151518110156202b37d576202b34e816202b34689868651015162004ce2565b515162004ce2565b516202b35f62006865865162004c8b565b511462023c4a57906202b37486939262004c7b565b9091926202b2fa565b6202b300565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b60209081810180516026811015620029ab57600d149081156202b557575b506202b47c5750506040516202b4708162002ac7565b60008152600036813790565b6040019160a0916202b49e6202b496848651015162004c8b565b515162004dfe565b93600092835b6202b4b3868451015162004c8b565b51518110156202b510576202b4cd81858551015162004ce2565b516202b4eb575b6202b4e36202b4b39162004c7b565b90506202b4a4565b936202b4e36202b506828762001b036202b4b3958c62004ce2565b959150506202b4d4565b50935050506202b5208162004dfe565b9060005b8181106202b533575090925050565b806202b5446202b551928762004ce2565b5162001b03828662004ce2565b6202b524565b9050516026811015620029ab57600e14386202b45a565b9161025981146202b8ea5761025a81146202b7fa5761025b81146202b70a5761025c81146202b5f45761025d81146202b5e85761025e81146202b5dc5761025f81146202b5d057610260146202b5c5575050600090565b62003261916202bda8565b5062003261916202bc2e565b5062003261916202bb1d565b5062003261916202b9da565b50602001906001825151036202b6b05760026202b612835162004c8b565b5151036202b65657602001908151516202b63162006865835162004c8b565b51111591826202b64057505090565b62016e2e91925062016e27905151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b7a05760016202b728835162004c8b565b5151036202b7465762006865602062016f3292015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b8905760016202b818835162004c8b565b5151036202b8365762006865602062016d0492015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b50602001906001825151036202b9805760016202b908835162004c8b565b5151036202b9265762006865602062016c0392015151925162004c8b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919091602080930160019182825151036202bac357826202b9fc835162004c8b565b5151036202ba6957938293946000935b6202ba1b575050505050600090565b818101519384518110156202a988576202ba40620076f984620067ff848a9962004ce2565b6202ba5062006865865162004c8b565b5114620178f8576202ba629062004c7b565b936202ba0c565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202bbd4578293946000945b6202bb48575050505050600090565b8281018051518610156202a988576000855b6202bb75575b50506202bb6e849562004c7b565b946202bb39565b6202bb81845162004c8b565b51518110156202bbce576202bba1620076f986620067ff8a865162004ce2565b6202bbb28262007497875162004c8b565b511462023c4a57906202bbc6869262004c7b565b90916202bb5a565b6202bb60565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b91909160208093019060019182815151036202bd4e57846202bc51825162004c8b565b5151920191825151036202bcd35782939460009283955b6202bc77575b50505050905090565b805180518710156202bccc57620076f983620067ff896202bc989462004ce2565b6202bca98762007497865162004c8b565b51036202bcc3576202bcbc859662004c7b565b956202bc68565b50505091505090565b506202bc6e565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b919060208091019060019182815151036202be78578293946000935b6202bdd0575050505090565b8281018051518510156202be7157856000918183905b6202be08575b50505015620173d1576202be01859462004c7b565b936202bdc4565b6202be14865162004c8b565b51518110156202be6b576202be34620076f988620067ff8b865162004ce2565b6202be458262007497895162004c8b565b51146202be5e576202be579062004c7b565b826202bde6565b505090508538806202bdec565b6202bdec565b5062005160565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b916101cd81146202bf24576101ce81146202bf18576101cf81146202bf0c576101d0146202bf01575050600090565b62003261916202c532565b5062003261916202c310565b5062003261916202c11d565b5062003261919060200160019182825151036202c0c35760026202bf49835162004c8b565b5151036202c069576202bf5c816202c725565b156200661f576202bf6d906202c782565b9180939150518251036202bffe57600092845b6202bf8f575050505050600090565b80518410156201790057836202bfa786958362004ce2565b516202bfb862006865855162004c8b565b5114806202bfd8575b620178f8576202bfd19062004c7b565b936202bf80565b506202bfe5818562004ce2565b516202bff662016e27855162004c8b565b51106202bfc1565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c2b65760026202c13c835162004c8b565b5151036202c25c576202c14f816202c725565b156200661f576202c160906202c782565b9180939150518251036202c1f157600092845b6202c182575050505050600090565b80518410156201790057836202c19a86958362004ce2565b516202c1ab62006865855162004c8b565b5114806202c1cb575b620178f8576202c1c49062004c7b565b936202c173565b506202c1d8818562004ce2565b516202c1e962016e27855162004c8b565b51116202c1b4565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c4d85760036202c32f835162004c8b565b5151036202c47e576202c342816202c725565b156200661f576202c353906202c782565b9180939150518251036202c41357600092845b6202c375575050505050600090565b80518410156201790057836202c38d86958362004ce2565b516202c39e62006865855162004c8b565b5114806202c3ec575b806202c3c5575b620178f8576202c3be9062004c7b565b936202c366565b506202c3d2818562004ce2565b516202c3e36201d8a1855162004c8b565b5110156202c3ae565b506202c3f9818562004ce2565b516202c40a62016e27855162004c8b565b5111156202c3a7565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b9060200160019182825151036202c6cb5760026202c551835162004c8b565b5151036202c671576202c564816202c725565b156200661f576202c575906202c782565b9180939150518251036202c60657600092845b6202c597575050505050600090565b80518410156201790057836202c5af86958362004ce2565b516202c5c062006865855162004c8b565b5114806202c5e0575b620178f8576202c5d99062004c7b565b936202c588565b506202c5ed818562004ce2565b516202c5fe62016e27855162004c8b565b51146202c5c9565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c69737420604482015260008051602062033f7b8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b60200180516026811015620029ab576014149081156202c76a575b81156202c753575b506202409957600090565b9050516026811015620029ab57601e14386202c748565b809150516026811015620029ab57601514906202c740565b6202c78d816202c725565b156202c893576020810180516026811015620029ab576014146202c87e5780516026811015620029ab576015146202c84757516026811015620029ab57601e146202c81557506040516202c7e18162002ac7565b60008152604051916202c7f48362002ac7565b60008352604051916202c8078362002ac7565b600083526000368137929190565b604001906202c82960a08351015162004c8b565b51906202c84060a06200749e818651015162004caf565b5191929190565b50604001906202c85c60a08351015162004c8b565b51906202c84060a06202c873818651015162004cc0565b519451015162004cd1565b50604001906202c82960a08351015162004c8b565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202c9df576101b081146202c9d3576101b181146202c9c7576101b281146202c9bb576101b381146202c9af576101b481146202c9a3576101b581146202c997576101b6146202c98c575050600090565b62003261916202d428565b5062003261916202d283565b5062003261916202d11e565b5062003261916202cfb9565b5062003261916202ce54565b5062003261916202ccaf565b5062003261916202cb4a565b506200326191906020019060019182815151036202caf057826202ca04825162004c8b565b5151036202ca965760208201516026811015620029ab576011036200661f57600091835b6202ca365750505050600090565b604081019260a0936202ca4d858251015162004c8b565b51518210156201e97757816200749787966202ca6c9351015162004c8b565b516202ca7d62006865855162004c8b565b511062005160576202ca8f9062004c7b565b926202ca28565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cc5557826202cb69825162004c8b565b5151036202cbfb5760208201516026811015620029ab576011036200661f57600091835b6202cb9b5750505050600090565b604081019260a0936202cbb2858251015162004c8b565b51518210156201e97757816200749787966202cbd19351015162004c8b565b516202cbe262006865855162004c8b565b511162005160576202cbf49062004c7b565b926202cb8d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cdfa5760026202cccf825162004c8b565b5151036202cda05760208201516026811015620029ab576011036200661f57600091835b6202cd015750505050600090565b604081019260a0936202cd18858251015162004c8b565b51518210156201e9775781856202cd3982620074978a998651015162004c8b565b516202cd4a62006865885162004c8b565b51111592836202cd6f575b50505062005160576202cd689062004c7b565b926202ccf3565b5101516202cd839250620074979062004c8b565b516202cd9462016e27855162004c8b565b5110158138806202cd55565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202cf5f57826202ce73825162004c8b565b5151036202cf055760208201516026811015620029ab576011036200661f57600091835b6202cea55750505050600090565b604081019260a0936202cebc858251015162004c8b565b51518210156201e97757816200749787966202cedb9351015162004c8b565b516202ceec62006865855162004c8b565b511462005160576202cefe9062004c7b565b926202ce97565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d0c457826202cfd8825162004c8b565b5151036202d06a5760208201516026811015620029ab576012036200661f57600091835b6202d00a5750505050600090565b604081019260a0936202d021858251015162004c8b565b51518210156201e97757816200749787966202d0409351015162004c8b565b516202d05162006865855162004c8b565b511062005160576202d0639062004c7b565b926202cffc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d22957826202d13d825162004c8b565b5151036202d1cf5760208201516026811015620029ab576012036200661f57600091835b6202d16f5750505050600090565b604081019260a0936202d186858251015162004c8b565b51518210156201e97757816200749787966202d1a59351015162004c8b565b516202d1b662006865855162004c8b565b511162005160576202d1c89062004c7b565b926202d161565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d3ce5760026202d2a3825162004c8b565b5151036202d3745760208201516026811015620029ab576012036200661f57600091835b6202d2d55750505050600090565b604081019260a0936202d2ec858251015162004c8b565b51518210156201e9775781856202d30d82620074978a998651015162004c8b565b516202d31e62006865885162004c8b565b51111592836202d343575b50505062005160576202d33c9062004c7b565b926202d2c7565b5101516202d3579250620074979062004c8b565b516202d36862016e27855162004c8b565b5110158138806202d329565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b306044820152600080516020620340fb8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b906020019060019182815151036202d53357826202d447825162004c8b565b5151036202d4d95760208201516026811015620029ab576012036200661f57600091835b6202d4795750505050600090565b604081019260a0936202d490858251015162004c8b565b51518210156201e97757816200749787966202d4af9351015162004c8b565b516202d4c062006865855162004c8b565b511462005160576202d4d29062004c7b565b926202d46b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b30604482015260008051602062033f9b8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c604482015260008051602062033ffb8339815191526064820152608490fd5b156202d59557565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202d5e48162002f45565b6202d5f26200e20262033a39565b6202d5fd8162002f45565b600181036202d61b57506202d6156200e22e62033a39565b611faf55565b6202d6268162002f45565b600281036202d6365750611fb055565b6202d6418162002f45565b600381036202d6515750611fb155565b806202d65f60049262002f45565b146202d6685750565b611fb255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b825181101562010d665760e06202d731828562004ce2565b510151156202dae8576202d74a6202ac5e828562004ce2565b600680821015620029ab5760049182036202d895575060209060016003836202d774868962004ce2565b51015106036202d7915750506202d78b9062004c7b565b6202d719565b62004c7782846202d87a60636202d7c26202d7bb856202d7b2868e62004ce2565b51015162005091565b9362005091565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202d7fe62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d82782518093601396878501910162002d89565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002b1c565b5193849362461bcd60e51b8552840152602483019062002dae565b6202d8a56202ac5e848762004ce2565b818110156201e52d576001036202d9b5575060209060026003836202d8cb868962004ce2565b51015106036202d8e25750506202d78b9062004c7b565b62004c7782846202d87a605d6202d9036202d7bb856202d7b2868e62004ce2565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202d93f62004d4c8388016202d6dd565b0160008051602062033fdb83398151915281526202d96882518093601396878501910162002d89565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002b1c565b6202d9c56202ac5e848762004ce2565b908110156201588c576002036202dacc576020906003826202d9e8858862004ce2565b510151066202d9fe5750506202d78b9062004c7b565b62004c7782846202d87a6202da246202da1d846202d7b2858d62004ce2565b9262005091565b916202dabd60409384519586936202da4262004d4c8387016202d6dd565b0160008051602062033fdb83398151915281528151906202da6c826013948d868501910162002d89565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002b1c565b60405162461bcd60e51b815290819062004c779082016202d66e565b6202daf86202ac5e828562004ce2565b60069081811015620029ab576005036202dc135750602060016003826202db20858862004ce2565b51015106036202db3657506202d78b9062004c7b565b62004c77826202dbf660526202db576202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202db9262004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dbbc826013958c878501910162002d89565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002b1c565b5192839262461bcd60e51b84526004840152602483019062002dae565b6202dc236202ac5e838662004ce2565b9080821015620029ab5760039182036202dd3257506002602091826202dc4a858862004ce2565b51015106036202dc6057506202d78b9062004c7b565b62004c77826202dbf6605c6202dc816202d7bb866202d7b281998c62004ce2565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202dcbc62004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528251906202dce6826013958c878501910162002d89565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002b1c565b6202dd426202ac5e848762004ce2565b90811015620029ab576002036202ddee57602090816202dd63848762004ce2565b510151066202dd7857506202d78b9062004c7b565b62004c77826202dbf66202dd976202da1d856202d7b281988b62004ce2565b916202dddf60409384519788936202ddb562004d4c8387016202d6a6565b0160008051602062033fdb83398151915281528151906202da6c826013948b868501910162002d89565b03601f19810186528562002b1c565b60405162461bcd60e51b81528062004c77600482016202d66e565b156202de1157565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202de9a57565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202def257565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c6564206973206e6f742060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608490fd5b156202df5357565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202dfb457565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202e00d57565b60405162461bcd60e51b815260206004820152602c60248201527f54686520706c7567696e20746f2062652064697361626c6564206973206e6f7460448201526b081a5b9a5d1a585b1a5e995960a21b6064820152608490fd5b156202e06f57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202e0d257565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202e13857565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202e19a57565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202e1f257565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202e25157565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202e2aa57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202e30360c08351015162004c8b565b51916202e32560a06202e31a818451015162004c8b565b519251015162004caf565b51936202e33a845183511462000f4e62033906565b6202e34d845186511462000f4e62033906565b60005b84518110156202e3aa576202e366818462004ce2565b51906103e882101562004c99576202e3a49160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e350565b5092919360005b83518110156202e4d5576202e3c7818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e40760406000205462007dae868962004ce2565b906202e414868a62004ce2565b51918783101562004c9957846202e44193878f5116600052811b01845260406000205562000f4e62033a0a565b6202e44d848862004ce2565b518581101562004c99578290846202e466878c62004ce2565b5116600052811b0181526202e4866040600020546200686c868962004ce2565b9190926202e495868a62004ce2565b519687101562004c99576202e4cf9662000f55956202e4b5888d62004ce2565b5116600052811b01905260406000205562000f4e62033a6f565b6202e3b1565b5050620119826202e4e691620336a2565b90604051936202e4f68562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202e51d8562004c8b565b526000935b81518510156202e840576202e538858362004ce2565b51946202e546845162004dfe565b916000936202e556825162004dfe565b610b00528496855b87518110156202e5ff576202e585610ae0516202e57c838b62004ce2565b51168b6203348a565b15806202e5c7575b6202e5a4575b6202e59e9062004c7b565b6202e55e565b956202e5be6202e59e91610ae0516200a4958a8c62004ce2565b9690506202e593565b506103e88a101562004c9957610ae0516202e5e3828a62004ce2565b511660005260038a811b0160205260406000205415156202e58d565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202e699578762004c9957610ae0516202e63d828c62004ce2565b51166000528b602052604060002054156202e664575b6202e65e9062004c7b565b6202e61d565b976202e6906202e65e918b6202e67f8c610ae0519262004ce2565b511662001b0382610b005162004ce2565b9890506202e653565b5094959193965098509690959680610b405262004c995760040180610b805254956202e6ca620080c0868962006258565b610b205260009788610b60525b610b405162004c9957610b6051888110156202e775576202e7066202e71c916000610b4052610b805162004efa565b610ae05191549060031b1c16610b005162033539565b156202e73b575b6202e731610b605162004c7b565b610b60526202e6d7565b976202e76e906202e753610b6051610b805162004efa565b610ae05191549060031b1c1662001b0382610b205162004ce2565b976202e723565b5095939096509690969391936000915b8383106202e80f5750505050610b405162004c9957610b2051516001600160401b03811162002a23576202e7bd81610b805162005036565b6020610b205101610b805160005260206000206000610ae051905b8481106202e7f85750505050506202e7f09062004c7b565b93926202e522565b60019060208386511695019481850155016202e7d8565b620082566202e83991610ae0516202e828868662004ce2565b511662001b0382610b205162004ce2565b916202e785565b5050509050565b60408101906202e85c60c08351015162004c8b565b51916202e87360a06202e31a818451015162004c8b565b51936202e888845183511462000f4e62033906565b6202e89b845186511462000f4e62033906565b60005b84518110156202e8f8576202e8b4818462004ce2565b51906103e882101562004c99576202e8f29160018060a01b03865116600052600390811b0160205262000f5560406000205462007d41838a62004ce2565b6202e89e565b5092919360005b83518110156202ea09576202e915818462004ce2565b51906103e8918281101562004c995760018060a01b03908189511660005260039081602091811b0181526202e95560406000205462007dae868962004ce2565b906202e962868a62004ce2565b51918783101562004c9957846202e98f93878f5116600052811b01845260406000205562000f4e62033a0a565b6202e99b848862004ce2565b518581101562004c99578290846202e9b4878c62004ce2565b5116600052811b0181526202e9d46040600020546200686c868962004ce2565b9190926202e9e3868a62004ce2565b519687101562004c99576202ea039662000f55956202e4b5888d62004ce2565b6202e8ff565b5050620119826202ea1a91620336a2565b90604051936202ea2a8562002b00565b60018552602036818701376001600160a01b03610ae08190529051166202ea518562004c8b565b526000935b81518510156202e840576202ea6c858362004ce2565b51946202ea7a845162004dfe565b916000936202ea8a825162004dfe565b610b00528496855b87518110156202eb2a576202eab0610ae0516202e57c838b62004ce2565b15806202eaf2575b6202eacf575b6202eac99062004c7b565b6202ea92565b956202eae96202eac991610ae0516200a4958a8c62004ce2565b9690506202eabe565b506103e88a101562004c9957610ae0516202eb0e828a62004ce2565b511660005260038a811b0160205260406000205415156202eab8565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202ebb3578762004c9957610ae0516202eb68828c62004ce2565b51166000528b602052604060002054156202eb8f575b6202eb899062004c7b565b6202eb48565b976202ebaa6202eb89918b6202e67f8c610ae0519262004ce2565b9890506202eb7e565b5094959193965098509690959680610b805262004c995760040180610b605254956202ebe4620080c0868962006258565b610b205260009788610b40525b610b805162004c9957610b4051888110156202ec5e576202e7066202ec20916000610b8052610b605162004efa565b156202ec3f575b6202ec35610b405162004c7b565b610b40526202ebf1565b976202ec57906202e753610b4051610b605162004efa565b976202ec27565b5095939096509690969391936000915b8383106202ecf85750505050610b805162004c9957610b2051516001600160401b03811162002a23576202eca681610b605162005036565b6020610b205101610b605160005260206000206000610ae051905b8481106202ece15750505050506202ecd99062004c7b565b93926202ea56565b60019060208386511695019481850155016202ecc1565b620082566202ed1191610ae0516202e828868662004ce2565b916202ec6e565b90604082016202ed3260a06202e31a818451015162004c8b565b51908051825103620089ef5760005b81518110156202ed9c576202ed57818362004ce2565b51906103e882101562004c9957611fbb6202ed969260018060a01b0388511660005260031b0160205262000f5560406000205462007d41838762004ce2565b6202ed41565b5092909260005b81518110156202ee3e576202edb9818362004ce2565b51906103e88083101562004c995760018060a01b039081865116600052611fbb60039481602091871b0181526202edfb60406000205462007dae878d62004ce2565b9290936202ee0a878a62004ce2565b519081101562004c99576202ee389762000f55968b51166000521b01905260406000205562000f4e62033a0a565b6202eda3565b506202ee4c919350620336a2565b604051926202ee5b8462002b00565b60018452602036818601376001600160a01b03610b808190529051166202ee828462004c8b565b52604051906202ee928262002ac7565b6000825260003681376000935b81518510156202e840576202eeb5858362004ce2565b51946202eec3845162004dfe565b916000936202eed3825162004dfe565b610b20528496855b87518110156202ef7e576202ef02610b80516202eef9838b62004ce2565b51168b620334e1565b15806202ef44575b6202ef21575b6202ef1b9062004c7b565b6202eedb565b956202ef3b6202ef1b91610b80516200a4958a8c62004ce2565b9690506202ef10565b506103e88a101562004c9957610b80516202ef60828a62004ce2565b5116600052611fbb8a60031b0160205260406000205415156202ef0a565b509793929096949195976000986103e88610159560031b98611fbb8a019a5b89518110156202f008578762004c9957610b80516202efbd828c62004ce2565b51166000528b602052604060002054156202efe4575b6202efde9062004c7b565b6202ef9d565b976202efff6202efde918b6202e8288c610b80519262004ce2565b9890506202efd3565b5094959193965098509690959680610b405262004c9957611fbc0180610b005254956202f03a620080c0868962006258565b610b605260009788610ae0525b610b405162004c9957610ae051888110156202f0e5576202f0766202f08c916000610b4052610b005162004efa565b610b805191549060031b1c16610b205162033539565b156202f0ab575b6202f0a1610ae05162004c7b565b610ae0526202f047565b976202f0de906202f0c3610ae051610b005162004efa565b610b805191549060031b1c1662001b0382610b605162004ce2565b976202f093565b5095939096509690969391936000915b8383106202f17f5750505050610b405162004c9957610b6051516001600160401b03811162002a23576202f12d81610b005162005036565b6020610b605101610b005160005260206000206000610b8051905b8481106202f1685750505050506202f1609062004c7b565b93926202ee9f565b60019060208386511695019481850155016202f148565b620082566202f1a991610b80516202f198868662004ce2565b511662001b0382610b605162004ce2565b916202f0f5565b9060408201916202f1cb60a0620077f3818651015162004c8b565b51928051845103620089ef5760005b81518110156202f234576202f1f0818362004ce2565b51906103e882101562004c99576202f22e9160018060a01b03855116600052600390811b0160205262000f5560406000205462007d41838962004ce2565b6202f1da565b5060005b81518110156202f2d2576202f24e818362004ce2565b51906103e8918281101562004c995760018060a01b03908186511660005260039081602091811b0181526202f28e60406000205462007dae868c62004ce2565b9190926202f29d868962004ce2565b519687101562004c99576202f2cc9662000f55958a5116600052811b01905260406000205562000f4e62033a0a565b6202f238565b506202f2e0919350620336a2565b604051926202f2ef8462002b00565b60018452602036818601376001600160a01b03610b208190529051166202f3168462004c8b565b52604051906202f3268262002ac7565b6000825260003681376000935b81518510156202e840576202f349858362004ce2565b51946202f357845162004dfe565b916000936202f367825162004dfe565b610b00528496855b87518110156202f407576202f38d610b20516202e57c838b62004ce2565b15806202f3cf575b6202f3ac575b6202f3a69062004c7b565b6202f36f565b956202f3c66202f3a691610b20516200a4958a8c62004ce2565b9690506202f39b565b506103e88a101562004c9957610b20516202f3eb828a62004ce2565b511660005260038a811b0160205260406000205415156202f395565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202f490578762004c9957610b20516202f445828c62004ce2565b51166000528b602052604060002054156202f46c575b6202f4669062004c7b565b6202f425565b976202f4876202f466918b6202e67f8c610b20519262004ce2565b9890506202f45b565b5094959193965098509690959680610b605262004c995760040180610ae05254956202f4c1620080c0868962006258565b610b805260009788610b40525b610b605162004c9957610b4051888110156202f56c576202f4fd6202f513916000610b6052610ae05162004efa565b610b205191549060031b1c16610b005162033539565b156202f532575b6202f528610b405162004c7b565b610b40526202f4ce565b976202f565906202f54a610b4051610ae05162004efa565b610b205191549060031b1c1662001b0382610b805162004ce2565b976202f51a565b5095939096509690969391936000915b8383106202f6065750505050610b605162004c9957610b8051516001600160401b03811162002a23576202f5b481610ae05162005036565b6020610b805101610ae05160005260206000206000610b2051905b8481106202f5ef5750505050506202f5e79062004c7b565b93926202f333565b60019060208386511695019481850155016202f5cf565b620082566202f63091610b20516202f61f868662004ce2565b511662001b0382610b805162004ce2565b916202f57c565b156202f63f57565b60405162461bcd60e51b815260206004820152601d60248201527f54686520726566756e6420616d6f756e74206973206f766572666c6f770000006044820152606490fd5b156202f68c57565b60405162461bcd60e51b815260206004820152602360248201527f54686520746f74616c20726566756e6420616d6f756e74206973206f766572666044820152626c6f7760e81b6064820152608490fd5b156202f6e557565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20776974686472617761626c6520616d6f756e74206973604482015268206f766572666c6f7760b81b6064820152608490fd5b611f44805482101562004c99576000526007602060002091020190600090565b815180519192916001600160401b03811162002a23576202f77e818562005036565b6020809201846000528260002060005b8381106202f7f5575050505060c08260069262002bc395940151600185015560408101516002850155606081015160038501556202f7d6608082015115156004860162005795565b6202f7e960a082015160058601620056c2565b01511515910162005795565b825182820155918401916001016202f78e565b611f448054600160401b81101562002a23576202f82b916001820190556202f73c565b91909162005cff5762002bc3916202f75c565b611fb4908154600160401b81101562002a23576001810180845581101562004c995762002bc392600052602060002001620056c2565b62006a286202f883916200754d565b613f78805480600052613f76908160205260ff60096040600020015460081c1662032a4a57613f73600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202f8e460406000206200369d565b90600080611f4a54905b81811062032a03575b505015620329e7575b60005b60208301519081518110156202f93b5762000f55620077196201170b620076f96020620067ff866202f9359862004ce2565b6202f903565b505060005b602083015180518210156202f98857620076f96020620067ff846202f9659462004ce2565b90606482101562004c99576202f982914290611f4b015562004c7b565b6202f940565b50506000905b602083015180518310156200b13957826202f9a99162004ce2565b5160208101516026811015620029ab57156200b0f65760208101516026811015620029ab576001036202fbba57604001906202f9ea60c08351015162004c8b565b51936202fa0160a0620077f3818651015162004c8b565b51916202fa1286518551146202e0ca565b6202fa2186518451146202e130565b60005b86518110156202fb48576202fa3a818662004ce2565b516103e881101562004c9957600160ff60076202fa609360031b0154161515146202e192565b6202fa6c818562004ce2565b516202fa79828762004ce2565b51906103e882101562004c99576202fa9b906006809360031b01549062006049565b6202faa7848962004ce2565b51926103e884101562004c99576202fac49360031b01556202e1ea565b6202fad0818562004ce2565b516202fadd828762004ce2565b51906103e882101562004c99576202fb06916003906001600160a01b03620118fd868d62004ce2565b91906202fb14828862004ce2565b51906103e882101562004c99576202fb429362000f55926003906001600160a01b0362011951878f62004ce2565b6202fa24565b5094915091620119826202fb5c91620336a2565b93604051926202fb6c8462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6202fb97938762004ce2565b6202fb78565b50945092602092506202fbb1915062004c7b565b9190506202f98e565b6020819492939401516026811015620029ab576002036202fd4e576040018051928351906202fbf262007a1a60a08097015162004c8b565b5193825186510362011c2a57825184510362011bd457825185510362011b7b5760005b86518110156202fd38576202fc2b818862004ce2565b516103e881101562004c995760ff60076202fc4d9260031b015416156202e2a2565b6202fc59818862004ce2565b516103e881101562004c995760031b600701805460ff191660011790556202fc82818562004ce2565b516202fc8f828962004ce2565b51906103e882101562004c995760056202fcad9260031b01620056c2565b6202fcb9818662004ce2565b516202fcc6828962004ce2565b516103e881101562004c995760031b600101556202fce5818762004ce2565b516202fcf2828962004ce2565b516103e881101562004c995760031b600201556202fd11818862004ce2565b51906103e882101562004c9957600060066202fd329360031b015562004c7b565b6202fc15565b509591509350602092506202fbb1915062004c7b565b929160208401516026811015620029ab5760030362030362576202fd7a60c06040860151015162004c8b565b5160a0916202fda36202fd94846040890151015162004c8b565b51936040880151015162004caf565b51936202fdb8835185511462000f4e62033906565b6202fdcb835186511462000f4e62033906565b60005b83518110156202fe27576202fde4818662004ce2565b51906103e882101562004c995760036202fe219260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b6202fdce565b509095919560005b87518110156202ff52576202fe45818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526202fe7d60406000205462007dae838962004ce2565b906202fe8a838862004ce2565b51916103e883101562004c995760036202fec19360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b6202fecd818662004ce2565b516103e881101562004c99576003906001600160a01b036202fef0848c62004ce2565b5116600052811b016020526202ff116040600020546200686c838962004ce2565b91906202ff1f828862004ce2565b51906103e882101562004c99576202ff4c93600362000f55938d62007e678760018060a01b039262004ce2565b6202fe2f565b50926202ff6a919294506200c6fd90969596620336a2565b92604051906202ff7a8262002b00565b6001825260203681840137516001600160a01b03166202ff9a8262004c8b565b526000945b80518610156203034e576202ffb5868262004ce2565b51610960526202ffc6855162004dfe565b966000946202ffd6845162004dfe565b610a005260009460005b8851811015620300a6578a89620300106001600160a01b0362030004858462004ce2565b5116610960516203348a565b158062030060575b62030031575b50506203002b9062004c7b565b6202ffe0565b98620300559162001b0382859c62007f8f6203002b9760018060a01b039262004ce2565b9790508a896203001e565b5050506103e861096051101562004c99576001600160a01b0362030085828b62004ce2565b5116600052600361096051811b016020528a89604060002054151562030018565b50909895979498969291939660005b885181101562030149576103e861096051101562004c99576001600160a01b03620300e1828b62004ce2565b5116600052600361096051811b016020526040600020541562030110575b6203010a9062004c7b565b620300b5565b996203010a9062030140906001600160a01b036203012f8e8d62004ce2565b511662001b0382610a005162004ce2565b9a9050620300ff565b50985096959291909396610960516103e8811015806109805262004c995760031b60040154986203017f620080c0898c62006258565b610a40526000610ac0526000610aa0525b6109805162004c9957610aa0518a8110156203025957620301c5620301e29160006109805260046109605160031b0162004efa565b9054610a005160039290921b1c6001600160a01b03169062033539565b1562030201575b620301f7610aa05162004c7b565b610aa05262030190565b6000610980526203021f610aa05160046109605160031b0162004efa565b60018060a01b0391549060031b1c1662030240610ac051610a405162004ce2565b526203024f610ac05162004c7b565b610ac052620301e9565b50979294959093985095909560005b82811062030302575050506109805162004c9957610a4051516001600160401b03811162002a2357620302a58160046109605160031b0162005036565b6020610a40510160046109605160031b01600052602060002060005b838110620302e45750505050620302d89062004c7b565b9492959091956202ff9f565b82516001600160a01b031681830155602090920191600101620302c1565b62030348906001600160a01b036203031b828562004ce2565b51166203032f610ac051610a405162004ce2565b526203033e610ac05162004c7b565b610ac05262004c7b565b62030268565b5050936202fbb19193506020925062004c7b565b909260208101516026811015620029ab576004036203059a5760400160c093620303946200cb23868451015162004c8b565b5190620303ab60a0620077f3818651015162004c8b565b5193620303c0875184511462000f4e62033906565b620303d3875185511462000f4e62033906565b620303e6875186511462000f4e62033906565b60005b87518110156203042e57620303ff818662004ce2565b51906103e882101562004c995762030428916003906001600160a01b0362011d90848d62004ce2565b620303e9565b509095919593929360005b835181101562030557576203044f818762004ce2565b516103e881101562004c99576003906001600160a01b0362030472848862004ce2565b5116600052811b016020526203049360406000205462007dae838862004ce2565b90620304a0838962004ce2565b51916103e883101562004c9957620304c9926003906001600160a01b0362011e52878b62004ce2565b620304d5818762004ce2565b516103e881101562004c99576003906001600160a01b03620304f8848c62004ce2565b5116600052811b01602052620305196040600020546200686c838862004ce2565b91905062030528818862004ce2565b51916103e883101562004c995762030551926003906001600160a01b0362011ef5858e62004ce2565b62030439565b5093620305719192969350620084d162007e9f91620336a2565b9260005b83518110156202fb9d578062000f55620079ba62030594938762004ce2565b62030575565b60208101516026811015620029ab57600503620305c4576020919262000f556202fbb1926202f1b0565b60208101516026811015620029ab576006036203075a57604001620305ee60c08251015162004c8b565b51936203060560a062008538818551015162004c8b565b519285518351036200d6e25785518451036200d6955760005b8651811015620306635762030634818562004ce2565b51906103e882101562004c99576203065d916003906001600160a01b036201255d848c62004ce2565b6203061e565b509060005b865181101562030704576203067e818562004ce2565b516103e881101562004c99576003906001600160a01b03620306a1848b62004ce2565b5116600052811b01602052620306c260406000205462007dae838862004ce2565b9190620306d0828762004ce2565b51906103e882101562004c9957620306fe9362000f55926003906001600160a01b0362011e52878f62004ce2565b62030668565b509491620307199193506201198290620336a2565b9160405194620307298662002ac7565b60008652600036813760005b83518110156202fb9d578062000f55620079ba62030754938762004ce2565b62030735565b60208101516026811015620029ab57600703620307e057604001926203078560c08551015162004c8b565b51916203079760a08651015162004c8b565b5194515191620307af845187511462000f4e62033906565b60005b84518110156202fb9d57620307da9062000f556001600160a01b0380620126fb848a62004ce2565b620307b2565b60208194939401516026811015620029ab576008036203084e5760c060406203080d920151015162004c8b565b519160005b83518110156203083c5762030836906001600160a01b0380620127e3838862004ce2565b62030812565b509260209192506202fbb19062004c7b565b60208101516026811015620029ab57600903620308a75760c0604062030878920151015162004c8b565b519160005b83518110156203083c57620308a1906001600160a01b038062012877838862004ce2565b6203087d565b60208101516026811015620029ab57600a036203092d5760400190620308d860a06200dacd60c08551015162004c8b565b5192620308ed835185511462000f4e62033906565b60005b83518110156203091a5762030914906001600160a01b038062012913838862004ce2565b620308f0565b50936202fbb19193506020925062004c7b565b6020819493929401516026811015620029ab57600b03620309b857604001926203095c60c08551015162004c8b565b519351519162030974855184511462000f4e62033906565b60005b8551811015620309a5576203099f9062000f556001600160a01b0380620129c6848b62004ce2565b62030977565b50935091602091506202fbb19062004c7b565b90919260208201516026811015620029ab57600c0362030aeb5760606040830151015192620309e7846202d715565b60005b84518110156203091a5760e062030a0a8260606040880151015162004ce2565b5101511562030a825762030a2b620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030a4e60059162005c89565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c89565b620309ea565b62030a9a620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030abd60059162005c49565b500161010061ff00198254161790555491828181011162001e4f576200924660059162030a7c940162005c49565b92919060208101516026811015620029ab57600d0362030b545760400192602062030b1b60a08651015162004c8b565b51945101519162030b3085518451146202de09565b60005b8551811015620309a5578062012ba762030b4e928662004ce2565b62030b33565b60208194929401516026811015620029ab57600e0362030bbd5760400190602062030b8460a08451015162004c8b565b51925101519362030b9983518651146202de09565b60005b8351811015620309a5578062012cbb62030bb7928862004ce2565b62030b9c565b9060208294939401516026811015620029ab57600f0362030cf1576060604083015101519262030bed846202d715565b60005b84518110156203091a5760e062030c108260606040880151015162004ce2565b5101511562030c885762030c31620091f28260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030c5460059162005c89565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c89565b62030bf0565b62030ca0620092708260606040880151015162004ce2565b611f42805460001992919083810190811162001e4f5762030cc360059162005c49565b500161010061ff00198254161790555491828181011162001e4f57620093be60059162030c82940162005c49565b9060208194939401516026811015620029ab5760100362030d6257604001519062030d2560a0608084015193015162004c8b565b519362030d3a835186511462000f4e62033906565b60005b8351811015620309a5578062000f55620096a562030d5c938762004ce2565b62030d3d565b60208194929401516026811015620029ab5760110362030f7b576040019062030d9660a06200dacd60c08551015162004c8b565b519362030da783518651146202d58d565b60005b835181101562030dd85762030dd29062000f556001600160a01b038062012f3e848962004ce2565b62030daa565b5093509062030de79062033586565b90611f46549362030dfe620080c084518762006258565b9060009260005b87811062030f60575060005b855181101562030eb8576000805b89811062030e69575b501562030e41575b62030e3b9062004c7b565b62030e11565b9362030e3b9062030e60906001600160a01b036200e3f8888a62004ce2565b94905062030e30565b62030e748162004e52565b90546001600160a01b0360039290921b1c81169062030e94858b62004ce2565b51161462030ead5762030ea79062004c7b565b62030e1f565b505060013862030e28565b50955093925062030ec98262004dfe565b8051906001600160401b03821162002a235760209062030ee98362004f93565b01611f46600052602060002060005b83811062030f42575050505060005b82811062030f1f575050506202fbb160209162004c7b565b62030f3c9062000f556001600160a01b0362001a37838662004ce2565b62030f07565b82516001600160a01b03168183015560209092019160010162030ef8565b936200e54462030f75916200e5268762004e52565b62030e05565b60208194929401516026811015620029ab576012036203119e576040019062030faf60a06200dacd60c08551015162004c8b565b519362030fc083518651146202d58d565b60005b835181101562030ff15762030feb9062000f556001600160a01b0380620131a0848962004ce2565b62030fc3565b5093509190620310019062033586565b611f4654620310108162004dfe565b906000926000915b808310620310c5575050506203102e8262004dfe565b8051906001600160401b03821162002a23576020906203104e8362004f93565b01611f46600052602060002060005b838110620310a7575050505060005b82811062031084575050506202fbb160209162004c7b565b620310a19062000f556001600160a01b0362001a37838662004ce2565b6203106c565b82516001600160a01b0316818301556020909201916001016203105d565b91956000959193959760005b85518110156203118f57620310e68962004e52565b90546001600160a01b0360039290921b1c81169062031106838962004ce2565b5116146203111f57620311199062004c7b565b620310d1565b509750956001959391955b806203115e575b156203114957620311429062004c7b565b9162031018565b936200e54462031142916200e5268762004e52565b506203116a8162004e52565b60018060a01b0391549060031b1c16600052611f456020526040600020541562031131565b5097969096959391956203112a565b60208101516026811015620029ab57601303620311f75760408091015101519260005b8451811015620311e6578062000f5562009c19620311e0938862004ce2565b620311c1565b509250906202fbb160209162004c7b565b60208101516026811015620029ab57601403620313a457604001906203122260c08351015162004c8b565b51936203123960a0620077f3818651015162004c8b565b51916203124a86518551146202e0ca565b6203125986518451146202e130565b60005b86518110156203134f5762031272818562004ce2565b516203127f828762004ce2565b51906103e882101562004c995760066203129f9260031b01549062006049565b90620312ac838862004ce2565b51916103e883101562004c99576006620312cb9360031b01556202e1ea565b620312d7818562004ce2565b51620312e4828762004ce2565b51906103e882101562004c99576203130d916003906001600160a01b03620118fd868d62004ce2565b91906203131b828862004ce2565b51906103e882101562004c9957620313499362000f55926003906001600160a01b0362011951878f62004ce2565b6203125c565b5094915091620119826203136391620336a2565b9360405192620313738462002ac7565b60008452600036813760005b83518110156202fb9d578062000f55620079ba6203139e938762004ce2565b6203137f565b929060208401516026811015620029ab5760150362031966576040840190620313d260c08351015162004c8b565b5190620313e960a0620077f3818651015162004c8b565b5193620313fe835185511462000f4e62033906565b62031411835186511462000f4e62033906565b60005b83518110156203146d576203142a818662004ce2565b51906103e882101562004c99576003620314679260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62031414565b509095919560005b875181101562031598576203148b818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b01602052620314c360406000205462007dae838962004ce2565b90620314d0838862004ce2565b51916103e883101562004c99576003620315079360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62031513818662004ce2565b516103e881101562004c99576003906001600160a01b0362031536848c62004ce2565b5116600052811b01602052620315576040600020546200686c838962004ce2565b919062031565828862004ce2565b51906103e882101562004c99576203159293600362000f55938d62007e678760018060a01b039262004ce2565b62031475565b5092620315b0919294506200c6fd90969596620336a2565b9260405190620315c08262002b00565b6001825260203681840137516001600160a01b0316620315e08262004c8b565b526000945b80518610156203034e57620315fb868262004ce2565b51610900526203160c855162004dfe565b966000946203161c845162004dfe565b610a205260009460005b8851811015620316ec578a89620316566001600160a01b036203164a858462004ce2565b5116610900516203348a565b1580620316a6575b62031677575b5050620316719062004c7b565b62031626565b986203169b9162001b0382859c62007f8f620316719760018060a01b039262004ce2565b9790508a8962031664565b5050506103e861090051101562004c99576001600160a01b03620316cb828b62004ce2565b5116600052600361090051811b016020528a8960406000205415156203165e565b50909895979498969291939660005b88518110156203177e576103e861090051101562004c99576001600160a01b0362031727828b62004ce2565b5116600052600361090051811b016020526040600020541562031756575b620317509062004c7b565b620316fb565b99620317509062031775906001600160a01b036201228f8e8d62004ce2565b9a905062031745565b50985096959291909396610900516103e8811015806109205262004c995760031b6004015498620317b4620080c0898c62006258565b6108c0526000610940526000610a60525b6109205162004c9957610a60518a811015620318715762012325620317fa9160006109205260046109005160031b0162004efa565b1562031819575b6203180f610a605162004c7b565b610a6052620317c5565b60006109205262031837610a605160046109005160031b0162004efa565b60018060a01b0391549060031b1c1662031858610940516108c05162004ce2565b52620318676109405162004c7b565b6109405262031801565b50979294959093985095909560005b8281106203191a575050506109205162004c99576108c051516001600160401b03811162002a2357620318bd8160046109005160031b0162005036565b60206108c0510160046109005160031b01600052602060002060005b838110620318fc5750505050620318f09062004c7b565b949295909195620315e5565b82516001600160a01b031681830155602090920191600101620318d9565b62031960906001600160a01b0362031933828562004ce2565b511662031947610940516108c05162004ce2565b52620319566109405162004c7b565b6109405262004c7b565b62031880565b909260208101516026811015620029ab57601603620319c45760c0604062031992920151015162004c8b565b519260005b8451811015620311e657620319be9062000f556001600160a01b0362009e60838962004ce2565b62031997565b60208101516026811015620029ab5760170362031a215760405162461bcd60e51b815260206004820152602960248201526000805160206203411b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab5760180362031a8b5760c0604062031a4b920151015162004c8b565b51611fb6805460ff191660011790559260005b8451811015620311e65762031a859062000f556001600160a01b0362009f2c838962004ce2565b62031a5e565b60208193929301516026811015620029ab5760190362031c005760008091604082910160a08082510151805162031bc7575b5050519060e08201519162031ae16200686560c060018060a01b0393015162004c8b565b511690602083519301915af13d1562031bbe573d9062031b018262002edc565b9162031b11604051938462002b1c565b82523d6000602084013e5b1562031b3057506202fbb160209162004c7b565b62004c779062031b9d604051916000805160206203401b833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b604084015282815162031b8c816059946020868601910162002d89565b810103603981018452018262002b1c565b60405162461bcd60e51b815260206004820152918291602483019062002dae565b60609062031b1c565b62031bd29062004c8b565b515162031be1575b8062031abd565b819250620068659062031bf79251015162004c8b565b51903862031bda565b60208101516026811015620029ab57601a0362031c825760a0604062031c2a920151015162004c8b565b5162031c3a60038251146202d58d565b62031c458162004c8b565b519162031c56620138088362004caf565b51916200f6a9576020926202fbb1926001036200a16d576200a14d906200a140611fb191825462006049565b60208101516026811015620029ab57601b036203206d5750919062031cb2611faf54620061966200a1e362033793565b505062031cbe62033857565b506000805b6103e8811062032021575b505062031cda62006172565b9062031ce9613f745462004dfe565b906000946000905b6103e882101562032015578160031b9260ff6007850154161562031dfd5760009660028501541562031de4576000975b62004c9957600485015488101562031de45762031ddd62031dd6899a62031d5062031d879b60048a0162004efa565b60018060a01b0391549060031b1c16806000526003890160205262031d7b8b60406000205462005f19565b9c9062000f4e62033857565b62031dca62031dae62031da260009e60028d01549062005f19565b919062000f4e62033857565b82600052611f476020526200a140604060002091825462006049565b62001b03828b62004ce2565b9962004c7b565b9762031d21565b9290935062031df591965062004c7b565b909462031cf1565b95969392509350505b62031e118262004dfe565b9160009160005b82811062031f7f57505050611f48549162031e38620080c0848462006258565b926000906000905b80821062031f6257505060005b83811062031ecc5750508251929150506001600160401b03821162002a235760209062031e7a8362004f58565b01611f48600052602060002060005b83811062031eae57505050506202fbb16020916000611fb1556000611fb25562004c7b565b82516001600160a01b03168183015560209092019160010162031e89565b6000805b83811062031f1a575b501562031ef2575b62031eec9062004c7b565b62031e4d565b9062031eec9062031f11906001600160a01b0362008248858762004ce2565b91905062031ee1565b6001600160a01b038062031f2f858862004ce2565b51169062031f3e838a62004ce2565b51161462031f575762031f519062004c7b565b62031ed0565b505060013862031ed9565b90916200825662031f789162009b6f8562004e36565b9062031e40565b6000805b85811062031fcd575b501562031fa5575b62031f9f9062004c7b565b62031e18565b9262031f9f9062031fc4906001600160a01b0362008248878662004ce2565b93905062031f94565b6001600160a01b038062031fe2858762004ce2565b51169062031ff1838a62004ce2565b5116146203200a57620320049062004c7b565b62031f83565b505060013862031f8c565b93505092939062031e06565b8060039594951b9060ff6007830154161562032063576200a622620074b962000f55946200a6166203205a9560026200a60c8762005deb565b93929362031cc3565b5093929362031cce565b60208101516026811015620029ab57601c03620320ca5760405162461bcd60e51b815260206004820152602960248201526000805160206203421b8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b60208101516026811015620029ab57601d03620320f0575b506202fbb160209162004c7b565b919060208301516026811015620029ab57601e03620322d157604083019060a09362032120858451015162004c8b565b515162032131868551015162004caf565b5151036200aeb05762032148858451015162004c8b565b515162032159868551015162004cc0565b5151036200ae34576203217462007a1a868551015162004c8b565b519362032181826202f1b0565b60009660005b8751811015620321ef57620321b26200acf0620321a5838962004ce2565b51620074a9848b62004ce2565b80620321cb575b50620321c59062004c7b565b62032187565b90620321e0620321e89a620321c59362006049565b9a906202f684565b90620321b9565b5096929450945091508062032211575b50506202fbb16020915b9150620320e2565b6203223d60018060a01b0391828451166000526200ad84611f4591826020526040600020549062006049565b82845116600052602052604060002055600080611f4654905b81811062032290575b505091602093916202fbb193156203227b575b505091620321ff565b620322889151166200662e565b388062032272565b836203229c8262004e52565b90549060031b1c168486511614620322bf57620322b99062004c7b565b62032256565b50600191508290506202fbb16203225f565b909160208101516026811015620029ab57601f036203230b57602091620323056200af6460406202fbb19401515162004c8b565b62032209565b60208101516026811015620029ab5760200362032331575b506202fbb160209162032209565b60208101516026811015620029ab57602180910362032352575b5062032323565b602082015160268110156200b0e1576022036203238e5750506202fbb1602091611fb660ff1981541690556203238762005023565b916203234b565b602082015160268110156200b0e157602303620323b5575b50506202fbb160209162032387565b602082015160268110156200b0e157602414620323a657602082015160268110156200b0e157602514620323a657602082959394920151906026821015620329d357506015036201069a5760408401906203241560c08351015162004c8b565b51906203242c60a0620077f3818651015162004c8b565b519362032441835185511462000f4e62033906565b62032454835186511462000f4e62033906565b60005b8351811015620324b0576203246d818662004ce2565b51906103e882101562004c99576003620324aa9260018060a01b038b5116600052811b0160205262000f5560406000205462007d41838a62004ce2565b62032457565b509095919560005b8751811015620325db57620324ce818662004ce2565b516103e881101562004c995760039060018060a01b03865116600052811b016020526203250660406000205462007dae838962004ce2565b9062032513838862004ce2565b51916103e883101562004c995760036203254a9360018060a01b03895116600052811b0160205260406000205562000f4e62033a0a565b62032556818662004ce2565b516103e881101562004c99576003906001600160a01b0362032579848c62004ce2565b5116600052811b016020526203259a6040600020546200686c838962004ce2565b9190620325a8828862004ce2565b51906103e882101562004c9957620325d593600362000f55938d62007e678760018060a01b039262004ce2565b620324b8565b5092620325f3919294506200c6fd90969596620336a2565b9260405190620326038262002b00565b6001825260203681840137516001600160a01b0316620326238262004c8b565b526000945b8051861015620329be576203263e868262004ce2565b51610a80526203264f855162004dfe565b966000946203265f845162004dfe565b6109e05260009460005b88518110156203272f578a89620326996001600160a01b036203268d858462004ce2565b5116610a80516203348a565b1580620326e9575b620326ba575b5050620326b49062004c7b565b62032669565b98620326de9162001b0382859c62007f8f620326b49760018060a01b039262004ce2565b9790508a89620326a7565b5050506103e8610a8051101562004c99576001600160a01b036203270e828b62004ce2565b51166000526003610a8051811b016020528a896040600020541515620326a1565b50909895979498969291939660005b8851811015620327d2576103e8610a8051101562004c99576001600160a01b036203276a828b62004ce2565b51166000526003610a8051811b016020526040600020541562032799575b620327939062004c7b565b6203273e565b996203279390620327c9906001600160a01b03620327b88e8d62004ce2565b511662001b03826109e05162004ce2565b9a905062032788565b50985096959291909396610a80516103e8811015806109a05262004c995760031b600401549862032808620080c0898c62006258565b6108e05260006108a05260006109c0525b6109a05162004c99576109c0518a811015620328e2576203284e6203286b9160006109a0526004610a805160031b0162004efa565b90546109e05160039290921b1c6001600160a01b03169062033539565b156203288a575b620328806109c05162004c7b565b6109c05262032819565b60006109a052620328a86109c0516004610a805160031b0162004efa565b60018060a01b0391549060031b1c16620328c96108a0516108e05162004ce2565b52620328d86108a05162004c7b565b6108a05262032872565b50979294959093985095909560005b8281106203298b575050506109a05162004c99576108e051516001600160401b03811162002a23576203292e816004610a805160031b0162005036565b60206108e051016004610a805160031b01600052602060002060005b8381106203296d5750505050620329619062004c7b565b94929590919562032628565b82516001600160a01b0316818301556020909201916001016203294a565b620329b8906001600160a01b03620329a4828562004ce2565b5116620143046108a0516108e05162004ce2565b620328f1565b5050936202fbb19193506020925091620323a6565b634e487b7160e01b60005260045260246000fd5b8151620329fd906001600160a01b031662006658565b6202f900565b62032a0e8162004ea6565b9054865160039290921b1c6001600160a01b0390811691161462032a3d5762032a379062004c7b565b6202f8ee565b505050600138806202f8f7565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062032ad1575050565b62002bc391600052601f6020600020910160051c81019062004f3f565b90600160401b811162002a2357815481835580821062032b0d57505050565b62002bc392600052601f6020600020918180850160051c840194168062032b3c575b500160051c019062004f3f565b600019908186019182549160200360031b1c1690553862032b2f565b9060ff809160031b9316831b921b19161790565b62032b8462032b7d6000936202f73c565b50620034fe565b92825b8451805182101562032c7a578162032b9f9162004ce2565b516103e881101562004c9957600390811b9460018060a01b0385166000526020918601825262032bdc604096600188600020549101549062005f19565b91901562032c45579062032bf09162006049565b95901562032c0b57505062032c059062004c7b565b62032b87565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b865162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b505092505090565b60005b613f78549081600052613f7691602092808452600393604092858460002001805486101562032de35762032cbe8662032cca9262004efa565b905490881b1c6202f73c565b509560ff6006809801541662032cf2575b505050505062032cec915062004c7b565b62032c85565b8160005283835262032d1a62032d0e8783886000200162004efa565b905490831b1c6202f73c565b509662032d3a876001809a01549285600052878752886000200162004efa565b905490831b1c918360005285855262032d5a886005896000200162004efa565b9054911b1c9060009260649283810293818504149015171562032dcf579062032d839162004f13565b1062032dc7575b62032d96578062032cdb565b6009945060005252600020019060ff19918183825416179055613f73918254161790556000613f71556000613f7255565b508562032d8a565b634e487b7160e01b84526011600452602484fd5b505050505050506000613f7854905b81600052613f76602052600380604060002001805483101562032e6857600662032e2f62032e238560ff9462004efa565b905490851b1c6202f73c565b500154161562032e635762032e448262033078565b90811015620029ab576201514d5762032e5d9062004c7b565b62032df2565b505050565b50505060ff1990613f73600383825416179055600052613f766020526009604060002001908154169055565b613f785490600090828252613f76916020928084526003906040908282852001549562032ec18762002be9565b9662032ed08451988962002b1c565b80885262032ee1601f199162002be9565b013682890137845b88865282825284848720015481101562032f32579062032f278262000f5562032f158897969562033078565b62032f21838d62004ce2565b62005277565b909192935062032ee9565b5050505090919350815b835181101562032fa95762032f52818562004ce2565b518281101562032f9557600180911462032f78575062032f729062004c7b565b62032f3c565b613f73805460ff191690911790555050613f71819055613f725550565b634e487b7160e01b84526021600452602484fd5b50909150613f728054421060001462032fd05750613f739060ff19825416179055613f7155565b9050613f73600160ff1982541617905581613f715555565b1562032ff057565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b156203303d57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b613f785490600091808352613f76806020528260408520600301906203309e9162004efa565b90549060031b1c620330b0816202f73c565b50600101549383865282602052806040872060040190620330d19162004efa565b90549060031b1c9284875280602052816040882060050190620330f49162004efa565b90549060031b1c9487526020526040862060060190620331149162004efa565b90549060031b1c9062033127906202f73c565b506006015460ff16620331735750620331639262005edc62022e5a9383620331536203315b9562005ee3565b969062033035565b929062033035565b11156203316d5790565b50600190565b6200f78d925062033163936203318d6203315b9362005ee3565b949062033035565b90929192620331a5825162004dfe565b600091620331b4815162004dfe565b8390845b86518110156203324f576001600160a01b03620331db816202e57c848b62004ce2565b15806203321a575b620331fb575b50620331f59062004c7b565b620331b8565b8196620332129162008248620331f5948b62004ce2565b9590620331e9565b506103e88a101562004c99578062033233838a62004ce2565b511660005260038a811b016020526040600020541515620331e3565b509295919694509260005b8751811015620332d0576103e886101562004c99576001600160a01b038062033284838b62004ce2565b5116600052600387811b0160205260406000205415620332b1575b50620332ab9062004c7b565b6203325a565b8195620332c8916200e3f8620332ab948c62004ce2565b94906203329f565b5092509450926103e8831015938462004c995760049586600395861b019687549462033301620080c0828862006258565b9460009689889a5b6203347557818b1015620333aa57506000998b620333446203332c838362004efa565b90546001600160a01b0392918e1b1c82168a62033539565b1562033367575b5050906203335c8b94939262004c7b565b9a9091929362033309565b91998c9594939290916203337d908c9062004efa565b9054908d1b1c1662033390828b62004ce2565b526203339c9062004c7b565b9890919293508b386203334b565b9697949a98505091975092506000915b8383106203345057505050506203343b578051926001600160401b038411620334265750620333ea838362005036565b602080910191600052806000209060005b8481106203340a575050505050565b83516001600160a01b03168382015592810192600101620333fb565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b6203346e9062008256906001600160a01b036200a495868662004ce2565b91620333ba565b603285634e487b7160e01b6000525260246000fd5b9060005b6103e883101562004c99576003600484821b018054831015620173d15782620334b79162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620334db9062004c7b565b6203348e565b9060005b6103e883101562004c99576003611fbc84821b018054831015620173d157826203350f9162004efa565b9054911b1c6001600160a01b03908116908316146200660c57620335339062004c7b565b620334e5565b9060005b82518110156200661f576001600160a01b03806203355c838662004ce2565b5116908316146200660c57620335729062004c7b565b6203353d565b801562001e4f576000190190565b9081519060005b60001983810184811162001e4f5782101562033654576001820180831162001e4f575b848110620335cb575050620335c59062004c7b565b6203358d565b6001600160a01b0380620335e0858962004ce2565b511681620335ef848a62004ce2565b5116146203360a575b50620336049062004c7b565b620335b0565b828692960182811162001e4f5762033604926203364d926203363162033646938b62004ce2565b51166203363f898b62004ce2565b5262033578565b9562033578565b90620335f8565b505090620336628162004dfe565b9060005b81811062033675575090925050565b6203369c906001600160a01b036203368e828862004ce2565b511662001b03828662004ce2565b62033666565b80519160005b60001984810185811162001e4f578210156203375a576001820180831162001e4f575b858110620336e6575050620336e09062004c7b565b620336a8565b620336f2838662004ce2565b51620336ff828762004ce2565b511462033718575b620337129062004c7b565b620336cb565b948181019080821162001e4f576203374b62033752916203373e62033712948962004ce2565b516203363f8a8a62004ce2565b9662033578565b905062033707565b50509091620337698162004dfe565b9060005b8181106203377c575090925050565b806202b5446203378d928762004ce2565b6203376d565b604051620337a18162002a07565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b6040516203380f8162002a8f565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620338658162002b00565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b6040516203389f8162002b00565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b604051620338ca8162002a8f565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620339148162002b00565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620339448162002b00565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620339778162002b00565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b604051620339ac8162002b00565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620339e58162002b00565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b60405162033a188162002b00565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b60405162033a478162002b00565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b60405162033a7d8162002b00565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b6026811015620029ab5780156200750a57600181146203316d576002811462033cd5576003811462033ccf576004811462033cc9576005811462033cc3576006811462033cbd576007811462033cb7576008811462033cb1576009811462033cab57600a811462033ca557600b811462033c9f57600c811462033c9957600d811462033c9357600e811462033c8d57600f811462033c87576010811462033c81576011811462033c7b576012811462033c75576013811462033c6f576014811462033c69576015811462033c63576016811462033c5d576017811462033c57576018811462033c51576019811462033c4b57601a811462033c4557601b811462033c3f57601c811462033c3957601d811462033c3357601e811462033c2d57601f811462033c27576020811462033c21576021811462033c1b576022811462033c15576023811462033c0f576024811462033c095760251462033c0457600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b9081518151036200662757600090815b835181101562017ac0576001600160f81b03198062033d0b83876200655e565b51169062033d1a83856200655e565b51160362017ab95762033d2d9062004c7b565b62033ceb565b6040519062033d428262002a8f565b60288252604036602084013760005b6014811062033d5f57505090565b60139080820391821162001e4f57600382901b916001600160fd1b0381160362001e4f5760ff80831162001e4f5760019262033da89084901b6001600160a01b03861662005070565b60f081168282160391821162001e4f5762033dcc9060f41b600f60f81b1662033e35565b82841b916001600160ff1b038416840362001e4f5762033e099160001a62033df584896200655e565b5360f81b6001600160f81b03191662033e35565b92810180911162001e4f5762033e2862033e2f9360001a91866200655e565b5362004c7b565b62033d51565b60f81c600a81101562033e5e5760300160ff811162001e4f5760f81b6001600160f81b03191690565b60570160ff811162001e4f5760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65305d206c656e677468206973206e6f742032000000000000000000000000000034dd862f2dd4c33543972cb453e26b9cc23a6eb518176c0de5db12d08007dc6d617665203120656c656d656e7400000000000000000000000000000000000000dd388e0eb473c306304080e96aea031c0fb4686a37f7b1a3c8a2301cd0627f0b7420686176652074776f20656c656d656e747300000000000000000000000000546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f742031000000000000000000000000000000742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f74202e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973748b3bb33683ac4daad017d30a0e9972b15e6854cd1f296e14295598f57ce03d506470626d4cb7d88e800a628455fe3f45216f254e8294f25d17ea4ac7e2f4f0a35d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d70546865206c656e677468206f6620746f6b656e436c617373417272617920616e6c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a2646970667358221220b685dcba65bc09a69896a133967a43e37ffb4ec0bce8c14fedd584da1a59c96064736f6c63430008130033", + "bytecode": "0x60808060405234620000195762033b4190816200001f8239f35b600080fdfe610bc08060405260043610156200001557600080fd5b600090813560e01c908163036ee850146200299d575080630fda3e1e146200290557806310ade3ea14620028d65780631797631d146200284f5780631c75255a14620027e957806323b65c7814620027625780632514a6b4146200253c5780632eeb063b146200236c5780633fb18aec146200230257806356424cf414620022235780635c00d98714620022005780635d0b184914620002055780635f1231ea14620021165780635f5d5f00146200208f578063681ece9d146200204a5780636c0d4fa41462001eb75780637daa10ce1462001e9a5780638129fc1c1462001ad757806383e4cccf146200186e578063864f9f7a146200183057806386ad77e214620014e25780638c7a63ae1462001451578063942d59fa146200126e5780639f36145f14620011e8578063a064c4f114620011bd578063acf80bc4146200117f578063aec266871462001095578063aefca42a1462001074578063c41f9482146200102c578063c591aa981462000fde578063cab847f714620002a4578063d5a172f21462000278578063d6a93c511462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e3620052e8565b50610c80620001f162002bb8565b620002006040518092620029ed565bf35b80fd5b503462000202578060031936011262000202576020613f7854604051908152f35b503462000202578060031936011262000202575b6103e8811062000250575b602090604051908152f35b60ff60078260031b0154161562000272576200026c9062004cdf565b6200023a565b62000245565b50346200020257806003193601126200020257613f70546040516001600160a01b039091168152602090f35b5060031960203682011262000ca5576001600160401b036004351162000ca557606090600435360301126200020257604051620002e18162002b06565b620002f1600435600401620029d8565b8152600435602401356101608190526001600160401b03811162000ca957600435013660238201121562000ca957600462000333910135806101805262002c61565b9062000343604051928362002b94565b610180518252602082016101c052610180516101605160043501906024369160051b8301011162000ca15760240160e052825b6101805160051b610160516004350190602460e0519183010181101562000ebd57356101e08190526001600160401b03811162000ca95760609101360360231901126200020257620003cf604051806101205262002b06565b620003e960246101e05161016051600435010101620029d8565b610120515260446101e0516101605160043501010135602681101562000ca55760206101205101526101e0516101605160043501016064810135806101005260018060401b03811162000ca957610100910136036023190112620002025762000459604051806101405262002b22565b610100516101e051610160516004350101016001600160401b0360248201351162000ca55762000493906024369181810135010162004925565b6101405152610100516101e05161016051600435010101916001600160401b0360448401351162000ca5573660436044850135850101121562000ca557620004e5602460448501358501013562002c61565b90620004f5604051928362002b94565b6024604485013585010135825260208201906044850135610100516101e05161016051600435010101013660446024818901358901013560051b8301011162000db457604401915b60446024818801358801013560051b81880135610100516101e051610160516004350101010101018310156200058857602080916200057c85620049b0565b8152019201916200053d565b50610140516020019290925250610100516101e051610160519395600435909401010192506001600160401b0360648401351162000ca1573660436064850135850101121562000ca157602460648401358401013590620005e98262002c61565b90620005f9604051928362002b94565b828252602082016064860135610100516101e05161016051600435010101013660448660051b8301011162000bb157604401905b6064870135610100516101e051610160516004350101010160448660051b8201018310156200074f576001600160401b038335116200074b5760e083358201360360431901126200074b5760405191620006878362002acd565b6001600160401b038435830160440135116200074757620006b436604486358501818101350101620049be565b835283358201606481013560208501526084810135604085015260a48101356060850152620006e69060c401620049b0565b60808401526001600160401b038435830160e40135116200074757602092839262000736906101049062000727368935830160e48101350160440162002f77565b60a085015287350101620049b0565b60c08201528152019101906200062d565b8980fd5b8880fd5b50505092935090506040610140510152610100516101e05161016051600435010101608481013560c05260018060401b0360848201351162000ca1573660436084830135830101121562000ca157608481013501602401356080819052620007ca90620007bc9062002c61565b604051806101a05262002b94565b6101a051608051905260206101a051019160805160051b60c051610100516101e051610160516004350101010190604436918301011162000db45760440160a052929091905b60805160051b60c051610100516101e0516101605160043501010101604460a0519282010182101562000cad576001600160401b0382351162000ca95760e082359091013603604319011262000ca557604051926200086f8462002acd565b6044823560c051610100516101e0516101605160043501010101010135600681101562000ca15784526064823560c051610100516101e05161016051600435010101010101356020850152813560c051610100516101e0516101605160043501010101019360018060401b0360848601351162000ca1573660636084870135870101121562000ca1576200090d604460848701358701013562002c61565b956200091d604051978862002b94565b6044608487013587010135875260208701906084870135853560c051610100516101e05161016051600435010101010101366064604460848b01358b01013560051b8301011162000c9d57606401915b60c051610100516101e051610160516004350101010186350160848901359081019089016044013560051b810160640184101562000bb5576001600160401b0384351162000bb15760c0843582013603606319011262000bb15760405190620009d68262002ab1565b8435810160648101358352600560849091013510156200074b578435810160848101356020840152600460a49091013510156200074b578435810160a4810135604084015260c481013560608401526001600160401b0360e490910135116200074b5762000a51368635830160e481013501606401620049be565b60808301526001600160401b03853582016101040135116200074b5760808535820161010481013501360360631901126200074b576040519062000a958262002a7f565b6001600160401b0386358201610104810135016064013511620007475762000ad136606461010489358501908101350181810135010162004925565b82526001600160401b0386358201610104810135016084013511620007475762000b0f36873583016101048101350160848101350160640162004a24565b60208301526001600160401b03863582016101048101350160a4013511620007475762000b5036873583016101048101350160a48101350160640162004aaf565b60408301526001600160401b03863582016101048101350160c4013511620007475760209384939092909162000b9b9036908935016101048101350160c48101350160640162002f77565b606082015260a08201528152019201916200096d565b8780fd5b50509550509091929594604082015260a4833560c051610100516101e05161016051600435010101010101356060820152823560c051610100516101e0516101605160043501010101019260018060401b0360c48501351162000c9d5761010462000c819162000c326020966044369160c4810135010162002f77565b608085015262000c5d60e4823560c051610100516101e05161016051600435010101010101620049b0565b60a08501523560c051610100516101e05161016051600435010101010101620049b0565b60c082015281520191602060a0510160a0529291909162000810565b8680fd5b8380fd5b5080fd5b8280fd5b50506101a0516101405160600152610100516101e0516101605194956004359095010101929091506001600160401b0360a48401351162000ca55736604360a4850135850101121562000ca55762000d0f602460a48501358501013562002c61565b9062000d1f604051928362002b94565b602460a4850135850101358252602082019060a4850135610100516101e0516101605160043501010101366044602460a48901358901013560051b8301011162000db457604401915b610100516101e0516101605160043501010160a48701359081019087016024013560051b0160440183101562000db85760058335101562000db457823581526020928301920162000d68565b8480fd5b509350509290926080610140510152610100516101e0516101605160043501010160018060401b0360c48201351162000ca15762000e01906024369160c4810135010162004a24565b6101405160a00152610100516101e051610160516004350101016001600160401b0360e48201351162000ca15762000e44906024369160e4810135010162004aaf565b60c0610140510152610100516101e051610160516004350101016101048101359060018060401b03821162000db457602462000e84923692010162002f77565b60e0610140510152610140516040610120510152610120516101c0515260206101c051016101c052602060e0510160e052909162000376565b60208401858152849084600435604401356001600160401b03811162000ca55762000ef090600436918135010162002f77565b604084015282516001600160a01b03919062000f4990831662000f4062000f2162000f1b33620335e4565b62004ba8565b62000f3962000f33878a5116620335e4565b62004c0e565b9062004c65565b90331462004cac565b8251805182101562000fb6579062000faa62000fb0928462000f6d84339362004d46565b5151161462000fa362000f8462000f1b33620335e4565b62000f3962000f338862000f9a888c5162004d46565b515116620335e4565b9062004cac565b62004cdf565b62000f49565b62000fda62000fc5866200677e565b60405191829160208352602083019062002e26565b0390f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b036200100d620029bc565b168152613f778452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c06200104f6004356200621c565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b503462000202578060031936011262000202576020613f7254604051908152f35b50346200020257806003193601126200020257613f7590815491620010ba8362002c61565b91620010ca604051938462002b94565b8383526020938484018093835285832083915b838310620011475750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620011185785850386f35b90919293828062001136600193603f198a8203018652885162002e26565b96019201960195929190926200110a565b600188819260409a99979a516200116c8162001164818962002cb6565b038262002b94565b81520192019201919096939596620010dd565b50346200020257602036600319011262000202576020906040906001600160a01b03620011ab620029bc565b168152611f4783522054604051908152f35b50346200020257602036600319011262000202576020620011e06004356200610a565b604051908152f35b5034620002025760203660031901126200020257604062001243916004358152613f76602052206200121a816200370e565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003273565b93602086015260408501526200125f606085018383166200350e565b60081c16151560808301520390f35b5034620002025760208060031936011262000ca557604051620012918162002ae9565b60405192620012a08462002b06565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e083015280610100809301526004358152613f768352604090209160405192620013018462002ae9565b6200130c816200370e565b84526200131c600382016200351c565b8483019081529262001331600483016200351c565b604086019081529562001347600584016200351c565b868201908152926200135c600682016200351c565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff8816620013989087620052db565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d01620013c99162003273565b9451601f198d8703810160408f015295620013e49162002fcf565b905191858d830301908d0152620013fb9162002fcf565b905190838b82030160808c0152620014139162002fcf565b9051918982030160a08a01526200142a9162002fcf565b955160c08801525160e08701525190850162001446916200350e565b511515908301520390f35b5034620002025760203660031901126200020257600435906103e8821015620014ce575060031b6001810154600282015491620014c46005620014a560068401549362001164604051809481930162002cb6565b6040519485948552602085015260806040850152608084019062002e26565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b50346200020257806003193601126200020257611f42805490620015068262002c61565b9162001516604051938462002b94565b808352602083019184526020842084925b828410620016e4578585611f43805490620015428262002c61565b9362001552604051958662002b94565b82855260208501918152602081209080925b8484106200159a576200158b8662000fda89604051938493604085526040850190620030b7565b908382036020850152620030b7565b604051620015a88162002acd565b620015b860ff85541682620035e5565b60018401546020820152600284018054620015d38162002c61565b91620015e3604051938462002b94565b81835285526020808620869184015b8383106200165d57505050506001928260209260406006950152600387015460608201526040516200162d81620011648160048c0162002cb6565b608082015260ff6005880154818116151560a084015260081c16151560c082015281520193019301929162001564565b600190602060405191620016718362002ab1565b84548352838501549260ff8416620016898162002fc4565b8382015260ff600894851c16620016a08162002a18565b604082015260028601546060820152620016bd600387016200351c565b6080820152620016d060048701620036ac565b60a0820152815201920192019190620015f2565b604051620016f28162002acd565b6200170260ff84541682620035e5565b6001808401546020830152600284019081546200171f8162002c61565b926200172f604051948562002b94565b8184528a526020808b208b9185015b838310620017aa5750505050506001928260209260406006950152600386015460608201526040516200177a81620011648160048b0162002cb6565b608082015260ff6005870154818116151560a084015260081c16151560c082015281520192019301929062001527565b8490602060405191620017bd8362002ab1565b84548352838501549260ff8416620017d58162002fc4565b8382015260ff600894851c16620017ec8162002a18565b60408201526002860154606082015262001809600387016200351c565b60808201526200181c60048701620036ac565b60a08201528152019201920191906200173e565b50346200020257602036600319011262000202576020906040906001600160a01b036200185c620029bc565b168152611f4583522054604051908152f35b5034620002025760208060031936011262000ca5578160043591620018b14784111562000fa36200189f86620050f5565b620018aa47620050f5565b9062004d8e565b3382526200191c611f45808352620018f5604085205486111562000fa3620018d988620050f5565b338852848752620018ee6040892054620050f5565b9062004dfa565b3384528083526200190b856040862054620050ba565b929062000fa3620018d988620050f5565b3384528252806040842055156200195e575b508080809381811562001954575b3390f115620019485780f35b604051903d90823e3d90fd5b506108fc6200193c565b9050611f46805491620019718362004e62565b918593865b81811062001a645750506200198b8462004e62565b805192906001600160401b03841162001a50579080849392620019b18a98979662004ff7565b0191865280862090865b84811062001a31575050505050825b828110620019da5750506200192e565b9192509062001a279062000faa6001600160a01b03620019fb838662004d46565b511662001a088362004eb6565b90919082549060031b9160018060a01b03809116831b921b1916179055565b90849291620019ca565b83516001600160a01b03168184015589975092810192600101620019bb565b634e487b7160e01b88526041600452602488fd5b62001a6f8162004eb6565b90546001600160a01b03916003913391831b1c83160362001a9e575b505062001a989062004cdf565b62001976565b9662001ace91839862001ab562001a989562004eb6565b9054911b1c1662001ac7828962004d46565b5262004cdf565b95903862001a8b565b50346200020257806003193601126200020257613f7080546001600160a01b03191633179055613f73805460ff19166001908117909155604051909190819062001b218162002b3f565b5290611f428054600082558062001e31575b508252818060405162001b468162002b3f565b5262001e1d57611f438054600082558062001d9e575b508252612710613f745562001d9062001b7462005bee565b836040519162001b848362002b3f565b81835262001c866040519162001b9a8362002b3f565b8383526040519462001bac8662002b3f565b8486526040519362001bbe8562002b3f565b8585526040519462001bd08662002b3f565b8686526040519162001be28362002a7f565b8252602097888301526040820152606094858201526040519162001c068362002ab1565b8683526003888401528660408401528686840152608083015260a082015262001c2f8262004cef565b5262001c3b8162004cef565b506040519062001c4b8262002acd565b6004825287868301526040820152838382015260405162001c6c8162002b3f565b84815260808201528660a08201528660c082015262005cfa565b62001c9062005bee565b60405162001c9e8162002b3f565b83815260405162001caf8162002b3f565b84815260405162001cc08162002b3f565b85815260405162001cd18162002b3f565b8681526040519162001ce38362002b3f565b8783526040519362001cf58562002a7f565b8452888401526040830152848201526040519162001d138362002ab1565b8583526003878401528560408401528585840152608083015260a082015262001d3c8262004cef565b5262001d488162004cef565b50856040519462001d598662002acd565b60058652850152604084015282015260405162001d768162002b3f565b84815260808201528260a08201528360c082015262005d46565b611388611faf55611fb05580f35b92506006838102938185040362001e075760009382855260208520908101905b81811062001dce57505062001b5c565b8086849255868682015562001de66002820162005504565b86600382015562001dfa6004820162005399565b8660058201550162001dbe565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001e075760009382855260208520908101905b81811062001e6157505062001b33565b8086849255868682015562001e796002820162005504565b86600382015562001e8d6004820162005399565b8660058201550162001e51565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001ed462002bb8565b6040519162001ee38362002b22565b611faf548352611fb0549060209182850152611fb1546040850152611fb254606085015260405180611fb390848254918281520191845284842090845b8181106200202c575050508162001f3991038262002b94565b6080850152611fb4805462001f4e8162002c61565b9162001f5e604051938462002b94565b818352835283832083908584015b83831062001ffe575050505060a085015260405180928391611fb591808354928381520192855280852094905b82821062001fda5750505062001fb29250038262002b94565b60c083015260ff611fb65416151560e083015262000fda611fb7546040519384938462002ead565b85546001600160a01b03168452600195860195879550938101939091019062001f99565b60018781926040999899516200201a8162001164818962002cb6565b81520192019201919095949562001f6c565b82546001600160a01b03168452928601926001928301920162001f20565b5034620002025760203660031901126200020257600435906103e8821015620014ce5762000fda6200208260048460031b0162002c03565b6040519182918262002a39565b50346200020257806003193601126200020257604051611f4180548083529083526020808301937f68ffef30f3d6829c9938575e8bc340aa2a3398e927d767947dd5024d1581d59292915b828210620020f55762000fda85620020828189038262002b94565b83546001600160a01b031686529485019460019384019390910190620020da565b5034620002025760209081600319360112620002025760409062002139620029bc565b8160608451620021498162002a7f565b82815286810183905285810182905201526001600160a01b03168152611f40835220604051906200217a8262002a7f565b620021f581549160ff83161515845260ff8585019360081c1615158352600260405191620021b983620021b1816001850162002cb6565b038462002b94565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002e26565b905160808301520390f35b50346200020257602036600319011262000202576020620011e060043562005e1c565b50346200020257806003193601126200020257611faf546200227c6200224862033044565b916200225a6127109384831062004cac565b62002272611fb254611fb054111562000fa3620330b2565b611fb15462005eb0565b90506200228862033108565b50825b6103e88110620022b0575b6020620022a685858504620061de565b9050604051908152f35b909260ff60078360031b01541615620022fa5781620022e4620022f092620022dd62000faa969562005e1c565b906200608f565b949062000fa362033108565b929091926200228b565b929062002296565b50346200020257604036600319011262000202576001600160401b0360043581811162000ca9576200233990369060040162002f77565b916024359182116200020257602062002362846200235b366004870162002f77565b9062006518565b6040519015158152f35b503462000202578060031936011262000202576040516200238d8162002b3f565b604051613f0383825b606482106200252557505050620023ad8162002b5b565b815260405191620023be8362002b22565b613f67548352613f68549060209182850152613f69546040850152613f6a54606085015260405180613f6b90848254918281520191845284842090845b8181106200250757505050816200241491038262002b94565b6080850152613f6c8054620024298162002c61565b9162002439604051938462002b94565b818352835283832083908584015b838310620024d9575050505060a085015260405180928391613f6d91808354928381520192855280852094905b828210620024b5575050506200248d9250038262002b94565b60c083015260ff613f6e5416151560e083015262000fda613f6f546040519384938462002ead565b85546001600160a01b03168452600195860195879550938101939091019062002474565b6001878192604099989951620024f58162001164818962002cb6565b81520192019201919095949562002447565b82546001600160a01b031684529286019260019283019201620023fb565b600160208192855481520193019101909162002396565b5034620002025760208060031936011262000ca5576004356200256b4782111562000fa36200189f84620050f5565b33835282808080611f4794858752620025b0604083205482111562000fa36200259484620050f5565b338652898b52620025a96040872054620050f5565b906200526f565b338252858752620025f0620025ca826040852054620050ba565b919062000fa3620025db85620050f5565b3387528a8c52620025a96040882054620050f5565b338352868852604083205581811562002758575b3390f1156200274d57338352815260408220541562002621575080f35b611f48805491620026328362004e62565b918493855b818110620026f35750506200264c8462004e62565b805192906001600160401b038411620026df5781906200266c8562004fbc565b0191865280862090865b848110620026c3575050505050825b828110620026935750505080f35b620026bd9062000faa6001600160a01b03620026b0838662004d46565b511662001a088362004e9a565b62002685565b83516001600160a01b0316838201559281019260010162002676565b634e487b7160e01b87526041600452602487fd5b620026fe8162004e9a565b90546001600160a01b03916003913391831b1c8316036200272d575b5050620027279062004cdf565b62002637565b966200274491839862001ab5620027279562004e9a565b9590386200271a565b6040513d84823e3d90fd5b506108fc62002604565b50346200020257806003193601126200020257604051611f4680548083529083526020808301937f721f0813146d89d6f0f0dbb1451dd10acd9dadea7c30d73459c3079bc665b9a892915b828210620027c85762000fda85620020828189038262002b94565b83546001600160a01b031686529485019460019384019390910190620027ad565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000ca9576103e88210156200283b579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b50346200020257806003193601126200020257604051611f4880548083529083526020808301937f54b856f7ae688db523226c6d190d6c3f1578f46968ba7de0cc9e487420dbf24c92915b828210620028b55762000fda85620020828189038262002b94565b83546001600160a01b0316865294850194600193840193909101906200289a565b50346200020257806003193601126200020257602060ff613f73541660405190620029018162002a18565b8152f35b5034620002025760209081600319360112620002025762002925620029bc565b6200292f620052e8565b506001600160a01b03168152611f498252604080822090519190620029548362002b3f565b60405193849192915b606483106200298757610c808587620029768162002b5b565b8152620002006040518092620029ed565b600182819286548152019401920191926200295d565b90503462000ca5578160031936011262000ca557602090613f71548152f35b600435906001600160a01b0382168203620029d357565b600080fd5b35906001600160a01b0382168203620029d357565b516000915b6064831062002a0057505050565b600190825181526020809101920192019190620029f2565b6004111562002a2357565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062002a61575050505090565b83516001600160a01b03168552938101939281019260010162002a52565b608081019081106001600160401b0382111762002a9b57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762002a9b57604052565b60e081019081106001600160401b0382111762002a9b57604052565b61012081019081106001600160401b0382111762002a9b57604052565b606081019081106001600160401b0382111762002a9b57604052565b61010081019081106001600160401b0382111762002a9b57604052565b602081019081106001600160401b0382111762002a9b57604052565b610c8081019081106001600160401b0382111762002a9b57604052565b604081019081106001600160401b0382111762002a9b57604052565b601f909101601f19168101906001600160401b0382119082101762002a9b57604052565b6040519062002bc78262002b3f565b60405182611f4b6000835b6064821062002bec5750505062002be98262002b5b565b52565b600160208192855481520193019101909162002bd2565b9060405191828154918282526020928383019160005283600020936000905b82821062002c3d5750505062002c3b9250038362002b94565b565b85546001600160a01b03168452600195860195889550938101939091019062002c22565b6001600160401b03811162002a9b5760051b60200190565b90600182811c9216801562002cab575b602083101462002c9557565b634e487b7160e01b600052602260045260246000fd5b91607f169162002c89565b906000929180549162002cc98362002c79565b91828252600193848116908160001462002d30575060011462002ced575b50505050565b90919394506000526020928360002092846000945b83861062002d1b57505050500101903880808062002ce7565b80548587018301529401938590820162002d02565b9294505050602093945060ff191683830152151560051b0101903880808062002ce7565b90815462002d628162002c61565b9260409362002d748551918262002b94565b828152809460208092019260005281600020906000935b85851062002d9b57505050505050565b6001848192845162002db38162001164818a62002cb6565b81520193019401939162002d8b565b90815180825260208080930193019160005b82811062002de3575050505090565b83516001600160a01b03168552938101939281019260010162002dd4565b60005b83811062002e155750506000910152565b818101518382015260200162002e04565b9060209162002e418151809281855285808601910162002e01565b601f01601f1916010190565b908082519081815260208091019281808460051b8301019501936000915b84831062002e7c5750505050505090565b909192939495848062002e9c600193601f198682030187528a5162002e26565b980193019301919493929062002e6b565b93929162002ebf85610ca093620029ed565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002f4b62002f146080840151610100610d408a0152610dc089019062002dc2565b62002f3460a085015191610cbf1992838b830301610d608c015262002e4d565b9060c08501519089830301610d808a015262002dc2565b9101511515610da0860152930152565b6001600160401b03811162002a9b57601f01601f191660200190565b81601f82011215620029d35780359062002f918262002f5b565b9262002fa1604051948562002b94565b82845260208383010111620029d357816000926020809301838601378301015290565b6005111562002a2357565b90815180825260208080930193019160005b82811062002ff0575050505090565b83518552938101939281019260010162002fe1565b90815180825260208092019182818360051b82019501936000915b848310620030315750505050505090565b90919293949584806200304d83856001950387528a5162002fcf565b980193019301919493929062003020565b90815180825260208092019182818360051b82019501936000915b8483106200308a5750505050505090565b9091929394958480620030a683856001950387528a5162002dc2565b980193019301919493929062003079565b90815180825260208092019081926005928183851b82019601946000915b848310620030e7575050505050505090565b90919293949596818103835287519060e0808201835190600682101562002a235783929189945283850151848401528a60409182870151938386015283518091528561010082818801941b87010194019260005b8281106200319a5750505050509282916200317060019560608085015190840152608080850151908483039085015262002e26565b9160a08082015115159083015260c0809101511515910152990193019301919594939290620030d5565b91939596806200325f600193959760ff198b82030189528951908151815283820151620031c78162002fc4565b8482015287820151620031da8162002a18565b888201526060908183015182820152816200324f6200323e6200322d6080620032108189015160c080848a015288019062002fcf565b9560a0809901519881880391015287519080875286019062002e4d565b888701518582038a87015262003005565b8b8601518482038d8601526200305e565b9301519181840391015262002e26565b970195019101918b9695949391926200313b565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620032d55750505050906040620032d29392015190604081840391015262002e26565b90565b858703607f19018352835180516001600160a01b031688526020810151949793949293919290602682101562002a2357604091602084015201519060606040820152620033318251610100606084015261016083019062002e4d565b602083810151838303605f190160808501528051808452928201929101906000905b808210620034f3575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b8281106200346e57505050506060840151838203605f190160c0850152620033b29250620030b7565b608083015190605f198382030160e0840152602080835192838152019201906000905b8082106200344a575050506200343d8360209360e0620034266200340e879660a060019a0151605f198683030161010087015262003005565b60c0850151848203605f19016101208601526200305e565b92015190610140605f198285030191015262002e26565b98019401929101620032ac565b9091926020806001928651620034608162002fc4565b8152019401920190620033d5565b90919293602080600192601f19868203018852885190620034d76200349c835160e080855284019062002fcf565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002e26565b60c0928301511515919092015297019695019392910162003389565b90919260208060019286511515815201940192019062003353565b90600382101562002a235752565b9060405191828154918282526020928383019160005283600020936000905b828210620035545750505062002c3b9250038362002b94565b8554845260019586019588955093810193909101906200353b565b906040516200357e8162002acd565b60c060ff6006839562003591816200351c565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152604051620035d68162001164816005860162002cb6565b60a08601520154161515910152565b600682101562002a235752565b908154620036008162002c61565b9262003610604051948562002b94565b818452600090815260208082208186015b84841062003630575050505050565b600183819262003640856200351c565b81520192019301929062003621565b9081546200365d8162002c61565b926200366d604051948562002b94565b818452600090815260208082208186015b8484106200368d575050505050565b60018381926200369d8562002c03565b8152019201930192906200367e565b9060036060604051620036bf8162002a7f565b6200370a8195620036d08162002d54565b8352620036e060018201620035f2565b6020840152620036f3600282016200364f565b6040840152620021b1604051809681930162002cb6565b0152565b906040516200371d8162002b06565b82546001600160a01b03168152600183018054919384929091620037418262002c61565b9162003751604051938462002b94565b80835260208301916000526020600020916000905b828210620037935750505050916200370a6040926002946020840152620021b18451809681930162002cb6565b604051620037a18162002b06565b84546001600160a01b038116825260a01c60ff16602681101562002a23576020820152604051620037d28162002b22565b620037e06001870162002d54565b815260028601604051808260208294549384815201906000526020600020926000905b80601f83011062004753576200393c9454918181106200473c575b81811062004722575b81811062004708575b818110620046ee575b818110620046d5575b818110620046bb575b818110620046a1575b81811062004687575b8181106200466d575b81811062004653575b81811062004639575b8181106200461f575b81811062004605575b818110620045eb575b818110620045d1575b818110620045b7575b8181106200459d575b81811062004583575b81811062004569575b8181106200454f575b81811062004535575b8181106200451b575b81811062004501575b818110620044e7575b818110620044cd575b818110620044b3575b81811062004499575b8181106200447f575b81811062004465575b8181106200444b575b81811062004431575b1062004420575b50038262002b94565b6020820152600386018054620039528162002c61565b9162003962604051938462002b94565b81835260208301906000526020600020906000905b838210620043ff57505050506040820152600486018054620039998162002c61565b91620039a9604051938462002b94565b81835260208301906000526020600020906000905b838210620042af57505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003fa65784600997946020979460019a979462003b3594549181811062003f88575b81811062003f67575b81811062003f46575b81811062003f25575b81811062003f05575b81811062003ee4575b81811062003ec3575b81811062003ea2575b81811062003e81575b81811062003e60575b81811062003e3f575b81811062003e1e575b81811062003dfd575b81811062003ddc575b81811062003dbb575b81811062003d9a575b81811062003d79575b81811062003d58575b81811062003d37575b81811062003d16575b81811062003cf5575b81811062003cd4575b81811062003cb3575b81811062003c92575b81811062003c71575b81811062003c50575b81811062003c2f575b81811062003c0e575b81811062003bed575b81811062003bcc575b81811062003bab575b1062003b905750038262002b94565b608082015262003b4860068a01620035f2565b60a082015262003b5b60078a016200364f565b60c082015260405162003b7781620011648160088e0162002cb6565b60e0820152604082015281520194019101909262003766565b90889160f81c62003ba18162002fc4565b8152013862003933565b928a8d9160ff8560f01c1662003bc18162002fc4565b815201930162003b26565b928a8d9160ff8560e81c1662003be28162002fc4565b815201930162003b1d565b928a8d9160ff8560e01c1662003c038162002fc4565b815201930162003b14565b928a8d9160ff8560d81c1662003c248162002fc4565b815201930162003b0b565b928a8d9160ff8560d01c1662003c458162002fc4565b815201930162003b02565b928a8d9160ff8560c81c1662003c668162002fc4565b815201930162003af9565b928a8d9160ff8560c01c1662003c878162002fc4565b815201930162003af0565b928a8d9160ff8560b81c1662003ca88162002fc4565b815201930162003ae7565b928a8d9160ff8560b01c1662003cc98162002fc4565b815201930162003ade565b928a8d9160ff8560a81c1662003cea8162002fc4565b815201930162003ad5565b928a8d9160ff8560a01c1662003d0b8162002fc4565b815201930162003acc565b928a8d9160ff8560981c1662003d2c8162002fc4565b815201930162003ac3565b928a8d9160ff8560901c1662003d4d8162002fc4565b815201930162003aba565b928a8d9160ff8560881c1662003d6e8162002fc4565b815201930162003ab1565b928a8d9160ff8560801c1662003d8f8162002fc4565b815201930162003aa8565b928a8d9160ff8560781c1662003db08162002fc4565b815201930162003a9f565b928a8d9160ff8560701c1662003dd18162002fc4565b815201930162003a96565b928a8d9160ff8560681c1662003df28162002fc4565b815201930162003a8d565b928a8d9160ff8560601c1662003e138162002fc4565b815201930162003a84565b928a8d9160ff8560581c1662003e348162002fc4565b815201930162003a7b565b928a8d9160ff8560501c1662003e558162002fc4565b815201930162003a72565b928a8d9160ff8560481c1662003e768162002fc4565b815201930162003a69565b928a8d9160ff8560401c1662003e978162002fc4565b815201930162003a60565b928a8d9160ff8560381c1662003eb88162002fc4565b815201930162003a57565b928a8d9160ff8560301c1662003ed98162002fc4565b815201930162003a4e565b928a8d9160ff8560281c1662003efa8162002fc4565b815201930162003a45565b928a8d9160ff85831c1662003f1a8162002fc4565b815201930162003a3c565b928a8d9160ff8560181c1662003f3b8162002fc4565b815201930162003a33565b928a8d9160ff8560101c1662003f5c8162002fc4565b815201930162003a2a565b928a8d9160ff8560081c1662003f7d8162002fc4565b815201930162003a21565b928a8d9160ff851662003f9b8162002fc4565b815201930162003a18565b926001610400602092865460ff811662003fc08162002fc4565b825260ff8160081c1662003fd48162002fc4565b8583015260ff8160101c1662003fea8162002fc4565b604083015260ff8160181c16620040018162002fc4565b606083015260ff81861c16620040178162002fc4565b608083015260ff8160281c166200402e8162002fc4565b60a083015260ff8160301c16620040458162002fc4565b60c08301526200405b60ff8260381c1662002fc4565b60ff8160381c1660e083015260ff8160401c16620040798162002fc4565b61010083015260ff8160481c16620040918162002fc4565b61012083015260ff8160501c16620040a98162002fc4565b61014083015260ff8160581c16620040c18162002fc4565b61016083015260ff8160601c16620040d98162002fc4565b61018083015260ff8160681c16620040f18162002fc4565b6101a083015260ff8160701c16620041098162002fc4565b6101c083015260ff8160781c16620041218162002fc4565b6101e083015260ff8160801c16620041398162002fc4565b61020083015260ff8160881c16620041518162002fc4565b61022083015260ff8160901c16620041698162002fc4565b61024083015260ff8160981c16620041818162002fc4565b61026083015260ff8160a01c16620041998162002fc4565b61028083015260ff8160a81c16620041b18162002fc4565b6102a083015260ff8160b01c16620041c98162002fc4565b6102c083015260ff8160b81c16620041e18162002fc4565b6102e083015260ff8160c01c16620041f98162002fc4565b61030083015260ff8160c81c16620042118162002fc4565b61032083015260ff8160d01c16620042298162002fc4565b61034083015260ff8160d81c16620042418162002fc4565b61036083015260ff8160e01c16620042598162002fc4565b61038083015260ff8160e81c16620042718162002fc4565b6103a083015260ff8160f01c16620042898162002fc4565b6103c083015260f81c6200429d8162002fc4565b6103e0820152019401920191620039ef565b604051620042bd8162002acd565b620042cd60ff85541682620035e5565b60018401546020820152600284018054620042e88162002c61565b91620042f8604051938462002b94565b81835260208301906000526020600020906000905b8382106200437857505050506001928260209260406006950152600387015460608201526040516200434881620011648160048c0162002cb6565b608082015260ff6005880154818116151560a084015260081c16151560c0820152815201930191019091620039be565b6001906020604051916200438c8362002ab1565b85548352838601549260ff8416620043a48162002fc4565b8382015260ff600894851c16620043bb8162002a18565b604082015260028701546060820152620043d8600388016200351c565b6080820152620043eb60048801620036ac565b60a08201528152019301910190916200430d565b6007602060019262004411866200356f565b81520193019101909162003977565b60f81c151581526020013862003933565b92602060019160ff8560f01c16151581520193016200392c565b92602060019160ff8560e81c161515815201930162003923565b92602060019160ff8560e01c16151581520193016200391a565b92602060019160ff8560d81c161515815201930162003911565b92602060019160ff8560d01c161515815201930162003908565b92602060019160ff8560c81c1615158152019301620038ff565b92602060019160ff8560c01c1615158152019301620038f6565b92602060019160ff8560b81c1615158152019301620038ed565b92602060019160ff8560b01c1615158152019301620038e4565b92602060019160ff8560a81c1615158152019301620038db565b92602060019160ff8560a01c1615158152019301620038d2565b92602060019160ff8560981c1615158152019301620038c9565b92602060019160ff8560901c1615158152019301620038c0565b92602060019160ff8560881c1615158152019301620038b7565b92602060019160ff8560801c1615158152019301620038ae565b92602060019160ff8560781c1615158152019301620038a5565b92602060019160ff8560701c16151581520193016200389c565b92602060019160ff8560681c161515815201930162003893565b92602060019160ff8560601c16151581520193016200388a565b92602060019160ff8560581c161515815201930162003881565b92602060019160ff8560501c161515815201930162003878565b92602060019160ff8560481c16151581520193016200386f565b92602060019160ff8560401c161515815201930162003866565b92602060019160ff8560381c16151581520193016200385d565b92602060019160ff8560301c161515815201930162003854565b92602060019160ff8560281c16151581520193016200384b565b92602060019160ff85831c161515815201930162003842565b92602060019160ff8560181c161515815201930162003839565b92602060019160ff8560101c161515815201930162003830565b92602060019160ff8560081c161515815201930162003827565b92602060019160ff8516151581520193016200381e565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003803565b9080601f83011215620029d357813590620049408262002c61565b9262004950604051948562002b94565b828452602092838086019160051b83010192808411620029d357848301915b848310620049805750505050505090565b82356001600160401b038111620029d3578691620049a48484809489010162002f77565b8152019201916200496f565b35908115158203620029d357565b81601f82011215620029d357803591620049d88362002c61565b92620049e8604051948562002b94565b808452602092838086019260051b820101928311620029d3578301905b82821062004a14575050505090565b8135815290830190830162004a05565b9080601f83011215620029d35781359062004a3f8262002c61565b9262004a4f604051948562002b94565b828452602092838086019160051b83010192808411620029d357848301915b84831062004a7f5750505050505090565b82356001600160401b038111620029d357869162004aa384848094890101620049be565b81520192019162004a6e565b9080601f83011215620029d35781359162004aca8362002c61565b9260409262004adc8451958662002b94565b8185526020938486019185600594851b86010194818611620029d357868101935b86851062004b1057505050505050505090565b84356001600160401b038111620029d357820183603f82011215620029d357888101359062004b3f8262002c61565b9162004b4e8751938462002b94565b808352868b8401918a1b83010191868311620029d35791878c94929593015b81811062004b8657505082935081520194019362004afd565b91938091939562004b9784620029d8565b8152019101918b9391949262004b6d565b9062002c3b604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004bfd815180926020868601910162002e01565b810103602581018552018362002b94565b9062002c3b6040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004c54815180926020868601910162002e01565b810103602081018552018362002b94565b602062002c3b91939293604051948162004c89879351809286808701910162002e01565b820162004c9f8251809386808501910162002e01565b0103808552018362002b94565b1562004cb55750565b60405162461bcd60e51b81526020600482015290819062004cdb90602483019062002e26565b0390fd5b600019811462001e075760010190565b80511562004cfd5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004cfd5760400190565b80516002101562004cfd5760600190565b80516003101562004cfd5760800190565b805182101562004cfd5760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002c3b916020949360405195869262004dbe62004db083860162004d5b565b918281519485920162002e01565b016e0161030b732103130b630b731b29d1608d1b815262004de9825180936020878501910162002e01565b010360101981018552018362002b94565b601962002c3b916020949360405195869262004e1c62004db083860162004d5b565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004e51825180936020878501910162002e01565b010360061981018552018362002b94565b9062004e6e8262002c61565b62004e7d604051918262002b94565b828152809262004e90601f199162002c61565b0190602036910137565b611f48805482101562004cfd5760005260206000200190600090565b611f46805482101562004cfd5760005260206000200190600090565b611f41805482101562004cfd5760005260206000200190600090565b613f02805482101562004cfd5760005260206000200190600090565b611f4a805482101562004cfd5760005260206000200190600090565b613efe805482101562004cfd5760005260206000200190600090565b613f00805482101562004cfd5760005260206000200190600090565b805482101562004cfd5760005260206000200190600090565b8181029291811591840414171562001e0757565b919082549060031b91821b91600019901b1916179055565b81811062004faf575050565b6000815560010162004fa3565b600160401b811162002a9b57611f489081549080835581811062004fdf57505050565b62002c3b926000526020600020918201910162004fa3565b600160401b811162002a9b57611f469081549080835581811062004fdf57505050565b805460008255806200502a575050565b62002c3b9160005260206000209081019062004fa3565b600160401b811162002a9b57613efe9081549080835581811062004fdf57505050565b600160401b811162002a9b57613f009081549080835581811062004fdf57505050565b611fb5805460008255806200502a575050565b90600160401b811162002a9b5781549080835581811062004fdf57505050565b9190828111620050cb576001920390565b50600091508190565b8115620050df570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101562005260575b506904ee2d6d415b85acef8160201b8083101562005250575b50662386f26fc100008083101562005240575b506305f5e1008083101562005230575b506127108083101562005220575b5060648210156200520f575b600a8092101562005204575b60019081602181860195620051918762002f5b565b96620051a1604051988962002b94565b808852620051b2601f199162002f5b565b01366020890137860101905b620051cb575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215620051fe57919082620051be565b620051c4565b91600101916200517c565b919060646002910491019162005170565b6004919392049101913862005164565b6008919392049101913862005156565b6010919392049101913862005146565b6020919392049101913862005133565b6040935081049150386200511a565b601e62002c3b91602094936040519586926200529162004db083860162004d5b565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620052ca825180936020878501910162002e01565b010360011981018552018362002b94565b600382101562002a235752565b60405190620052f78262002b3f565b60405182620053068262002b5b565b610c8036833752565b906200531b8262002c61565b6040906200532c8251918262002b94565b83815280936200533f601f199162002c61565b019160005b838110620053525750505050565b6020908251620053628162002acd565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c083015282860101520162005344565b620053a5815462002c79565b9081620053b0575050565b81601f60009311600114620053c3575055565b908083918252620053e4601f60208420940160051c84016001850162004fa3565b5555565b8054906000815581620053f9575050565b6000526020600020908101905b81811062005412575050565b806200542060019262005399565b0162005406565b90600160401b811162002a9b578154918181558282106200544757505050565b600052602060002091820191015b81811062005461575050565b806200546f60019262005399565b0162005455565b805490600081558162005487575050565b6000526020600020908101905b818110620054a0575050565b80620054ae6001926200501a565b0162005494565b90600160401b811162002a9b57815491818155828210620054d557505050565b600052602060002091820191015b818110620054ef575050565b80620054fd6001926200501a565b01620054e3565b8054600091828155816200551757505050565b6001600160fd1b0382168203620055a45782526020822091600391821b8301925b838110620055465750505050565b808260089255826001820155826002820155620055658482016200501a565b6200557360048201620053e8565b620055816005820162005476565b6200558f6006820162005476565b6200559d6007820162005399565b0162005538565b634e487b7160e01b83526011600452602483fd5b600160401b821162002a9b57805490828155818310620055d757505050565b6001600160fd1b03828116830362001e07578316830362001e0757600090815260208120600392831b810193831b015b838110620056155750505050565b808260089255826001820155826002820155620056348482016200501a565b6200564260048201620053e8565b620056506005820162005476565b6200565e6006820162005476565b6200566c6007820162005399565b0162005607565b51600681101562002a235790565b90600681101562002a235760ff80198354169116179055565b90620056a68162002fc4565b60ff80198354169116179055565b90620056c08162002a18565b61ff0082549160081b169061ff001916179055565b9190601f8111620056e557505050565b62002c3b926000526020600020906020601f840160051c8301931062005714575b601f0160051c019062004fa3565b909150819062005706565b81519192916001600160401b03811162002a9b576200574b8162005744845462002c79565b84620056d5565b602080601f83116001146200578a5750819293946000926200577e575b50508160011b916000199060031b1c1916179055565b01519050388062005768565b90601f198316958460005282600020926000905b888210620057d957505083600195969710620057bf575b505050811b019055565b015160001960f88460031b161c19169055388080620057b5565b806001859682949686015181550195019301906200579e565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b8151600681101562002a235762005833908262005681565b602082015160018201556002810160408301516020815191620058578385620055b8565b01916000526020600020916000905b828210620058b857505050509060c0600562002c3b9360608401516003820155620058996080850151600483016200571f565b0191620058ad60a0820151151584620057f2565b015115159062005803565b805180518555620058f860018601620058e16020840151620058da8162002fc4565b826200569a565b604083015190620058f28262002a18565b620056b4565b60608101516002860155608081015180519060038701906001600160401b03831162002a9b576020906200592d84846200509a565b0190600052602060002060005b83811062005bd9575050505060a001518051805190600487019060209062005963848462005427565b01906000526020600020906000905b83821062005bb957505050506005850160208201516020815191620059988385620054b5565b019160005260206000206000925b82841062005b5557505050506006850160408201516020815191620059cc8385620054b5565b019160005260206000206000925b82841062005ae85750505050606001518051906001600160401b03821162002a9b5762005a1a8262005a10600789015462002c79565b60078901620056d5565b602090601f831160011462005a6d57928260089360209360019660009262005a61575b5050600019600383901b1c191690851b1760078801555b0194019101909262005866565b01519050388062005a3d565b906007870160005260206000209160005b601f198516811062005acf575083602093600196938793600897601f1981161062005ab5575b505050811b01600788015562005a54565b015160001960f88460031b161c1916905538808062005aa4565b9192602060018192868501518155019401920162005a7e565b80518051906001600160401b03821162002a9b5760209062005b0b83866200509a565b0183600052602060002060005b83811062005b37575050505060016020819201920193019290620059da565b82516001600160a01b03168183015560209092019160010162005b18565b80518051906001600160401b03821162002a9b5760209062005b7883866200509a565b0183600052602060002060005b83811062005ba4575050505060016020819201920193019290620059a6565b60019060208451940193818401550162005b85565b600160208262005bcc839451876200571f565b0193019101909162005972565b6001906020845194019381840155016200593a565b60409081519162005bff8362002b78565b60018352829160005b60208082101562005c725783516020929162005c248262002ab1565b60008252600081830152600086830152606060008184015280608084015286519062005c508262002a7f565b808252808383015280888301528082015260a083015282880101520162005c08565b505091925050565b611f43805482101562004cfd576000526006602060002091020190600090565b613efb805482101562004cfd576000526006602060002091020190600090565b611f42805482101562004cfd576000526006602060002091020190600090565b613efa805482101562004cfd576000526006602060002091020190600090565b611f428054600160401b81101562002a9b5762005d1d9160018201905562005cba565b91909162005d305762002c3b916200581b565b634e487b7160e01b600052600060045260246000fd5b611f438054600160401b81101562002a9b5762005d1d9160018201905562005c7a565b613efb8054600160401b81101562002a9b5762005d1d9160018201905562005c9a565b613efa8054600160401b81101562002a9b5762005d1d9160018201905562005cda565b1562005db757565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b6103e881101562004cfd5762005e4a8162005e436002620032d29460031b01549162005f36565b9062005eb0565b919062005daf565b6103e881101562004cfd5762005e4a8162005e43611fba620032d29460031b01549162005fe5565b90811562005ea757606462005e938184029384620050d4565b0362005e9f5760019190565b600091508190565b60019150600090565b9190821562005ec85762005e938184029384620050d4565b5060019150600090565b1562005eda57565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6103e8811015908162004cfd57600390811b906004928383019182549260009582879601935b85871062005f6e575050505050505090565b97969091929394959762005fd05762005fc48862005fbc62005f9662000faa9a9b8762004f5e565b905490881b1c6001600160a01b031660009081526020899052604081205490946200608f565b999062005ed2565b95949392919062005f5c565b603282634e487b7160e01b6000525260246000fd5b6103e8811015908162004cfd5790600391821b90611fbc820190815490600094611fbb869501915b8386106200601e5750505050505090565b9590919293949562004cfd576200607186620060696200604362000faa998962004f5e565b905490861b1c6001600160a01b031660009081526020879052604081205490946200608f565b989062005ed2565b94939291906200600d565b906001820191821062005e9f5760019190565b9190820191821062005e9f5760019190565b15620060a957565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b6103e881101562004cfd57620061318162005e436001620032d29460031b01549162005f36565b9190620060a1565b6103e881101562004cfd57620061318162005e43611fb9620032d29460031b01549162005fe5565b611faf54620061736200224862033044565b9190506200618062033108565b5060009081925b6103e88410620061a4575b6200619f935004620061de565b905090565b9160ff60078560031b01541615620061d75783620022e4620061d092620022dd62000faa969762005e1c565b9262006187565b9162006192565b908015620061f657620061f191620050d4565b600191565b5050600090600090565b9190820180921162001e0757565b9190820391821162001e0757565b906107b2906301e1853e80840483810180821162001e07576001820181811162001e0757604583019082821162001e075760646200625f92049060021c6200620e565b9561017183019682881162001e075762006280906101908099049062006200565b9084840294848604148415171562001e075762015180948583029280840487149015171562001e0757620062c092620062b99162006200565b906200620e565b91600495869108159586620064df575b506040516101a081016001600160401b03811182821017620064ca57604052600c9687825261018080366020850137601f91826200630e8562004cef565b5215620064c05760ff601d5b16620063268462004d13565b5281620063338462004d24565b52601e620063418462004d35565b528251881015620064ab578160a0840152825160051015620064ab57601e60c0840152825160061015620064ab578160e0840152825160071015620064ab5781610100840152825160081015620064ab57601e610120840152825160091015620064ab57816101408401528251600a1015620064ab57601e6101608401528251600b1015620064ab57820152600096905b81881062006426575b50508282049460018601809611620064115760018701809711620064115750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b90969262006435848362004d46565b51858102908082048714901517156200648e578110620064a3576200645b848362004d46565b5190858202918083048714901517156200648e5762006486916200647f916200620e565b9362004cdf565b9690620063d2565b601188634e487b7160e01b6000525260246000fd5b9296620063db565b603288634e487b7160e01b6000525260246000fd5b60ff601c6200631a565b604187634e487b7160e01b6000525260246000fd5b909550606486061590811591620064fa575b509438620062d0565b905085061538620064f1565b90815181101562004cfd570160200190565b908151815111620065cf576000905b6200653683518251906200620e565b8211620065c75760019260005b8251811015620065bc576001600160f81b0319806200656e62006567848862006200565b8562006506565b5116906200657d838662006506565b5116036200659657620065909062004cdf565b62006543565b5092509060005b620065b457620065ad9062004cdf565b9062006527565b505050600190565b50929190916200659d565b505050600090565b5050600090565b611f4680549190600160401b83101562002a9b578262001a0891600162002c3b9501905562004eb6565b611f4a80549190600160401b83101562002a9b578262001a0891600162002c3b9501905562004f0a565b611fb5805490600160401b82101562002a9b576001820180825582101562004cfd576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611fb3805490600160401b82101562002a9b576001820180825582101562004cfd576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611f4180549190600160401b83101562002a9b578262001a0891600162002c3b9501905562004ed2565b60405190620066f98262002b78565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b604051906200672f8262002b06565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b60208083019081518051871015620069155781620067a788620067af9362004d46565b510162007387565b6026928382101562002a2357601a9182036200686d5787620067d2915162004d46565b5192828401519081101562002a2357036200682b5750936200681c6200682492620068146200680d60a0604062000faa9a0151015162004cef565b5162004cef565b51906200608f565b959062007395565b9262006784565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b929190506200688681620067a789869a979a5162004d46565b8281101562002a2357601403620068bf575050906200681c62000faa95620022dd620068b88462006824965162004d46565b51620073e2565b620068d190620067a785855162004d46565b9081101562002a2357601514620068ef575b50620068249062004cdf565b906200681c6200690e95620022dd620068b88462006824965162004d46565b90620068e3565b5050509092508034106000146200698b5760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b8034116200720c575b50613f739182549260ff841693620069ac8562002a18565b600194808603620069e657505050620069dc919250620069d6620069d08262007479565b62007550565b620075da565b620032d2620066ea565b620069f18162002a18565b600281148080620071ff575b1562006e285750505062006a11826200748e565b1562006de95762006a22826200748e565b1562006dad5762006a5b90602080930190600260ff8560018060a01b0362006a4b865162004cef565b5151169460409687915162004cef565b510151015192541662006a6e8162002a18565b0362006d6d5781600052613f778085528360002092613f7880549485600052875260ff86600020541662006d2f5783519480600052613f7693848952600396878960002001540362006cc95783600052885286600020906000528752856000208960ff19825416179055886000905b62006b27575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b1062032533565b519162006b1d8362002b78565b6015835282015290565b845181101562006cc35786825480600052858a5262006b4c8389846000200162004f5e565b905490891b1c908a84888b62006b63838d62004d46565b511562006c2157505050505062006bc662006ba685549283600052888d52620022dd62006b9887600480986000200162004f5e565b9054908d1b1c91896203241d565b9092600052878c5262006bbf85858d6000200162004f5e565b9062004f8b565b1562006bdf575062006bd89062004cdf565b8962006add565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006c5e62006c7096620022dd87999462006bbf979860005284895262006c5187600580986000200162004f5e565b9054911b1c918d6203241d565b959097600052528c6000200162004f5e565b1562006c815762006bd89062004cdf565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006ae3565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e3882979495969762002a18565b60038214918280620071f2575b1562006ec75750505050505062006e5c81620074f5565b1562006e775762006e6d906202f2b7565b620032d262006720565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006ed28162002a18565b8180620071e4575b80620071d7575b156200710157505050509060ff9062006ef962032745565b54169062006f078262002a18565b810362006fc5575062006f1a8162007479565b1562006f345780620069d6620069d0620069dc9362007479565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b8062006fd360039262002a18565b146200700c57505b60405162006fe98162002b78565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200701781620074f5565b15620070285762006e6d906202f2b7565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b6200710c8162002a18565b8215620071c2575b505080620071b4575b6200712c575050505062006fdb565b60ff19161790556200713e8162007479565b15620071585780620069d6620069d0620069dc9362007479565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b50613f72544210156200711d565b620071cf91925062002a18565b388062007114565b50613f7254421062006ee1565b50613f715442101562006eda565b50613f7254421062006e45565b50613f71544210620069fd565b60018060a01b039081845116600052611f4590816020526040600020541562007302575b6200723c9034620050ba565b9015620072be576200725f9083865116600052826020526040600020546200608f565b9290156200727d578451166000526020526040600020553862006994565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b611f4654939291906000805b86811062007344575b506200723c92939495501562007330575b905062007230565b6200733e84875116620065d6565b62007328565b84620073508262004eb6565b919054818b51169260031b1c161462007374576200736e9062004cdf565b6200730e565b5093945084935060016200723c62007317565b51602681101562002a235790565b156200739d57565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a0620073fc818351015162004d13565b51518410156200747157926200681c62007461604094620074598562007451866200743f8b620074468362000faa9f9e6200743f90620074679e51015162004d13565b5162004d46565b519451015162004d24565b519062005eb0565b929062007395565b6200608f565b91929050620073e7565b509093505050565b6020015151156200748957600190565b600090565b602001516001815103620074b257620074ab620032d29162004cef565b51620074b8565b50600090565b6020810151602681101562002a2357602003620074b2576040015160a081015151620074b25760c081015151620074b25751516200748957600190565b602001516001815103620074b25762007512620032d29162004cef565b516020810151602681101562002a2357602103620074b2576040015160a081015151620074b25760c081015151620074b25751516200748957600190565b156200755857565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b620075e58162015182565b5162014c9357600681101562002a23576003811462014c3a5780620076425760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200b0db5750600080611f4a54905b8181106200b094575b5050156200b078575b60005b60209081830151918251821015620076cf57620076c181611f49620076a7620076a162000faa95620067a788620076c99a62004d46565b62033353565b9160018060a01b03885116600052526040600020620242c3565b429162004f8b565b6200766a565b50505060005b60208083015180518310156200771d57620076fa91620067a784620076a19362004d46565b90606482101562004cfd5762007717914290611f4b015562004cdf565b620076d5565b505050906000905b602083015180518310156200b0725782620077409162004d46565b516020810180516026908181101562002a2357156200b02f5781518181101562002a23576001036200798e5750506040809101906200778460c08351015162004cef565b5192620077a660a06200779b818651015162004cef565b519451015162004d13565b5195620077b785518551146202df8a565b620077c685518851146202dff0565b60005b85518110156200790c57620077df818662004d46565b516103e8908181101562004cfd57600160ff6007620078079360031b0154161515146202e052565b62007813828a62004d46565b5162007820838862004d46565b51908282101562004cfd5760066200783e9260031b0154906200608f565b906200784b848962004d46565b51918383101562004cfd576006620078689360031b01556202e0aa565b62007874828a62004d46565b519062007882838862004d46565b518181101562004cfd576001600160a01b039392620078c29160039086620078ab878e62004d46565b5116600052811b016020528760002054906200608f565b620078ce848a62004d46565b519283101562004cfd57600362000faa936200790696620078f0878e62004d46565b5116600052811b0160205287600020556202e109565b620077c9565b5093926200792991929650620079229062032f53565b9262032e37565b945192620079378462002b3f565b60008452600036813760005b835181101562007971578062000faa620079626200796b938762004d46565b51878a62032a46565b62007943565b509450926020925062007985915062004cdf565b91905062007725565b81518181101562002a235760020362007c255750506040809101805192835195620079d3620079c260a08097015162004cef565b519562007446818651015162004d13565b5193875186510362007bd257875184510362007b7e57875185510362007b27575060005b855181101562007b115762007a0d818762004d46565b51906103e8918281101562004cfd5762007a3360ff6007809360031b015416156202e162565b62007a3f828962004d46565b518381101562004cfd5760031b01805460ff1916600117905562007a64818a62004d46565b5162007a71828962004d46565b51908382101562004cfd57600562007a8d9260031b016200571f565b62007a99818662004d46565b5162007aa6828962004d46565b518381101562004cfd5760031b6001015562007ac3818762004d46565b5162007ad0828962004d46565b518381101562004cfd5760031b6002015562007aed818862004d46565b519182101562004cfd576000600662007b0b9360031b015562004cdf565b620079f7565b5095509390506020925062007985915062004cdf565b5162461bcd60e51b815260206004820152603c6024820152600080516020620337ec83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b81526020600482015260396024820152600080516020620337ec8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b81526020600482015260386024820152600080516020620337ec8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b819593949295518181101562002a235760030362008221575050604084019062007c5460c08351015162004cef565b519362007c6b60a06200779b818651015162004cef565b519362007c80865185511462000fa3620331b7565b62007c93865186511462000fa3620331b7565b60005b865181101562007cfc5762007cac818662004d46565b51906103e882101562004cfd57600362007cf69260018060a01b038b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b51111562000fa3620332bb565b62007c96565b50909493919460005b855181101562007e305762007d1b818662004d46565b51906103e88083101562004cfd57600360018060a01b0393848c5116600052811b0160205262007d5e60406000205462007d56848962004d46565b5190620050ba565b9062007d6b848a62004d46565b51918383101562004cfd57600362007d9a93878f5116600052811b0160205260406000205562000fa3620332bb565b62007da6828862004d46565b518181101562004cfd576003908462007dc0858c62004d46565b5116600052811b0160205262007de160406000205462006814848962004d46565b62007ded848a62004d46565b519283101562004cfd57600362000faa9362007e2a9662007e0f878e62004d46565b5116600052811b0160205260406000205562000fa362033320565b62007d05565b5091509162007e4762007e4e919695949662032f53565b9562032e37565b926040519462007e5e8662002b78565b6001865260203681880137516001600160a01b031662007e7e8662004cef565b526000905b86518210156200820c5762007e99828862004d46565b516104c05262007eaa855162004e62565b9660009462007eba885162004e62565b610ae0528594865b885181101562007f91578a8962007ef26001600160a01b0362007ee6858462004d46565b51166104c05162032d3b565b158062007f4b575b62007f13575b505062007f0d9062004cdf565b62007ec2565b9862007f409162001ac782859c62007f3762007f0d9760018060a01b039262004d46565b51169262004d46565b9790508a8962007f00565b5050506103e86104c051101562004cfd576001600160a01b0362007f70828b62004d46565b511660005260036104c051811b016020528a89604060002054151562007efa565b509098949897969291939760005b885181101562008033576103e86104c051101562004cfd576001600160a01b0362007fcb828b62004d46565b511660005260036104c051811b016020526040600020541562007ffa575b62007ff49062004cdf565b62007f9f565b9962007ff4906200802a906001600160a01b03620080198e8d62004d46565b511662001ac782610ae05162004d46565b9a905062007fe9565b5098509694939291956104c0516103e8811015806107405262004cfd5760031b60040154966200806e62008068878a62006200565b62004e62565b996000998a6104e0525b6107405162004cfd576104e0518a8110156200812d57620080ad620080ca9160006107405260046104c05160031b0162004f5e565b9054610ae05160039290921b1c6001600160a01b03169062032dea565b15620080e9575b620080df6104e05162004cdf565b6104e05262008078565b99808c62001ac762008126936200810d6104e05160046104c05160031b0162004f5e565b905460039190911b1c6001600160a01b03169262004d46565b99620080d1565b509a939794969299919850946000915b838310620081d257505050506107405162004cfd578051906001600160401b03821162002a9b576020906200817c8360046104c05160031b016200509a565b0160046104c05160031b01600052602060002060005b838110620081b45750505050620081a99062004cdf565b909295919562007e83565b82516001600160a01b03168183015560209092019160010162008192565b6200820590620081fe906001600160a01b03620081f0868662004d46565b511662001ac7828962004d46565b9262004cdf565b916200813d565b91945050620079859194506020925062004cdf565b819593949295518181101562002a2357600403620084a9575050604080920160c0946200826262008256878451015162004cef565b51968351015162004d13565b51946200827960a06200779b818651015162004cef565b51936200828e885188511462000fa3620331b7565b620082a1885185511462000fa3620331b7565b620082b4885186511462000fa3620331b7565b60005b88518110156200831c57620082cd818662004d46565b51906103e882101562004cfd5762008316916003906001600160a01b03620082f6848e62004d46565b5116600052811b0160205262000faa886000205462007ce9838a62004d46565b620082b7565b50909691959294939660005b83518110156200845d576200833e818862004d46565b51906103e8918281101562004cfd576001600160a01b03906003908262008366858a62004d46565b5116600052811b01602052620083878b62007d56848b600020549262004d46565b9062008394848c62004d46565b51918583101562004cfd576003620083cd9385620083b3888d62004d46565b5116600052811b016020528a6000205562000fa3620332bb565b620083d9828a62004d46565b518381101562004cfd5760039082620083f3858b62004d46565b5116600052811b01602052620084148b62006814848b600020549262004d46565b91905062008423838b62004d46565b519384101562004cfd57620084579360039162008441858b62004d46565b5116600052811b01602052876000205562004cdf565b62008328565b50946200848092975062007e4791939450620084799062032f53565b9362032e37565b9260005b835181101562007971578062000faa62007962620084a3938762004d46565b62008484565b8195949593929351908082101562002a23576005918203620084db575050506020919262000faa62007985926202ec1a565b82518181101562002a23576006036200874c575050509060408092016200850760c08251015162004cef565b51946200852960a06200851e818551015162004cef565b519351015162004d13565b51928651835103620086fb578651845103620086af5760005b8751811015620085a75762008558818562004d46565b51906103e882101562004cfd57620085a1916003906001600160a01b0362008581848d62004d46565b5116600052811b0160205262000faa876000205462007ce9838962004d46565b62008542565b509092919260005b87518110156200865b57620085c5818662004d46565b516103e88082101562004cfd576001600160a01b03929160039084620085ec858e62004d46565b5116600052811b016020526200860c886000205462007d56848962004d46565b62008618848a62004d46565b519283101562004cfd57600362000faa9362008655966200863b8f889062004d46565b5116600052811b01602052896000205562000fa3620332bb565b620085af565b50959262008670919250620079229062032f53565b9251946200867e8662002b3f565b60008652600036813760005b835181101562007971578062000faa62007962620086a9938762004d46565b6200868a565b845162461bcd60e51b8152602060048201526030602482015260008051602062033aec83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b815260206004820152603560248201526000805160206203372c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82518181101562002a23576007036200889b575050506040809101936200877860c08651015162004cef565b51926200878a60a08751015162004cef565b5195515191620087a2855188511462000fa3620331b7565b60005b855181101562007b1157620088959062000faa6001600160a01b03826002886200887d8e620088728e620088688f89620087e08a8562004d46565b51166000526200881c896200881481611f409a8b6020526200880e60ff8760002054161562000fa362033288565b62004d46565b519662004d46565b51968a6200885283519b8c96620088338862002a7f565b600188526060602089019860008a528781019b8c52019b8c5262004d46565b51166000526020526000209751151588620057f2565b5115158662005803565b51600185016200571f565b519101556200888d838a62004d46565b5116620066c0565b620087a5565b82519596959394928185101562002a235760089485036200899257505050620088cd60c0604080950151015162004cef565b519360005b85518110156200897d5762008977906001600160a01b0380620088f6838a62004d46565b5116600052611f4090816020526200894c60ff620089236001828c600020541615151462000fa3620331e7565b8262008930868d62004d46565b5116600052836020528960002054891c161562000fa36203324f565b62008958838a62004d46565b51166000526020528560002061010061ff001982541617905562004cdf565b620088d2565b50949093506020925062007985915062004cdf565b80518281101562002a235760090362008a6657505050620089bc60c0604080950151015162004cef565b519360005b85518110156200897d5762008a6090866001600160a01b0380620089e6848462004d46565b511660005262008a396001898362008a1b87611f4097886020526200880e8660ff8097600020541615151462000fa3620331e7565b5116600052846020528a600020548a1c1615151462000fa36203321a565b62008a45838a62004d46565b51166000526020528560002061ff0019815416905562004cdf565b620089c1565b809192939597969450518281101562002a2357600a0362008b445750505060408094019162008aab60a062008aa060c08651015162004cef565b519451015162004cef565b519162008ac0845184511462000fa3620331b7565b60005b8451811015620079715762008b3e906001600160a01b038062008ae7838962004d46565b5116600052611f408060205262008b0e600160ff8c600020541615151462000fa3620331e7565b62008b1a838862004d46565b519162008b28848a62004d46565b5116600052602052600289600020015562004cdf565b62008ac3565b80969496518281101562002a2357600b0362008c125750505060408092019362008b7360c08651015162004cef565b519451519162008b8b865184511462000fa3620331b7565b60005b8651811015620079715762008c0c9062000faa6001600160a01b038062008bb6848c62004d46565b5116600052611f408060205262008bdd600160ff8b600020541615151462000fa3620331e7565b62008be9848962004d46565b519162008bf7858d62004d46565b5116600052602052600188600020016200571f565b62008b8e565b80969394929596518281101562002a2357600c0362008d1257505060400160609182825101519362008c44856202d698565b60005b855181101562008cfc5760c062008c6382878751015162004d46565b5101511562008cbf5762008c8762008c8082878751015162004d46565b5162005cfa565b611f425460001981019190821162001e07578762008ca962008cb99362005cba565b5001805460ff1916905562004cdf565b62008c47565b62008cda62008cd382878751015162004d46565b5162005d46565b611f425460001981019190821162001e07578762008ca962008cb99362005c7a565b5095915093506020925062007985915062004cdf565b809695949396518281101562002a2357600d0362008e3657505060400193602062008d4260a08751015162004cef565b51955101519162008d5786518451146202dd8c565b60005b865181101562007971578062008d7562008de5928662004d46565b511562008deb5762008d9862008d8c828a62004d46565b51611f4254116202de15565b62008dc160ff8762008db662008daf858d62004d46565b5162005cba565b50015416156202de6d565b8562008dd262008daf838b62004d46565b5001805460ff1916600117905562004cdf565b62008d5a565b62008e0762008dfb828a62004d46565b51611f4354116202de15565b62008e2560ff8762008db662008e1e858d62004d46565b5162005c7a565b8562008dd262008e1e838b62004d46565b80518281101562002a2357600e0362008ef457505060400193602062008e6160a08751015162004cef565b51955101519162008e7686518451146202dd8c565b60005b865181101562007971578062008e9462008ea0928662004d46565b5162008ea65762004cdf565b62008e79565b62008ec262008eb6828a62004d46565b51611f4254116202dece565b62008ee360ff8762008ed962008daf858d62004d46565b500154166202df27565b8562008ca962008daf838b62004d46565b809693949596518281101562002a2357600f0362008fbf57505060400160609182825101519362008f25856202d698565b60005b855181101562008cfc5760c062008f4482878751015162004d46565b5101511562008f895762008f6162008c8082878751015162004d46565b611f425460001981019190821162001e07578762008dd262008f839362005cba565b62008f28565b62008f9d62008cd382878751015162004d46565b611f425460001981019190821162001e07578762008dd262008f839362005c7a565b8091929394969550518281101562002a235760100362009064575050604001519062008ff460a0608084015193015162004cef565b519362009009835186511462000fa3620331b7565b60005b835181101562009051578062000faa6200902b6200904b938762004d46565b51620090378162002fc4565b62009043838a62004d46565b51906202d55c565b6200900c565b5093509160209150620079859062004cdf565b80959295518281101562002a2357601103620092ed575050906040809401916200909960a062008aa060c08651015162004cef565b5191620090aa84518451146202d510565b60005b845181101562009122576200911c9062000faa6001600160a01b0380620090d5848a62004d46565b5116600052611f4580602052620090f68b6000205462006814868b62004d46565b91909262009105868c62004d46565b51166000526020528a6000205562000fa36203316d565b620090ad565b509394509162009133915062032e37565b90611f46928354946200914c6200806885518862006200565b91600093845b888110620092ad575060005b865181101562009205576000805b8a8110620091b6575b50156200918e575b620091889062004cdf565b6200915e565b946200918890620091ad906001600160a01b03620081f0898b62004d46565b9590506200917d565b620091c18162004eb6565b90546001600160a01b0360039290921b1c811690620091e1858c62004d46565b511614620091fa57620091f49062004cdf565b6200916c565b505060013862009175565b50965094909350620092178362004e62565b805191906001600160401b03831162002a9b57602090620092388462004ff7565b0190600052602060002060005b8381106200928f575050505060005b8281106200926c575050506200798560209162004cdf565b620092899062000faa6001600160a01b03620019fb838662004d46565b62009254565b82516001600160a01b03168183015560209092019160010162009245565b94620092e0620092e791620092c28862004eb6565b905460039190911b1c6001600160a01b031662001ac7828962004d46565b9562004cdf565b62009152565b80518281101562002a23576012036200955c5750506040809401916200931e60a062008aa060c08651015162004cef565b51916200932f84518451146202d510565b60005b845181101562009381576200937b9062000faa6001600160a01b03806200935a848a62004d46565b5116600052611f4580602052620090f68b6000205462007d56868b62004d46565b62009332565b509491509291620093929062032e37565b90611f468054620093a38162004e62565b9260009485925b808410620094575750505050620093c18362004e62565b805191906001600160401b03831162002a9b57602090620093e28462004ff7565b0190600052602060002060005b83811062009439575050505060005b82811062009416575050506200798560209162004cdf565b620094339062000faa6001600160a01b03620019fb838662004d46565b620093fe565b82516001600160a01b031681830155602090920191600101620093ef565b9297600097929597949194998a5b86518110156200954a576200947a8b62004eb6565b90546001600160a01b0360039290921b1c8116906200949a838a62004d46565b511614620094b357620094ad9062004cdf565b62009465565b509950976001979592979491945b806200951a575b15620094e057620094d99062004cdf565b92620093aa565b9562009513620094d991620094f58962004eb6565b905460039190911b1c6001600160a01b031662001ac7828a62004d46565b9662004cdf565b50620095268162004eb6565b60018060a01b0391549060031b1c16600052611f45602052826000205415620094c8565b509998909897959297949194620094c1565b80959295518281101562002a2357601303620095bd57505060408091015101519260005b8451811015620095ac578062000faa6200959f620095a6938862004d46565b516202f24b565b62009580565b509250906200798560209162004cdf565b8051918083101562002a235760149283036200976057505050604080910190620095ec60c08351015162004cef565b51926200960360a06200779b818651015162004cef565b51956200961485518551146202df8a565b6200962385518851146202dff0565b60005b85518110156200970b576200963c818962004d46565b5162009649828762004d46565b516103e8918282101562004cfd5760066200966a9260031b0154906200608f565b9062009677848962004d46565b51918383101562004cfd576006620096949360031b01556202e0aa565b620096a0828a62004d46565b5190620096ae838862004d46565b518181101562004cfd576001600160a01b039392620096d79160039086620078ab878e62004d46565b620096e3848a62004d46565b519283101562004cfd57600362000faa936200970596620078f0878e62004d46565b62009626565b5093926200972191929650620079229062032f53565b9451926200972f8462002b3f565b60008452600036813760005b835181101562007971578062000faa620079626200975a938762004d46565b6200973b565b819694959396518181101562002a2357601590810362009cd7575050505060408401906200979360c08351015162004cef565b5193620097aa60a06200779b818651015162004cef565b5193620097bf865185511462000fa3620331b7565b620097d2865186511462000fa3620331b7565b60005b86518110156200982e57620097eb818662004d46565b51906103e882101562004cfd576003620098289260018060a01b038b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b620097d5565b50909493919460005b85518110156200993f576200984d818662004d46565b51906103e88083101562004cfd57600360018060a01b0393848c5116600052811b016020526200988860406000205462007d56848962004d46565b9062009895848a62004d46565b51918383101562004cfd576003620098c493878f5116600052811b0160205260406000205562000fa3620332bb565b620098d0828862004d46565b518181101562004cfd5760039084620098ea858c62004d46565b5116600052811b016020526200990b60406000205462006814848962004d46565b62009917848a62004d46565b519283101562004cfd57600362000faa93620099399662007e0f878e62004d46565b62009837565b5091509162007e4762009956919695949662032f53565b9260405194620099668662002b78565b6001865260203681880137516001600160a01b0316620099868662004cef565b526000905b86518210156200820c57620099a1828862004d46565b516103a052620099b2855162004e62565b96600094620099c2885162004e62565b610580528594865b885181101562009a90578a89620099fa6001600160a01b03620099ee858462004d46565b51166103a05162032d3b565b158062009a4a575b62009a1b575b505062009a159062004cdf565b620099ca565b9862009a3f9162001ac782859c62007f3762009a159760018060a01b039262004d46565b9790508a8962009a08565b5050506103e86103a051101562004cfd576001600160a01b0362009a6f828b62004d46565b511660005260036103a051811b016020528a89604060002054151562009a02565b509098949897969291939760005b885181101562009b32576103e86103a051101562004cfd576001600160a01b0362009aca828b62004d46565b511660005260036103a051811b016020526040600020541562009af9575b62009af39062004cdf565b62009a9e565b9962009af39062009b29906001600160a01b0362009b188e8d62004d46565b511662001ac7826105805162004d46565b9a905062009ae8565b5098509694939291956103a0516103e8811015806105c05262004cfd5760031b600401549662009b6762008068878a62006200565b996000998a610200525b6105c05162004cfd57610200518a81101562009c0d5762009ba662009bc39160006105c05260046103a05160031b0162004f5e565b90546105805160039290921b1c6001600160a01b03169062032dea565b1562009be2575b62009bd86102005162004cdf565b6102005262009b71565b99808c62001ac762009c06936200810d6102005160046103a05160031b0162004f5e565b9962009bca565b509a939794969299919850946000915b83831062009cb257505050506105c05162004cfd578051906001600160401b03821162002a9b5760209062009c5c8360046103a05160031b016200509a565b0160046103a05160031b01600052602060002060005b83811062009c94575050505062009c899062004cdf565b90929591956200998b565b82516001600160a01b03168183015560209092019160010162009c72565b62009cd090620081fe906001600160a01b03620081f0868662004d46565b9162009c1d565b82979496959751918083101562002a2357601692830362009d4457505050505060c0604062009d0a920151015162004cef565b519260005b8451811015620095ac5762009d3e9062000faa6001600160a01b0362009d36838962004d46565b511662006675565b62009d0f565b83518181101562002a235760170362009d9d5760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b83518181101562002a235760180362009e1057505050505060c0604062009dc8920151015162004cef565b51611fb6805460ff191660011790559260005b8451811015620095ac5762009e0a9062000faa6001600160a01b0362009e02838962004d46565b51166200662a565b62009ddb565b83979697518181101562002a235760190362009f8457505050505060008080604080940160a08082510151805162009f4b575b5050519060e08201519162009e676200680d60c060018060a01b0393015162004cef565b511690602083519301915af1903d1562009f42573d9162009e888362002f5b565b9262009e978351948562002b94565b83523d6000602085013e5b1562009eb75750506200798560209162004cdf565b62004cdb925062009f23815192600080516020620338cc833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b8385015283815162009f12816059946020868601910162002e01565b810103603981018552018362002b94565b5162461bcd60e51b815260206004820152918291602483019062002e26565b60609162009ea2565b62009f569062004cef565b515162009f65575b8062009e43565b8192506200680d9062009f7b9251015162004cef565b51903862009f5e565b83518181101562002a2357601a036200a084575050505062009faf60a0604080940151015162004cef565b519062009fc060038351146202d510565b62009fcb8262004cef565b519262009fe462009fdc8462004d13565b519362004d24565b51926200a04a5750509162007985916001602094146000146200a043576200a023906200a016611fb19182546200608f565b90915562000fa362033108565b62000faa611fb26200a03681546200607c565b90915562000fa362033142565b5062004cdf565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b909192809450518181101562002a2357601b036200a51957505050505091906200a0c4611faf546200225a6200a0b962033044565b612710831062004cac565b50506200a0d062033108565b506000805b6103e881106200a4a8575b50506200a0ec62006161565b6200a0fa613f745462004e62565b9060009485935b6103e88510156200a49b5760ff60078660031b015416156200a25a5760009560028660031b0154156200a24b57869796975b62004cfd5760048660031b01548810156200a232576200a15b886004600389901b0162004f5e565b600160a01b6001900391549060031b1c1696876000528660031b600301602052604097858960002054906200a1909162005eb0565b99906200a19c62033108565b6200a1a79162004cac565b6000998960031b600201546200a1bd9162005eb0565b91906200a1c962033108565b6200a1d49162004cac565b828b52611f476020528a20908154906200a1ee916200608f565b9091556200a1fb62033108565b6200a2069162004cac565b6200a212828862004d46565b526200a21e9062004cdf565b976200a22a9062004cdf565b97966200a133565b91946200a2429196975062004cdf565b9390946200a101565b91946200a24291965062004cdf565b949592915092505b6200a26d8262004e62565b91600091825b8281106200a40557505050611f48908154926200a29562008068858462006200565b9360009081905b8082106200a3ca57505060005b8381106200a3265750508351939150506001600160401b03831162002a9b576020906200a2d68462004fbc565b0190600052602060002060005b8381106200a3085750505050620079856020916000611fb1556000611fb25562004cdf565b82516001600160a01b0316818301556020909201916001016200a2e3565b6000805b8381106200a382575b50156200a34c575b6200a3469062004cdf565b6200a2a9565b906200a346906200a379906001600160a01b036200a36b858762004d46565b511662001ac7828a62004d46565b9190506200a33b565b6001600160a01b03806200a397858862004d46565b5116906200a3a6838b62004d46565b5116146200a3bf576200a3b99062004cdf565b6200a32a565b50506001386200a333565b9091620081fe6200a3fe916200a3e08562004e9a565b905460039190911b1c6001600160a01b031662001ac7828b62004d46565b906200a29c565b6000805b8581106200a453575b50156200a42b575b6200a4259062004cdf565b6200a273565b926200a425906200a44a906001600160a01b03620081f0878662004d46565b9390506200a41a565b6001600160a01b03806200a468858762004d46565b5116906200a477838a62004d46565b5116146200a490576200a48a9062004cdf565b6200a409565b50506001386200a412565b949592915092506200a262565b806003959394951b9060ff600783015416156200a50e576200a4f86200746162000faa946200a4ec6200a5049560026200a4e28762005e1c565b9101549062005eb0565b929062000fa362033108565b939062000fa362033108565b939291936200a0d5565b50939291936200a0e0565b83518181101562002a2357601c036200a5725760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b83518181101562002a2357601d036200a598575b50505050506200798560209162004cdf565b839795969497518181101562002a2357601e036200ae665750505050604084019060a0906200a5cb828451015162004cef565b51516200a5dc838551015162004d13565b5151036200ade9576200a5f3828451015162004cef565b51516200a604838551015162004d24565b5151036200ad6d576200a61b828451015162004cef565b51946200a62c838551015162004d13565b51916200a65d6200a641858751015162004d24565b51946200a652818851015162004cef565b519651015162004d13565b519585518751036200ad0a5760005b86518110156200a6c5576200a682818862004d46565b51906103e882101562004cfd5760036200a6bf9260018060a01b038d5116600052811b0160205262000faa60406000205462007ce9838c62004d46565b6200a66c565b5090969192939660005b86518110156200a76e576200a6e5818862004d46565b516103e881101562004cfd5760039060018060a01b038c5116600052811b016020526200a71d60406000205462007d56838b62004d46565b91906200a72b828a62004d46565b51906103e882101562004cfd576200a76893600362000faa938f60018060a01b03905116600052811b0160205260406000205562000fa3620332bb565b6200a6cf565b5093979550936200a7829096929662032f53565b96604051966200a7928862002b78565b60018852602036818a013786516001600160a01b03166200a7b38962004cef565b52604051966200a7c38862002b3f565b600088526000610460525b895161046051908110156200ab8b576200a7e9908b62004d46565b51610520526200a7fa885162004e62565b996000976200a80a8b5162004e62565b610920528897895b8b518110156200a8d8578d8c6200a8426001600160a01b036200a836858462004d46565b51166105205162032d3b565b15806200a892575b6200a863575b50506200a85d9062004cdf565b6200a812565b9b6200a8879162001ac782859f62007f376200a85d9760018060a01b039262004d46565b9a90508d8c6200a850565b5050506103e861052051101562004cfd576001600160a01b036200a8b7828e62004d46565b5116600052600361052051811b016020528d8c60406000205415156200a84a565b50909b989a99949691929395979b60005b8b518110156200a97d576103e861052051101562004cfd576001600160a01b036200a915828e62004d46565b5116600052600361052051811b01602052604060002054156200a944575b6200a93e9062004cdf565b6200a8e9565b9c6200a9746200a93e918f6200a9638f9160018060a01b039262004d46565b511662001ac7826109205162004d46565b9d90506200a933565b509a9b509895969193969490929461052051996103e88b10159b8c62004cfd578d9b60031b600401549d6200a9b3908f62006200565b6200a9be9062004e62565b6103205260006108c0528c6000610640525b62004cfd57610640519c8e8e10156200aa8e57506200aa1c6200a9ff60009e60046105205160031b0162004f5e565b90546109205160039290921b1c6001600160a01b03169062032dea565b156200aa3c575b8c6200aa326106405162004cdf565b610640526200a9d0565b6200aa546106405160046105205160031b0162004f5e565b60018060a01b0391549060031b1c166200aa756108c0516103205162004d46565b526200aa846108c05162004cdf565b6108c0526200aa23565b939d509396999094979b50999094979960005b8281106200ab3f5750505062004cfd5761032051516001600160401b03811162002a9b576200aada8160046105205160031b016200509a565b602061032051019060046105205160031b0160005260206000209160005b8281106200ab2157505050506200ab126104605162004cdf565b6104605295989094986200a7ce565b81516001600160a01b0316818501556020909101906001016200aaf8565b6200ab85906001600160a01b036200ab58828562004d46565b51166200ab6c6108c0516103205162004d46565b526200ab7b6108c05162004cdf565b6108c05262004cdf565b6200aaa1565b5094929750929750939450600094855b87518110156200ac0b576200abce6200abc66200abb9838962004d46565b5162007451848d62004d46565b91906202f07a565b806200abe7575b506200abe19062004cdf565b6200ab9b565b906200abfc6200ac04986200abe1936200608f565b98906202f0c7565b906200abd5565b509650945092909150806200ac2f575b5050620079856020915b913880806200a586565b6200ac629060018060a01b038351166000526200ac5a611f459182602052604060002054906200608f565b92906202f120565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106200acc0575b5050916200798591602093156200aca4575b50916200ac1b565b516200acb9906001600160a01b0316620065d6565b386200ac9c565b6200accb8162004eb6565b9054855160039290921b1c6001600160a01b039081169116146200acfa576200acf49062004cdf565b6200ac81565b506001915082905060206200ac8a565b60405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b60405162461bcd60e51b81526020600482015260596024820152600080516020620339ec83398151915260448201527f642070726963654172726179206973206e6f7420657175616c2061742042415460648201527810d217d095549397d513d2d15394d7d0539117d49151955391603a1b608482015260a490fd5b60405162461bcd60e51b815260206004820152605a6024820152600080516020620339ec83398151915260448201527f6420616d6f756e744172726179206973206e6f7420657175616c2061742042416064820152791510d217d095549397d513d2d15394d7d0539117d4915195539160321b608482015260a490fd5b839794969597518181101562002a2357601f036200aeaa57505050506020916200aea46200ae9d6040620079859401515162004cef565b516202f281565b6200ac25565b83518181101562002a23576020036200aed0575b5050505050620079856020916200ac25565b83518181101562002a235760218091036200aeed575b506200aebe565b8451828110156200b01a576022036200af2d5750505050505062007985602091611fb660ff1981541690556200af2262005087565b91388080806200aee6565b8451828110156200b01a576023036200af54575b505050505050620079856020916200af22565b845194828610156200b01a5760248096036200af72575b506200af41565b8051838110156200b006576025146200af6b5751918210156200aff25750036200afb65750506020916200afaa62007985926202e1ae565b9138808080806200af6b565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200b08e906001600160a01b031662006600565b62007667565b6200b09f8162004f0a565b9054855160039290921b1c6001600160a01b039081169116146200b0ce576200b0c89062004cdf565b62007655565b505050600138806200765e565b600281036200b0ff5760405162461bcd60e51b81528062004cdb600482016200758f565b6001146200b10a5750565b6200b118611f43546200530f565b805190600160401b821162002a9b57613efb5482613efb5580831062014bbf575b50602001613efb60005260206000206000915b83831062014b9e575050505060005b611f43548110156200b194578062000faa6200b17b6200b18e9362005c7a565b506200b1878362005c9a565b90620150c9565b6200b15b565b506200b1a3611f42546200530f565b805190600160401b821162002a9b57613efa5482613efa5580831062014b02575b50602001613efa60005260206000206000915b83831062014ae1575050505060005b611f42548110156200b218578062000faa6200b2066200b2129362005cba565b506200b1878362005cda565b6200b1e6565b5060005b6103e8811015806200b3c957600160ff611fbf8460031b0154161515146200b251575b506200b24b9062004cdf565b6200b21c565b916000835b62004cfd57611fbc8360031b01548110156200b2c0576200b2b7929350600092816200b28b8593611fbc8860031b0162004f5e565b9054600391821b1c6001600160a01b031660009081529087901b611fbb01602052604081205562004cdf565b9093926200b256565b5091604051906200b2d18262002b3f565b6000825262004cfd578051906001600160401b03821162002a9b576020906200b30283611fbc8660031b016200509a565b01611fbc8360031b01600052602060002060005b8381106200b3ab57505050611fbf600383901b908101805460ff191690556000611fb88201819055611fb98201819055611fba8201819055611fbd90910180546200b24b9493506200b3689062002c79565b601f908181116200b389575b5050556000611fbe8260031b0155906200b23f565b6200b3a39183855260208520910160051c81019062004fa3565b38806200b374565b82516001600160a01b0316818301556020909201916001016200b316565b505060005b6103e8811062014a53575060005b611f41548110156200b43757806200b3f86200b4319262004ed2565b60018060a01b0391549060031b1c16600052613ef860205260006002604082208281556200b4296001820162005399565b015562004cdf565b6200b3dc565b506200b446611f415462004e62565b8051906001600160401b03821162002a9b57600160401b821162002a9b57602090613ef95483613ef95580841062014a31575b5001613ef9600052602060002060005b83811062014a13575050505060005b611f41548110156200b50a576200b4af8162004ed2565b9054613ef95460039290921b1c6001600160a01b0316919081101562004cfd57613ef96000526000805160206203398c833981519152810180546001600160a01b0319169092179091556200b5049062004cdf565b6200b498565b509060005b611f41548110156200b5c957806200b52b6200b57e9262004ed2565b9060018060a01b03918291549060031b1c16600052611f40602052604080600020916200b5588462004ed2565b90549060031b1c16600052613ef8602052600020908082036200b584575b505062004cdf565b6200b50f565b600280916200b5aa60ff6200b59d8184541687620057f2565b825460081c168562005803565b6200b5bc600182016001860162014d65565b015491015538806200b576565b5060005b613f02548110156200b61b57806200b5e96200b6159262004eee565b60018060a01b0391549060031b1c16600052613f0160205262000faa6040600020606481019062004fa3565b6200b5cd565b506200b62a611f4a5462004e62565b8051906001600160401b03821162002a9b57600160401b821162002a9b57602090613f025483613f0255808410620149f1575b5001613f02600052602060002060005b838110620149d3575050505060005b611f4a548110156200b6bf578062000faa6200b69c6200b6b99362004f0a565b905460039190911b1c6001600160a01b031662001a088362004eee565b6200b67c565b5060005b611f4a548110156200b74a57806200b6df6200b7319262004f0a565b9060018060a01b03918291549060031b1c16600052611f49602052604080600020916200b70c8462004f0a565b90549060031b1c16600052613f01602052600020908082036200b73757505062004cdf565b6200b6c3565b6200b742916201514b565b38806200b576565b50611f4b80546000905b60648210620149ba575050611faf54613f675550611fb054613f6855611fb154613f6955611fb254613f6a55611fb3546001600160401b03811162002a9b57600160401b811162002a9b57613f6b5481613f6b558082106201498c575b50613f6b60009081527f0c040229f6fc4874d4176ee508a0872dc89a48e51cc9b61a792006f29e06275480546000805160206203376c83398151915291905b8484106201496a575050505050611fb454600160401b811162002a9b57613f6c5481613f6c5580821062014928575b50613f6c6000908152600080516020620337ac8339815191527fcdf85548d0b3537a0f46212d2994f9493fe1dfa88d3af4ddb0cac3c506fd3f595b8383106201490a575050611fb5549150506001600160401b03811162002a9b57600160401b811162002a9b57613f6d5481613f6d55808210620148dc575b50613f6d60009081527f70c3d981fef3a436e3d026045c487f2278cccbfa7f9e11fbd3c1406b0017bd5d80546000805160206203396c83398151915291905b848410620148ba57505050505060ff611fb65416151560ff8019613f6e5416911617613f6e5560005b613efe548110156200b94a57806200b91c6200b9449262004f26565b905460039190911b1c6001600160a01b03166000908152613efd602052604081205562004cdf565b6200b900565b506200b959611f465462004e62565b8051906001600160401b03821162002a9b576020906200b9798362005041565b01613efe600052602060002060005b8381106201489c575050505060005b611f46548110156200b9da578062000faa6200b9b76200b9d49362004eb6565b905460039190911b1c6001600160a01b031662001a088362004f26565b6200b997565b5060005b611f46548110156200ba4957806200b9fa6200ba439262004eb6565b9060018060a01b03918291549060031b1c16600052611f4560205260408060002054916200ba288462004eb6565b90549060031b1c16600052613efd6020526000205562004cdf565b6200b9de565b5060005b613f00548110156200ba9757806200ba696200ba919262004f42565b905460039190911b1c6001600160a01b03166000908152613eff602052604081205562004cdf565b6200ba4d565b506200baa6611f485462004e62565b8051906001600160401b03821162002a9b576020906200bac68362005064565b01613f00600052602060002060005b8381106201487e575050505060005b611f48548110156200bb27578062000faa6200bb046200bb219362004e9a565b905460039190911b1c6001600160a01b031662001a088362004f42565b6200bae4565b5060005b611f48548110156200bb9657806200bb476200bb909262004e9a565b9060018060a01b03918291549060031b1c16600052611f4760205260408060002054916200bb758462004e9a565b90549060031b1c16600052613eff6020526000205562004cdf565b6200bb2b565b50613f02546000805b82811062014839575b501562014803575b5060005b60208301519081518110156200bc0c5762000faa620076c16200bbe6620076a16020620067a7866200bc069862004d46565b86516001600160a01b03166000908152613f0160205260409020620242c3565b6200bbb4565b505060005b602083015180518210156200bc5957620076a16020620067a7846200bc369462004d46565b90606482101562004cfd576200bc53914290613f03015562004cdf565b6200bc11565b5050906000905b6020810151805183101562010f2357826200bc7b9162004d46565b516020810151602681101562002a2357156200b02f576020810151602681101562002a23576001036200c24d57604001906200bcbc60c08351015162004cef565b51936200bcd360a06200779b818651015162004cef565b51916200bce486518551146202df8a565b6200bcf386518451146202dff0565b60005b86518110156200be51576200bd0c818662004d46565b516103e881101562004cfd57600160ff611fbf6200bd339360031b0154161515146202e052565b6200bd3f818562004d46565b516200bd4c828762004d46565b51906103e882101562004cfd57611fbe6200bd6d9260031b0154906200608f565b906200bd7a838862004d46565b51916103e883101562004cfd57611fbe6200bd9a9360031b01556202e0aa565b6200bda6818562004d46565b516200bdb3828762004d46565b51906103e882101562004cfd576200bdf691611fbb906001600160a01b036200bddd868d62004d46565b511660005260031b01602052604060002054906200608f565b91906200be04828862004d46565b51906103e882101562004cfd576200be4b9362000faa92611fbb906001600160a01b036200be33878f62004d46565b511660005260031b016020526040600020556202e109565b6200bcf6565b50926200be68919250620084799095949562032f53565b916040516200be778162002b3f565b6000815260003681376000945b80518610156200c233576200be9a868262004d46565b516102c0526200beab855162004e62565b966000946200bebb845162004e62565b6105a05260009460005b88518110156200bf8d578a896200bef56001600160a01b036200bee9858462004d46565b51166102c05162032d92565b15806200bf45575b6200bf16575b50506200bf109062004cdf565b6200bec5565b986200bf3a9162001ac782859c62007f376200bf109760018060a01b039262004d46565b9790508a896200bf03565b5050506103e86102c051101562004cfd576001600160a01b036200bf6a828b62004d46565b5116600052611fbb6102c05160031b016020528a8960406000205415156200befd565b50909895979498969291939660005b88518110156200c02b576103e86102c051101562004cfd576001600160a01b03806200bfc9838c62004d46565b5116600052611fbb6102c05160031b01602052604060002054156200bffb575b506200bff59062004cdf565b6200bf9c565b819b6200c023916200c0126200bff5948d62004d46565b511662001ac7826105a05162004d46565b9a906200bfe9565b509850969592919093966102c0516103e8811015806103e05262004cfd5760031b611fbc0154986200c06262008068898c62006200565b6108a0526000610a80526000610ac0525b6103e05162004cfd57610ac0518a8110156200c13c576200c0a96200c0c99160006103e052611fbc6102c05160031b0162004f5e565b90546105a0516001600160a01b03939260031b9190911c83169062032dea565b156200c0e9575b506200c0df610ac05162004cdf565b610ac0526200c073565b60006103e0526200c108610ac051611fbc6102c05160031b0162004f5e565b90549060031b1c166200c122610a80516108a05162004d46565b526200c131610a805162004cdf565b610a8052386200c0d0565b50979294959093985095909560005b8281106200c1e7575050506103e05162004cfd576108a051516001600160401b03811162002a9b576200c18981611fbc6102c05160031b016200509a565b60206108a05101611fbc6102c05160031b01600052602060002060005b8381106200c1c957505050506200c1bd9062004cdf565b9492959091956200be84565b82516001600160a01b0316818301556020909201916001016200c1a6565b6200c22d906001600160a01b036200c200828562004d46565b51166200c214610a80516108a05162004d46565b526200c223610a805162004cdf565b610a805262004cdf565b6200c14b565b5050939092506200c245915062004cdf565b90916200bc60565b906020829493940151602681101562002a23576002036200c404576040809201908151938451916200c2a46200c28860a08098015162004cef565b51966200c299818751015162004d13565b519551015162004d24565b5194835187510362007bd257835185510362007b7e57835186510362007b27575060005b86518110156200c3f1576200c2de818862004d46565b516103e881101562004cfd5760ff611fbf6200c3019260031b015416156202e162565b6200c30d818862004d46565b516103e881101562004cfd5760031b611fbf01805460ff191660011790556200c337818562004d46565b516200c344828962004d46565b51906103e882101562004cfd57611fbd6200c3639260031b016200571f565b6200c36f818662004d46565b516200c37c828962004d46565b516103e881101562004cfd5760031b611fb901556200c39c818762004d46565b516200c3a9828962004d46565b516103e881101562004cfd5760031b611fba01556200c3c9818862004d46565b51906103e882101562004cfd576000611fbe6200c3eb9360031b015562004cdf565b6200c2c8565b509592509350506200c245915062004cdf565b9092916020840151602681101562002a23576003036200ca2a5760408401906200c43360c08351015162004cef565b51906200c44a60a06200779b818651015162004cef565b51936200c45f835185511462000fa3620331b7565b6200c472835186511462000fa3620331b7565b60005b83518110156200c4d0576200c48b818662004d46565b51906103e882101562004cfd57611fbb6200c4ca9260018060a01b038b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b6200c475565b509095919560005b87518110156200c61e576200c4ee818662004d46565b516103e881101562004cfd57611fbb9060018060a01b0386511660005260031b016020526200c52860406000205462007d56838962004d46565b906200c535838862004d46565b51916103e883101562004cfd57611fbb6200c56e9360018060a01b0389511660005260031b0160205260406000205562000fa3620332bb565b6200c57a818662004d46565b516103e881101562004cfd57611fbb906001600160a01b036200c59e848c62004d46565b511660005260031b016020526200c5c060406000205462006814838962004d46565b91906200c5ce828862004d46565b51906103e882101562004cfd576200c61893611fbb62000faa938d6200c5fc8760018060a01b039262004d46565b511660005260031b0160205260406000205562000fa362033320565b6200c4d8565b50926200c63d919294506200c6369096959662032f53565b9462032e37565b92604051906200c64d8262002b78565b6001825260203681840137516001600160a01b03166200c66d8262004cef565b526000945b80518610156200c233576200c688868262004d46565b51610220526200c699855162004e62565b966000946200c6a9845162004e62565b6104005260009460005b88518110156200c77b578a896200c6e36001600160a01b036200c6d7858462004d46565b51166102205162032d92565b15806200c733575b6200c704575b50506200c6fe9062004cdf565b6200c6b3565b986200c7289162001ac782859c62007f376200c6fe9760018060a01b039262004d46565b9790508a896200c6f1565b5050506103e861022051101562004cfd576001600160a01b036200c758828b62004d46565b5116600052611fbb6102205160031b016020528a8960406000205415156200c6eb565b50909895979498969291939660005b88518110156200c820576103e861022051101562004cfd576001600160a01b036200c7b6828b62004d46565b5116600052611fbb6102205160031b01602052604060002054156200c7e7575b6200c7e19062004cdf565b6200c78a565b996200c7e1906200c817906001600160a01b036200c8068e8d62004d46565b511662001ac7826104005162004d46565b9a90506200c7d6565b50985096959291909396610220516103e8811015806104a05262004cfd5760031b611fbc0154986200c85762008068898c62006200565b6103c0526000610a40526000610540525b6104a05162004cfd57610540518a8110156200c933576200c89e6200c8bb9160006104a052611fbc6102205160031b0162004f5e565b90546104005160039290921b1c6001600160a01b03169062032dea565b156200c8da575b6200c8d06105405162004cdf565b610540526200c868565b60006104a0526200c8f961054051611fbc6102205160031b0162004f5e565b60018060a01b0391549060031b1c166200c91a610a40516103c05162004d46565b526200c929610a405162004cdf565b610a40526200c8c2565b50979294959093985095909560005b8281106200c9de575050506104a05162004cfd576103c051516001600160401b03811162002a9b576200c98081611fbc6102205160031b016200509a565b60206103c05101611fbc6102205160031b01600052602060002060005b8381106200c9c057505050506200c9b49062004cdf565b9492959091956200c672565b82516001600160a01b0316818301556020909201916001016200c99d565b6200ca24906001600160a01b036200c9f7828562004d46565b51166200ca0b610a40516103c05162004d46565b526200ca1a610a405162004cdf565b610a405262004cdf565b6200c942565b90926020810151602681101562002a23576004036200d0575760400160c0936200ca686200ca5c868451015162004cef565b51958351015162004d13565b51906200ca7f60a06200779b818651015162004cef565b51936200ca94875184511462000fa3620331b7565b6200caa7875185511462000fa3620331b7565b6200caba875186511462000fa3620331b7565b60005b87518110156200cb25576200cad3818662004d46565b51906103e882101562004cfd576200cb1f91611fbb906001600160a01b036200cafd848d62004d46565b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b6200cabd565b509095919593929360005b83518110156200cc88576200cb46818762004d46565b516103e881101562004cfd57611fbb906001600160a01b036200cb6a848862004d46565b511660005260031b016020526200cb8c60406000205462007d56838862004d46565b906200cb99838962004d46565b51916103e883101562004cfd576200cbdf92611fbb906001600160a01b036200cbc3878b62004d46565b511660005260031b0160205260406000205562000fa3620332bb565b6200cbeb818762004d46565b516103e881101562004cfd57611fbb906001600160a01b036200cc0f848c62004d46565b511660005260031b016020526200cc3160406000205462006814838862004d46565b9190506200cc40818862004d46565b51916103e883101562004cfd576200cc8292611fbb906001600160a01b036200cc6a858e62004d46565b511660005260031b0160205260406000205562004cdf565b6200cb30565b5091936200cca491935062007e47620084799197969762032f53565b6000945b80518610156200c233576200ccbe868262004d46565b51610280526200cccf855162004e62565b966000946200ccdf845162004e62565b6107005260009460005b88518110156200cdb1578a896200cd196001600160a01b036200cd0d858462004d46565b51166102805162032d92565b15806200cd69575b6200cd3a575b50506200cd349062004cdf565b6200cce9565b986200cd5e9162001ac782859c62007f376200cd349760018060a01b039262004d46565b9790508a896200cd27565b5050506103e861028051101562004cfd576001600160a01b036200cd8e828b62004d46565b5116600052611fbb6102805160031b016020528a8960406000205415156200cd21565b50909895979498969291939660005b88518110156200ce4f576103e861028051101562004cfd576001600160a01b03806200cded838c62004d46565b5116600052611fbb6102805160031b01602052604060002054156200ce1f575b506200ce199062004cdf565b6200cdc0565b819b6200ce47916200ce366200ce19948d62004d46565b511662001ac7826107005162004d46565b9a906200ce0d565b50985096959291909396610280516103e881101580610a005262004cfd5760031b611fbc0154986200ce8662008068898c62006200565b610260526000610780526000610620525b610a005162004cfd57610620518a8110156200cf60576200cecd6200ceed916000610a0052611fbc6102805160031b0162004f5e565b9054610700516001600160a01b03939260031b9190911c83169062032dea565b156200cf0d575b506200cf036106205162004cdf565b610620526200ce97565b6000610a00526200cf2c61062051611fbc6102805160031b0162004f5e565b90549060031b1c166200cf46610780516102605162004d46565b526200cf556107805162004cdf565b61078052386200cef4565b50979294959093985095909560005b8281106200d00b57505050610a005162004cfd5761026051516001600160401b03811162002a9b576200cfad81611fbc6102805160031b016200509a565b60206102605101611fbc6102805160031b01600052602060002060005b8381106200cfed57505050506200cfe19062004cdf565b9492959091956200cca8565b82516001600160a01b0316818301556020909201916001016200cfca565b6200d051906001600160a01b036200d024828562004d46565b51166200d038610780516102605162004d46565b526200d0476107805162004cdf565b6107805262004cdf565b6200cf6f565b92906020840151602681101562002a23576005036200d5b15760408401906200d08a60a06200851e818551015162004cef565b519282518451036200ad0a5760005b83518110156200d0f4576200d0af818562004d46565b51906103e882101562004cfd57611fbb6200d0ee9260018060a01b038a511660005260031b0160205262000faa60406000205462007ce9838962004d46565b6200d099565b509060005b83518110156200d19b576200d10f818562004d46565b516103e881101562004cfd57611fbb9060018060a01b0389511660005260031b016020526200d14960406000205462007d56838862004d46565b91906200d157828762004d46565b51906103e882101562004cfd576200d19593611fbb62000faa9360018060a01b038d511660005260031b0160205260406000205562000fa3620332bb565b6200d0f9565b50916200d1ac919495935062032f53565b92604051926200d1bc8462002b78565b6001845260203681860137516001600160a01b03166200d1dc8462004cef565b52604051926200d1ec8462002b3f565b6000845260003681376000945b80518610156200c233576200d20f868262004d46565b516107c0526200d220855162004e62565b966000946200d230845162004e62565b6102405260009460005b88518110156200d302578a896200d26a6001600160a01b036200d25e858462004d46565b51166107c05162032d92565b15806200d2ba575b6200d28b575b50506200d2859062004cdf565b6200d23a565b986200d2af9162001ac782859c62007f376200d2859760018060a01b039262004d46565b9790508a896200d278565b5050506103e86107c051101562004cfd576001600160a01b036200d2df828b62004d46565b5116600052611fbb6107c05160031b016020528a8960406000205415156200d272565b50909895979498969291939660005b88518110156200d3a7576103e86107c051101562004cfd576001600160a01b036200d33d828b62004d46565b5116600052611fbb6107c05160031b01602052604060002054156200d36e575b6200d3689062004cdf565b6200d311565b996200d368906200d39e906001600160a01b036200d38d8e8d62004d46565b511662001ac7826102405162004d46565b9a90506200d35d565b509850969592919093966107c0516103e8811015806109e05262004cfd5760031b611fbc0154986200d3de62008068898c62006200565b610560526000610420526000610480525b6109e05162004cfd57610480518a8110156200d4ba576200d4256200d4429160006109e052611fbc6107c05160031b0162004f5e565b90546102405160039290921b1c6001600160a01b03169062032dea565b156200d461575b6200d4576104805162004cdf565b610480526200d3ef565b60006109e0526200d48061048051611fbc6107c05160031b0162004f5e565b60018060a01b0391549060031b1c166200d4a1610420516105605162004d46565b526200d4b06104205162004cdf565b610420526200d449565b50979294959093985095909560005b8281106200d565575050506109e05162004cfd5761056051516001600160401b03811162002a9b576200d50781611fbc6107c05160031b016200509a565b60206105605101611fbc6107c05160031b01600052602060002060005b8381106200d54757505050506200d53b9062004cdf565b9492959091956200d1f9565b82516001600160a01b0316818301556020909201916001016200d524565b6200d5ab906001600160a01b036200d57e828562004d46565b51166200d592610420516105605162004d46565b526200d5a16104205162004cdf565b6104205262004cdf565b6200d4c9565b926020810151602681101562002a23576006036200db9a576040016200d5dc60c08251015162004cef565b51936200d5f360a06200851e818551015162004cef565b519285518351036200db485785518451036200dafb5760005b86518110156200d674576200d622818562004d46565b51906103e882101562004cfd576200d66e91611fbb906001600160a01b036200d64c848c62004d46565b511660005260031b0160205262000faa60406000205462007ce9838962004d46565b6200d60c565b509060005b86518110156200d718576200d68f818562004d46565b516103e881101562004cfd57611fbb906001600160a01b036200d6b3848b62004d46565b511660005260031b016020526200d6d560406000205462007d56838862004d46565b91906200d6e3828762004d46565b51906103e882101562004cfd576200d7129362000faa92611fbb906001600160a01b036200cbc3878f62004d46565b6200d679565b50916200d72f919350620084799095949562032f53565b91604051926200d73f8462002b3f565b6000845260003681376000945b80518610156200c233576200d762868262004d46565b51610aa0526200d773855162004e62565b966000946200d783845162004e62565b6109c05260009460005b88518110156200d855578a896200d7bd6001600160a01b036200d7b1858462004d46565b5116610aa05162032d92565b15806200d80d575b6200d7de575b50506200d7d89062004cdf565b6200d78d565b986200d8029162001ac782859c62007f376200d7d89760018060a01b039262004d46565b9790508a896200d7cb565b5050506103e8610aa051101562004cfd576001600160a01b036200d832828b62004d46565b5116600052611fbb610aa05160031b016020528a8960406000205415156200d7c5565b50909895979498969291939660005b88518110156200d8f3576103e8610aa051101562004cfd576001600160a01b03806200d891838c62004d46565b5116600052611fbb610aa05160031b01602052604060002054156200d8c3575b506200d8bd9062004cdf565b6200d864565b819b6200d8eb916200d8da6200d8bd948d62004d46565b511662001ac7826109c05162004d46565b9a906200d8b1565b50985096959291909396610aa0516103e8811015806102e05262004cfd5760031b611fbc0154986200d92a62008068898c62006200565b6109a05260006102a05260006107e0525b6102e05162004cfd576107e0518a8110156200da04576200d9716200d9919160006102e052611fbc610aa05160031b0162004f5e565b90546109c0516001600160a01b03939260031b9190911c83169062032dea565b156200d9b1575b506200d9a76107e05162004cdf565b6107e0526200d93b565b60006102e0526200d9d06107e051611fbc610aa05160031b0162004f5e565b90549060031b1c166200d9ea6102a0516109a05162004d46565b526200d9f96102a05162004cdf565b6102a052386200d998565b50979294959093985095909560005b8281106200daaf575050506102e05162004cfd576109a051516001600160401b03811162002a9b576200da5181611fbc610aa05160031b016200509a565b60206109a05101611fbc610aa05160031b01600052602060002060005b8381106200da9157505050506200da859062004cdf565b9492959091956200d74c565b82516001600160a01b0316818301556020909201916001016200da6e565b6200daf5906001600160a01b036200dac8828562004d46565b51166200dadc6102a0516109a05162004d46565b526200daeb6102a05162004cdf565b6102a05262004cdf565b6200da13565b60405162461bcd60e51b8152602060048201526030602482015260008051602062033aec83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b815260206004820152603560248201526000805160206203372c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b602081949293940151602681101562002a23576007036200dd3557604001916200dbc960c08451015162004cef565b51916200dbdb60a08551015162004cef565b51935151916200dbf3845186511462000fa3620331b7565b60005b84518110156200dd23576001600160a01b03806200dc15838862004d46565b5116600052613ef8806020526200dc3960ff604060002054161562000fa362033288565b60026200dc47848862004d46565b516200dcb16200dc58868c62004d46565b5191620088728b604051966200dc6e8862002a7f565b60018852886200dc958b60208b01946000865260408c0197885260608c01998a5262004d46565b51166000526020526200886860406000209751151588620057f2565b519101556200dcc1828762004d46565b51613ef954929116600160401b83101562002a9b576001830180613ef95583101562004cfd57613ef96000526000805160206203398c83398151915290920180546001600160a01b0319169092179091556200dd1d9062004cdf565b6200dbf6565b5094915092506200c245915062004cdf565b6020810151602681101562002a23576008036200de235760c060406200dd5f920151015162004cef565b519160005b83518110156200de14576200de0e906001600160a01b03806200dd88838862004d46565b5116600052613ef890816020526200ddb1600160ff6040600020541615151462000fa3620331e7565b806200ddbe848962004d46565b5116600052816020526200dde260ff60406000205460081c161562000fa36203324f565b6200ddee838862004d46565b5116600052602052604060002061010061ff001982541617905562004cdf565b6200dd64565b50926200c24591925062004cdf565b6020810151602681101562002a23576009036200df025760c060406200de4d920151015162004cef565b519160005b83518110156200de14576200defc906001600160a01b03806200de76838862004d46565b5116600052613ef890816020526200de9f600160ff6040600020541615151462000fa3620331e7565b806200deac848962004d46565b5116600052816020526200ded4600160ff60406000205460081c1615151462000fa36203321a565b6200dee0838862004d46565b5116600052602052604060002061ff0019815416905562004cdf565b6200de52565b6020810151602681101562002a2357600a036200dfea57604001906200df3e60a06200df3360c08551015162004cef565b519351015162004cef565b51926200df53835185511462000fa3620331b7565b60005b83518110156200dfd9576200dfd3906001600160a01b03806200df7a838862004d46565b5116600052613ef8806020526200dfa2600160ff6040600020541615151462000fa3620331e7565b6200dfae838962004d46565b51916200dfbc848962004d46565b511660005260205260026040600020015562004cdf565b6200df56565b50939092506200c245915062004cdf565b602081949392940151602681101562002a2357600b036200e0ca57604001926200e01960c08551015162004cef565b51935151916200e031855184511462000fa3620331b7565b60005b85518110156200e0ba576200e0b49062000faa6001600160a01b03806200e05c848b62004d46565b5116600052613ef8806020526200e084600160ff6040600020541615151462000fa3620331e7565b6200e090848962004d46565b51916200e09e858c62004d46565b511660005260205260016040600020016200571f565b6200e034565b509350916200c245915062004cdf565b9091926020820151602681101562002a2357600c036200e1b557606060408301510151926200e0f9846202d698565b60005b84518110156200dfd95760c06200e11c8260606040880151015162004d46565b510151156200e170576200e1446200e13d8260606040880151015162004d46565b5162005d8c565b613efa54908160001981011162001e0757600562008ca96200e16a936000190162005cda565b6200e0fc565b6200e18f6200e1888260606040880151015162004d46565b5162005d69565b613efb54908160001981011162001e0757600562008ca96200e16a936000190162005c9a565b9291906020810151602681101562002a2357600d036200e2bf576040019260206200e1e560a08651015162004cef565b5194510151916200e1fa85518451146202dd8c565b60005b85518110156200e0ba57806200e2186200e26c928662004d46565b51156200e272576200e23b6200e22f828962004d46565b51613efa54116202de15565b6200e25a60ff600562008db66200e253858c62004d46565b5162005cda565b600562008dd26200e253838a62004d46565b6200e1fd565b6200e28e6200e282828962004d46565b51613efb54116202de15565b6200e2ad60ff600562008db66200e2a6858c62004d46565b5162005c9a565b600562008dd26200e2a6838a62004d46565b6020810151602681101562002a2357600e036200e3b8576040019260206200e2ec60a08651015162004cef565b5194510151916200e30185518451146202dd8c565b60005b85518110156200e0ba57806200e31f6200e36c928662004d46565b51156200e372576200e3426200e336828962004d46565b51613efa54116202dece565b6200e35a60ff600562008ed96200e253858c62004d46565b600562008ca96200e253838a62004d46565b6200e304565b6200e38e6200e382828962004d46565b51613efb54116202dece565b6200e3a660ff600562008ed96200e2a6858c62004d46565b600562008ca96200e2a6838a62004d46565b9091926020820151602681101562002a2357600f036200e49557606060408301510151926200e3e7846202d698565b60005b84518110156200dfd95760c06200e40a8260606040880151015162004d46565b510151156200e457576200e42b6200e13d8260606040880151015162004d46565b613efa54908160001981011162001e0757600562008dd26200e451936000190162005cda565b6200e3ea565b6200e46f6200e1888260606040880151015162004d46565b613efb54908160001981011162001e0757600562008dd26200e451936000190162005c9a565b9291906020810151602681101562002a23576010036200e5da5760400151926200e4c860a0608086015195015162004cef565b51916200e4dd855184511462000fa3620331b7565b60005b85518110156200e0ba57806200e4fb6200e570928862004d46565b516200e5078162002fc4565b6200e513828762004d46565b51906200e5208162002fc4565b6200e5376200e52e620332ea565b82151562004cac565b6200e5428162002fc4565b600181036200e57657506200e5666200e55a620332ea565b61271083111562004cac565b613f675562004cdf565b6200e4e0565b6200e5818162002fc4565b600281036200e5955750613f685562004cdf565b6200e5a08162002fc4565b600381036200e5b45750613f695562004cdf565b806200e5c260049262002fc4565b146200e5cf575062004cdf565b613f6a55386200a043565b6020810151602681101562002a23576011036200e87d57604001906200e60b60a06200df3360c08551015162004cef565b51936200e61c83518651146202d510565b60005b83518110156200e69c576200e696906200e6766001600160a01b03806200e647848962004d46565b5116600052613efd90816020526200e66a60406000205462006814868d62004d46565b939062000fa36203316d565b6200e682848962004d46565b511660005260205260406000205562004cdf565b6200e61f565b509350906200e6ab9062032e37565b90613efe54936200e6c26200806884518762006200565b9060009260005b8781106200e83d575060005b85518110156200e78a576000805b8981106200e73b575b50156200e705575b6200e6ff9062004cdf565b6200e6d5565b936200e6ff906200e732906001600160a01b036200e724888a62004d46565b511662001ac7828862004d46565b9490506200e6f4565b6200e7468162004f26565b90546001600160a01b0360039290921b1c8116906200e766858b62004d46565b5116146200e77f576200e7799062004cdf565b6200e6e3565b50506001386200e6ec565b5095509392506200e79b8262004e62565b8051906001600160401b03821162002a9b576020906200e7bb8362005041565b01613efe600052602060002060005b8381106200e81f575050505060005b8281106200e7ef575050506200c2459062004cdf565b6200e8199062000faa6001600160a01b036200e80c838662004d46565b511662001a088362004f26565b6200e7d9565b82516001600160a01b0316818301556020909201916001016200e7ca565b936200e8706200e877916200e8528762004f26565b905460039190911b1c6001600160a01b031662001ac7828862004d46565b9462004cdf565b6200e6c9565b6020819492940151602681101562002a23576012036200eac157604001906200e8b160a06200df3360c08551015162004cef565b51936200e8c283518651146202d510565b60005b83518110156200e916576200e910906200e6766001600160a01b03806200e8ed848962004d46565b5116600052613efd90816020526200e66a60406000205462007d56868d62004d46565b6200e8c5565b50935091906200e9269062032e37565b613efe546200e9358162004e62565b906000926000915b8083106200e9e8575050506200e9538262004e62565b8051906001600160401b03821162002a9b576020906200e9738362005041565b01613efe600052602060002060005b8381106200e9ca575050505060005b8281106200e9a7575050506200c2459062004cdf565b6200e9c49062000faa6001600160a01b036200e80c838662004d46565b6200e991565b82516001600160a01b0316818301556020909201916001016200e982565b91956000959193959760005b85518110156200eab2576200ea098962004f26565b90546001600160a01b0360039290921b1c8116906200ea29838962004d46565b5116146200ea42576200ea3c9062004cdf565b6200e9f4565b509750956001959391955b806200ea81575b156200ea6c576200ea659062004cdf565b916200e93d565b936200e8706200ea65916200e8528762004f26565b506200ea8d8162004f26565b60018060a01b0391549060031b1c16600052613efd602052604060002054156200ea54565b5097969096959391956200ea4d565b6020819493940151602681101562002a23576013036200eb625760408091015101519160005b83518110156200de14576200eafd818562004d46565b5190613efc54600160401b81101562002a9b576001810180613efc5581101562004cfd57613efc6000526200eb5c9262000faa916007027f6710e0bb821cd3dfcfba05f5136082a6d0bca8d604d6d14bfd93de2dd49659d2016202f19f565b6200eae7565b602081949392940151602681101562002a23576014036200f0a457604001906200eb9160c08351015162004cef565b51936200eba860a06200779b818651015162004cef565b51916200ebb986518551146202df8a565b6200ebc886518451146202dff0565b60005b86518110156200ecc2576200ebe1818562004d46565b516200ebee828762004d46565b51906103e882101562004cfd57611fbe6200ec0f9260031b0154906200608f565b906200ec1c838862004d46565b51916103e883101562004cfd57611fbe6200ec3c9360031b01556202e0aa565b6200ec48818562004d46565b516200ec55828762004d46565b51906103e882101562004cfd576200ec7f91611fbb906001600160a01b036200bddd868d62004d46565b91906200ec8d828862004d46565b51906103e882101562004cfd576200ecbc9362000faa92611fbb906001600160a01b036200be33878f62004d46565b6200ebcb565b50926200ecd9919250620084799095949562032f53565b916040516200ece88162002b3f565b6000815260003681376000945b80518610156200c233576200ed0b868262004d46565b516106e0526200ed1c855162004e62565b966000946200ed2c845162004e62565b6103005260009460005b88518110156200edfe578a896200ed666001600160a01b036200ed5a858462004d46565b51166106e05162032d92565b15806200edb6575b6200ed87575b50506200ed819062004cdf565b6200ed36565b986200edab9162001ac782859c62007f376200ed819760018060a01b039262004d46565b9790508a896200ed74565b5050506103e86106e051101562004cfd576001600160a01b036200eddb828b62004d46565b5116600052611fbb6106e05160031b016020528a8960406000205415156200ed6e565b50909895979498969291939660005b88518110156200ee9c576103e86106e051101562004cfd576001600160a01b03806200ee3a838c62004d46565b5116600052611fbb6106e05160031b01602052604060002054156200ee6c575b506200ee669062004cdf565b6200ee0d565b819b6200ee94916200ee836200ee66948d62004d46565b511662001ac7826103005162004d46565b9a906200ee5a565b509850969592919093966106e0516103e8811015806103405262004cfd5760031b611fbc0154986200eed362008068898c62006200565b610440526000610900526000610980525b6103405162004cfd57610980518a8110156200efad576200ef1a6200ef3a91600061034052611fbc6106e05160031b0162004f5e565b9054610300516001600160a01b03939260031b9190911c83169062032dea565b156200ef5a575b506200ef506109805162004cdf565b610980526200eee4565b6000610340526200ef7961098051611fbc6106e05160031b0162004f5e565b90549060031b1c166200ef93610900516104405162004d46565b526200efa26109005162004cdf565b61090052386200ef41565b50979294959093985095909560005b8281106200f058575050506103405162004cfd5761044051516001600160401b03811162002a9b576200effa81611fbc6106e05160031b016200509a565b60206104405101611fbc6106e05160031b01600052602060002060005b8381106200f03a57505050506200f02e9062004cdf565b9492959091956200ecf5565b82516001600160a01b0316818301556020909201916001016200f017565b6200f09e906001600160a01b036200f071828562004d46565b51166200f085610900516104405162004d46565b526200f0946109005162004cdf565b6109005262004cdf565b6200efbc565b926020840151602681101562002a23576015036200f6a55760408401906200f0d160c08351015162004cef565b51906200f0e860a06200779b818651015162004cef565b51936200f0fd835185511462000fa3620331b7565b6200f110835186511462000fa3620331b7565b60005b83518110156200f16e576200f129818662004d46565b51906103e882101562004cfd57611fbb6200f1689260018060a01b038b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b6200f113565b509095919560005b87518110156200f2a0576200f18c818662004d46565b516103e881101562004cfd57611fbb9060018060a01b0386511660005260031b016020526200f1c660406000205462007d56838962004d46565b906200f1d3838862004d46565b51916103e883101562004cfd57611fbb6200f20c9360018060a01b0389511660005260031b0160205260406000205562000fa3620332bb565b6200f218818662004d46565b516103e881101562004cfd57611fbb906001600160a01b036200f23c848c62004d46565b511660005260031b016020526200f25e60406000205462006814838962004d46565b91906200f26c828862004d46565b51906103e882101562004cfd576200f29a93611fbb62000faa938d6200c5fc8760018060a01b039262004d46565b6200f176565b50926200f2b8919294506200c6369096959662032f53565b92604051906200f2c88262002b78565b6001825260203681840137516001600160a01b03166200f2e88262004cef565b526000945b80518610156200c233576200f303868262004d46565b51610a60526200f314855162004e62565b966000946200f324845162004e62565b6108405260009460005b88518110156200f3f6578a896200f35e6001600160a01b036200f352858462004d46565b5116610a605162032d92565b15806200f3ae575b6200f37f575b50506200f3799062004cdf565b6200f32e565b986200f3a39162001ac782859c62007f376200f3799760018060a01b039262004d46565b9790508a896200f36c565b5050506103e8610a6051101562004cfd576001600160a01b036200f3d3828b62004d46565b5116600052611fbb610a605160031b016020528a8960406000205415156200f366565b50909895979498969291939660005b88518110156200f49b576103e8610a6051101562004cfd576001600160a01b036200f431828b62004d46565b5116600052611fbb610a605160031b01602052604060002054156200f462575b6200f45c9062004cdf565b6200f405565b996200f45c906200f492906001600160a01b036200f4818e8d62004d46565b511662001ac7826108405162004d46565b9a90506200f451565b50985096959291909396610a60516103e8811015806106805262004cfd5760031b611fbc0154986200f4d262008068898c62006200565b6108605260006106c0526000610880525b6106805162004cfd57610880518a8110156200f5ae576200f5196200f53691600061068052611fbc610a605160031b0162004f5e565b90546108405160039290921b1c6001600160a01b03169062032dea565b156200f555575b6200f54b6108805162004cdf565b610880526200f4e3565b6000610680526200f57461088051611fbc610a605160031b0162004f5e565b60018060a01b0391549060031b1c166200f5956106c0516108605162004d46565b526200f5a46106c05162004cdf565b6106c0526200f53d565b50979294959093985095909560005b8281106200f659575050506106805162004cfd5761086051516001600160401b03811162002a9b576200f5fb81611fbc610a605160031b016200509a565b60206108605101611fbc610a605160031b01600052602060002060005b8381106200f63b57505050506200f62f9062004cdf565b9492959091956200f2ed565b82516001600160a01b0316818301556020909201916001016200f618565b6200f69f906001600160a01b036200f672828562004d46565b51166200f6866106c0516108605162004d46565b526200f6956106c05162004cdf565b6106c05262004cdf565b6200f5bd565b9091926020810151602681101562002a23576016036200f7575760c060406200f6d2920151015162004cef565b519160005b83518110156200de14576001600160a01b036200f6f5828662004d46565b51613f6b54929116600160401b83101562002a9b576001830180613f6b5583101562004cfd57613f6b6000526000805160206203376c83398151915290920180546001600160a01b0319169092179091556200f7519062004cdf565b6200f6d7565b6020810151602681101562002a23576017036200f7b45760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a23576018036200f8725760c060406200f7de920151015162004cef565b5191600160ff19613f6e541617613f6e5560005b83518110156200de14576001600160a01b036200f810828662004d46565b51613f6d54929116600160401b83101562002a9b576001830180613f6d5583101562004cfd57613f6d6000526000805160206203396c83398151915290920180546001600160a01b0319169092179091556200f86c9062004cdf565b6200f7f2565b602081949293940151602681101562002a23576019036200f89a575b506200c2459062004cdf565b6020810151602681101562002a2357601a036200fa115760a060406200f8c4920151015162004cef565b51906200f8d560038351146202d510565b6200f8e08262004cef565b516200f8f062009fdc8462004d13565b51926200f9d5576200c245926001036200f9ce576200f9176200f97591613f69546200608f565b613f6955604051906200f92a8262002b06565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004cac565b6200f9c76200f987613f6a546200607c565b613f6a55604051906200f99a8262002b78565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004cac565b906200f88e565b506200f9c7565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b6020810151602681101562002a2357601b036200ffa157509190613f67546200fa3d6200a0b962033044565b613f6a54613f685411156200fa5c6200fa55620330b2565b8262004cac565b613f6954906200fa6d838362005eb0565b50506200fa7962033108565b506000805b6103e882106200ff52575b5050906200fab96200fabf93926200faaf6200faa462033044565b612710861062004cac565b62000fa3620330b2565b62005eb0565b90506200facb62033108565b5060009060005b6103e881106200fe7f575b50906127106200faee9204620061de565b90506200fafe613f745462004e62565b906000946000905b6103e88210156200fe72578160031b9460ff611fbf87015416156200fc5c57600096611fba870154156200fc4b57600098975b62004cfd57611fbc8701548910156200fc31576200fb5c89611fbc890162004f5e565b600160a01b6001900391549060031b1c169788600052611fbb8801602052604098868a60002054906200fb8f9162005eb0565b9a906200fb9b62033108565b6200fba69162004cac565b60009a611fba8b01546200fbba9162005eb0565b91906200fbc662033108565b6200fbd19162004cac565b82600052613eff602052600020908154906200fbed916200608f565b9091556200fbfa62033108565b6200fc059162004cac565b6200fc11828962004d46565b526200fc1d9062004cdf565b986200fc299062004cdf565b98976200fb39565b929095506200fc439196975062004cdf565b90946200fb06565b929095506200fc4391965062004cdf565b95969392509350505b6200fc708262004e62565b9160009160005b8281106200fddc57505050613f0054916200fc9762008068848462006200565b926000906000905b8082106200fdbf57505060005b8381106200fd295750508251929150506001600160401b03821162002a9b576020906200fcd98362005064565b01613f00600052602060002060005b8381106200fd0b57505050506200c245906000613f69556000613f6a556200f9c7565b82516001600160a01b0316818301556020909201916001016200fce8565b6000805b8381106200fd77575b50156200fd4f575b6200fd499062004cdf565b6200fcac565b906200fd49906200fd6e906001600160a01b03620081f0858762004d46565b9190506200fd3e565b6001600160a01b03806200fd8c858862004d46565b5116906200fd9b838a62004d46565b5116146200fdb4576200fdae9062004cdf565b6200fd2d565b50506001386200fd36565b9091620081fe6200fdd591620094f58562004f42565b906200fc9f565b6000805b8581106200fe2a575b50156200fe02575b6200fdfc9062004cdf565b6200fc77565b926200fdfc906200fe21906001600160a01b03620081f0878662004d46565b9390506200fdf1565b6001600160a01b03806200fe3f858762004d46565b5116906200fe4e838a62004d46565b5116146200fe67576200fe619062004cdf565b6200fde0565b50506001386200fde9565b939495929150506200fc65565b90918160039695961b60ff611fbf82015416156200ff4657611fba810154611fbc8201546000928391825b8184106200fee65750505050620074616200fedd936200fed562000faa979694620022e49462005eb0565b929062005daf565b9493946200fad2565b94929462004cfd576200ff3f856200ff376200ff0b62000faa98611fbc870162004f5e565b905460039190911b1c6001600160a01b03166000908152611fbb8601602052604081205490966200608f565b979062005ed2565b926200feaa565b5091909493946200fadd565b8160039897981b60ff611fbf82015416156200ff9757916200a4f8620074616200ff8d936200a4ec62000faa96611fba6200a4e28762005e52565b909695966200fa7e565b509695966200fa89565b6020810151602681101562002a2357601c036200fffe5760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601d0362010022575b506200c245906200f9c7565b9290916020840151602681101562002a2357601e036201075857604084019060a09062010053828451015162004cef565b515162010064838551015162004d13565b5151036200ade9576201007b828451015162004cef565b51516201008c838551015162004d24565b5151036200ad6d57620100a3828451015162004cef565b5194620100b4838551015162004d13565b5191620100c96200a641858751015162004d24565b519585518751036200ad0a5760005b86518110156201013357620100ee818862004d46565b51906103e882101562004cfd57611fbb6201012d9260018060a01b038d511660005260031b0160205262000faa60406000205462007ce9838c62004d46565b620100d8565b5090969192939660005b8651811015620101e05762010153818862004d46565b516103e881101562004cfd57611fbb9060018060a01b038c511660005260031b016020526201018d60406000205462007d56838b62004d46565b91906201019b828a62004d46565b51906103e882101562004cfd57620101da93611fbb62000faa938f60018060a01b0390511660005260031b0160205260406000205562000fa3620332bb565b6201013d565b5093969297955093620101f39062032f53565b9660405196620102038862002b78565b60018852602036818a013786516001600160a01b0316620102248962004cef565b5260405196620102348862002b3f565b600088526000610600525b89516106005190811015620105fa576201025a908b62004d46565b51610960526201026b885162004e62565b996000976201027b8b5162004e62565b6103605260009760005b8b518110156201034d578d8c620102b56001600160a01b03620102a9858462004d46565b51166109605162032d92565b158062010305575b620102d6575b5050620102d09062004cdf565b62010285565b9b620102fa9162001ac782859f62007f37620102d09760018060a01b039262004d46565b9a90508d8c620102c3565b5050506103e861096051101562004cfd576001600160a01b036201032a828e62004d46565b5116600052611fbb6109605160031b016020528d8c6040600020541515620102bd565b50909b989a99949691929395979b60005b8b51811015620103f4576103e861096051101562004cfd576001600160a01b036201038a828e62004d46565b5116600052611fbb6109605160031b0160205260406000205415620103bb575b620103b59062004cdf565b6201035e565b9c620103eb620103b5918f620103da8f9160018060a01b039262004d46565b511662001ac7826103605162004d46565b9d9050620103aa565b509b5098959092949691939661096051996103e88b10159c8d62004cfd576201042c62008068611fbc8f9e60031b01549e8f62006200565b6108005260006107a0528d60009e5b62004cfd578d8f1015620104fc575060009d620104846201046782611fbc6109605160031b0162004f5e565b90546103605160039290921b1c6001600160a01b03169062032dea565b156201049e575b620104978f9162004cdf565b9e6201043b565b620104979e5060009e8f91620104bf81611fbc6109605160031b0162004f5e565b60018060a01b0391549060031b1c16620104e06107a0516108005162004d46565b52620104ef6107a05162004cdf565b6107a0529150506201048b565b9396999b929d509396999094979b5060005b828110620105ae5750505062004cfd5761080051516001600160401b03811162002a9b576201054881611fbc6109605160031b016200509a565b6020610800510190611fbc6109605160031b0160005260206000209160005b828110620105905750505050620105816106005162004cdf565b6106005295989094986201023f565b81516001600160a01b03168185015560209091019060010162010567565b620105f4906001600160a01b03620105c7828562004d46565b5116620105db6107a0516108005162004d46565b52620105ea6107a05162004cdf565b6107a05262004cdf565b6201050e565b509492975094955091965060009460005b87518110156201065e57620106296200abc66200abb9838962004d46565b8062010642575b506201063c9062004cdf565b6201060b565b906200abfc62010657986201063c936200608f565b9062010630565b5096509450915091806201067c575b506200c24591505b9062010016565b620106a79060018060a01b038451166000526200ac5a613efd9182602052604060002054906200608f565b60018060a01b03845116600052602052604060002055600091600092613efe54935b84811062010713575b506201066d57516001600160a01b031691600160401b81101562002a9b576200c2459262001a088260016201070c9401613efe5562004f26565b386201066d565b6201071e8162004f26565b9054845160039290921b1c6001600160a01b039081169116146201074d57620107479062004cdf565b620106c9565b5050600138620106d2565b9190926020810151602681101562002a2357601f03620107d3576040620107829101515162004cef565b5190613f6c54600160401b81101562002a9b576001810180613f6c5581101562004cfd57613f6c6000526200c24592620107cd91600080516020620337ac833981519152016200571f565b62010675565b6020810151602681101562002a2357602003620107f7575b506200c2459062010675565b6020810151602681101562002a2357602114620107eb576020810151602681101562002a23576022036201087d57506200c2459060ff19613f6e5416613f6e55613f6d546000613f6d558062010851575b505b90620107eb565b613f6d60005262010876906000805160206203396c8339815191529081019062004fa3565b3862010848565b6020810151602681101562002a2357602303620108a1575b506200c245906201084a565b6020810151602681101562002a235760241462010895576020810151602681101562002a235760251462010895579290916020840151602681101562002a235760150362010ee5576040840190620108fe60c08351015162004cef565b51906201091560a06200779b818651015162004cef565b51936201092a835185511462000fa3620331b7565b6201093d835186511462000fa3620331b7565b60005b83518110156201099b5762010956818662004d46565b51906103e882101562004cfd57611fbb620109959260018060a01b038b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b62010940565b509095919560005b875181101562010acd57620109b9818662004d46565b516103e881101562004cfd57611fbb9060018060a01b0386511660005260031b01602052620109f360406000205462007d56838962004d46565b9062010a00838862004d46565b51916103e883101562004cfd57611fbb62010a399360018060a01b0389511660005260031b0160205260406000205562000fa3620332bb565b62010a45818662004d46565b516103e881101562004cfd57611fbb906001600160a01b0362010a69848c62004d46565b511660005260031b0160205262010a8b60406000205462006814838962004d46565b919062010a99828862004d46565b51906103e882101562004cfd5762010ac793611fbb62000faa938d6200c5fc8760018060a01b039262004d46565b620109a3565b509262010ae5919294506200c6369096959662032f53565b926040519062010af58262002b78565b6001825260203681840137516001600160a01b031662010b158262004cef565b526000945b805186101562010ed25762010b30868262004d46565b516106a05262010b41855162004e62565b9660009462010b51845162004e62565b6103805260009460005b885181101562010c23578a8962010b8b6001600160a01b0362010b7f858462004d46565b51166106a05162032d92565b158062010bdb575b62010bac575b505062010ba69062004cdf565b62010b5b565b9862010bd09162001ac782859c62007f3762010ba69760018060a01b039262004d46565b9790508a8962010b99565b5050506103e86106a051101562004cfd576001600160a01b0362010c00828b62004d46565b5116600052611fbb6106a05160031b016020528a89604060002054151562010b93565b50909895979498969291939660005b885181101562010cc8576103e86106a051101562004cfd576001600160a01b0362010c5e828b62004d46565b5116600052611fbb6106a05160031b016020526040600020541562010c8f575b62010c899062004cdf565b62010c32565b9962010c899062010cbf906001600160a01b0362010cae8e8d62004d46565b511662001ac7826103805162004d46565b9a905062010c7e565b509850969592919093966106a0516103e8811015806106605262004cfd5760031b611fbc01549862010cff62008068898c62006200565b6105e0526000610820526000610500525b6106605162004cfd57610500518a81101562010ddb5762010d4662010d6391600061066052611fbc6106a05160031b0162004f5e565b90546103805160039290921b1c6001600160a01b03169062032dea565b1562010d82575b62010d786105005162004cdf565b6105005262010d10565b60006106605262010da161050051611fbc6106a05160031b0162004f5e565b60018060a01b0391549060031b1c1662010dc2610820516105e05162004d46565b5262010dd16108205162004cdf565b6108205262010d6a565b50979294959093985095909560005b82811062010e86575050506106605162004cfd576105e051516001600160401b03811162002a9b5762010e2881611fbc6106a05160031b016200509a565b60206105e05101611fbc6106a05160031b01600052602060002060005b83811062010e68575050505062010e5c9062004cdf565b94929590919562010b1a565b82516001600160a01b03168183015560209092019160010162010e45565b62010ecc906001600160a01b0362010e9f828562004d46565b511662010eb3610820516105e05162004d46565b5262010ec26108205162004cdf565b6108205262004cdf565b62010dea565b5050939092506200c24591509062010895565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b5091905062010f32826201561e565b9290600681101562002a23576002810362010f625760405162461bcd60e51b81528062004cdb600482016200758f565b6003810362011ef65750613f738054600260ff821662010f828162002a18565b1462011eb15760ff19166002179055613f78549060018201821162001e075760018201613f7855611f44549092600019929060005b8651811015620110335762010fda8462010fd2838a62004d46565b511062032899565b84600262010ff462010fed848b62004d46565b516202f17f565b500154106201100f575b620110099062004cdf565b62010fb7565b93506201100960026201102762010fed878a62004d46565b50015494905062010ffe565b5090936000199360005b8751811015620110aa57620110588562010fd2838b62004d46565b8560036201106b62010fed848c62004d46565b5001541062011086575b620110809062004cdf565b6201103d565b94506201108060036201109e62010fed888b62004d46565b50015495905062011075565b5091946001919350620110be875162004e62565b620110ca885162004e62565b620110d6895162004e62565b90620110e38a5162004e62565b9260405197620110f38962002ae9565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e0850152600061010085015201600052613f766020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b821162002a9b57600184015482600186015580831062011cf2575b5060200190600184016000526020600020916000905b8282106201168d57505050506040620111ac910151600283016200571f565b60208301518051906001600160401b03821162002a9b5760206003840191620111d684846200509a565b0190600052602060002060005b83811062011678575050505060408301518051906001600160401b03821162002a9b57602060048401916201121984846200509a565b0190600052602060002060005b83811062011663575050505060608301518051906001600160401b03821162002a9b57602060058401916201125c84846200509a565b0190600052602060002060005b8381106201164e575050505060808301518051906001600160401b03821162002a9b57602060068401916201129f84846200509a565b0190600052602060002060005b83811062011639575050505060a0830151600782015560c0830151600882015560e08301519290600901600384101562002a235761010062011304926201130b9560ff80198554169116178355015115159062005803565b426200608f565b9015620115f957613f7854600052613f7660205280600760406000200155613f715562011349613f785491826000526007604060002001546200608f565b919015620115b657600052613f7660205280600860406000200155613f7255613f78546000526009604060002001600260ff1982541617905560005b8251811015620113cb578062000faa620113a4620113c5938662004d46565b51613f7854600052613f7660205262006bbf83600360406000200162004f5e565b62011385565b506000915b8051831015620115b157613f78549283600052613f766020526201140d6201140082600360406000200162004f5e565b90549060031b1c6202f17f565b5054916201141b8362004e62565b9260005b818110620115665750506000906000915b8451831015620115355762011446838662004d46565b516103e8908181101562004cfd5760031b6001015462011467858862004d46565b519182101562004cfd576006620114849260031b01549062005eb0565b9015620114f15762011496916200608f565b929015620114b057620114a99062004cdf565b9162011430565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b90956201155f945062000faa9250600052613f7660205262006bbf83600660406000200162004f5e565b91620113d0565b620115ab9087600052613f766020526201159881620115916201140088600360406000200162004f5e565b5062004f5e565b90549060031b1c62001ac7828862004d46565b6201141f565b509050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620112ac565b60019060208451940193818401550162011269565b60019060208451940193818401550162011226565b600190602084519401938184015501620111e3565b805180518554602083015190916001600160a01b031690602681101562002a23576001600160a81b03199092161760a09190911b60ff60a01b161785556040015180518051906001870190602090620116e7848462005427565b01906000526020600020906000905b83821062011cd25750505050602081015180516001600160401b03811162002a9b57602060028801926201172b83856203239f565b019160005260206000209060005b8160051c811062011c965750601f198116810362011c51575b5050506040810151805190600160401b821162002a9b57600387015482600389015580831062011bc9575b50602001600387016000526020600020906000905b83821062011ba857505050506060810151805190600160401b821162002a9b57600487015482600489015580831062011b27575b50602001600487016000526020600020906000905b83821062011b065750505050608081015180516001600160401b03811162002a9b57602060058801926201181083856203239f565b019160005260206000209060005b8160051c811062011ac75750601f1981169283820362011a78575b505050506006850160a08201516020815191620118578385620054b5565b019160005260206000206000925b82841062011a1457505050506007850160c082015160208151916201188b8385620054b5565b019160005260206000206000925b828410620119a7575050505060e001518051906001600160401b03821162002a9b57620118d982620118cf600889015462002c79565b60088901620056d5565b602090601f83116001146201192c57928260099360209360019660009262011920575b5050600019600383901b1c191690851b1760088801555b019401910190926201118d565b015190503880620118fc565b906008870160005260206000209160005b601f19851681106201198e575083602093600196938793600997601f1981161062011974575b505050811b01600888015562011913565b015160001960f88460031b161c1916905538808062011963565b919260206001819286850151815501940192016201193d565b80518051906001600160401b03821162002a9b57602090620119ca83866200509a565b0183600052602060002060005b838110620119f657505050506001602081920192019301929062011899565b82516001600160a01b031681830155602090920191600101620119d7565b80518051906001600160401b03821162002a9b5760209062011a3783866200509a565b0183600052602060002060005b83811062011a6357505050506001602081920192019301929062011865565b60019060208451940193818401550162011a44565b6000936000905b808403821062011a9b5750505060051c01553880808062011839565b909194602062011abc6001928589519162011ab68362002fc4565b62032409565b960192019062011a7f565b6000805b6020811062011ae25750838201556001016201181e565b9490602062011afc6001928885519162011ab68362002fc4565b9201950162011acb565b600660208262011b1a60019451876200581b565b01930191019091620117db565b600681810204810362001e0757600683810204830362001e07576004880160005260206000208360060281015b826006028201811062011b69575050620117c6565b806000600692556000600182015562011b856002820162005504565b6000600382015562011b9a6004820162005399565b600060058201550162011b54565b600760208262011bbc60019451876202f19f565b0193019101909162011792565b600781810204810362001e0757600783810204830362001e07576003880160005260206000208360070281015b826007028201811062011c0b5750506201177d565b8062011c196007926200501a565b6000600182015560006002820155600060038201556000600482015562011c436005820162005399565b600060068201550162011bf6565b60009260005b601f1983168303811062011c7557505060051c015538808062011752565b9093602062011c8c60019284885115159162032409565b9501910162011c57565b6000805b6020811062011cb157508382015560010162011739565b9490602062011cc860019288855115159162032409565b9201950162011c9a565b600160208262011ce5839451876200571f565b01930191019091620116f6565b600981810204810362001e0757600983810204830362001e07576001850160005260206000208360090281015b826009028201811062011d3457505062011177565b6000815562011d4660018201620053e8565b62011d5b600282018054906000815562032377565b6003810154600060038301558062011e3b575b506004810154600060048301558062011dcc575b508062011d9b6005600993018054906000815562032377565b62011da96006820162005476565b62011db76007820162005476565b62011dc56008820162005399565b0162011d1f565b600681810204810362001e0757600482016000526020600020906006028101905b81811062011dfc575062011d82565b806000600692556000600182015562011e186002820162005504565b6000600382015562011e2d6004820162005399565b600060058201550162011ded565b600781810204810362001e0757600382016000526020600020906007028101905b81811062011e6b575062011d6e565b8062011e796007926200501a565b6000600182015560006002820155600060038201556000600482015562011ea36005820162005399565b600060068201550162011e5c565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b6005919293501462011f055750565b90600080611f4a54905b818110620147bc575b505015620147a0575b60005b602083015190815181101562011f7c5762000faa620076c162011f56620076a16020620067a78662011f769862004d46565b86516001600160a01b03166000908152611f4960205260409020620242c3565b62011f24565b505060005b6020830151805182101562011fc957620076a16020620067a78462011fa69462004d46565b90606482101562004cfd5762011fc3914290611f4b015562004cdf565b62011f81565b50506000905b602083015180518310156200b072578262011fea9162004d46565b516020810151602681101562002a2357156200b02f576020810151602681101562002a23576001036201223257604001906201202b60c08351015162004cef565b51936201204260a06200779b818651015162004cef565b51916201205386518551146202df8a565b6201206286518451146202dff0565b60005b8651811015620121b9576201207b818662004d46565b516103e881101562004cfd57600160ff6007620120a19360031b0154161515146202e052565b620120ad818562004d46565b51620120ba828762004d46565b51906103e882101562004cfd576006620120da9260031b0154906200608f565b90620120e7838862004d46565b51916103e883101562004cfd576006620121069360031b01556202e0aa565b62012112818562004d46565b516201211f828762004d46565b51906103e882101562004cfd5762012160916003906001600160a01b0362012148868d62004d46565b5116600052811b01602052604060002054906200608f565b91906201216e828862004d46565b51906103e882101562004cfd57620121b39362000faa926003906001600160a01b036201219c878f62004d46565b5116600052811b016020526040600020556202e109565b62012065565b5094915091620121cd620121d49162032f53565b9162032e37565b9360405192620121e48462002b3f565b60008452600036813760005b835181101562012215578062000faa620079626201220f938762004d46565b620121f0565b509450926020925062012229915062004cdf565b91905062011fcf565b9091926020820151602681101562002a2357600203620123c9576040809201908151938451916201226c6200c28860a08098015162004cef565b5194835187510362007bd257835185510362007b7e57835186510362007b27575060005b8651811015620123b357620122a6818862004d46565b516103e881101562004cfd5760ff6007620122c89260031b015416156202e162565b620122d4818862004d46565b516103e881101562004cfd5760031b600701805460ff19166001179055620122fd818562004d46565b516201230a828962004d46565b51906103e882101562004cfd576005620123289260031b016200571f565b62012334818662004d46565b5162012341828962004d46565b516103e881101562004cfd5760031b6001015562012360818762004d46565b516201236d828962004d46565b516103e881101562004cfd5760031b600201556201238c818862004d46565b51906103e882101562004cfd5760006006620123ad9360031b015562004cdf565b62012290565b5095915093506020925062012229915062004cdf565b9291906020810151602681101562002a2357600303620123f6576020919262000faa62012229926202e1ae565b6020810151602681101562002a23576004036201269e576201242060c06040830151015162004cef565b51936201243560c06040840151015162004d13565b51906201245c60a06040620124508282880151015162004cef565b51950151015162004d13565b519362012471875184511462000fa3620331b7565b62012484875185511462000fa3620331b7565b62012497875186511462000fa3620331b7565b60005b87518110156201250057620124b0818662004d46565b51906103e882101562004cfd57620124fa916003906001600160a01b03620124d9848d62004d46565b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b6201249a565b509095919593929360005b83518110156201265b5762012521818762004d46565b516103e881101562004cfd576003906001600160a01b0362012544848862004d46565b5116600052811b016020526201256560406000205462007d56838862004d46565b9062012572838962004d46565b51916103e883101562004cfd57620125b6926003906001600160a01b036201259b878b62004d46565b5116600052811b0160205260406000205562000fa3620332bb565b620125c2818762004d46565b516103e881101562004cfd576003906001600160a01b03620125e5848c62004d46565b5116600052811b016020526201260660406000205462006814838862004d46565b91905062012615818862004d46565b51916103e883101562004cfd5762012655926003906001600160a01b036201263e858e62004d46565b5116600052811b0160205260406000205562004cdf565b6201250b565b50936201267591929693506200847962007e479162032f53565b9260005b835181101562012215578062000faa6200796262012698938762004d46565b62012679565b6020810151602681101562002a2357600503620126c8576020919262000faa62012229926202ec1a565b6020810151602681101562002a23576006036201288f57620126f260c06040830151015162004cef565b51936201271960a060406201270d8282870151015162004cef565b51940151015162004d13565b519285518351036200db485785518451036200dafb5760005b8651811015620127985762012748818562004d46565b51906103e882101562004cfd5762012792916003906001600160a01b0362012771848c62004d46565b5116600052811b0160205262000faa60406000205462007ce9838962004d46565b62012732565b509060005b86518110156201283957620127b3818562004d46565b516103e881101562004cfd576003906001600160a01b03620127d6848b62004d46565b5116600052811b01602052620127f760406000205462007d56838862004d46565b919062012805828762004d46565b51906103e882101562004cfd57620128339362000faa926003906001600160a01b036201259b878f62004d46565b6201279d565b5094916201284e919350620121cd9062032f53565b91604051946201285e8662002b3f565b60008652600036813760005b835181101562012215578062000faa6200796262012889938762004d46565b6201286a565b6020810151602681101562002a2357600703620129a15760400192620128ba60c08551015162004cef565b5191620128cc60a08651015162004cef565b5194515191620128e4845187511462000fa3620331b7565b60005b845181101562012215576201299b9062000faa6001600160a01b03806201290f848a62004d46565b51166000528660028b6201298b6201294e876201294681611f4097886020526200880e60ff604060002054161562000fa362033288565b519362004d46565b5191620088728d60405196620129648862002a7f565b60018852886200dc958c60208b01946000865260408c0197885260608c01998a5262004d46565b519101556200888d838962004d46565b620128e7565b6020819493940151602681101562002a235760080362012a385760c06040620129ce920151015162004cef565b519160005b835181101562012a265762012a20906001600160a01b0380620129f7838862004d46565b5116600052611f4090816020526200ddb1600160ff6040600020541615151462000fa3620331e7565b620129d3565b50926020919250620122299062004cdf565b6020810151602681101562002a235760090362012aba5760c0604062012a62920151015162004cef565b519160005b835181101562012a265762012ab4906001600160a01b038062012a8b838862004d46565b5116600052611f4090816020526200de9f600160ff6040600020541615151462000fa3620331e7565b62012a67565b6020810151602681101562002a2357600a0362012b68576040019062012aeb60a06200df3360c08551015162004cef565b519262012b00835185511462000fa3620331b7565b60005b835181101562012b555762012b4f906001600160a01b038062012b27838862004d46565b5116600052611f40806020526200dfa2600160ff6040600020541615151462000fa3620331e7565b62012b03565b5093620122299193506020925062004cdf565b602081949392940151602681101562002a2357600b0362012c1b576040019262012b9760c08551015162004cef565b519351519162012baf855184511462000fa3620331b7565b60005b855181101562012c085762012c029062000faa6001600160a01b038062012bda848b62004d46565b5116600052611f40806020526200e084600160ff6040600020541615151462000fa3620331e7565b62012bb2565b5093509160209150620122299062004cdf565b9091926020820151602681101562002a2357600c0362012cf8576060604083015101519262012c4a846202d698565b60005b845181101562012b555760c062012c6d8260606040880151015162004d46565b5101511562012cba5762012c8e62008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca962012cb4936000190162005cba565b62012c4d565b62012cd262008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca962012cb4936000190162005c7a565b9291906020810151602681101562002a2357600d0362012ddc5760400192602062012d2860a08651015162004cef565b51945101519162012d3d85518451146202dd8c565b60005b855181101562012c08578062012d5b62012d9c928662004d46565b511562012da25762012d7262008d8c828962004d46565b62012d8a60ff600562008db662008daf858c62004d46565b600562008dd262008daf838a62004d46565b62012d40565b62012db262008dfb828962004d46565b62012dca60ff600562008db662008e1e858c62004d46565b600562008dd262008e1e838a62004d46565b6020819492940151602681101562002a2357600e0362012e8b5760400190602062012e0c60a08451015162004cef565b51925101519362012e2183518651146202dd8c565b60005b835181101562012c08578062012e3f62012e4b928862004d46565b5162012e515762004cdf565b62012e24565b62012e6162008eb6828762004d46565b62012e7960ff600562008ed962008daf858a62004d46565b600562008ca962008daf838862004d46565b906020829493940151602681101562002a2357600f0362012f69576060604083015101519262012ebb846202d698565b60005b845181101562012b555760c062012ede8260606040880151015162004d46565b5101511562012f2b5762012eff62008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262012f25936000190162005cba565b62012ebe565b62012f4362008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262012f25936000190162005c7a565b906020819493940151602681101562002a235760100362012fda57604001519062012f9d60a0608084015193015162004cef565b519362012fb2835186511462000fa3620331b7565b60005b835181101562012c08578062000faa6200902b62012fd4938762004d46565b62012fb5565b6020819492940151602681101562002a23576011036201323c57604001906201300e60a06200df3360c08551015162004cef565b51936201301f83518651146202d510565b60005b83518110156201309957620130939062000faa6001600160a01b03806201304a848962004d46565b5116600052611f45806020526201306c60406000205462006814868d62004d46565b9190926201307b868b62004d46565b511660005260205260406000205562000fa36203316d565b62013022565b50935090620130a89062032e37565b90611f465493620130bf6200806884518762006200565b9060009260005b87811062013221575060005b855181101562013179576000805b8981106201312a575b501562013102575b620130fc9062004cdf565b620130d2565b93620130fc9062013121906001600160a01b036200e724888a62004d46565b949050620130f1565b620131358162004eb6565b90546001600160a01b0360039290921b1c81169062013155858b62004d46565b5116146201316e57620131689062004cdf565b620130e0565b5050600138620130e9565b5095509392506201318a8262004e62565b8051906001600160401b03821162002a9b57602090620131aa8362004ff7565b01611f46600052602060002060005b83811062013203575050505060005b828110620131e0575050506201222960209162004cdf565b620131fd9062000faa6001600160a01b03620019fb838662004d46565b620131c8565b82516001600160a01b031681830155602090920191600101620131b9565b936200e87062013236916200e8528762004eb6565b620130c6565b6020819492940151602681101562002a23576012036201348157604001906201327060a06200df3360c08551015162004cef565b51936201328183518651146202d510565b60005b8351811015620132d457620132ce9062000faa6001600160a01b0380620132ac848962004d46565b5116600052611f45806020526201306c60406000205462007d56868d62004d46565b62013284565b5093509190620132e49062032e37565b611f4654620132f38162004e62565b906000926000915b808310620133a857505050620133118262004e62565b8051906001600160401b03821162002a9b57602090620133318362004ff7565b01611f46600052602060002060005b8381106201338a575050505060005b82811062013367575050506201222960209162004cdf565b620133849062000faa6001600160a01b03620019fb838662004d46565b6201334f565b82516001600160a01b03168183015560209092019160010162013340565b91956000959193959760005b85518110156201347257620133c98962004eb6565b90546001600160a01b0360039290921b1c811690620133e9838962004d46565b5116146201340257620133fc9062004cdf565b620133b4565b509750956001959391955b8062013441575b156201342c57620134259062004cdf565b91620132fb565b936200e87062013425916200e8528762004eb6565b506201344d8162004eb6565b60018060a01b0391549060031b1c16600052611f456020526040600020541562013414565b5097969096959391956201340d565b6020810151602681101562002a2357601303620134da5760408091015101519260005b8451811015620134c9578062000faa6200959f620134c3938862004d46565b620134a4565b509250906201222960209162004cdf565b6020810151602681101562002a23576014036201368757604001906201350560c08351015162004cef565b51936201351c60a06200779b818651015162004cef565b51916201352d86518551146202df8a565b6201353c86518451146202dff0565b60005b8651811015620136325762013555818562004d46565b5162013562828762004d46565b51906103e882101562004cfd576006620135829260031b0154906200608f565b906201358f838862004d46565b51916103e883101562004cfd576006620135ae9360031b01556202e0aa565b620135ba818562004d46565b51620135c7828762004d46565b51906103e882101562004cfd57620135f0916003906001600160a01b0362012148868d62004d46565b9190620135fe828862004d46565b51906103e882101562004cfd576201362c9362000faa926003906001600160a01b036201219c878f62004d46565b6201353f565b5094915091620121cd620136469162032f53565b9360405192620136568462002b3f565b60008452600036813760005b835181101562012215578062000faa6200796262013681938762004d46565b62013662565b6020810151602681101562002a2357601503620136b1576020919262000faa62012229926202e1ae565b6020810151602681101562002a23576016036201370d5760c06040620136db920151015162004cef565b519260005b8451811015620134c957620137079062000faa6001600160a01b0362009d36838962004d46565b620136e0565b6020810151602681101562002a23576017036201376a5760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601803620137d55760c0604062013794920151015162004cef565b5192600160ff19611fb6541617611fb65560005b8451811015620134c957620137cf9062000faa6001600160a01b0362009e02838962004d46565b620137a8565b6020819392930151602681101562002a23576019036201394a5760008091604082910160a08082510151805162013911575b5050519060e0820151916201382b6200680d60c060018060a01b0393015162004cef565b511690602083519301915af13d1562013908573d906201384b8262002f5b565b916201385b604051938462002b94565b82523d6000602084013e5b156201387a57506201222960209162004cdf565b62004cdb90620138e760405191600080516020620338cc833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b6040840152828151620138d6816059946020868601910162002e01565b810103603981018452018262002b94565b60405162461bcd60e51b815260206004820152918291602483019062002e26565b60609062013866565b6201391c9062004cef565b51516201392b575b8062013807565b8192506200680d90620139419251015162004cef565b51903862013924565b6020810151602681101562002a2357601a0362013a005760a0604062013974920151015162004cef565b516201398460038251146202d510565b6201398f8162004cef565b5191620139a8620139a08362004d13565b519262004d24565b51916200f9d55760209262012229926001036200a04357620139d2620139e091611fb1546200608f565b611fb15562000fa362033108565b62000faa620139f2611fb2546200607c565b611fb25562000fa362033142565b6020810151602681101562002a2357601b0362013e305750919062013a30611faf546200225a6200a0b962033044565b505062013a3c62033108565b506000805b6103e8811062013de4575b505062013a5862006161565b62013a66613f745462004e62565b906000946000905b6103e882101562013dd7578160031b9460ff6007870154161562013bbf5760009660028701541562013bae57600098975b62004cfd57600487015489101562013b945762013ac0896004890162004f5e565b9054600391821b1c6001600160a01b031660008181529189016020526040918290205491999162013af390889062005eb0565b9a9062013aff62033108565b62013b0a9162004cac565b60009a60028b015462013b1d9162005eb0565b919062013b2962033108565b62013b349162004cac565b82600052611f476020526000209081549062013b50916200608f565b90915562013b5d62033108565b62013b689162004cac565b62013b74828962004d46565b5262013b809062004cdf565b9862013b8c9062004cdf565b989762013a9f565b9290955062013ba69196975062004cdf565b909462013a6e565b9290955062013ba691965062004cdf565b95969392509350505b62013bd38262004e62565b9160009160005b82811062013d4157505050611f48549162013bfa62008068848462006200565b926000906000905b80821062013d2457505060005b83811062013c8e5750508251929150506001600160401b03821162002a9b5760209062013c3c8362004fbc565b01611f48600052602060002060005b83811062013c705750505050620122296020916000611fb1556000611fb25562004cdf565b82516001600160a01b03168183015560209092019160010162013c4b565b6000805b83811062013cdc575b501562013cb4575b62013cae9062004cdf565b62013c0f565b9062013cae9062013cd3906001600160a01b03620081f0858762004d46565b91905062013ca3565b6001600160a01b038062013cf1858862004d46565b51169062013d00838a62004d46565b51161462013d195762013d139062004cdf565b62013c92565b505060013862013c9b565b9091620081fe62013d3a91620094f58562004e9a565b9062013c02565b6000805b85811062013d8f575b501562013d67575b62013d619062004cdf565b62013bda565b9262013d619062013d86906001600160a01b03620081f0878662004d46565b93905062013d56565b6001600160a01b038062013da4858762004d46565b51169062013db3838a62004d46565b51161462013dcc5762013dc69062004cdf565b62013d45565b505060013862013d4e565b9394959291505062013bc8565b8060039594951b9060ff6007830154161562013e26576200a4f86200746162000faa946200a4ec62013e1d9560026200a4e28762005e1c565b93929362013a41565b5093929362013a4c565b6020810151602681101562002a2357601c0362013e8d5760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601d0362013eb3575b506201222960209162004cdf565b9290916020840151602681101562002a2357601e03620145d557604084019060a09062013ee4828451015162004cef565b515162013ef5838551015162004d13565b5151036200ade95762013f0c828451015162004cef565b515162013f1d838551015162004d24565b5151036200ad6d5762013f34828451015162004cef565b519462013f45838551015162004d13565b519162013f5a6200a641858751015162004d24565b519585518751036200ad0a5760005b865181101562013fc25762013f7f818862004d46565b51906103e882101562004cfd57600362013fbc9260018060a01b038d5116600052811b0160205262000faa60406000205462007ce9838c62004d46565b62013f69565b5090969192939660005b86518110156201406b5762013fe2818862004d46565b516103e881101562004cfd5760039060018060a01b038c5116600052811b016020526201401a60406000205462007d56838b62004d46565b919062014028828a62004d46565b51906103e882101562004cfd576201406593600362000faa938f60018060a01b03905116600052811b0160205260406000205562000fa3620332bb565b62013fcc565b50939692979550936201407e9062032f53565b96604051966201408e8862002b78565b60018852602036818a013786516001600160a01b0316620140af8962004cef565b5260405196620140bf8862002b3f565b600088526000610760525b895161076051908110156201447c57620140e5908b62004d46565b5161072052620140f6885162004e62565b99600097620141068b5162004e62565b6109405260009760005b8b51811015620141d6578d8c620141406001600160a01b0362014134858462004d46565b51166107205162032d3b565b158062014190575b62014161575b50506201415b9062004cdf565b62014110565b9b620141859162001ac782859f62007f376201415b9760018060a01b039262004d46565b9a90508d8c6201414e565b5050506103e861072051101562004cfd576001600160a01b03620141b5828e62004d46565b5116600052600361072051811b016020528d8c604060002054151562014148565b50909b989a99949691929395979b60005b8b518110156201427b576103e861072051101562004cfd576001600160a01b0362014213828e62004d46565b5116600052600361072051811b016020526040600020541562014242575b6201423c9062004cdf565b620141e7565b9c620142726201423c918f620142618f9160018060a01b039262004d46565b511662001ac7826109405162004d46565b9d905062014231565b509b5098959092949691939661072051996103e88b10159c8d62004cfd57620142b26200806860048f9e60031b01549e8f62006200565b6108e0526000610a20528d60009e5b62004cfd578d8f101562014380575060009d62014309620142ec8260046107205160031b0162004f5e565b90546109405160039290921b1c6001600160a01b03169062032dea565b1562014323575b6201431c8f9162004cdf565b9e620142c1565b6201431c9e5060009e8f91620143438160046107205160031b0162004f5e565b60018060a01b0391549060031b1c1662014364610a20516108e05162004d46565b5262014373610a205162004cdf565b610a205291505062014310565b9396999b929d509396999094979b5060005b828110620144305750505062004cfd576108e051516001600160401b03811162002a9b57620143cb8160046107205160031b016200509a565b60206108e051019060046107205160031b0160005260206000209160005b828110620144125750505050620144036107605162004cdf565b610760529598909498620140ca565b81516001600160a01b031681850155602090910190600101620143e9565b62014476906001600160a01b0362014449828562004d46565b51166201445d610a20516108e05162004d46565b526201446c610a205162004cdf565b610a205262004cdf565b62014392565b509492975094955091965060009460005b8751811015620144e057620144ab6200abc66200abb9838962004d46565b80620144c4575b50620144be9062004cdf565b6201448d565b906200abfc620144d998620144be936200608f565b90620144b2565b5096509450929091508062014502575b5050620122296020915b915062013ea5565b6201452d9060018060a01b038351166000526200ac5a611f459182602052604060002054906200608f565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106201458b575b5050916201222991602093156201456f575b5091620144f0565b5162014584906001600160a01b0316620065d6565b3862014567565b620145968162004eb6565b9054855160039290921b1c6001600160a01b03908116911614620145c557620145bf9062004cdf565b6201454c565b5060019150829050602062014555565b9190926020810151602681101562002a2357601f0362014610576020916201460a6200ae9d6040620122299401515162004cef565b620144fa565b6020810151602681101562002a235760200362014636575b5062012229602091620144fa565b6020810151602681101562002a2357602180910362014657575b5062014628565b602082015160268110156200b01a57602203620146945750506201222960209160ff19611fb65416611fb6556201468d62005087565b9162014650565b602082015160268110156200b01a57602303620146bb575b5050620122296020916201468d565b60208201519060268210156201478c576024809203620146dd575b50620146ac565b602083015160268110156201477957602514620146d65760208301519060268210156201476557506015036201472857506020916201472062012229926202e1ae565b9138620146d6565b60649060166040519162461bcd60e51b83526020600484015282015275496e76616c6964206f7065726174696f6e207479706560501b6044820152fd5b9050634e487b7160e01b6000526004526000fd5b50634e487b7160e01b6000526004526000fd5b634e487b7160e01b60005260045260246000fd5b8151620147b6906001600160a01b031662006600565b62011f21565b620147c78162004f0a565b9054865160039290921b1c6001600160a01b03908116911614620147f657620147f09062004cdf565b62011f0f565b5050506001388062011f18565b82516001600160a01b0316600160401b82101562002a9b5762001a08826001620148329401613f025562004eee565b386200bbb0565b620148448162004eee565b9054865160039290921b1c6001600160a01b0390811691161462014873576201486d9062004cdf565b6200bb9f565b50506001386200bba8565b82516001600160a01b0316818301556020909201916001016200bad5565b82516001600160a01b0316818301556020909201916001016200b988565b600191820180546001600160a01b03909216848601559390910192906200b8d7565b613f6d60005262014903906000805160206203396c83398151915290810190830162004fa3565b386200b898565b600180826201491b82948662014d65565b019201920191906200b85a565b613f6c600052600080516020620337ac833981519152908282015b8183018110620149555750506200b81f565b806201496360019262005399565b0162014943565b600191820180546001600160a01b03909216848601559390910192906200b7f0565b613f6b600052620149b3906000805160206203376c83398151915290810190830162004fa3565b386200b7b1565b6001809193019182549381613f0301550190916200b754565b82516001600160a01b0316818301556020909201916001016200b66d565b62014a0c90613f026000528484600020918201910162004fa3565b386200b65d565b82516001600160a01b0316818301556020909201916001016200b489565b62014a4c90613ef96000528484600020918201910162004fa3565b386200b479565b8062014a759160031b600160ff60078301541615151462014a7b575062004cdf565b6200b3ce565b62014a8e60048201611fbc830162014efe565b611fbf8101600160ff19825416179055805481611fb801556001810154611fb98201556002810154611fba82015562014acf60058201611fbd830162014d65565b611fbe6006820154910155386200a043565b600660208262014af560019451866200581b565b019201920191906200b1d7565b600681810204810362001e0757600683810204830362001e0757613efa6000527f2dfc264c6ecd0c6ea7ea3726867a09cc7eed901a6e437c010038bab559d48ed86006840281015b826006028201811062014b5f5750506200b1c4565b806000600692556000600182015562014b7b6002820162005504565b6000600382015562014b906004820162005399565b600060058201550162014b4a565b600660208262014bb260019451866200581b565b019201920191906200b14c565b8060060290600682040362001e07578260060260068104840362001e0757600090613efb82526020822092830192015b82811062014bff5750506200b139565b80826006925582600182015562014c196002820162005504565b82600382015562014c2d6004820162005399565b8260058201550162014bef565b608460405162461bcd60e51b815260206004820152604060248201526000805160206203394c83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206203394c83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b81811462014d61578154916001600160401b03831162002a9b5762014d2383836200509a565b60005260206000209060005260206000208154916000925b84841062014d4a575050505050565b600180919201938454928185015501929062014d3b565b5050565b9080821462014d615762014d7a815462002c79565b906001600160401b03821162002a9b57819062014da48262014d9d865462002c79565b86620056d5565b600090601f831160011462014ddd5760009262014dd15750508160011b916000199060031b1c1916179055565b01549050388062005768565b81526020808220858352818320935090601f1985169083905b82821062014e3257505090846001959493921062014e1857505050811b019055565b015460001960f88460031b161c19169055388080620057b5565b849581929585015481556001809101960194019062014df6565b81811462014d615781549162014e63838362005427565b6000526020600020906000526020600020906000905b83821062014e875750505050565b8062014e966001928562014d65565b92810192918101910162014e79565b81811462014d615781549162014ebc8383620054b5565b6000526020600020906000526020600020906000905b83821062014ee05750505050565b8062014eef6001928562014cfd565b92810192918101910162014ed2565b81811462014d61578154916001600160401b03831162002a9b5762014f2483836200509a565b60005260206000209060005260206000208154916000925b84841062014f4b575050505050565b600191820180546001600160a01b039092168486015593909101929062014f3c565b81811462014d615781549162014f848383620054b5565b6000526020600020906000526020600020906000905b83821062014fa85750505050565b8062014fb76001928562014efe565b92810192918101910162014f9a565b81811462014d615781549162014fdd8383620055b8565b6000526020600020906000526020600020906000905b838210620150015750505050565b8060019184036201501e575b600880910193019101909162014ff3565b805484556201504b8280860190830160ff906201503f82825416846200569a565b5460081c1690620056b4565b6002808201549085015562015067600380830190860162014cfd565b600480850190820180820362015080575b50506201500d565b6201508b9162014e4c565b6201509d600580830190860162014ea5565b620150af600680830190860162014f6d565b620150c1600780830190860162014d65565b388062015078565b919062005d3057808203620150dc575050565b60ff60058062002c3b94620150f5848654168262005681565b6001850154600182015562015111600286016002830162014fc6565b600385015460038201556201512d600486016004830162014d65565b0192016201513f8282541684620057f2565b5460081c169062005803565b9080821462014d6157908154906000915b606483106201516b5750505050565b60018091940192835494818401550191926201515c565b90611f42549060009060208401805151906201519e8262002c61565b91620151ae604051938462002b94565b808352620151bf601f199162002c61565b01366020840137620151d48151518662005eb0565b9015620155c657620151e69062004e62565b92849180515115620155bb57620152008793929362004e62565b95915b81515183101562015404576000958687805b8c8c83109182156201537d576201522e89895162004d46565b5194600092839662015241859662015a04565b620152528588846001948562015bb7565b6201533e575b508284118062015328575b15620152cd575050509183918b620152c3575b600685101562002a23578c8f95600314620152a3575b5050620152999062004cdf565b9190925062015215565b9b620152ba9162001ac78262015299959f62004d46565b9a908c6201528c565b60009b5062015276565b909391809593148062015312575b15620153045750600685101562002a23578c8f95600314620152a3575050620152999062004cdf565b945050620152999062004cdf565b5050600685101562002a23578e851515620152db565b5050600686101562002a23578f86151562015263565b92935093509450620153508462005cba565b5001549060ff620153618562005cba565b505416946003620153728662005cba565b500154933862015258565b50505050969096949391946201539f8162015399858a62004d46565b620035e5565b600681101562002a2357600314620153c6575b50620153be9062004cdf565b919262015203565b6000905b808210620153d95750620153b2565b9094620092e0620153fd91620153f0888c62004d46565b5162001ac7828c62004d46565b90620153ca565b9650505094509150600093845b83518610156201555657620154316201542b878662004d46565b62005673565b9060068083101562002a235760029283036201545c57505062015455909562004cdf565b9462015411565b6201546c6201542b898862004d46565b928184101562002a235760018094148062015542575b15620154975750505062015455909562004cdf565b620154ac6201542b8a899b9694959b62004d46565b928084101562002a23576004809414928362015516575b5082620154eb575b5050620154df575b50620154559062004cdf565b955062015455620154d3565b90915088101562015501578714153880620154cb565b602182634e487b7160e01b6000525260246000fd5b908093508a10156201552d578914159138620154c3565b602184634e487b7160e01b6000525260246000fd5b508183101562002a23578083141562015482565b925092909350600682101562002a235760038203620155b2575b6201557b8162004e62565b9360005b8281106201558e575050509190565b806201559f620155ac928462004d46565b5162001ac7828962004d46565b6201557f565b50600062015570565b509450505092509190565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b90611f43549060009060208401805151906201563a8262002c61565b916201564a604051938462002b94565b8083526201565b601f199162002c61565b01366020840137620156708151518662005eb0565b9015620155c657620156829062004e62565b92849180515115620155bb576201569c8793929362004e62565b95915b8151518310156201588a576000958680805b8c8c82109283156201581557620156ca89895162004d46565b5194600092620156eb848683829a620156e4849b62015a04565b8362015bb7565b620157d6575b81841180620157c0575b1562015764575050509083928b6201575a575b600685101562002a23578c8f956003146201573a575b5050620157319062004cdf565b909250620156b1565b9b620157519162001ac78262015731959f62004d46565b9a908c62015724565b60009b506201570e565b908094939592951480620157aa575b156201579c5750600685101562002a23578c8f956003146201573a575050620157319062004cdf565b945050620157319062004cdf565b5050600685101562002a23578e85151562015773565b5050600686101562002a23578f861515620156fb565b9450945090506001620157e98362005c7a565b5001549060ff620157fa8462005c7a565b5054169460036201580b8562005c7a565b50015494620156f1565b935050505096909694939194620158328162015399858a62004d46565b600681101562002a235760031462015859575b50620158519062004cdf565b91926201569f565b6000905b8082106201586c575062015845565b9094620092e06201588391620153f0888c62004d46565b906201585d565b9650505094509150600093845b8351861015620159ac57620158b16201542b878662004d46565b9060068083101562002a23576002928303620158dc575050620158d5909562004cdf565b9462015897565b620158ec6201542b898862004d46565b928184101562002a235760038094148062015998575b156201591757505050620158d5909562004cdf565b6201592c6201542b8a899b9694959b62004d46565b928084101562002a23576005809414928362015981575b50826201596b575b50506201595f575b50620158d59062004cdf565b9550620158d562015953565b90915088101562002a235787141538806201594b565b908093508a101562002a2357891415913862015943565b508183101562002a23578083141562015902565b925092909350600682101562002a235760038203620159fb575b620159d18162004e62565b9360005b828110620159e4575050509190565b806201559f620159f5928462004d46565b620159d5565b506000620159c6565b1562015a0c57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9062002c3b606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262015ad9815180926020868601910162002e01565b810103604181018552018362002b94565b606d62002c3b919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262015b5c815180926020605f8701910162002e01565b82016d016103737b2329034b73232bc1d160951b605f82015262015b8a825180936020878501910162002e01565b0103604d81018552018362002b94565b805482101562004cfd5760005260206000209060031b0190600090565b93929190841562015f485762015be1611f4254841062000fa362015bdb86620050f5565b62015a62565b62015c18600262015bf28562005cba565b500154851062000fa362015c0686620050f5565b62015c1188620050f5565b9062015aea565b841562015f295762015c48600162015c3f86600262015c378862005cba565b500162015b9a565b50015460ff1690565b945b62015c558662002fc4565b8562015c6657505050505050600090565b62015c718662002fc4565b60039580870362015c885750505050505050600190565b62015c938162002fc4565b6004810362015ca85750505050505050600090565b62015cb38162002fc4565b6001810362015cc95750620032d2955062015f78565b91959392949062015cda8362002fc4565b600280931462015cf1575b50505050505050600090565b801562015f0b5762015d1b600162015d0f848662015c378962005cba565b50015460081c60ff1690565b935b811562015eef578562015d36848662015c378562005cba565b500154965b62015d468862004e62565b9860005b89811062015e645750505050505062015d638262002a18565b6001820362015dc657505050906001916000915b81831062015d855750505090565b9091928062015da3575b62015d9b909362004cdf565b919062015d77565b5062015d9b62015dbe62015db8858462004d46565b51151590565b905062015d8f565b62015dd18262002a18565b810362015e2b5750509060009182915b81831062015def5750505090565b909192801562015e0e575b62015e06909362004cdf565b919062015de1565b5062015e0662015e2362015db8858462004d46565b905062015dfa565b90915062015e398162002a18565b1462015e4d57503880808080808062015ce5565b62015e6062015db8620032d29262004cef565b1590565b808b62015ead828c8a8c8a8c1562015ece5762015ea3949262015e99949262015c3762015e919362005cba565b500162004f5e565b90549060031b1c90565b8787878b62015bb7565b62015ec162015ec89462000faa9362004d46565b9015159052565b62015d4a565b62015ee9949262015e99949262015c3762015e919362005c7a565b62015ea3565b8562015f01848662015c378562005c7a565b5001549662015d3b565b62015f22600162015d0f848662015c378962005c7a565b9362015d1d565b62015f41600162015c3f86600262015c378862005c7a565b9462015c4a565b62015f61611f4354841062000fa362015bdb86620050f5565b62015f72600262015bf28562005c7a565b62015c18565b9392600462015fc291866000146201619057600262015f9d878262015c378562005cba565b500154955b87156201617f57600262015c3762015fba9362005cba565b5001620036ac565b916032841115620161735760338410158062016167575b6201615a576097841015806201614e575b620161415760d38410158062016134575b620161285761012d841015806201611c575b6201610f576101918410158062016102575b620160f5576101af84101580620160e8575b620160db576101cd84101580620160ce575b620160c1576101f584101580620160b4575b620160a757610259841015806201609a575b6201608c57506102bd831015620160815750505050600090565b620032d293620241b4565b9050620032d293506202b4f1565b506102bc84111562016067565b50620032d293506201e3df565b5061025884111562016055565b50620032d293506202be55565b506101f484111562016043565b50620032d293506202c8b8565b506101cc84111562016031565b50620032d2935062023923565b506101ae8411156201601f565b50620032d2935062028765565b5061019084106201600d565b50620032d293620161ad565b5061012c84111562015ffb565b50620032d2935062023f9f565b5060b484111562015fea565b5050620032d2926201f03f565b50609584111562015fd9565b50620032d29362025742565b600262015c3762015fba9362005c7a565b6002620161a3878262015c378562005c7a565b5001549562015fa2565b9260d381146201677c5760d481146201676f5760d58114620167625760d68114620167555760d78114620167485760d881146201673b5760d981146201672f5760da8114620167225760db8114620167155760dc8114620167095760dd8114620166fa5760de8114620166eb5760df8114620166de5760e08114620166d15760e18114620166c55760e28114620166b85760e38114620166ab5760e481146201669f5760e58114620166905760e68114620166815760e78114620166745760e88114620166675760e981146201665a5760ea81146201664d5760eb8114620166405760ec8114620166335760ed8114620166265760ee8114620166195760ef81146201660c5760f08114620165ff5760f18114620165f25760f28114620165e55760f38114620165d85760f48114620165cb5760f58114620165be5760f68114620165b15760f78114620165a45760f88114620165975760f981146201658b5760fa81146201657f5760fb8114620165735760fc8114620165675760fd81146201655b5760fe81146201654f5760ff811462016543576101008114620165375761010181146201652b5761010281146201651f5761010381146201651357610104811462016507576101058114620164fb576101068114620164ef576101078114620164e3576101088114620164d7576101098114620164cb5761010a8114620164bf5761010b8114620164b35761010c8114620164a75761010d81146201649b5761010e81146201648f5761010f811462016483576101108114620164775761011181146201646b5761011281146201645f57610113811462016453576101148114620164475761011581146201643b57610116146201643057505050600090565b620032d2926201da96565b50620032d2926201d86d565b50620032d2926201d644565b50620032d2926201d341565b50620032d2926201d120565b50620032d2926201ceff565b50620032d2926201cccd565b50620032d2926201cb04565b50620032d2926201c93b565b50620032d2926201c703565b50620032d2926201c53c565b50620032d2926201c20d565b50620032d2926201bfdb565b50620032d2926201be12565b50620032d2926201bc49565b50620032d2926201ba84565b50620032d2926201b84c565b50620032d2926201b685565b50620032d2926201b34f565b50620032d2926201b0ef565b50620032d2926201af1e565b50620032d2926201ad3d565b50620032d2926201ab76565b50620032d2926201a920565b50620032d2926201a757565b50620032d2926201a58e565b50620032d2926201a2ad565b50620032d29262019fad565b50620032d29262019cc0565b50620032d292620199c0565b50620032d292506201983b565b50620032d29250620196f6565b50620032d2925062019584565b50620032d292506201943f565b50620032d29250620192fa565b50620032d29250620191b6565b50620032d2925062019041565b50620032d2925062018efd565b50620032d2925062018db9565b50620032d2925062018c78565b50620032d2925062018b35565b50620032d29250620189f4565b50620032d29250620188ab565b50620032d2925062018767565b50620032d2925062018623565b50620032d29250620184ae565b50620032d2925062018310565b50620032d29250620181cd565b509050620032d2915062018172565b509050620032d2915062018115565b50620032d29262017ed7565b50620032d2925062017d48565b50620032d2925062017bf9565b50620032d292620179e2565b50620032d292506201783a565b50620032d29250620176ed565b509050620032d2915062017692565b509050620032d2915062017625565b50620032d292620173d9565b50620032d292506201724a565b50620032d29250620170f5565b50620032d29262016ec7565b50620032d2925062016d0f565b50620032d2925062016bb3565b50620032d2925062016ab2565b50620032d2925062016985565b50620032d2925062016884565b50620032d2925090602001906001825151036201682b576001620167a1835162004cef565b515103620167d157620167b4906201dd9d565b919015620065cf576200680d620167cc915162004cef565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001825151036201692c576001620168a2835162004cef565b515103620168d257620168b5906201dd9d565b919015620065cf576200680d620168cd915162004cef565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016a59576002620169a3835162004cef565b515103620169fd57620169b6906201dd9d565b9015620065cf57620169cd6200680d835162004cef565b518110159182620169dd57505090565b620169f7919250620169f0905162004cef565b5162004d13565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016b5a57600162016ad0835162004cef565b51510362016b005762016ae3906201dd9d565b919015620065cf576200680d62016afb915162004cef565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90604001600191828251510362016cb5578262016bd1835162004cef565b51510362016c5b5762016be4906201e110565b15620065c757829160009182945b62016c00575b505050905090565b805185101562016c55576001600160a01b038062016c1f878462004d46565b51169062016c326200680d855162004cef565b51160362016c4d5762016c46849562004cdf565b9462016bf2565b505091505090565b62016bf8565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362016e6d578262016d2d835162004cef565b51511062016e135762016d40906201e110565b15620065c757600091835b62016d57575b50505090565b815183101562016e0d57600080855b62016d8f575b501562016d865762016d7f849362004cdf565b9262016d4b565b50505050600090565b62016da08396949295965162004cef565b515181101562016e02576001600160a01b038062016dbf888562004d46565b51169062016dd3836200743f875162004cef565b51161462016df5579062016de984939262004cdf565b90939594919262016d66565b5091809493503862016d6c565b949390929462016d6c565b62016d51565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201709b578462016ee9845162004cef565b515103620170415762016efc906201e110565b1562016f9a5784931562016fb1576000935b62016f1a575050505090565b8051841015620051fe576001600160a01b038062016f39868462004d46565b5116600052611f4080845260409060ff8260002054161562016fa45760029262016f64888662004d46565b51166000528452600020015462016f806200680d855162004cef565b510362016f9a5762016f93859462004cdf565b9362016f0e565b5050505050600090565b5050505050505050600090565b6000935b62016fc1575050505090565b8051841015620051fe576001600160a01b038062016fe0868462004d46565b5116600052613ef880845260409060ff8260002054161562016fa4576002926201700b888662004d46565b511660005284526000200154620170276200680d855162004cef565b510362016f9a576201703a859462004cdf565b9362016fb5565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906040016001918282515103620171f0578262017113835162004cef565b515103620171965762017126906201e110565b91909115620065c757600091835b620171425750505050600090565b8051831015620171905783926001600160a01b038062017163838562004d46565b511690620171766200680d865162004cef565b511614620051c457620171899062004cdf565b9262017134565b62016d86565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060400160019182825151036201737f578262017268835162004cef565b51511062017325576201727b906201e110565b15620065c75782916000935b620172955750505050600090565b815184101562017190576000835b620172bd575b50620172b6839462004cdf565b9362017287565b939291620172cc825162004cef565b51518510156201731c576001600160a01b0380620172eb868462004d46565b511690620172ff876200743f865162004cef565b51161462016c4d576201731483949562004cdf565b9092620172a3565b919293620172a9565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90916020809101906001938483515103620175cb5784620173fb845162004cef565b51510362017571576201740e906201e110565b9190911562016f9a57849315620174cf576000935b62017432575050505050600090565b8151841015620174c95784936001600160a01b03908162017454828662004d46565b5116600052611f4080845260409060ff82600020541662017485575b50506201747e915062004cdf565b9362017423565b8293620174956002948862004d46565b511660005284526000200154620174b16200680d865162004cef565b5114620174c15780388062017470565b505050505090565b62016f9a565b6000935b620174e2575050505050600090565b8151841015620174c95784936001600160a01b03908162017504828662004d46565b5116600052613ef880845260409060ff82600020541662017535575b50506201752e915062004cdf565b93620174d3565b8293620175456002948862004d46565b511660005284526000200154620175616200680d865162004cef565b5114620174c15780388062017520565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b62017630816201e110565b91909115620065cf57815115620065cf57600090815b835181101562017689576001600160a01b038062017665838762004d46565b5116908351160362017682576201767c9062004cdf565b62017646565b5050905090565b50505050600190565b6201769d816201e110565b91909115620065cf57815115620065cf5760005b8251811015620065c7576001600160a01b0380620176d0838662004d46565b51169083511614620065b457620176e79062004cdf565b620176b1565b906040016001918282515103620177e057826201770b835162004cef565b51510362017786576201771e906201e199565b15620065c757829160009182945b6201773957505050905090565b805185101562016c55576001600160a01b038062017758878462004d46565b5116906201776b6200680d855162004cef565b51160362016c4d576201777f849562004cdf565b946201772c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362017988578262017858835162004cef565b5151106201792e576201786b906201e199565b15620065c757600091835b620178815750505090565b815183101562016e0d57600080855b620178b0575b501562016d8657620178a9849362004cdf565b9262017876565b620178c18396949295965162004cef565b515181101562017923576001600160a01b0380620178e0888562004d46565b511690620178f4836200743f875162004cef565b5116146201791657906201790a84939262004cdf565b90939594919262017890565b5091809493503862017896565b949390929462017896565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910190600193848351510362017b9f578462017a04845162004cef565b51510362017b455762017a17906201e199565b1562016f9a5784931562017ab5576000935b62017a35575050505090565b8051841015620051fe576001600160a01b038062017a54868462004d46565b5116600052611f4080845260409060ff8260002054161562016fa45760029262017a7f888662004d46565b51166000528452600020015462017a9b6200680d855162004cef565b510362016f9a5762017aae859462004cdf565b9362017a29565b6000935b62017ac5575050505090565b8051841015620051fe576001600160a01b038062017ae4868462004d46565b5116600052613ef880845260409060ff8260002054161562016fa45760029262017b0f888662004d46565b51166000528452600020015462017b2b6200680d855162004cef565b510362016f9a5762017b3e859462004cdf565b9362017ab9565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362017cee578262017c17835162004cef565b51510362017c945762017c2a906201e199565b91909115620065c757600091835b62017c465750505050600090565b8051831015620171905783926001600160a01b038062017c67838562004d46565b51169062017c7a6200680d865162004cef565b511614620051c45762017c8d9062004cdf565b9262017c38565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362017e7d578262017d66835162004cef565b51511062017e235762017d79906201e199565b15620065c75782916000935b62017d935750505050600090565b815184101562017190576000835b62017dbb575b5062017db4839462004cdf565b9362017d85565b93929162017dca825162004cef565b515185101562017e1a576001600160a01b038062017de9868462004d46565b51169062017dfd876200743f865162004cef565b51161462016c4d5762017e1283949562004cdf565b909262017da1565b91929362017da7565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90916020809101906001938483515103620180bb578462017ef9845162004cef565b515103620180615762017f0c906201e199565b9190911562016f9a5784931562017fbf576000935b62017f30575050505050600090565b8151841015620174c95784936001600160a01b03908162017f52828662004d46565b5116600052611f4080845260409060ff82600020541662017f83575b505062017f7c915062004cdf565b9362017f21565b829362017f936002948862004d46565b51166000528452600020015462017faf6200680d865162004cef565b5114620174c15780388062017f6e565b6000935b62017fd2575050505050600090565b8151841015620174c95784936001600160a01b03908162017ff4828662004d46565b5116600052613ef880845260409060ff82600020541662018025575b50506201801e915062004cdf565b9362017fc3565b8293620180356002948862004d46565b511660005284526000200154620180516200680d865162004cef565b5114620174c15780388062018010565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b62018120816201e199565b91909115620065cf57815115620065cf57600090815b835181101562017689576001600160a01b038062018155838762004d46565b5116908351160362017682576201816c9062004cdf565b62018136565b6201817d816201e199565b91909115620065cf57815115620065cf5760005b8251811015620065c7576001600160a01b0380620181b0838662004d46565b51169083511614620065b457620181c79062004cdf565b62018191565b906020016001918282515103620182b65782620181eb835162004cef565b5151036201825c57620181fe906201e1d2565b905015620065c757829160009182945b6201821b57505050905090565b805185101562016c555762018231858262004d46565b51620182426200680d845162004cef565b510362016c4d5762018255849562004cdf565b946201820e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201845457826201832e835162004cef565b515110620183fa5762018341906201e1d2565b905015620065c757600091835b620183595750505090565b815183101562016e0d57600080855b62018388575b501562016d865762018381849362004cdf565b926201834e565b620183998396949295965162004cef565b5151811015620183ef57620183af868362004d46565b51620183c1826200743f865162004cef565b5114620183e25790620183d684939262004cdf565b90939594919262018368565b509180949350386201836e565b94939092946201836e565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620185c9576002620184cd835162004cef565b5151036201856f57620184e0906201e1d2565b905091909115620065c757829160009182945b6201850057505050905090565b815185101562016c555762018516858362004d46565b51620185276200680d835162004cef565b5111801562018549575b62016c4d5762018542849562004cdf565b94620184f3565b5062018556858362004d46565b5162018567620169f0835162004cef565b511062018531565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201870d578262018641835162004cef565b515103620186b35762018654906201e1d2565b905015620065c757829160009182945b6201867157505050905090565b805185101562016c555762018687858262004d46565b51620186986200680d845162004cef565b51101562016c4d57620186ac849562004cdf565b9462018664565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018851578262018785835162004cef565b515103620187f75762018798906201e1d2565b905015620065c757829160009182945b620187b557505050905090565b805185101562016c5557620187cb858262004d46565b51620187dc6200680d845162004cef565b51111562016c4d57620187f0849562004cdf565b94620187a8565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201899a5782620188c9835162004cef565b5151036201894057620188dc906201e1d2565b9093915015620065c7578060009384925b62018906575b5050506200680d620167cc915162004cef565b909193815185101562018939576200e870620189309162018928878562004d46565b519062006200565b919081620188ed565b93620188f3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018adb578262018a12835162004cef565b51510362018a815762018a25906201e1d2565b9093915015620065c7578060009384925b62018a4f575b5050506200680d620168cd915162004cef565b909193815185101562018a7a576200e87062018a719162018928878562004d46565b91908162018a36565b9362018a3c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200190600190818351510362018c1e57600262018b55845162004cef565b51510362018bc45762018b68906201e1d2565b90915015620065c757906000918183925b62018b92575b505050620169cd6200680d835162004cef565b909192825184101562018bbd576200647f62018bb49162018928868662004d46565b91908062018b79565b9262018b7f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018d5f578262018c96835162004cef565b51510362018d055762018ca9906201e1d2565b9093915015620065c7578060009384925b62018cd3575b5050506200680d62016afb915162004cef565b909193815185101562018cfe576200e87062018cf59162018928878562004d46565b91908162018cba565b9362018cc0565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018ea3578262018dd7835162004cef565b51510362018e495762018dea906201e1d2565b9092915015620065c757600091835b62018e075750505050600090565b805183101562017190578262018e1f85948362004d46565b5162018e306200680d855162004cef565b5110620051c45762018e429062004cdf565b9262018df9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018fe7578262018f1b835162004cef565b51510362018f8d5762018f2e906201e1d2565b9291921562016d8657600092845b62018f4b575050505050600090565b8051841015620174c9578362018f6386958462004d46565b5162018f746200680d865162004cef565b5111620174c15762018f869062004cdf565b9362018f3c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201915c57600262019060835162004cef565b515103620191025762019073906201e1d2565b929091921562016d8657600092845b62019091575050505050600090565b8051841015620174c95783620190a986958562004d46565b51620190ba6200680d855162004cef565b51111580620190db575b620174c157620190d49062004cdf565b9362019082565b50620190e8818562004d46565b51620190f9620169f0855162004cef565b511015620190c4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620192a05782620191d4835162004cef565b5151036201924657620191e7906201e1d2565b9291921562016d8657600092845b62019204575050505050600090565b8051841015620174c957836201921c86958462004d46565b516201922d6200680d865162004cef565b5114620174c1576201923f9062004cdf565b93620191f5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620193e5578262019318835162004cef565b5151036201938b576201932b906201e1d2565b905091909115620065c757600091835b620193495750505050600090565b80518310156201719057826201936185948362004d46565b51620193726200680d855162004cef565b5110620051c457620193849062004cdf565b926201933b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201952a57826201945d835162004cef565b515103620194d05762019470906201e1d2565b905091909115620065c757600091835b6201948e5750505050600090565b8051831015620171905782620194a685948362004d46565b51620194b76200680d855162004cef565b5111620051c457620194c99062004cdf565b9262019480565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201969c576002620195a3835162004cef565b5151036201964257620195b6906201e1d2565b905015620065c757600091835b620195d15750505050600090565b8151831015620171905782620195e985948462004d46565b51620195fa6200680d845162004cef565b511115806201961b575b620051c457620196149062004cdf565b92620195c3565b5062019628818462004d46565b5162019639620169f0845162004cef565b51101562019604565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620197e1578262019714835162004cef565b515103620197875762019727906201e1d2565b905091909115620065c757600091835b620197455750505050600090565b80518310156201719057826201975d85948362004d46565b516201976e6200680d855162004cef565b5114620051c457620197809062004cdf565b9262019737565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362019966578262019859835162004cef565b5151106201990c576201986c906201e1d2565b905015620065c75782916000935b620198885750505050600090565b815184101562017190576000835b620198b0575b50620198a9839462004cdf565b936201987a565b939291620198bf825162004cef565b51518510156201990357620198d5848262004d46565b51620198e7866200743f855162004cef565b511462016c4d57620198fb83949562004cdf565b909262019896565b9192936201989c565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910190600193848351510362019c665784620199e2845162004cef565b51511062019c0c57620199f5906201e199565b9290921562016f9a5784931562019b09576000935b62019a16575050505090565b8251841015620051fe576001600160a01b038062019a35868662004d46565b5116600052611f40808452604060ff8160002054161562016fa457879160009384935b62019a7b575b505050501562016f9a5762019a74859462004cdf565b9362019a0a565b9092989591939662019a8e865162004cef565b51518a101562019afd578162019aa58a8362004d46565b5116600052838352600285600020015462019ac68b6200743f895162004cef565b511462019aea5762019adb8798999a62004cdf565b93919097999894929662019a58565b9650509396505050843880808062019a5e565b96938296995062019a5e565b6000935b62019b19575050505090565b8251841015620051fe576001600160a01b038062019b38868662004d46565b5116600052613ef8808452604060ff8160002054161562016fa457879160009384935b62019b7e575b505050501562016f9a5762019b77859462004cdf565b9362019b0d565b9092989591939662019b91865162004cef565b51518a101562019c00578162019ba88a8362004d46565b5116600052838352600285600020015462019bc98b6200743f895162004cef565b511462019bed5762019bde8798999a62004cdf565b93919097999894929662019b5b565b9650509396505050843880808062019b61565b96938296995062019b61565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b6020809301600192838251510362019f53578362019cdf835162004cef565b51511062019ef95762019cf2906201e199565b9490941562016f9a5783921562019e045793926000905b62019d18575050505050600090565b8351811015620174c9576001600160a01b038062019d37838762004d46565b5116600052611f4080875260409160ff83600020541662019d6d575b5050509362019d6483949562004cdf565b90949362019d09565b6000929190865b62019d81575b5062019d53565b90929791939662019d93865162004cef565b515189101562019df9578162019daa898362004d46565b5116600052838352600285600020015462019dcb8a6200743f895162004cef565b511462019ded5762019ddf87989962004cdf565b939190979894929862019d74565b50505050505091505090565b969382985062019d7a565b93926000905b62019e19575050505050600090565b8351811015620174c9576001600160a01b038062019e38838762004d46565b5116600052613ef880875260409160ff83600020541662019e6e575b5050509362019e6583949562004cdf565b90949362019e0a565b6000929190865b62019e82575b5062019e54565b90929791939662019e94865162004cef565b515189101562019eee578162019eab898362004d46565b5116600052838352600285600020015462019ecc8a6200743f895162004cef565b511462019ded5762019ee087989962004cdf565b939190979894929862019e75565b969382985062019e7b565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201a253578462019fcf845162004cef565b5151106201a1f95762019fe2906201e110565b9290921562016f9a578493156201a0f6576000935b6201a003575050505090565b8251841015620051fe576001600160a01b03806201a022868662004d46565b5116600052611f40808452604060ff8160002054161562016fa457879160009384935b6201a068575b505050501562016f9a576201a061859462004cdf565b9362019ff7565b909298959193966201a07b865162004cef565b51518a10156201a0ea57816201a0928a8362004d46565b511660005283835260028560002001546201a0b38b6200743f895162004cef565b51146201a0d7576201a0c88798999a62004cdf565b9391909799989492966201a045565b965050939650505084388080806201a04b565b9693829699506201a04b565b6000935b6201a106575050505090565b8251841015620051fe576001600160a01b03806201a125868662004d46565b5116600052613ef8808452604060ff8160002054161562016fa457879160009384935b6201a16b575b505050501562016f9a576201a164859462004cdf565b936201a0fa565b909298959193966201a17e865162004cef565b51518a10156201a1ed57816201a1958a8362004d46565b511660005283835260028560002001546201a1b68b6200743f895162004cef565b51146201a1da576201a1cb8798999a62004cdf565b9391909799989492966201a148565b965050939650505084388080806201a14e565b9693829699506201a14e565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b602080930160019283825151036201a53457836201a2cc835162004cef565b5151106201a4da576201a2df906201e110565b9490941562016f9a578392156201a3e55793926000905b6201a305575050505050600090565b8351811015620174c9576001600160a01b03806201a324838762004d46565b5116600052611f4080875260409160ff8360002054166201a35a575b505050936201a35183949562004cdf565b9094936201a2f6565b6000929190865b6201a36e575b506201a340565b9092979193966201a380865162004cef565b51518910156201a3da57816201a397898362004d46565b511660005283835260028560002001546201a3b88a6200743f895162004cef565b511462019ded576201a3cc87989962004cdf565b93919097989492986201a361565b96938298506201a367565b93926000905b6201a3fa575050505050600090565b8351811015620174c9576001600160a01b03806201a419838762004d46565b5116600052613ef880875260409160ff8360002054166201a44f575b505050936201a44683949562004cdf565b9094936201a3eb565b6000929190865b6201a463575b506201a435565b9092979193966201a475865162004cef565b51518910156201a4cf57816201a48c898362004d46565b511660005283835260028560002001546201a4ad8a6200743f895162004cef565b511462019ded576201a4c187989962004cdf565b93919097989492986201a456565b96938298506201a45c565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201a6fd57846201a5b0845162004cef565b5151036201a6a3576201a5c3906201e110565b1562016f9a578493156201a63a576000935b6201a5e1575050505090565b8051841015620051fe576001600160a01b036201a5ff858362004d46565b5116600052611f4582526040600020546201a61f6200680d855162004cef565b51101562016f9a576201a633859462004cdf565b936201a5d5565b6000935b6201a64a575050505090565b8051841015620051fe576001600160a01b036201a668858362004d46565b5116600052613efd82526040600020546201a6886200680d855162004cef565b51101562016f9a576201a69c859462004cdf565b936201a63e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201a8c657846201a779845162004cef565b5151036201a86c576201a78c906201e110565b1562016f9a578493156201a803576000935b6201a7aa575050505090565b8051841015620051fe576001600160a01b036201a7c8858362004d46565b5116600052611f4582526040600020546201a7e86200680d855162004cef565b51111562016f9a576201a7fc859462004cdf565b936201a79e565b6000935b6201a813575050505090565b8051841015620051fe576001600160a01b036201a831858362004d46565b5116600052613efd82526040600020546201a8516200680d855162004cef565b51111562016f9a576201a865859462004cdf565b936201a807565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910160019384825151036201ab1c5760026201a942835162004cef565b5151036201aac2576201a955906201e110565b9290921562016f9a578493156201aa14576000935b6201a976575050505090565b8251841015620051fe576001600160a01b03806201a995868662004d46565b5116600052611f4580835260409081600020546201a9b86200680d875162004cef565b51119283156201a9de575b50505062016f9a576201a9d7859462004cdf565b936201a96a565b909192506201a9ee878762004d46565b51166000528252600020546201aa09620169f0845162004cef565b51103880806201a9c3565b6000935b6201aa24575050505090565b8251841015620051fe576001600160a01b03806201aa43868662004d46565b5116600052613efd80835260409081600020546201aa666200680d875162004cef565b51119283156201aa8c575b50505062016f9a576201aa85859462004cdf565b936201aa18565b909192506201aa9c878762004d46565b51166000528252600020546201aab7620169f0845162004cef565b51103880806201aa71565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201ace357846201ab98845162004cef565b5151036201ac89576201abab906201e110565b1562016f9a578493156201ac21576000935b6201abc9575050505090565b8051841015620051fe576001600160a01b036201abe7858362004d46565b5116600052611f4582526040600020546201ac076200680d855162004cef565b510362016f9a576201ac1a859462004cdf565b936201abbd565b6000935b6201ac31575050505090565b8051841015620051fe576001600160a01b036201ac4f858362004d46565b5116600052613efd82526040600020546201ac6f6200680d855162004cef565b510362016f9a576201ac82859462004cdf565b936201ac25565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201aec457846201ad5f845162004cef565b5151036201ae6a576201ad72906201e110565b1562016f9a578493156201adfd5760009182945b6201ad97575b505050505050600090565b81518510156201adf75785946001600160a01b036201adb7828562004d46565b51168452611f45825260408420546201add56200680d875162004cef565b51106201adee576201ade79062004cdf565b946201ad86565b50505050505090565b6201ad8c565b60009182945b6201ae1357505050505050600090565b81518510156201adf75785946001600160a01b036201ae33828562004d46565b51168452613efd825260408420546201ae516200680d875162004cef565b51106201adee576201ae639062004cdf565b946201ae03565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201b09557846201af40845162004cef565b5151036201b03b576201af53906201e110565b1562016f9a578493156201afce5760009182945b6201af7757505050505050600090565b81518510156201adf75785946001600160a01b036201af97828562004d46565b51168452611f45825260408420546201afb56200680d875162004cef565b51116201adee576201afc79062004cdf565b946201af67565b60009182945b6201afe457505050505050600090565b81518510156201adf75785946001600160a01b036201b004828562004d46565b51168452613efd825260408420546201b0226200680d875162004cef565b51116201adee576201b0349062004cdf565b946201afd4565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910160019384825151036201b2f55760026201b111835162004cef565b5151036201b29b576201b124906201e110565b9190911562016f9a578493156201b1e8576000935b6201b148575050505050600090565b8151841015620174c95784936001600160a01b03806201b169838662004d46565b5116600052611f4580865260409081600020546201b18c6200680d875162004cef565b51111592836201b1b1575b505050620174c1576201b1aa9062004cdf565b936201b139565b909192506201b1c1848762004d46565b51166000528552600020546201b1dc620169f0845162004cef565b5110153880806201b197565b6000935b6201b1fb575050505050600090565b8151841015620174c95784936001600160a01b03806201b21c838662004d46565b5116600052613efd80865260409081600020546201b23f6200680d875162004cef565b51111592836201b264575b505050620174c1576201b25d9062004cdf565b936201b1ec565b909192506201b274848762004d46565b51166000528552600020546201b28f620169f0845162004cef565b5110153880806201b24a565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201b4cc57836201b36e845162004cef565b5151036201b47257156201b3f7576201b387906201e110565b15620065c757829160009182945b6201b3a257505050905090565b805185101562016c55576201b3cc6001600160a01b036201b3c4878462004d46565b51166201b583565b6201b3dc6200680d845162004cef565b51101562016c4d576201b3f0849562004cdf565b946201b395565b6201b402906201e110565b15620065c757829160009182945b6201b41d57505050905090565b805185101562016c55576201b4476001600160a01b036201b43f878462004d46565b51166201b526565b6201b4576200680d845162004cef565b51101562016c4d576201b46b849562004cdf565b946201b410565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60009081905b6103e882106201b53b57505090565b9091620081fe6201b57c916201b5758560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f77565b9062006200565b906201b52c565b60009081905b6103e882106201b59857505090565b9091620081fe6201b5d0916201b575600386811b9060018060a01b038716600052810160205260016040600020549101549062004f77565b906201b589565b600091906201b632576000905b6103e882106201b5f357505090565b9091620081fe6201b62b916201b575600386811b9060018060a01b038716600052810160205260016040600020549101549062004f77565b906201b5e4565b81905b6103e882106201b64457505090565b9091620081fe6201b67e916201b5758560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f77565b906201b635565b916020019060019283835151036201b7f257836201b6a4845162004cef565b5151036201b79857156201b725576201b6bd906201e110565b15620065c757829160009182945b6201b6d857505050905090565b805185101562016c55576201b6fa6001600160a01b036201b3c4878462004d46565b6201b70a6200680d845162004cef565b51111562016c4d576201b71e849562004cdf565b946201b6cb565b6201b730906201e110565b15620065c757829160009182945b6201b74b57505050905090565b805185101562016c55576201b76d6001600160a01b036201b43f878462004d46565b6201b77d6200680d845162004cef565b51111562016c4d576201b791849562004cdf565b946201b73e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201ba2a5760026201b86c845162004cef565b5151036201b9d057156201b925576201b885906201e110565b91909115620065c757829160009182945b6201b8a357505050905090565b815185101562016c55576001600160a01b036201b8c6816201b3c4888662004d46565b6201b8d66200680d845162004cef565b51119081156201b8fa575b5062016c4d576201b8f3849562004cdf565b946201b896565b6201b90c91506201b3c4878562004d46565b6201b91c620169f0835162004cef565b5110386201b8e1565b6201b930906201e110565b91909115620065c757829160009182945b6201b94e57505050905090565b815185101562016c55576001600160a01b036201b971816201b43f888662004d46565b6201b9816200680d845162004cef565b51119081156201b9a5575b5062016c4d576201b99e849562004cdf565b946201b941565b6201b9b791506201b43f878562004d46565b6201b9c7620169f0835162004cef565b5110386201b98c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201bbef57836201baa3845162004cef565b5151036201bb9557156201bb23576201babc906201e110565b15620065c757829160009182945b6201bad757505050905090565b805185101562016c55576201baf96001600160a01b036201b3c4878462004d46565b6201bb096200680d845162004cef565b510362016c4d576201bb1c849562004cdf565b946201baca565b6201bb2e906201e110565b15620065c757829160009182945b6201bb4957505050905090565b805185101562016c55576201bb6b6001600160a01b036201b43f878462004d46565b6201bb7b6200680d845162004cef565b510362016c4d576201bb8e849562004cdf565b946201bb3c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201bdb857836201bc68845162004cef565b5151036201bd5e57156201bcea576201bc81906201e110565b91909115620065c757600091835b6201bc9d5750505050600090565b8051831015620171905783926201bcc16001600160a01b036201b3c4838562004d46565b6201bcd16200680d855162004cef565b5110620051c4576201bce39062004cdf565b926201bc8f565b6201bcf5906201e110565b91909115620065c757600091835b6201bd115750505050600090565b8051831015620171905783926201bd356001600160a01b036201b43f838562004d46565b6201bd456200680d855162004cef565b5110620051c4576201bd579062004cdf565b926201bd03565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201bf8157836201be31845162004cef565b5151036201bf2757156201beb3576201be4a906201e110565b91909115620065c757600091835b6201be665750505050600090565b8051831015620171905783926201be8a6001600160a01b036201b3c4838562004d46565b6201be9a6200680d855162004cef565b5111620051c4576201beac9062004cdf565b926201be58565b6201bebe906201e110565b91909115620065c757600091835b6201beda5750505050600090565b8051831015620171905783926201befe6001600160a01b036201b43f838562004d46565b6201bf0e6200680d855162004cef565b5111620051c4576201bf209062004cdf565b926201becc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201c1b35760026201bffb845162004cef565b5151036201c15957156201c0b1576201c014906201e110565b15620065c757600091835b6201c02d5750505050600090565b8151831015620171905783926001600160a01b036201c052816201b3c4848762004d46565b6201c0626200680d855162004cef565b51111590816201c085575b50620051c4576201c07e9062004cdf565b926201c01f565b6201c09791506201b3c4838662004d46565b6201c0a7620169f0845162004cef565b511015386201c06d565b6201c0bc906201e110565b15620065c757600091835b6201c0d55750505050600090565b8151831015620171905783926001600160a01b036201c0fa816201b43f848762004d46565b6201c10a6200680d855162004cef565b51111590816201c12d575b50620051c4576201c1269062004cdf565b926201c0c7565b6201c13f91506201b43f838662004d46565b6201c14f620169f0845162004cef565b511015386201c115565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201c38a57836201c22c845162004cef565b5151036201c33057156201c2b5576201c245906201e110565b15620065c757829160009182945b6201c26057505050905090565b805185101562016c55576201c28a6001600160a01b036201c282878462004d46565b51166201c43a565b6201c29a6200680d845162004cef565b51101562016c4d576201c2ae849562004cdf565b946201c253565b6201c2c0906201e110565b15620065c757829160009182945b6201c2db57505050905090565b805185101562016c55576201c3056001600160a01b036201c2fd878462004d46565b51166201c3e4565b6201c3156200680d845162004cef565b51101562016c4d576201c329849562004cdf565b946201c2ce565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60009081905b6103e882106201c3f957505090565b9091620081fe6201c433916201b5758560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f77565b906201c3ea565b60009081905b6103e882106201c44f57505090565b9091620081fe6201c487916201b575600386811b9060018060a01b038716600052810160205260026040600020549101549062004f77565b906201c440565b600091906201c4e9576000905b6103e882106201c4aa57505090565b9091620081fe6201c4e2916201b575600386811b9060018060a01b038716600052810160205260026040600020549101549062004f77565b906201c49b565b81905b6103e882106201c4fb57505090565b9091620081fe6201c535916201b5758560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f77565b906201c4ec565b916020019060019283835151036201c6a957836201c55b845162004cef565b5151036201c64f57156201c5dc576201c574906201e110565b15620065c757829160009182945b6201c58f57505050905090565b805185101562016c55576201c5b16001600160a01b036201c282878462004d46565b6201c5c16200680d845162004cef565b51111562016c4d576201c5d5849562004cdf565b946201c582565b6201c5e7906201e110565b15620065c757829160009182945b6201c60257505050905090565b805185101562016c55576201c6246001600160a01b036201c2fd878462004d46565b6201c6346200680d845162004cef565b51111562016c4d576201c648849562004cdf565b946201c5f5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201c8e15760026201c723845162004cef565b5151036201c88757156201c7dc576201c73c906201e110565b91909115620065c757829160009182945b6201c75a57505050905090565b815185101562016c55576001600160a01b036201c77d816201c282888662004d46565b6201c78d6200680d845162004cef565b51119081156201c7b1575b5062016c4d576201c7aa849562004cdf565b946201c74d565b6201c7c391506201c282878562004d46565b6201c7d3620169f0835162004cef565b5110386201c798565b6201c7e7906201e110565b91909115620065c757829160009182945b6201c80557505050905090565b815185101562016c55576001600160a01b036201c828816201c2fd888662004d46565b6201c8386200680d845162004cef565b51119081156201c85c575b5062016c4d576201c855849562004cdf565b946201c7f8565b6201c86e91506201c2fd878562004d46565b6201c87e620169f0835162004cef565b5110386201c843565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201caaa57836201c95a845162004cef565b5151036201ca5057156201c9dc576201c973906201e110565b91909115620065c757600091835b6201c98f5750505050600090565b8051831015620171905783926201c9b36001600160a01b036201c282838562004d46565b6201c9c36200680d855162004cef565b5110620051c4576201c9d59062004cdf565b926201c981565b6201c9e7906201e110565b91909115620065c757600091835b6201ca035750505050600090565b8051831015620171905783926201ca276001600160a01b036201c2fd838562004d46565b6201ca376200680d855162004cef565b5110620051c4576201ca499062004cdf565b926201c9f5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200190600192836201cb19845162004cef565b5151036201cc735783835151036201cc1957156201cba5576201cb3c906201e110565b91909115620065c757600091835b6201cb585750505050600090565b8051831015620171905783926201cb7c6001600160a01b036201c282838562004d46565b6201cb8c6200680d855162004cef565b5111620051c4576201cb9e9062004cdf565b926201cb4a565b6201cbb0906201e110565b91909115620065c757600091835b6201cbcc5750505050600090565b8051831015620171905783926201cbf06001600160a01b036201c2fd838562004d46565b6201cc006200680d855162004cef565b5111620051c4576201cc129062004cdf565b926201cbbe565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b916020019060026201cce0835162004cef565b5151036201cea55760019283835151036201ce4b57156201cda3576201cd06906201e110565b15620065c757600091835b6201cd1f5750505050600090565b8151831015620171905783926001600160a01b036201cd44816201c282848762004d46565b6201cd546200680d855162004cef565b51111590816201cd77575b50620051c4576201cd709062004cdf565b926201cd11565b6201cd8991506201c282838662004d46565b6201cd99620169f0845162004cef565b511015386201cd5f565b6201cdae906201e110565b15620065c757600091835b6201cdc75750505050600090565b8151831015620171905783926001600160a01b036201cdec816201c2fd848762004d46565b6201cdfc6200680d855162004cef565b51111590816201ce1f575b50620051c4576201ce189062004cdf565b926201cdb9565b6201ce3191506201c2fd838662004d46565b6201ce41620169f0845162004cef565b511015386201ce07565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b919060208092019060019384835151036201d0c65760026201cf22845162004cef565b5151036201d06c57156201cfcd576201cf3b906201e110565b9290921562016d8657600092845b6201cf55575050505090565b8051841015620051fe576201cf6f6200680d845162004cef565b516103e881101562004cfd576001600160a01b036201cf8f868462004d46565b5116600052600390811b0182526040600020546201cfb2620169f0855162004cef565b51101562016f9a576201cfc6859462004cdf565b936201cf49565b6201cfd8906201e110565b9290921562016d8657600092845b6201cff2575050505090565b8051841015620051fe576201d00c6200680d845162004cef565b516103e881101562004cfd57611fbb906001600160a01b036201d030878562004d46565b511660005260031b0182526040600020546201d051620169f0855162004cef565b51101562016f9a576201d065859462004cdf565b936201cfe6565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919060208092019060019384835151036201d2e75760026201d143845162004cef565b5151036201d28d57156201d1ee576201d15c906201e110565b9290921562016d8657600092845b6201d176575050505090565b8051841015620051fe576201d1906200680d845162004cef565b516103e881101562004cfd576001600160a01b036201d1b0868462004d46565b5116600052600390811b0182526040600020546201d1d3620169f0855162004cef565b51111562016f9a576201d1e7859462004cdf565b936201d16a565b6201d1f9906201e110565b9290921562016d8657600092845b6201d213575050505090565b8051841015620051fe576201d22d6200680d845162004cef565b516103e881101562004cfd57611fbb906001600160a01b036201d251878562004d46565b511660005260031b0182526040600020546201d272620169f0855162004cef565b51111562016f9a576201d286859462004cdf565b936201d207565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020809101600392836201d357835162004cef565b5151036201d5e55760019485835151036201d58b57156201d482576201d37d906201e110565b9390931562016f9a57600093855b6201d39857505050505090565b80518510156201d47c576201d3b26200680d845162004cef565b516103e8908181101562004cfd576001600160a01b03908490826201d3d88a8762004d46565b5116600052811b01865260409081600020546201d3fa620169f0885162004cef565b51119283156201d420575b5050506201ad8c576201d419869562004cdf565b946201d38b565b909192506201d4346200680d875162004cef565b519081101562004cfd5784916201d44c898662004d46565b5116600052811b018552600020546201d4716201d46a855162004cef565b5162004d24565b51103880806201d405565b620174c1565b6201d490909392936201e110565b9390931562016f9a57600093855b6201d4ab57505050505090565b80518510156201d47c576201d4c56200680d845162004cef565b516103e88082101562004cfd576001600160a01b0391826201d4e8898662004d46565b5116600052611fbb8091881b01855260409182600020546201d50f620169f0895162004cef565b51119384156201d536575b505050506201ad8c576201d52f869562004cdf565b946201d49e565b90919293506201d54b6200680d885162004cef565b519182101562004cfd576201d561898662004d46565b5116600052861b018352600020546201d57f6201d46a855162004cef565b5110388080806201d51a565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201d65a835162004cef565b5151036201d8135760019384835151036201d7b957156201d716576201d680906201e110565b9290921562016d8657600092845b6201d69d575050505050600090565b8051841015620174c9576201d6b76200680d845162004cef565b51936103e885101562004cfd5785946001600160a01b036201d6da838562004d46565b5116600052600390811b0183526040600020546201d6fd620169f0865162004cef565b5110620174c1576201d70f9062004cdf565b936201d68e565b6201d721906201e110565b9290921562016d8657600092845b6201d73e575050505050600090565b8051841015620174c9576201d7586200680d845162004cef565b51936103e885101562004cfd578594611fbb906001600160a01b036201d77f848662004d46565b511660005260031b0183526040600020546201d7a0620169f0865162004cef565b5110620174c1576201d7b29062004cdf565b936201d72f565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b919060208092019060026201d883835162004cef565b5151036201da3c5760019384835151036201d9e257156201d93f576201d8a9906201e110565b9290921562016d8657600092845b6201d8c6575050505050600090565b8051841015620174c9576201d8e06200680d845162004cef565b51936103e885101562004cfd5785946001600160a01b036201d903838562004d46565b5116600052600390811b0183526040600020546201d926620169f0865162004cef565b5111620174c1576201d9389062004cdf565b936201d8b7565b6201d94a906201e110565b9290921562016d8657600092845b6201d967575050505050600090565b8051841015620174c9576201d9816200680d845162004cef565b51936103e885101562004cfd578594611fbb906001600160a01b036201d9a8848662004d46565b511660005260031b0183526040600020546201d9c9620169f0865162004cef565b5111620174c1576201d9db9062004cdf565b936201d958565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b916020809101600392836201daac835162004cef565b5151036201dd3e5760019485835151036201dce457156201dbd2576201dad2906201e110565b9390931562016f9a57600093855b6201daf057505050505050600090565b80518510156201adf7576201db0a6200680d845162004cef565b51946103e8958681101562004cfd5787966001600160a01b03918590836201db33868862004d46565b5116600052811b018752604080600020546201db54620169f0895162004cef565b51111592836201db79575b5050506201adee576201db729062004cdf565b946201dae0565b91985091506201db8e6200680d875162004cef565b519788101562004cfd57889785916201dba8858762004d46565b5116600052811b018652600020546201dbc66201d46a865162004cef565b5110153880806201db5f565b6201dbe0909392936201e110565b9390931562016f9a57600093855b6201dbfe57505050505050600090565b80518510156201adf7576201dc186200680d845162004cef565b51946103e88087101562004cfd5787966001600160a01b0390816201dc3e858762004d46565b5116600052611fbb8091891b01865260409081600020546201dc65620169f08a5162004cef565b51111593846201dc8b575b505050506201adee576201dc849062004cdf565b946201dbee565b9193509198506201dca16200680d885162004cef565b519081101562004cfd5789986201dcb9858762004d46565b5116600052871b018452600020546201dcd76201d46a865162004cef565b511015388080806201dc70565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201dda8816201df2d565b156201df24576040810190606082510151511515806201dee9575b156201ddd55750516060015151600191565b604082510151511515806201ded0575b156201ddf75750516040015151600191565b60808251015151151590816201deb6575b50156201de1a57516080015151600191565b805160c081015151156201de6157506201de3960c08251015162004cef565b51516201de4a57505b600090600090565b60c06201de5a9151015162004cef565b5151600191565b602081015151156201de795750516020015151600191565b60a0015180516201de8d575b50506201de42565b6201de989062004cef565b51516201dea657806201de85565b60a06201de5a9151015162004cef565b602091500151602681101562002a2357601014386201de08565b506020810151602681101562002a23576013146201dde5565b50602081018051602681101562002a2357600c149081156201df0d575b506201ddc3565b905051602681101562002a2357600f14386201df06565b50600090600090565b6020018051906026908183101562002a235760018093146201e10b5780518281101562002a23576002146201e10b5780518281101562002a23576003146201e10b578051908282101562002a2357600480921462016d51578051838110156201e0f65760051462016d51578051838110156201e0f65760061462016d51578051838110156201e0f65760071462016d51578051838110156201e0f65760081462016d51578051838110156201e0f65760091462016d51578051838110156201e0f657600a1462016d51578051838110156201e0f657600b1462016d51578051838110156201e0f657600c1462016d51578051838110156201e0f657600d1462016d51578051838110156201e0f657600e1462016d51578051838110156201e0f657600f1462016d51578051838110156201e0f65760101462016d51578051838110156201e0f65760111462016d51578051838110156201e0f65760121462016d51578051838110156201e0f65760131462016d51578051838110156201e0f65760141462016d51578051838110156201e0f65760151462016d515751918210156201e0e15750601e14620032d25750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201e11b816201df2d565b156201e18a576020810151602681101562002a23576004146201e177576040015160c0015180516201e16557506040516201e1568162002b3f565b60008152600036813790600090565b6201e1709062004cef565b5190600190565b60c060406201e170920151015162004d13565b506040516201e1568162002b3f565b6020810151602681101562002a23576004146201e1bf57506040516201e1568162002b3f565b60c060406201e170920151015162004cef565b6201e1dd816201e322565b156201e3125760208101908151916026908184101562002a235760018094146201e2f75780518281101562002a23576003146201e2f7578051908282101562002a235760048092146201e2db578051838110156201e0f6576005146201e2db578051838110156201e0f6576006146201e2db578051838110156201e0f6576014146201e2db578051838110156201e0f6576015146201e2db5751918210156201e0e15750601e146201e2bd575050604051906201e29a8262002b3f565b60008252604051916201e2ad8362002b3f565b6000835260003681379190600090565b604001916201e2d660a06200779b818651015162004cef565b519190565b505050604001916201e2d660a06200779b818651015162004cef565b5050604001916201e2d660a06200779b818651015162004cef565b50604051906201e29a8262002b3f565b6020018051906026908183101562002a235760018093146201e10b5780518281101562002a2357600214620065c75780518281101562002a23576003146201e10b578051908282101562002a2357600480921462016d51578051838110156201e0f65760141462016d51578051838110156201e0f65760151462016d51578051838110156201e0f657601e1462016d51578051838110156201e0f65760051462016d515751918210156201e0e15750600614620032d25750600090565b916101f581146201e489576101f681146201e47d576101f781146201e471576101f881146201e465576101f981146201e459576101fa81146201e44d576101fb81146201e441576101fc146201e436575050600090565b620032d2916201eeda565b50620032d2916201ed35565b50620032d2916201ebd0565b50620032d2916201ea6b565b50620032d2916201e906565b50620032d2916201e761565b50620032d2916201e5fc565b50620032d291906020019060019182815151036201e5a257826201e4ae825162004cef565b5151036201e548576020820151602681101562002a2357600203620065c757600091835b6201e4e05750505050600090565b604081019260a0936201e4f7858251015162004d24565b51518210156201e54057816200743f87966201e5169351015162004d24565b516201e5276200680d855162004cef565b5110620051c4576201e5399062004cdf565b926201e4d2565b505062016d86565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201e70757826201e61b825162004cef565b5151036201e6ad576020820151602681101562002a2357600203620065c757600091835b6201e64d5750505050600090565b604081019260a0936201e664858251015162004d24565b51518210156201e54057816200743f87966201e6839351015162004d24565b516201e6946200680d855162004cef565b5111620051c4576201e6a69062004cdf565b926201e63f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201e8ac5760026201e781825162004cef565b5151036201e852576020820151602681101562002a2357600203620065c757600091835b6201e7b35750505050600090565b604081019260a0936201e7ca858251015162004d24565b51518210156201e5405781856201e7eb826200743f8a998651015162004d24565b516201e7fc6200680d885162004cef565b51111592836201e821575b505050620051c4576201e81a9062004cdf565b926201e7a5565b5101516201e83592506200743f9062004d24565b516201e846620169f0855162004cef565b5110158138806201e807565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201ea1157826201e925825162004cef565b5151036201e9b7576020820151602681101562002a2357600203620065c757600091835b6201e9575750505050600090565b604081019260a0936201e96e858251015162004d24565b51518210156201e54057816200743f87966201e98d9351015162004d24565b516201e99e6200680d855162004cef565b5114620051c4576201e9b09062004cdf565b926201e949565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201eb7657826201ea8a825162004cef565b5151036201eb1c576020820151602681101562002a2357600203620065c757600091835b6201eabc5750505050600090565b604081019260a0936201ead3858251015162004d35565b51518210156201e54057816200743f87966201eaf29351015162004d13565b516201eb036200680d855162004cef565b5110620051c4576201eb159062004cdf565b926201eaae565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201ecdb57826201ebef825162004cef565b5151036201ec81576020820151602681101562002a2357600203620065c757600091835b6201ec215750505050600090565b604081019260a0936201ec38858251015162004d35565b51518210156201e54057816200743f87966201ec579351015162004d13565b516201ec686200680d855162004cef565b5111620051c4576201ec7a9062004cdf565b926201ec13565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201ee805760026201ed55825162004cef565b5151036201ee26576020820151602681101562002a2357600203620065c757600091835b6201ed875750505050600090565b604081019260a0936201ed9e858251015162004d35565b51518210156201e5405781856201edbf826200743f8a998651015162004d13565b516201edd06200680d885162004cef565b51111592836201edf5575b505050620051c4576201edee9062004cdf565b926201ed79565b5101516201ee0992506200743f9062004d13565b516201ee1a620169f0855162004cef565b5110158138806201eddb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201efe557826201eef9825162004cef565b5151036201ef8b576020820151602681101562002a2357600203620065c757600091835b6201ef2b5750505050600090565b604081019260a0936201ef42858251015162004d35565b51518210156201e54057816200743f87966201ef619351015162004d13565b516201ef726200680d855162004cef565b5114620051c4576201ef849062004cdf565b926201ef1d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b91603381036201f129575060209150016001815151036201f0d95760016201f068825162004cef565b5151036201f086576200680d6201f080915162004cef565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201f212575060209150016001815151036201f1c25760016201f151825162004cef565b5151036201f16f576200680d6201f169915162004cef565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201f324575060209150016001815151036201f2d45760026201f23a825162004cef565b5151036201f27a576201f2526200680d825162004cef565b5142101590816201f261575090565b6201f2739150620169f0905162004cef565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201f428575060209150016001815151036201f3ce5760016201f34c825162004cef565b5151036201f37457620167cc6200680d6201f367426200621c565b5050505050925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603781036201f51f575060209150016001815151036201f4c55760016201f450825162004cef565b5151036201f46b57620168cd6200680d6201f367426200621c565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603881036201f623575060209150016001815151036201f5c95760026201f547825162004cef565b5151036201f56f576201f55a426200621c565b5050505050620169cd6200680d835162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603981036201f728575060209150016001815151036201f6ce5760016201f64b825162004cef565b5151036201f67457620167cc6200680d6201f666426200621c565b505050509390505162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603a81036201f81f575060209150016001815151036201f7c55760016201f750825162004cef565b5151036201f76b57620168cd6200680d6201f666426200621c565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603b81036201f924575060209150016001815151036201f8ca5760026201f847825162004cef565b5151036201f870576201f85a426200621c565b505050509050620169cd6200680d835162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603c81036201fa29575060209150016001815151036201f9cf5760016201f94c825162004cef565b5151036201f97557620167cc6200680d6201f967426200621c565b505050949150505162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603d81036201fb20575060209150016001815151036201fac65760016201fa51825162004cef565b5151036201fa6c57620168cd6200680d6201f967426200621c565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603e81036201fc25575060209150016001815151036201fbcb5760026201fb48825162004cef565b5151036201fb71576201fb5b426200621c565b505050915050620169cd6200680d835162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603f81036201fd2a575060209150016001815151036201fcd05760016201fc4d825162004cef565b5151036201fc7657620167cc6200680d6201fc68426200621c565b505095925050505162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b6040928184036201fe20575050602001906001825151036201fdc85760016201fd54835162004cef565b5151036201fd705750620168cd6200680d6201fc68426200621c565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b604182036201ff22575050602001906001825151036201feca5760026201fe48835162004cef565b5151036201fe7257506201fe5c426200621c565b505092505050620169cd6200680d835162004cef565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b9092604284036201ff3a5750620032d29250620215a8565b604384036201ff505750620032d29250620217b2565b60448481036201ff68575050620032d29250620219b4565b604585036201ff7f575050620032d2925062021c31565b604685036201ff96575050620032d2925062021e33565b604785036201ffad575050620032d2925062022035565b604885036201ffc4575050620032d2925062022318565b604985036201ffdb575050620032d2925062022625565b604a85036201fff2575050620032d2925062022903565b604b850362020009575050620032d2925062022ccb565b604c850362020020575050620032d2925062022e76565b604d850362020037575050620032d2925062022f7a565b604e85036202004e575050620032d29250620230d2565b604f850362020065575050620032d2925062023253565b605085036202007c575050620032d2925062023357565b91909293605181146000146202017857505090916020019160018351510362020120576001620200ad845162004cef565b515103620200c8575050620167cc6200680d47925162004cef565b907f43452049445f38313a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b907f43452049445f38313a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b605281036202026d57505090916020019160018351510362020215576001620201a2845162004cef565b515103620201bd575050620168cd6200680d47925162004cef565b907f43452049445f38323a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b907f43452049445f38323a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b60538103620203835750509091602001916001835151036202032b57600262020297845162004cef565b515103620202d357505047620202b26200680d835162004cef565b5111159081620202c0575090565b9050620169f7620169f047925162004cef565b907f43452049445f38333a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b907f43452049445f38333a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b605481036202047857505090916020019160018351510362020420576001620203ad845162004cef565b515103620203c857505062016afb6200680d47925162004cef565b907f43452049445f38343a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b907f43452049445f38343a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b605581036202063357506020840192600284515103620205db5760019283620204a2865162004d13565b51510362020584575090829160009586945b620204cf575b50505050506200680d620167cc915162004d13565b9091929395620204e28383015162004cef565b51518710156202057d5762020539908415620205445762009513906202051d6103e8620205158b6200743f8c5162004cef565b5110620234af565b6201b575620205328a6200743f8b5162004cef565b516200610a565b9392919083620204b4565b6200951390620205616103e8620205158b6200743f8c5162004cef565b6201b575620205768a6200743f8b5162004cef565b5162006139565b95620204ba565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b60568103620207b6575060208401926002845151036202075e57600192836202065d865162004d13565b51510362020707575090829160009586945b6202068a575b50505050506200680d620168cd915162004d13565b90919293956202069d8383015162004cef565b51518710156202070057620206d8908415620206e35762009513906202051d6103e8620206d08b6200743f8c5162004cef565b511062023521565b93929190836202066f565b6200951390620205616103e8620206d08b6200743f8c5162004cef565b9562020675565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605781036202097c5750602084019460028651510362020923576002620207e2875162004d13565b515103620208cb5750600092835b620207fe8287015162004cef565b51518510156202089157906202085685620207fe93898760001462020860576103e862020839620092e0946200743f62020841945162004cef565b511062023593565b6201b57562020532896200743f8d5162004cef565b94909150620207f0565b6103e862020839620092e0946200743f6202087c945162004cef565b6201b57562020576896200743f8d5162004cef565b93505093925050620208a86200680d835162004d13565b518110159182620208b857505090565b620169f7919250620169f0905162004d13565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b909491906058810362020b335750602084019260028451510362020adb5760019283620209aa865162004d13565b51510362020a84575090829160009586945b620209d65750505050506200680d620167cc915162004d13565b9091929395620209e98383015162004cef565b51518710156202057d5762020a4090841562020a4b57620095139062020a246103e862020a1c8b6200743f8c5162004cef565b511062023605565b6201b57562020a398a6200743f8b5162004cef565b5162005e1c565b9392919083620209bc565b620095139062020a686103e862020a1c8b6200743f8c5162004cef565b6201b57562020a7d8a6200743f8b5162004cef565b5162005e52565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b6059810362020cae5750602084019260028451510362020c56576001928362020b5d865162004d13565b51510362020bff575090829160009586945b62020b895750505050506200680d620168cd915162004d13565b909192939562020b9c8383015162004cef565b5151871015620207005762020bd790841562020be257620095139062020a246103e862020bcf8b6200743f8c5162004cef565b511062023677565b939291908362020b6f565b620095139062020a686103e862020bcf8b6200743f8c5162004cef565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a810362020e3a5750602084019460028651510362020de157600262020cda875162004d13565b51510362020d895750600092835b62020cf68287015162004cef565b515185101562020891579062020d4e8562020cf693898760001462020d58576103e862020d31620092e0946200743f62020d39945162004cef565b5110620236e9565b6201b57562020a39896200743f8d5162004cef565b9490915062020ce8565b6103e862020d31620092e0946200743f62020d74945162004cef565b6201b57562020a7d896200743f8d5162004cef565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b8103620210135750602084019260028451510362020fbb576001928362020e68865162004d13565b51510362020f64575090829160009586945b62020e945750505050506200680d620167cc915162004d13565b909192939562020ea78383015162004cef565b51518710156202057d57831562020f17576103e862020ed98162020ed18a6200743f8b5162004cef565b51106202375b565b62020eea886200743f895162004cef565b519081101562004cfd5762020f0c916006620095139260031b01549062006200565b939291908362020e7a565b6103e862020f308162020ed18a6200743f8b5162004cef565b62020f41886200743f895162004cef565b519081101562004cfd5762020f0c91611fbe620095139260031b01549062006200565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c8103620211e8575060208401926002845151036202119057600192836202103d865162004d13565b51510362021139575090829160009586945b620210695750505050506200680d620168cd915162004d13565b90919293956202107c8383015162004cef565b515187101562020700578315620210ec576103e8620210ae81620210a68a6200743f8b5162004cef565b5110620237cd565b620210bf886200743f895162004cef565b519081101562004cfd57620210e1916006620095139260031b01549062006200565b93929190836202104f565b6103e86202110581620210a68a6200743f8b5162004cef565b62021116886200743f895162004cef565b519081101562004cfd57620210e191611fbe620095139260031b01549062006200565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d81969293949614600014620213c8575060208401926002845151036202136f57600262021218855162004d13565b515103620213175750600080955b620212348187015162004cef565b515187101562021300578315620212ae576103e89162021267836202125f8a6200743f8a5162004cef565b51106202383f565b62021278886200743f885162004cef565b519283101562004cfd576202129e620212a5916006620212349560031b01549062006200565b9762004cdf565b96915062021226565b6103e891620212c8836202125f8a6200743f8a5162004cef565b620212d9886200743f885162004cef565b519283101562004cfd576202129e620212a591611fbe620212349560031b01549062006200565b50929350935050620208a86200680d835162004d13565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e0362016d86576020840192600284515103620215505760019283620213f5865162004d13565b515103620214f9575090829160009586945b62021422575b50505050506200680d62016afb915162004d13565b9091929395620214358383015162004cef565b5151871015620214f2578315620214a5576103e862021467816202145f8a6200743f8b5162004cef565b5110620238b1565b62021478886200743f895162004cef565b519081101562004cfd576202149a916006620095139260031b01549062006200565b939291908362021407565b6103e8620214be816202145f8a6200743f8b5162004cef565b620214cf886200743f895162004cef565b519081101562004cfd576202149a91611fbe620095139260031b01549062006200565b956202140d565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b90604081019060018251510362021758576001620215c7835162004cef565b515103620216fe5760200191600183515103620216a4576001620215ec845162004cef565b5151036202164a571562021626576200680d6202161e620167cc926201b3c46200680d60018060a01b03925162004cef565b925162004cef565b6200680d6202161e620167cc926201b43f6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b9060408101906001825151036202195a576001620217d1835162004cef565b515103620219005760200191600183515103620218a6576001620217f6845162004cef565b5151036202184c571562021828576200680d6202161e620168cd926201b3c46200680d60018060a01b03925162004cef565b6200680d6202161e620168cd926201b43f6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b604082019160018351510362021bd7576001620219d2845162004cef565b51510362021b7d576020019060018251510362021b23576002620219f7835162004cef565b51510362021ac9571562021a6d5760018060a01b0362021a21816201b3c46200680d865162004cef565b62021a316200680d845162004cef565b511115928362021a415750505090565b62021a61929350620169f0916201b3c46200680d6202161e935162004cef565b51101538808062016d51565b60018060a01b0362021a89816201b43f6200680d865162004cef565b62021a996200680d845162004cef565b511115928362021aa95750505090565b62021a61929350620169f0916201b43f6200680d6202161e935162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90604081019060018251510362021dd957600162021c50835162004cef565b51510362021d7f576020019160018351510362021d2557600162021c75845162004cef565b51510362021ccb571562021ca7576200680d6202161e620167cc926201c2826200680d60018060a01b03925162004cef565b6200680d6202161e620167cc926201c2fd6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90604081019060018251510362021fdb57600162021e52835162004cef565b51510362021f81576020019160018351510362021f2757600162021e77845162004cef565b51510362021ecd571562021ea9576200680d6202161e620168cd926201c2826200680d60018060a01b03925162004cef565b6200680d6202161e620168cd926201c2fd6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60408201916001835151036202224c57600162022053845162004cef565b515103620221f257602001906001825151036202219857600262022078835162004cef565b5151036202213e5715620220e25760018060a01b03620220a2816201c2826200680d865162004cef565b620220b26200680d845162004cef565b5111159283620220c25750505090565b62021a61929350620169f0916201c2826200680d6202161e935162004cef565b60018060a01b03620220fe816201c2fd6200680d865162004cef565b6202210e6200680d845162004cef565b51111592836202211e5750505090565b62021a61929350620169f0916201c2fd6200680d6202161e935162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b15620222ae57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d6044820152600080516020620338ec833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202255a57600162022338845162004cef565b515103620225015760200192600184515103620224a85760026202235d855162004cef565b5151036202244f5715620223e0576103e8906202238c82620223846200680d875162004cef565b5110620222a6565b6202239c6200680d855162004cef565b519182101562004cfd576003620169f092620167cc94620223c96200680d60018060a01b03925162004cef565b5116600052811b0160205260002054925162004cef565b6103e890620223f982620223846200680d875162004cef565b620224096200680d855162004cef565b519182101562004cfd57611fbb620169f092620167cc94620224376200680d60018060a01b03925162004cef565b511660005260031b0160205260002054925162004cef565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b15620225bb57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d6044820152600080516020620338ec833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202283857600162022645845162004cef565b515103620227df5760200192600184515103620227865760026202266a855162004cef565b5151036202272d5715620226d6576103e8906202269982620226916200680d875162004cef565b5110620225b3565b620226a96200680d855162004cef565b519182101562004cfd576003620169f092620168cd94620223c96200680d60018060a01b03925162004cef565b6103e890620226ef82620226916200680d875162004cef565b620226ff6200680d855162004cef565b519182101562004cfd57611fbb620169f092620168cd94620224376200680d60018060a01b03925162004cef565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b156202289957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d6044820152600080516020620338ec833981519152606482015266662072616e676560c81b608482015260a490fd5b9060408082019260018451510362022c7257600162022923855162004cef565b51510362022c195760208093019260018451510362022bc157600391826202294c865162004cef565b51510362022b63571562022a5f576103e8916202297b83620229736200680d885162004cef565b511062022891565b6202298b6200680d865162004cef565b51928084101562004cfd5760018060a01b038281620229af6200680d8b5162004cef565b5116956000968752811b01845285852054620229d0620169f0895162004cef565b5111159788620229e6575b505050505050505090565b909192939495969750620229ff6200680d895162004cef565b519283101562022a4b57916201d46a95939162022a276200680d62022a3a9997955162004cef565b51168452811b0190522054925162004cef565b5110153880808080808080620229db565b634e487b7160e01b86526032600452602486fd5b6103e862022a7781620229736200680d885162004cef565b62022a876200680d865162004cef565b51908082101562004cfd5760018060a01b03938462022aab6200680d8a5162004cef565b5116946000958652611fbb8094831b0185528686205462022ad1620169f08a5162004cef565b511115988962022ae8575b50505050505050505090565b9091929394959697985062022b026200680d8a5162004cef565b519384101562022b4f579162022b3d9795939162022b2b6200680d6201d46a9997955162004cef565b511685521b0190522054925162004cef565b51101538808080808080808062022adc565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b906020019060018251510362022d7557600162022ce9835162004cef565b51510362022d1b571562022d0957620167cc6200680d6202161e62022e38565b620167cc6200680d6202161e62022dcf565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b6000805b6103e8811062022de1575090565b908160031b60ff611fbf820154161562022e325762022e1f62022e2c9262022e17611fb962022e2594015462005e438762005fe5565b9290620060a1565b62006200565b9162004cdf565b62022dd3565b50905090565b6000805b6103e8811062022e4a575090565b9060ff60078360031b015416156200619f5762022e2562022e70916201b575846200610a565b62022e3c565b906020019060018251510362022f2057600162022e94835162004cef565b51510362022ec6571562022eb457620168cd6200680d6202161e62022e38565b620168cd6200680d6202161e62022dcf565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90602001906001825151036202307857600262022f98835162004cef565b5151036202301e571562022fe25762022fb062022e38565b62022fc06200680d835162004cef565b511115908162022fce575090565b9050620169f7620169f06202161e62022e38565b62022fec62022dcf565b62022ffc6200680d835162004cef565b51111590816202300a575090565b9050620169f7620169f06202161e62022dcf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90602001906001825151036202317c576001620230f0835162004cef565b5151036202312257156202311057620167cc6200680d6202161e62023215565b620167cc6200680d6202161e620231d6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b6000805b6103e88110620231e8575090565b9060ff611fbf8360031b015416156200619f5762022e256202320f916201b5758462005e52565b620231da565b6000805b6103e8811062023227575090565b9060ff60078360031b015416156200619f5762022e256202324d916201b5758462005e1c565b62023219565b9060200190600182515103620232fd57600162023271835162004cef565b515103620232a357156202329157620168cd6200680d6202161e62023215565b620168cd6200680d6202161e620231d6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90602001906001825151036202345557600262023375835162004cef565b515103620233fb5715620233bf576202338d62023215565b6202339d6200680d835162004cef565b5111159081620233ab575090565b9050620169f7620169f06202161e62023215565b620233c9620231d6565b620233d96200680d835162004cef565b5111159081620233e7575090565b9050620169f7620169f06202161e620231d6565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b15620234b757565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202352957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202359b57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202360d57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202367f57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b15620236f157565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202376357565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b15620237d557565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202384757565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b15620238b957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b9161019181146202398b5761019281146202397f576101938114620239735761019681146202396757610197146202395c575050600090565b620032d29162023ec1565b50620032d29162023ddc565b50620032d29162023c37565b50620032d29162023af6565b50620032d2919060200190600191828151510362023a9c5782620239b0825162004cef565b51510362023a42576020820151602681101562002a2357600a03620065c757600091835b620239e25750505050600090565b604081019260a093620239f9858251015162004cef565b51518210156201e54057816200743f879662023a189351015162004cef565b5162023a296200680d855162004cef565b5114620051c45762023a3b9062004cdf565b92620239d4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200190600191828151510362023bdd576020820151602681101562002a2357600a03620065c75782916000935b62023b335750505050600090565b6040810160a062023b48818351015162004cef565b51518610156201e54057906000855b62023b73575b50505062023b6c839462004cdf565b9362023b25565b62023b7f855162004cef565b515181101562023bd75762023b9d876200743f858551015162004cef565b5162023baf826200743f885162004cef565b511462023bcd579062023bc486939262004cdf565b90919262023b57565b5050505050905090565b62023b5d565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200190600191828151510362023d8257600262023c57825162004cef565b51510362023d28576020820151602681101562002a2357600a03620065c757600091835b62023c895750505050600090565b604081019260a09362023ca0858251015162004cef565b51518210156201e54057818562023cc1826200743f8a998651015162004cef565b5162023cd26200680d885162004cef565b511115928362023cf7575b505050620051c45762023cf09062004cdf565b9262023c7b565b51015162023d0b92506200743f9062004cef565b5162023d1c620169f0855162004cef565b51101581388062023cdd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b600191828151510362023e68576020820151602681101562002a2357600b03620065c757600091835b62023e135750505050600090565b60408101515192835181101562023e615762023e4a62023e3582879662004d46565b5162023e42855162004cef565b51906203358c565b620051c45762023e5a9062004cdf565b9262023e05565b5062016d86565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362023f46576020820151602681101562002a2357600b03620065c757600091835b62023ef85750505050600090565b60408101515192835181101562023e615762023f2f62023f1a82879662004d46565b5162023f27855162004cef565b519062006518565b620051c45762023f3f9062004cdf565b9262023eea565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b916097811462023fc35760981462023fb8575050600090565b620032d291620240d4565b50602001805151620032d29290600019016202407b57600162023fe7835162004cef565b515103620240215760200151602681101562002a23576200680d6202161e620240109262033353565b51146202401c57600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b919091602080930160019182825151036202415b57938293946000935b62024100575050505050600090565b6202410c835162004cef565b5151841015620174c9578181015193602685101562002a235762024131869562033353565b62024142826200743f875162004cef565b5114620174c157620241549062004cdf565b93620240f1565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd8114620242b7576102be8114620242ab576102bf81146202429f576102c0811462024293576102c1811462024287576102c281146202427b576102c381146202426f576102c4811462024263576102c5811462024257576102c681146202424b576102c781146202423f576102c8146202423457505050600090565b620032d292620254dc565b50620032d292620252e1565b50620032d292620250dc565b50620032d29262024e6c565b50620032d29262024c67565b50620032d29262024a58565b50620032d29262024939565b50620032d29262024812565b50620032d292620246eb565b50620032d29262024591565b50620032d2926202443d565b50620032d292620242d4565b606482101562004cfd570190600090565b91602080910192600184515103620243e3576001620242f4855162004cef565b51510362024389571562024350576202161e62024342620167cc936202433b620076a16200680d9560018060a01b03845116600052611f4981526040600020930162007387565b90620242c3565b90549060031b1c426200620e565b6202161e62024342620167cc936202433b620076a16200680d9560018060a01b03845116600052613f0181526040600020930162007387565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b91602080910192600184515103620245375760016202445d855162004cef565b515103620244dd5715620244a4576202161e62024342620168cd936202433b620076a16200680d9560018060a01b03845116600052611f4981526040600020930162007387565b6202161e62024342620168cd936202433b620076a16200680d9560018060a01b03845116600052611f4981526040600020930162007387565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160208091019260018451510362024691576002620245b1855162004cef565b515103620246375715620246035781516001600160a01b03166000908152611f49825260409020620245f39262024342926202433b91620076a1910162007387565b620169cd6200680d835162004cef565b81516001600160a01b03166000908152611f49825260409020620245f39262024342926202433b91620076a1910162007387565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200191600183515103620247b857600162024709845162004cef565b5151036202475e57156202474c57620076a1602062024729920162007387565b606481101562004cfd576200680d6202161e620167cc92611f4b0154426200620e565b620076a1602062024729920162007387565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200191600183515103620248df57600162024830845162004cef565b5151036202488557156202487357620076a1602062024850920162007387565b606481101562004cfd576200680d6202161e620168cd92611f4b0154426200620e565b620076a1602062024850920162007387565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200191600183515103620249fe57600262024957845162004cef565b515103620249a457156202499257620076a1602062024977920162007387565b606481101562004cfd57620245f390611f4b0154426200620e565b620076a1602062024977920162007387565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909291604093848201600193848251510362024c0e578462024a7b835162004cef565b51510362024bb5579584959660001462024b27576000945b62024aa357505050505050600090565b62024aaf825162004cef565b51518510156201adf757859460018060a01b0362024ad3826200743f865162004cef565b51166000526020611f49815262024b0e6200680d62024b0462024342866000206202433b620076a1878c0162007387565b9288015162004cef565b51106201adee5762024b209062004cdf565b9462024a93565b6000945b62024b3b57505050505050600090565b62024b47825162004cef565b51518510156201adf757859460018060a01b0362024b6b826200743f865162004cef565b51166000526020611f49815262024b9c6200680d62024b0462024342866000206202433b620076a1878c0162007387565b51106201adee5762024bae9062004cdf565b9462024b2b565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909291604093848201600193848251510362024e13578462024c8a835162004cef565b51510362024dba579584959660001462024d2c576000945b62024cb257505050505050600090565b62024cbe825162004cef565b51518510156201adf757859460018060a01b0362024ce2826200743f865162004cef565b51166000526020611f49815262024d136200680d62024b0462024342866000206202433b620076a1878c0162007387565b51116201adee5762024d259062004cdf565b9462024ca2565b6000945b62024d4057505050505050600090565b62024d4c825162004cef565b51518510156201adf757859460018060a01b0362024d70826200743f865162004cef565b51166000526020611f49815262024da16200680d62024b0462024342866000206202433b620076a1878c0162007387565b51116201adee5762024db39062004cdf565b9462024d30565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b929160408082019260019384815151036202508357600262024e8f825162004cef565b5151036202502a5784959660001462024f66576000945b62024eb657505050505050600090565b62024ec2815162004cef565b51518510156201adf757859460018060a01b0362024ee6826200743f855162004cef565b51166000526020611f49815262024f0f62024342866000206202433b620076a185890162007387565b9086019062024f236200680d835162004cef565b51811015918262024f48575b50506201adee5762024f419062004cdf565b9462024ea6565b62024f5b919250620169f0905162004cef565b511015388062024f2f565b6000945b62024f7a57505050505050600090565b62024f86815162004cef565b51518510156201adf757859460018060a01b0362024faa826200743f855162004cef565b51166000526020611f49815262024fd362024342866000206202433b620076a185890162007387565b9086019062024fe76200680d835162004cef565b5181101591826202500c575b50506201adee57620250059062004cdf565b9462024f6a565b6202501f919250620169f0905162004cef565b511015388062024ff3565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b92916040808201926001938481515103620252885784620250fe825162004cef565b5151036202522f57849596600014620251a5576000945b6202512257505050505090565b6202512e815162004cef565b51518510156201d47c5760018060a01b0362025150866200743f845162004cef565b51166000526020611f4981526202518b6200680d6202518162024342876000206202433b620076a1878a0162007387565b9287015162004cef565b51116201ad8c576202519e869562004cdf565b9462025115565b6000945b620251b657505050505090565b620251c2815162004cef565b51518510156201d47c5760018060a01b03620251e4866200743f845162004cef565b51166000526020611f498152620252156200680d6202518162024342876000206202433b620076a1878a0162007387565b51116201ad8c5762025228869562004cdf565b94620251a9565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9291604080820192600193848151510362025483578462025303825162004cef565b5151036202542a57849596600014620253a0576000945b6202532757505050505090565b62025333815162004cef565b51518510156201d47c5760018060a01b0362025355866200743f845162004cef565b51166000526020611f498152620253866200680d6202518162024342876000206202433b620076a1878a0162007387565b51106201ad8c5762025399869562004cdf565b946202531a565b6000945b620253b157505050505090565b620253bd815162004cef565b51518510156201d47c5760018060a01b03620253df866200743f845162004cef565b51166000526020611f498152620254106200680d6202518162024342876000206202433b620076a1878a0162007387565b51106201ad8c5762025423869562004cdf565b94620253a4565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b92916040808201926001938481515103620256e9576002620254ff825162004cef565b5151036202569057849596600014620255d1576000945b6202552357505050505090565b6202552f815162004cef565b51518510156201d47c5760018060a01b0362025551866200743f845162004cef565b51166000526020611f4981526202557a62024342856000206202433b620076a185880162007387565b908501906202558e6200680d835162004cef565b518110918215620255b4575b50506201ad8c57620255ad869562004cdf565b9462025516565b620255c7919250620169f0905162004cef565b511038806202559a565b6000945b620255e257505050505090565b620255ee815162004cef565b51518510156201d47c5760018060a01b0362025610866200743f845162004cef565b51166000526020613f0181526202563962024342856000206202433b620076a185880162007387565b908501906202564d6200680d835162004cef565b51811091821562025673575b50506201ad8c576202566c869562004cdf565b94620255d5565b62025686919250620169f0905162004cef565b5110388062025659565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b6001938085036202575a5750620032d2935062025e2a565b60028103620257705750620032d2935062025f14565b600381036202587a575050906040019180835151036202581e5762025796835162004cef565b515103620257bf57620257b96200680d60018060a01b0380935116935162004cef565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362025893575050620032d2935062026059565b60058103620258aa575050620032d293506202619e565b60068103620258c1575050620032d29350620262e3565b60078103620258d8575050620032d293506202651f565b60088103620258ef575050620032d293506202677d565b6009810362025906575050620032d29350620269bd565b600a81036202591d575050620032d2935062026bf1565b600b810362025934575050620032d2935062026ef3565b600c81036202594b575050620032d293506202711f565b600d810362025962575050620032d293506202736f565b600e810362025979575050620032d2935062027568565b600f810362025990575050620032d29350620278b8565b60108103620259a7575050620032d2935062027ab1565b60118103620259be575050620032d2935062027bd1565b60128103620259d5575050620032d2935062027cf1565b60138103620259ec575050620032d2935062027e87565b6014810362025a03575050620032d2935062027fa7565b6015810362025a1a575050620032d29350620280c7565b6019810362025a31575050620032d2935062028250565b601a810362025a48575050620032d2935062028388565b601b810362025a5f575050620032d29350620284c0565b601c8195929394951460001462025ba2575060200193808551510362025b495762025a8b855162004cef565b51510362025af057506000901562025aca5750516001600160a01b03166000908152611f47602052604090205490620167cc906200680d905162004cef565b90516001600160a01b03168152613eff602052604090205490620167cc906200680d9081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b601d810362025cdd575060200193808551510362025c845762025bc6855162004cef565b51510362025c2b57506000901562025c055750516001600160a01b03166000908152611f47602052604090205490620168cd906200680d905162004cef565b90516001600160a01b03168152613eff602052604090205490620168cd906200680d9081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b601e810362025e0f5750602001938451510362025db657600262025d02855162004cef565b51510362025d5d57506000901562025d3f5750516001600160a01b03166000908152611f476020526040902054620169cd6200680d835162004cef565b90516001600160a01b03168152613eff6020526040902054620245f3565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152fd5b9294509291601f14159050620065c757620032d2926202862f565b91909160018251510362025ebb571562025e8757620032d29160018060a01b03905116600052611f406020526200116462025e8162025e726001604060002001935162004cef565b51926040519283809262002cb6565b6203358c565b620032d29160018060a01b03905116600052613ef86020526200116462025e8162025e726001604060002001935162004cef565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b916020019160018351510362025ffd57600162025f32845162004cef565b51510362025f9e571562025f6f57516001600160a01b03166000908152611f406020526040902060020154905162016afb906200680d9062004cef565b516001600160a01b03166000908152613ef86020526040902060020154905162016afb906200680d9062004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b91602001916001835151036202614257600162026077845162004cef565b515103620260e35715620260b457516001600160a01b03166000908152611f4060205260409020600201549051620167cc906200680d9062004cef565b516001600160a01b03166000908152613ef860205260409020600201549051620167cc906200680d9062004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362026287576001620261bc845162004cef565b515103620262285715620261f957516001600160a01b03166000908152611f4060205260409020600201549051620168cd906200680d9062004cef565b516001600160a01b03166000908152613ef860205260409020600201549051620168cd906200680d9062004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9091602080910191600183515103620264c357600262026304845162004cef565b51510362026463576202631c6200680d845162004cef565b516202632d620169f0855162004cef565b5110620263dd5715620263ae5760018060a01b039081845116600052611f4091828252600260406000200154620263696200680d865162004cef565b51111594856202637b57505050505090565b909192939450511660005252620263a0620169f0600260406000200154925162004cef565b5110153880808080620174c1565b60018060a01b039081845116600052613ef891828252600260406000200154620263696200680d865162004cef565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202669e5762026542835162004cef565b515115620266365794839495600014620265c6576000935b62026569575050505050600090565b62026575835162004cef565b5151841015620174c957849360018060a01b03835116600052611f408252600260406000200154620265ad826200743f875162004cef565b5114620174c157620265bf9062004cdf565b936202655a565b6000935b620265d9575050505050600090565b620265e5835162004cef565b5151841015620174c957849360018060a01b03835116600052613ef882526002604060002001546202661d826200743f875162004cef565b5114620174c1576202662f9062004cdf565b93620265ca565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202670257565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062033a8c833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b9160200191600183515103620268de5760026202679b845162004cef565b5151036202687e5780156202686157620267c96103e8620267c16200680d865162004cef565b5110620266fa565b156202681757620267df6200680d835162004cef565b516103e881101562004cfd5760039160018060a01b03905116600052811b01602052620167cc620169f0604060002054925162004cef565b620268276200680d835162004cef565b516103e881101562004cfd57611fbb9160018060a01b0390511660005260031b01602052620167cc620169f0604060002054925162004cef565b620268786103e8620267c16200680d865162004cef565b620267c9565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202694257565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062033a8c833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b916020019160018351510362026b1e576002620269db845162004cef565b51510362026abe57801562026aa15762026a096103e862026a016200680d865162004cef565b51106202693a565b1562026a575762026a1f6200680d835162004cef565b516103e881101562004cfd5760039160018060a01b03905116600052811b01602052620168cd620169f0604060002054925162004cef565b62026a676200680d835162004cef565b516103e881101562004cfd57611fbb9160018060a01b0390511660005260031b01602052620168cd620169f0604060002054925162004cef565b62026ab86103e862026a016200680d865162004cef565b62026a09565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b1562026b8257565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062033aac83398151915260648201526000805160206203380c833981519152608482015260a490fd5b91909160208092019160018351510362026e23576003918262026c15855162004cef565b51510362026dc057801562026da35762026c436103e862026c3b6200680d875162004cef565b511062026b7a565b1562026cfe5762026c596200680d845162004cef565b51916103e88084101562004cfd5785516001600160a01b03908116600090815294831b830184526040852054865162026c9790620169f09062004cef565b511115968762026cac575b5050505050505090565b909192939495965062026cc46200680d885162004cef565b519283101562022a4b5751168452811b0190526040902054905162026cee906201d46a9062004cef565b5110153880808080808062026ca2565b62026d0e6200680d845162004cef565b516103e88082101562004cfd5760018060a01b039384875116946000958652611fbb8094831b018552604086205462026d4c620169f0895162004cef565b511115978862026d6157505050505050505090565b90919293949596975062026d7a6200680d895162004cef565b519384101562022b4f57511685521b0190526040902054905162022a3a906201d46a9062004cef565b62026dba6103e862026c3b6200680d875162004cef565b62026c43565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152fd5b1562026e8457565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062033aac83398151915260648201526000805160206203380c833981519152608482015260a490fd5b91602001916001835151036202704e57600262026f11845162004cef565b51510362026ff457801562026fd75762026f3f6103e862026f376200680d865162004cef565b511062026e7c565b1562026f8d5762026f556200680d835162004cef565b516103e881101562004cfd5760039160018060a01b03905116600052811b0160205262016afb620169f0604060002054925162004cef565b62026f9d6200680d835162004cef565b516103e881101562004cfd57611fbb9160018060a01b0390511660005260031b0160205262016afb620169f0604060002054925162004cef565b62026fee6103e862026f376200680d865162004cef565b62026f3f565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b15620270b057565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062033aac83398151915260648201526000805160206203380c833981519152608482015260a490fd5b9160200191600183515103620273155760026202713d845162004cef565b515103620272bb5780156202729e576202716b6103e8620271636200680d865162004cef565b5110620270a8565b156202721057620271816200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b03166000908152600392831b90920160205260408220546064808202939180159085049091141715620271fc57620271d56200680d855162004cef565b5191821015620014ce57506202161e620167cc926006620169f09360031b015490620050d4565b634e487b7160e01b81526011600452602490fd5b620272206200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620271fc57620272766200680d855162004cef565b5191821015620014ce57506202161e620167cc92611fbe620169f09360031b015490620050d4565b620272b56103e8620271636200680d865162004cef565b6202716b565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b91602001916001835151036202750e5760026202738d845162004cef565b515103620274b457156202742657620273ab6200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b03166000908152600392831b90920160205260408220546064808202939180159085049091141715620271fc57620273ff6200680d855162004cef565b5191821015620014ce57506202161e620168cd926006620169f09360031b015490620050d4565b620274366200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620271fc576202748c6200680d855162004cef565b5191821015620014ce57506202161e620168cd92611fbe620169f09360031b015490620050d4565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b906020809301916001835151036202785e57600262027588845162004cef565b515103620278045715620276c857620275a66200680d835162004cef565b516103e8908181101562004cfd5760018060a01b03948584511693600094855260038093811b0182526040852054606481029080820460641490151715620276b457620275f86200680d885162004cef565b518581101562022b4f57841b600601546202761391620050d4565b62027623620169f0885162004cef565b511115968762027637575050505050505090565b90919293949596506202764f6200680d885162004cef565b51918583101562022b4f5751168552821b8201905260408320546064808202949180159086049091141715620271fc576202768f6200680d865162004cef565b5192831015620014ce57501b6006015462026cee916201d46a916202161e91620050d4565b634e487b7160e01b86526011600452602486fd5b620276d86200680d835162004cef565b51906103e88083101562004cfd5760018060a01b039485835116936000948552611fbb809160031b018252604085205493606485029480860460641490151715620276b4576202772d6200680d885162004cef565b51948486101562022b4f576202774e90611fbe809760031b015490620050d4565b6202775e620169f0895162004cef565b51111597886202777357505050505050505090565b9091929394959697506202778c6200680d895162004cef565b519185831015620277f0575116865260031b019052604083205492606484029380850460641490151715620271fc57620277cb6200680d865162004cef565b5191821015620014ce575060031b015462022a3a916201d46a916202161e91620050d4565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027a57576002620278d6845162004cef565b515103620279fd57156202796f57620278f46200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b03166000908152600392831b90920160205260408220546064808202939180159085049091141715620271fc57620279486200680d855162004cef565b5191821015620014ce57506202161e62016afb926006620169f09360031b015490620050d4565b6202797f6200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620271fc57620279d56200680d855162004cef565b5191821015620014ce57506202161e62016afb92611fbe620169f09360031b015490620050d4565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027b7757600162027acf845162004cef565b51510362027b1d57801562027afd576202161e6200680d91620167cc9360018060a01b03905116906201b5d7565b5051620167cc906200680d906202161e906001600160a01b03166201b583565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027c9757600162027bef845162004cef565b51510362027c3d57801562027c1d576202161e6200680d91620168cd9360018060a01b03905116906201b5d7565b5051620168cd906200680d906202161e906001600160a01b03166201b583565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b90916020019060018251510362027e2d57600262027d10835162004cef565b51510362027dd357801562027d815782516001600160a01b039062027d38908216836201b5d7565b62027d486200680d855162004cef565b511115938462027d59575050505090565b62027d74939450916202161e91620169f0935116906201b5d7565b51101538808080620051c4565b5081516001600160a01b039062027d9a9082166201b583565b62027daa6200680d845162004cef565b511115928362027dba5750505090565b62021a61929350620169f0916202161e9151166201b583565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027f4d57600162027ea5845162004cef565b51510362027ef357801562027ed3576202161e6200680d91620167cc9360018060a01b03905116906201c48e565b5051620167cc906200680d906202161e906001600160a01b03166201c43a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b91602001916001835151036202806d57600162027fc5845162004cef565b5151036202801357801562027ff3576202161e6200680d91620168cd9360018060a01b03905116906201c48e565b5051620168cd906200680d906202161e906001600160a01b03166201c43a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b909160200190600182515103620281f6576002620280e6835162004cef565b5151036202819c5780156202814a5782516001600160a01b03906202810e908216836201c48e565b6202811e6200680d855162004cef565b51111593846202812f575050505090565b62027d74939450916202161e91620169f0935116906201c48e565b5081516001600160a01b0390620281639082166201c43a565b620281736200680d845162004cef565b5111159283620281835750505090565b62021a61929350620169f0916202161e9151166201c43a565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b91602001916001835151036202832e5760016202826e845162004cef565b515103620282d45715620282a857516001600160a01b03166000908152611f4560205260409020549051620167cc906200680d9062004cef565b516001600160a01b03166000908152613efd60205260409020549051620167cc906200680d9062004cef565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362028466576001620283a6845162004cef565b5151036202840c5715620283e057516001600160a01b03166000908152611f4560205260409020549051620168cd906200680d9062004cef565b516001600160a01b03166000908152613efd60205260409020549051620168cd906200680d9062004cef565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b9091602080910191600183515103620285d5576002620284e1845162004cef565b5151036202857b57156202854f5760018060a01b039081845116600052611f45918282526040600020546202851b6200680d865162004cef565b51111594856202852d57505050505090565b909192939450511660005252620263a0620169f0604060002054925162004cef565b60018060a01b039081845116600052613efd918282526040600020546202851b6200680d865162004cef565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b909160400160019283825151036202870b57839215620286aa576000925b6202865b5750505050600090565b62028667825162004cef565b51518310156201719057839260018060a01b03808351169062028690836200743f875162004cef565b511614620051c457620286a39062004cdf565b926202864d565b6000925b620286bc5750505050600090565b620286c8825162004cef565b51518310156201719057839260018060a01b038083511690620286f1836200743f875162004cef565b511614620051c457620287049062004cdf565b92620286ae565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b9161012d8114620289f85761012e8114620289ec5761012f8114620289e0576101308114620289d4576101318114620289c8576101328114620289bc576101338114620289b0576101348114620289a4576101358114620289985761013681146202898c5761013781146202898057610138811462028974576101398114620289685761013a81146202895c5761013b8114620289505761013c8114620289445761013d8114620289375761013e81146202892a5761013f81146202891d5761014081146202891057610141811462028904576101428114620288f8576101438114620288ec576101448114620288e0576101458114620288d4576101468114620288c8576101478114620288bc576101738114620288af576101748114620288a3576101751462028898575050600090565b620032d2916202b213565b50620032d2916202b050565b5050620032d2906202aff4565b50620032d2916202aea6565b50620032d2916202ab5c565b50620032d2916202a9e2565b50620032d2916202a861565b50620032d2916202a69c565b50620032d2916202a53a565b50620032d2916202a3bf565b5050620032d2906202a2b8565b5050620032d2906202a1a3565b5050620032d2906202a0a1565b5050620032d29062029f99565b50620032d29162029e18565b50620032d29162029c97565b50620032d29162029b14565b50620032d29162029991565b50620032d29162029810565b50620032d2916202968f565b50620032d2916202950c565b50620032d29162029389565b50620032d2916202924a565b50620032d2916202910b565b50620032d29162028fe6565b50620032d29162028ec2565b50620032d29162028d84565b50620032d29162028c46565b50620032d29162028b22565b50620032d2919060200190600191828151510362028ac9576020820151602681101562002a2357600d03620065c75762028a3383926202b3bf565b6000935b62028a455750505050600090565b62028a51825162004cef565b515184101562017190576000835b62028a79575b5062028a72839462004cdf565b9362028a37565b939291815185101562028ac05762028a97846200743f835162004cef565b5162028aa4868462004d46565b511462016c4d5762028ab883949562004cdf565b909262028a5f565b91929362028a65565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028bed576020820151602681101562002a2357600d03620065c75762028b5783926202b3bf565b6000935b62028b695750505050600090565b62028b75825162004cef565b515184101562017190576000835b62028b9d575b5062028b96839462004cdf565b9362028b5b565b939291815185101562028be45762028bbb846200743f835162004cef565b5162028bc8868462004d46565b511462016c4d5762028bdc83949562004cdf565b909262028b83565b91929362028b89565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028d2b576020820151602681101562002a2357600d03620065c75762028c7b83926202b3bf565b6000925b62028c8a5750505090565b62028c96825162004cef565b515183101562016e0d57600080855b62028cc5575b501562016d865762028cbe849362004cdf565b9262028c7f565b8295939194955181101562028d205762028ce5866200743f845162004cef565b5162028cf2828562004d46565b511462028d13579062028d0784939262004cdf565b90939594919262028ca5565b5091809493503862028cab565b949390929462028cab565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028e69576020820151602681101562002a2357600d03620065c75762028db983926202b3bf565b6000925b62028dc85750505090565b62028dd4825162004cef565b515183101562016e0d57600080855b62028e03575b501562016d865762028dfc849362004cdf565b9262028dbd565b8295939194955181101562028e5e5762028e23866200743f845162004cef565b5162028e30828562004d46565b511462028e51579062028e4584939262004cdf565b90939594919262028de3565b5091809493503862028de9565b949390929462028de9565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028f8d576020820151602681101562002a2357600e03620065c75762028ef783926202b3bf565b6000935b62028f095750505050600090565b62028f15825162004cef565b515184101562017190576000835b62028f3d575b5062028f36839462004cdf565b9362028efb565b939291815185101562028f845762028f5b846200743f835162004cef565b5162028f68868462004d46565b511462016c4d5762028f7c83949562004cdf565b909262028f23565b91929362028f29565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001918281515103620290b1576020820151602681101562002a2357600e03620065c7576202901b83926202b3bf565b6000935b6202902d5750505050600090565b62029039825162004cef565b515184101562017190576000835b62029061575b506202905a839462004cdf565b936202901f565b9392918151851015620290a8576202907f846200743f835162004cef565b516202908c868462004d46565b511462016c4d57620290a083949562004cdf565b909262029047565b9192936202904d565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620291f0576020820151602681101562002a2357600e03620065c7576202914083926202b3bf565b6000925b6202914f5750505090565b6202915b825162004cef565b515183101562016e0d57600080855b6202918a575b501562016d865762029183849362004cdf565b9262029144565b82959391949551811015620291e557620291aa866200743f845162004cef565b51620291b7828562004d46565b5114620291d85790620291cc84939262004cdf565b9093959491926202916a565b5091809493503862029170565b949390929462029170565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b906020019060019182815151036202932f576020820151602681101562002a2357600e03620065c7576202927f83926202b3bf565b6000925b6202928e5750505090565b6202929a825162004cef565b515183101562016e0d57600080855b620292c9575b501562016d8657620292c2849362004cdf565b9262029283565b829593919495518110156202932457620292e9866200743f845162004cef565b51620292f6828562004d46565b51146202931757906202930b84939262004cdf565b909395949192620292a9565b50918094935038620292af565b9493909294620292af565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620294b2576002620293a9825162004cef565b51510362029458576020820151602681101562002a2357600d03620065c757620293d483926202b3bf565b906000925b620293e75750505050600090565b8151831015620171905782620293ff85948462004d46565b51620294106200680d845162004cef565b5111158062029431575b620051c4576202942a9062004cdf565b92620293d9565b506202943e818462004d46565b516202944f620169f0845162004cef565b5110156202941a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620296355760026202952c825162004cef565b515103620295db576020820151602681101562002a2357600d03620065c7576202955783926202b3bf565b906000925b6202956a5750505050600090565b81518310156201719057826202958285948462004d46565b51620295936200680d845162004cef565b51111580620295b4575b620051c457620295ad9062004cdf565b926202955c565b50620295c1818462004d46565b51620295d2620169f0845162004cef565b5110156202959d565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620297b6576002620296af825162004cef565b5151036202975c576020820151602681101562002a2357600d03620065c757620296da83926202b3bf565b60009182945b620296ed57505050905090565b815185101562016c555762029703858362004d46565b51620297146200680d835162004cef565b5111801562029736575b62016c4d576202972f849562004cdf565b94620296e0565b5062029743858362004d46565b5162029754620169f0835162004cef565b51106202971e565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b906020019060019182815151036202993757600262029830825162004cef565b515103620298dd576020820151602681101562002a2357600d03620065c7576202985b83926202b3bf565b60009182945b6202986e57505050905090565b815185101562016c555762029884858362004d46565b51620298956200680d835162004cef565b51118015620298b7575b62016c4d57620298b0849562004cdf565b9462029861565b50620298c4858362004d46565b51620298d5620169f0835162004cef565b51106202989f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029aba576002620299b1825162004cef565b51510362029a60576020820151602681101562002a2357600e03620065c757620299dc83926202b3bf565b906000925b620299ef5750505050600090565b815183101562017190578262029a0785948462004d46565b5162029a186200680d845162004cef565b5111158062029a39575b620051c45762029a329062004cdf565b92620299e1565b5062029a46818462004d46565b5162029a57620169f0845162004cef565b51101562029a22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029c3d57600262029b34825162004cef565b51510362029be3576020820151602681101562002a2357600e03620065c75762029b5f83926202b3bf565b906000925b62029b725750505050600090565b815183101562017190578262029b8a85948462004d46565b5162029b9b6200680d845162004cef565b5111158062029bbc575b620051c45762029bb59062004cdf565b9262029b64565b5062029bc9818462004d46565b5162029bda620169f0845162004cef565b51101562029ba5565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029dbe57600262029cb7825162004cef565b51510362029d64576020820151602681101562002a2357600e03620065c75762029ce283926202b3bf565b60009182945b62029cf557505050905090565b815185101562016c555762029d0b858362004d46565b5162029d1c6200680d835162004cef565b5111801562029d3e575b62016c4d5762029d37849562004cdf565b9462029ce8565b5062029d4b858362004d46565b5162029d5c620169f0835162004cef565b511062029d26565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029f3f57600262029e38825162004cef565b51510362029ee5576020820151602681101562002a2357600e03620065c75762029e6383926202b3bf565b60009182945b62029e7657505050905090565b815185101562016c555762029e8c858362004d46565b5162029e9d6200680d835162004cef565b5111801562029ebf575b62016c4d5762029eb8849562004cdf565b9462029e69565b5062029ecc858362004d46565b5162029edd620169f0835162004cef565b511062029ea7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b6020808201908151602681101562002a2357600d1480156202a08b575b6202a03d57508051602681101562002a2357600f149081156202a026575b5062029fe05750600090565b6000805b606060408401510151805182101562017689576202a0058260c09262004d46565b5101511562022e325760406202a01d60609262004cdf565b91505062029fe4565b905051602681101562002a2357600c143862029fd4565b60009150815b816040850151015180518210156202a081576202a0638260019262004d46565b5115150362017682576202a07960409162004cdf565b90506202a043565b5050505050600190565b508151602681101562002a2357600e1462029fb6565b6020808201908151602681101562002a2357600d1480156202a18d575b6202a14957508051602681101562002a2357600f149081156202a132575b506202a0e85750600090565b6000805b6060604084015101518051821015620176895760c06202a10f8360019362004d46565b51015115151462022e325760406202a12960609262004cdf565b9150506202a0ec565b905051602681101562002a2357600c14386202a0dc565b60009150815b816040850151015180518210156202a081576202a16f8260019262004d46565b5115151462017682576202a18560409162004cdf565b90506202a14f565b508151602681101562002a2357600e146202a0be565b6020808201908151602681101562002a2357600d1480156202a2a2575b6202a25457508051602681101562002a2357600f149081156202a23d575b506202a1ea5750600090565b60005b6060604083015101518051821015620065c757819060c06202a213600193849362004d46565b5101511515146202a237575060406202a22e60609262004cdf565b9150506202a1ed565b91505090565b905051602681101562002a2357600c14386202a1de565b905060005b8160408401510151805182101562016d865781906202a27c600192839262004d46565b511515146202a29b57506202a29360409162004cdf565b90506202a259565b9250505090565b508151602681101562002a2357600e146202a1c0565b6020808201908151602681101562002a2357600d1480156202a3a9575b6202a36257508051602681101562002a2357600f149081156202a34b575b506202a2ff5750600090565b60005b6060604083015101518051821015620065c7576202a3238260c09262004d46565b510151156202a3445760406202a33b60609262004cdf565b9150506202a302565b5050600190565b905051602681101562002a2357600c14386202a2f3565b905060005b8160408401510151805182101562016d865781906202a38a600192839262004d46565b511515036202a29b57506202a3a160409162004cdf565b90506202a367565b508151602681101562002a2357600e146202a2d5565b60208092019160019283815151036202a4e0576202a3df84915162004cef565b5151036202a487578082018051602681101562002a2357600f141590816202a46f575b50620065c757600091835b6202a41b5750505050600090565b60408101926060845101519384518210156201e540576202a4566200680d60a0866202a449868b9a62004d46565b5101519351015162004cef565b5114620051c4576202a4689062004cdf565b926202a40d565b905051602681101562002a2357600c1415386202a402565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b60208092019160019283815151036202a642578183018051602681101562002a2357600f141590816202a62a575b5062016d865783926000945b6202a583575050505050600090565b6040810160608082510151518710156202a62257906000865b6202a5b8575b5050506202a5b1849562004cdf565b946202a574565b6202a5c4855162004cef565b51518110156202a61c57856202a5df89858551015162004d46565b5101516202a5f3826200743f885162004cef565b51146202a61157906202a60887939262004cdf565b9091926202a59c565b505050505050905090565b6202a5a2565b505062016f9a565b905051602681101562002a2357600c1415386202a568565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b60208092019160019283815151036202a8075760026202a6bd825162004cef565b5151036202a7ad578183018051602681101562002a2357600f141590816202a795575b5062016d8657600092845b6202a6fa575050505050600090565b604081019360609485815101519586518310156202a78c57828691826202a723838c9b62004d46565b5101516202a7366200680d895162004cef565b51111593846202a75c575b50505050620174c1576202a7559062004cdf565b936202a6eb565b6202a76c93945051015162004d46565b5101516202a77f620169f0855162004cef565b511015848238806202a741565b50505062016f9a565b905051602681101562002a2357600c1415386202a6e0565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b602080920160019283825151036202a98957836202a880835162004cef565b5151036202a92a578083018051602681101562002a2357600f141590816202a912575b5062016d8657600092845b6202a8bd575050505050600090565b6060604082015101519384518110156202a90b57826202a8df82889762004d46565b5101516202a8f26200680d865162004cef565b5110620174c1576202a9049062004cdf565b936202a8ae565b5062016f9a565b905051602681101562002a2357600c1415386202a8a3565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152fd5b602080920160019283825151036202ab0357836202aa01835162004cef565b5151036202aaa4578083018051602681101562002a2357600f141590816202aa8c575b5062016d8657600092845b6202aa3e575050505050600090565b6060604082015101519384518110156202a90b57826202aa6082889762004d46565b5101516202aa736200680d865162004cef565b5111620174c1576202aa859062004cdf565b936202aa2f565b905051602681101562002a2357600c1415386202aa24565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152fd5b906020019060019182815151036202ae4c57826202ab7b825162004cef565b5151036202adec57602082018051602681101562002a2357600f141590816202add4575b50620065c7576000939291825b6202abbb575b50600093505050565b60408101946060808751015180518310156202adcb576202abe1836202abe89262004d46565b5162005673565b906006918281101562002a235715806202adb2575b6202ad58576202ac166202abe184838b51015162004d46565b8281101562002a23578614806202ad98575b6202ad58576202ac416202abe184838b51015162004d46565b8281101562002a2357600280911490816202ad7d575b506202ad58576202ac716202abe184838b51015162004d46565b8281101562002a2357600380911490816202ad62575b506202ad58576202aca16202abe184838b51015162004d46565b978289101562002a23576004809914806202ad3e575b6202ad3357836202acd0926202abe19251015162004d46565b908110156202ad1e5784959650600580911490816202ad03575b50620051c4576202acfb9062004cdf565b94936202abac565b90506202ad156200680d855162004cef565b5114386202acea565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b50886202ad506200680d885162004cef565b51146202acb7565b5093955050505050565b90506202ad746200680d875162004cef565b5114386202ac87565b90506202ad8f6200680d875162004cef565b5114386202ac57565b50856202adaa6200680d875162004cef565b51146202ac28565b506202adc36200680d865162004cef565b51156202abfd565b5050506202abb2565b905051602681101562002a2357600c1415386202ab9f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b906020019060019182815151036202af9a57602082018051602681101562002a2357600f141590816202af82575b50620065c75782916000935b6202aeee5750505050600090565b6040810160608082510151518610156201e54057906000855b6202af23575b5050506202af1c839462004cdf565b936202aee0565b6202af2f855162004cef565b51518110156202af7c57826202af4a88828551015162004d46565b5101516202af5e826200743f885162004cef565b511462023bcd57906202af7386939262004cdf565b9091926202af07565b6202af0d565b905051602681101562002a2357600c1415386202aed4565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b6020810151602681101562002a2357601303620074b25760005b60408083015101518051821015620065c757819060c06202b033600193849362004d46565b5101511515146202a23757506202b04a9062004cdf565b6202b00e565b6020918201805151600094936001939091600019016202b1b95760026202b078845162004cef565b5151036202b15f5781810151602681101562002a23576013036202b155576000959493929190835b6202b0af575b50505050909150565b604080820190808251015180518a10156202b14c578491826202b0d48c809462004d46565b5101516202b0e76200680d895162004cef565b51111593846202b11c575b505050506202b112576202b1098495969762004cdf565b9695946202b0a0565b5050509150915090565b6202b12c93945051015162004d46565b5101516202b13f620169f0855162004cef565b511015828838806202b0f2565b5050506202b0a6565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200160019182825151036202b36457826202b231835162004cef565b5151036202b306576020810151602681101562002a2357601303620065c75782916000935b6202b2645750505050600090565b6040808301908082510151518610156201e54057906000855b6202b299575b5050506202b292839462004cdf565b936202b256565b6202b2a987848451015162004d46565b5151518110156202b300576202b2d1816202b2c989868651015162004d46565b515162004d46565b516202b2e26200680d865162004cef565b511462023bcd57906202b2f786939262004cdf565b9091926202b27d565b6202b283565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b6020908181018051602681101562002a2357600d149081156202b4da575b506202b3ff5750506040516202b3f38162002b3f565b60008152600036813790565b6040019160a0916202b4216202b419848651015162004cef565b515162004e62565b93600092835b6202b436868451015162004cef565b51518110156202b493576202b45081858551015162004d46565b516202b46e575b6202b4666202b4369162004cdf565b90506202b427565b936202b4666202b489828762001ac76202b436958c62004d46565b959150506202b457565b50935050506202b4a38162004e62565b9060005b8181106202b4b6575090925050565b806202b4c76202b4d4928762004d46565b5162001ac7828662004d46565b6202b4a7565b905051602681101562002a2357600e14386202b3dd565b9161025981146202b86d5761025a81146202b77d5761025b81146202b68d5761025c81146202b5775761025d81146202b56b5761025e81146202b55f5761025f81146202b55357610260146202b548575050600090565b620032d2916202bd2b565b50620032d2916202bbb1565b50620032d2916202baa0565b50620032d2916202b95d565b50602001906001825151036202b6335760026202b595835162004cef565b5151036202b5d957602001908151516202b5b46200680d835162004cef565b51111591826202b5c357505090565b620169f7919250620169f0905151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b50602001906001825151036202b7235760016202b6ab835162004cef565b5151036202b6c9576200680d602062016afb92015151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b50602001906001825151036202b8135760016202b79b835162004cef565b5151036202b7b9576200680d6020620168cd92015151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b50602001906001825151036202b9035760016202b88b835162004cef565b5151036202b8a9576200680d6020620167cc92015151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919091602080930160019182825151036202ba4657826202b97f835162004cef565b5151036202b9ec57938293946000935b6202b99e575050505050600090565b818101519384518110156202a90b576202b9c3620076a184620067a7848a9962004d46565b6202b9d36200680d865162004cef565b5114620174c1576202b9e59062004cdf565b936202b98f565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919060208091019060019182815151036202bb57578293946000945b6202bacb575050505050600090565b8281018051518610156202a90b576000855b6202baf8575b50506202baf1849562004cdf565b946202babc565b6202bb04845162004cef565b51518110156202bb51576202bb24620076a186620067a78a865162004d46565b6202bb35826200743f875162004cef565b511462023bcd57906202bb49869262004cdf565b90916202badd565b6202bae3565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b91909160208093019060019182815151036202bcd157846202bbd4825162004cef565b5151920191825151036202bc565782939460009283955b6202bbfa575b50505050905090565b805180518710156202bc4f57620076a183620067a7896202bc1b9462004d46565b6202bc2c876200743f865162004cef565b51036202bc46576202bc3f859662004cdf565b956202bbeb565b50505091505090565b506202bbf1565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919060208091019060019182815151036202bdfb578293946000935b6202bd53575050505090565b8281018051518510156202bdf457856000918183905b6202bd8b575b5050501562016f9a576202bd84859462004cdf565b936202bd47565b6202bd97865162004cef565b51518110156202bdee576202bdb7620076a188620067a78b865162004d46565b6202bdc8826200743f895162004cef565b51146202bde1576202bdda9062004cdf565b826202bd69565b505090508538806202bd6f565b6202bd6f565b50620051c4565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916101cd81146202bea7576101ce81146202be9b576101cf81146202be8f576101d0146202be84575050600090565b620032d2916202c4b5565b50620032d2916202c293565b50620032d2916202c0a0565b50620032d2919060200160019182825151036202c0465760026202becc835162004cef565b5151036202bfec576202bedf816202c6a8565b15620065c7576202bef0906202c705565b9180939150518251036202bf8157600092845b6202bf12575050505050600090565b8051841015620174c957836202bf2a86958362004d46565b516202bf3b6200680d855162004cef565b5114806202bf5b575b620174c1576202bf549062004cdf565b936202bf03565b506202bf68818562004d46565b516202bf79620169f0855162004cef565b51106202bf44565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036202c2395760026202c0bf835162004cef565b5151036202c1df576202c0d2816202c6a8565b15620065c7576202c0e3906202c705565b9180939150518251036202c17457600092845b6202c105575050505050600090565b8051841015620174c957836202c11d86958362004d46565b516202c12e6200680d855162004cef565b5114806202c14e575b620174c1576202c1479062004cdf565b936202c0f6565b506202c15b818562004d46565b516202c16c620169f0855162004cef565b51116202c137565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036202c45b5760036202c2b2835162004cef565b5151036202c401576202c2c5816202c6a8565b15620065c7576202c2d6906202c705565b9180939150518251036202c39657600092845b6202c2f8575050505050600090565b8051841015620174c957836202c31086958362004d46565b516202c3216200680d855162004cef565b5114806202c36f575b806202c348575b620174c1576202c3419062004cdf565b936202c2e9565b506202c355818562004d46565b516202c3666201d46a855162004cef565b5110156202c331565b506202c37c818562004d46565b516202c38d620169f0855162004cef565b5111156202c32a565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036202c64e5760026202c4d4835162004cef565b5151036202c5f4576202c4e7816202c6a8565b15620065c7576202c4f8906202c705565b9180939150518251036202c58957600092845b6202c51a575050505050600090565b8051841015620174c957836202c53286958362004d46565b516202c5436200680d855162004cef565b5114806202c563575b620174c1576202c55c9062004cdf565b936202c50b565b506202c570818562004d46565b516202c581620169f0855162004cef565b51146202c54c565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b6020018051602681101562002a23576014149081156202c6ed575b81156202c6d6575b506202401c57600090565b905051602681101562002a2357601e14386202c6cb565b80915051602681101562002a2357601514906202c6c3565b6202c710816202c6a8565b156202c81657602081018051602681101562002a23576014146202c801578051602681101562002a23576015146202c7ca5751602681101562002a2357601e146202c79857506040516202c7648162002b3f565b60008152604051916202c7778362002b3f565b60008352604051916202c78a8362002b3f565b600083526000368137929190565b604001906202c7ac60a08351015162004cef565b51906202c7c360a062007446818651015162004d13565b5191929190565b50604001906202c7df60a08351015162004cef565b51906202c7c360a06202c7f6818651015162004d24565b519451015162004d35565b50604001906202c7ac60a08351015162004cef565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202c962576101b081146202c956576101b181146202c94a576101b281146202c93e576101b381146202c932576101b481146202c926576101b581146202c91a576101b6146202c90f575050600090565b620032d2916202d3ab565b50620032d2916202d206565b50620032d2916202d0a1565b50620032d2916202cf3c565b50620032d2916202cdd7565b50620032d2916202cc32565b50620032d2916202cacd565b50620032d291906020019060019182815151036202ca7357826202c987825162004cef565b5151036202ca19576020820151602681101562002a2357601103620065c757600091835b6202c9b95750505050600090565b604081019260a0936202c9d0858251015162004cef565b51518210156201e54057816200743f87966202c9ef9351015162004cef565b516202ca006200680d855162004cef565b5110620051c4576202ca129062004cdf565b926202c9ab565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202cbd857826202caec825162004cef565b5151036202cb7e576020820151602681101562002a2357601103620065c757600091835b6202cb1e5750505050600090565b604081019260a0936202cb35858251015162004cef565b51518210156201e54057816200743f87966202cb549351015162004cef565b516202cb656200680d855162004cef565b5111620051c4576202cb779062004cdf565b926202cb10565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202cd7d5760026202cc52825162004cef565b5151036202cd23576020820151602681101562002a2357601103620065c757600091835b6202cc845750505050600090565b604081019260a0936202cc9b858251015162004cef565b51518210156201e5405781856202ccbc826200743f8a998651015162004cef565b516202cccd6200680d885162004cef565b51111592836202ccf2575b505050620051c4576202cceb9062004cdf565b926202cc76565b5101516202cd0692506200743f9062004cef565b516202cd17620169f0855162004cef565b5110158138806202ccd8565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202cee257826202cdf6825162004cef565b5151036202ce88576020820151602681101562002a2357601103620065c757600091835b6202ce285750505050600090565b604081019260a0936202ce3f858251015162004cef565b51518210156201e54057816200743f87966202ce5e9351015162004cef565b516202ce6f6200680d855162004cef565b5114620051c4576202ce819062004cdf565b926202ce1a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d04757826202cf5b825162004cef565b5151036202cfed576020820151602681101562002a2357601203620065c757600091835b6202cf8d5750505050600090565b604081019260a0936202cfa4858251015162004cef565b51518210156201e54057816200743f87966202cfc39351015162004cef565b516202cfd46200680d855162004cef565b5110620051c4576202cfe69062004cdf565b926202cf7f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d1ac57826202d0c0825162004cef565b5151036202d152576020820151602681101562002a2357601203620065c757600091835b6202d0f25750505050600090565b604081019260a0936202d109858251015162004cef565b51518210156201e54057816200743f87966202d1289351015162004cef565b516202d1396200680d855162004cef565b5111620051c4576202d14b9062004cdf565b926202d0e4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d3515760026202d226825162004cef565b5151036202d2f7576020820151602681101562002a2357601203620065c757600091835b6202d2585750505050600090565b604081019260a0936202d26f858251015162004cef565b51518210156201e5405781856202d290826200743f8a998651015162004cef565b516202d2a16200680d885162004cef565b51111592836202d2c6575b505050620051c4576202d2bf9062004cdf565b926202d24a565b5101516202d2da92506200743f9062004cef565b516202d2eb620169f0855162004cef565b5110158138806202d2ac565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d4b657826202d3ca825162004cef565b5151036202d45c576020820151602681101562002a2357601203620065c757600091835b6202d3fc5750505050600090565b604081019260a0936202d413858251015162004cef565b51518210156201e54057816200743f87966202d4329351015162004cef565b516202d4436200680d855162004cef565b5114620051c4576202d4559062004cdf565b926202d3ee565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b156202d51857565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202d5678162002fc4565b6202d5756200e52e620332ea565b6202d5808162002fc4565b600181036202d59e57506202d5986200e55a620332ea565b611faf55565b6202d5a98162002fc4565b600281036202d5b95750611fb055565b6202d5c48162002fc4565b600381036202d5d45750611fb155565b806202d5e260049262002fc4565b146202d5eb5750565b611fb255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b8251811015620115b15760c06202d6b4828562004d46565b510151156202da6b576202d6cd6202abe1828562004d46565b60068082101562002a235760049182036202d818575060209060016003836202d6f7868962004d46565b51015106036202d7145750506202d70e9062004cdf565b6202d69c565b62004cdb82846202d7fd60636202d7456202d73e856202d735868e62004d46565b510151620050f5565b93620050f5565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202d78162004db08388016202d660565b016000805160206203388c83398151915281526202d7aa82518093601396878501910162002e01565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002b94565b5193849362461bcd60e51b8552840152602483019062002e26565b6202d8286202abe1848762004d46565b818110156201e0f6576001036202d938575060209060026003836202d84e868962004d46565b51015106036202d8655750506202d70e9062004cdf565b62004cdb82846202d7fd605d6202d8866202d73e856202d735868e62004d46565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202d8c262004db08388016202d660565b016000805160206203388c83398151915281526202d8eb82518093601396878501910162002e01565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002b94565b6202d9486202abe1848762004d46565b9081101562015501576002036202da4f576020906003826202d96b858862004d46565b510151066202d9815750506202d70e9062004cdf565b62004cdb82846202d7fd6202d9a76202d9a0846202d735858d62004d46565b92620050f5565b916202da4060409384519586936202d9c562004db08387016202d660565b016000805160206203388c83398151915281528151906202d9ef826013948d868501910162002e01565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002b94565b60405162461bcd60e51b815290819062004cdb9082016202d5f1565b6202da7b6202abe1828562004d46565b6006908181101562002a23576005036202db965750602060016003826202daa3858862004d46565b51015106036202dab957506202d70e9062004cdf565b62004cdb826202db7960526202dada6202d73e866202d73581998c62004d46565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202db1562004db08387016202d629565b016000805160206203388c83398151915281528251906202db3f826013958c878501910162002e01565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002b94565b5192839262461bcd60e51b84526004840152602483019062002e26565b6202dba66202abe1838662004d46565b908082101562002a235760039182036202dcb557506002602091826202dbcd858862004d46565b51015106036202dbe357506202d70e9062004cdf565b62004cdb826202db79605c6202dc046202d73e866202d73581998c62004d46565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202dc3f62004db08387016202d629565b016000805160206203388c83398151915281528251906202dc69826013958c878501910162002e01565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002b94565b6202dcc56202abe1848762004d46565b9081101562002a23576002036202dd7157602090816202dce6848762004d46565b510151066202dcfb57506202d70e9062004cdf565b62004cdb826202db796202dd1a6202d9a0856202d73581988b62004d46565b916202dd6260409384519788936202dd3862004db08387016202d629565b016000805160206203388c83398151915281528151906202d9ef826013948b868501910162002e01565b03601f19810186528562002b94565b60405162461bcd60e51b81528062004cdb600482016202d5f1565b156202dd9457565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202de1d57565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202de7557565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202ded657565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202df2f57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202df9257565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202dff857565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202e05a57565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202e0b257565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202e11157565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202e16a57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202e1c360c08351015162004cef565b51916202e1e560a06202e1da818451015162004cef565b519251015162004d13565b51936202e1fa845183511462000fa3620331b7565b6202e20d845186511462000fa3620331b7565b60005b84518110156202e26a576202e226818462004d46565b51906103e882101562004cfd576202e2649160018060a01b03865116600052600390811b0160205262000faa60406000205462007ce9838a62004d46565b6202e210565b5092919360005b83518110156202e395576202e287818462004d46565b51906103e8918281101562004cfd5760018060a01b03908189511660005260039081602091811b0181526202e2c760406000205462007d56868962004d46565b906202e2d4868a62004d46565b51918783101562004cfd57846202e30193878f5116600052811b01845260406000205562000fa3620332bb565b6202e30d848862004d46565b518581101562004cfd578290846202e326878c62004d46565b5116600052811b0181526202e34660406000205462006814868962004d46565b9190926202e355868a62004d46565b519687101562004cfd576202e38f9662000faa956202e375888d62004d46565b5116600052811b01905260406000205562000fa362033320565b6202e271565b5050620121cd6202e3a69162032f53565b90604051936202e3b68562002b78565b60018552602036818701376001600160a01b03610ba08190529051166202e3dd8562004cef565b526000935b81518510156202e700576202e3f8858362004d46565b51946202e406845162004e62565b916000936202e416825162004e62565b610b80528496855b87518110156202e4bf576202e445610ba0516202e43c838b62004d46565b51168b62032d3b565b15806202e487575b6202e464575b6202e45e9062004cdf565b6202e41e565b956202e47e6202e45e91610ba0516200a36b8a8c62004d46565b9690506202e453565b506103e88a101562004cfd57610ba0516202e4a3828a62004d46565b511660005260038a811b0160205260406000205415156202e44d565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202e559578762004cfd57610ba0516202e4fd828c62004d46565b51166000528b602052604060002054156202e524575b6202e51e9062004cdf565b6202e4dd565b976202e5506202e51e918b6202e53f8c610ba0519262004d46565b511662001ac782610b805162004d46565b9890506202e513565b5094959193965098509690959680610b405262004cfd5760040180610b005254956202e58a62008068868962006200565b610b605260009788610b20525b610b405162004cfd57610b2051888110156202e635576202e5c66202e5dc916000610b4052610b005162004f5e565b610ba05191549060031b1c16610b805162032dea565b156202e5fb575b6202e5f1610b205162004cdf565b610b20526202e597565b976202e62e906202e613610b2051610b005162004f5e565b610ba05191549060031b1c1662001ac782610b605162004d46565b976202e5e3565b5095939096509690969391936000915b8383106202e6cf5750505050610b405162004cfd57610b6051516001600160401b03811162002a9b576202e67d81610b00516200509a565b6020610b605101610b005160005260206000206000610ba051905b8481106202e6b85750505050506202e6b09062004cdf565b93926202e3e2565b60019060208386511695019481850155016202e698565b620081fe6202e6f991610ba0516202e6e8868662004d46565b511662001ac782610b605162004d46565b916202e645565b5050509050565b60408101906202e71c60c08351015162004cef565b51916202e73360a06202e1da818451015162004cef565b51936202e748845183511462000fa3620331b7565b6202e75b845186511462000fa3620331b7565b60005b84518110156202e7b8576202e774818462004d46565b51906103e882101562004cfd576202e7b29160018060a01b03865116600052600390811b0160205262000faa60406000205462007ce9838a62004d46565b6202e75e565b5092919360005b83518110156202e8c9576202e7d5818462004d46565b51906103e8918281101562004cfd5760018060a01b03908189511660005260039081602091811b0181526202e81560406000205462007d56868962004d46565b906202e822868a62004d46565b51918783101562004cfd57846202e84f93878f5116600052811b01845260406000205562000fa3620332bb565b6202e85b848862004d46565b518581101562004cfd578290846202e874878c62004d46565b5116600052811b0181526202e89460406000205462006814868962004d46565b9190926202e8a3868a62004d46565b519687101562004cfd576202e8c39662000faa956202e375888d62004d46565b6202e7bf565b5050620121cd6202e8da9162032f53565b90604051936202e8ea8562002b78565b60018552602036818701376001600160a01b03610b008190529051166202e9118562004cef565b526000935b81518510156202e700576202e92c858362004d46565b51946202e93a845162004e62565b916000936202e94a825162004e62565b610b60528496855b87518110156202e9ea576202e970610b00516202e43c838b62004d46565b15806202e9b2575b6202e98f575b6202e9899062004cdf565b6202e952565b956202e9a96202e98991610b00516200a36b8a8c62004d46565b9690506202e97e565b506103e88a101562004cfd57610b00516202e9ce828a62004d46565b511660005260038a811b0160205260406000205415156202e978565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202ea73578762004cfd57610b00516202ea28828c62004d46565b51166000528b602052604060002054156202ea4f575b6202ea499062004cdf565b6202ea08565b976202ea6a6202ea49918b6202e6e88c610b00519262004d46565b9890506202ea3e565b5094959193965098509690959680610ba05262004cfd5760040180610b405254956202eaa462008068868962006200565b610b205260009788610b80525b610ba05162004cfd57610b8051888110156202eb4f576202eae06202eaf6916000610ba052610b405162004f5e565b610b005191549060031b1c16610b605162032dea565b156202eb15575b6202eb0b610b805162004cdf565b610b80526202eab1565b976202eb48906202eb2d610b8051610b405162004f5e565b610b005191549060031b1c1662001ac782610b205162004d46565b976202eafd565b5095939096509690969391936000915b8383106202ebe95750505050610ba05162004cfd57610b2051516001600160401b03811162002a9b576202eb9781610b40516200509a565b6020610b205101610b405160005260206000206000610b0051905b8481106202ebd25750505050506202ebca9062004cdf565b93926202e916565b60019060208386511695019481850155016202ebb2565b620081fe6202ec1391610b00516202ec02868662004d46565b511662001ac782610b205162004d46565b916202eb5f565b9060408201916202ec3560a06200779b818651015162004cef565b519280518451036200ad0a5760005b81518110156202ec9e576202ec5a818362004d46565b51906103e882101562004cfd576202ec989160018060a01b03855116600052600390811b0160205262000faa60406000205462007ce9838962004d46565b6202ec44565b5060005b81518110156202ed3c576202ecb8818362004d46565b51906103e8918281101562004cfd5760018060a01b03908186511660005260039081602091811b0181526202ecf860406000205462007d56868c62004d46565b9190926202ed07868962004d46565b519687101562004cfd576202ed369662000faa958a5116600052811b01905260406000205562000fa3620332bb565b6202eca2565b506202ed4a91935062032f53565b604051926202ed598462002b78565b60018452602036818601376001600160a01b03610b008190529051166202ed808462004cef565b52604051906202ed908262002b3f565b6000825260003681376000935b81518510156202e700576202edb3858362004d46565b51946202edc1845162004e62565b916000936202edd1825162004e62565b610b60528496855b87518110156202ee71576202edf7610b00516202e43c838b62004d46565b15806202ee39575b6202ee16575b6202ee109062004cdf565b6202edd9565b956202ee306202ee1091610b00516200a36b8a8c62004d46565b9690506202ee05565b506103e88a101562004cfd57610b00516202ee55828a62004d46565b511660005260038a811b0160205260406000205415156202edff565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202eefa578762004cfd57610b00516202eeaf828c62004d46565b51166000528b602052604060002054156202eed6575b6202eed09062004cdf565b6202ee8f565b976202eef16202eed0918b6202e6e88c610b00519262004d46565b9890506202eec5565b5094959193965098509690959680610ba05262004cfd5760040180610b205254956202ef2b62008068868962006200565b610b805260009788610b40525b610ba05162004cfd57610b4051888110156202efc0576202eae06202ef67916000610ba052610b205162004f5e565b156202ef86575b6202ef7c610b405162004cdf565b610b40526202ef38565b976202efb9906202ef9e610b4051610b205162004f5e565b610b005191549060031b1c1662001ac782610b805162004d46565b976202ef6e565b5095939096509690969391936000915b8383106202f05a5750505050610ba05162004cfd57610b8051516001600160401b03811162002a9b576202f00881610b20516200509a565b6020610b805101610b205160005260206000206000610b0051905b8481106202f0435750505050506202f03b9062004cdf565b93926202ed9d565b60019060208386511695019481850155016202f023565b620081fe6202f07391610b00516202e53f868662004d46565b916202efd0565b156202f08257565b60405162461bcd60e51b815260206004820152601d60248201527f54686520726566756e6420616d6f756e74206973206f766572666c6f770000006044820152606490fd5b156202f0cf57565b60405162461bcd60e51b815260206004820152602360248201527f54686520746f74616c20726566756e6420616d6f756e74206973206f766572666044820152626c6f7760e81b6064820152608490fd5b156202f12857565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20776974686472617761626c6520616d6f756e74206973604482015268206f766572666c6f7760b81b6064820152608490fd5b611f44805482101562004cfd576000526007602060002091020190600090565b815180519192916001600160401b03811162002a9b576202f1c181856200509a565b6020809201846000528260002060005b8381106202f238575050505060c08260069262002c3b95940151600185015560408101516002850155606081015160038501556202f2196080820151151560048601620057f2565b6202f22c60a0820151600586016200571f565b015115159101620057f2565b825182820155918401916001016202f1d1565b611f448054600160401b81101562002a9b576202f26e916001820190556202f17f565b91909162005d305762002c3b916202f19f565b611fb4908154600160401b81101562002a9b576001810180845581101562004cfd5762002c3b926000526020600020016200571f565b620069d06202f2c691620074f5565b613f78805480600052613f76908160205260ff60096040600020015460081c16620322fb57613f73600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202f32760406000206200370e565b90600080611f4a54905b818110620322b4575b50501562032298575b60005b60208301519081518110156202f37e5762000faa620076c162011f56620076a16020620067a7866202f3789862004d46565b6202f346565b505060005b602083015180518210156202f3cb57620076a16020620067a7846202f3a89462004d46565b90606482101562004cfd576202f3c5914290611f4b015562004cdf565b6202f383565b50506000905b602083015180518310156200b07257826202f3ec9162004d46565b516020810151602681101562002a2357156200b02f576020810151602681101562002a23576001036202f5fd57604001906202f42d60c08351015162004cef565b51936202f44460a06200779b818651015162004cef565b51916202f45586518551146202df8a565b6202f46486518451146202dff0565b60005b86518110156202f58b576202f47d818662004d46565b516103e881101562004cfd57600160ff60076202f4a39360031b0154161515146202e052565b6202f4af818562004d46565b516202f4bc828762004d46565b51906103e882101562004cfd576202f4de906006809360031b0154906200608f565b6202f4ea848962004d46565b51926103e884101562004cfd576202f5079360031b01556202e0aa565b6202f513818562004d46565b516202f520828762004d46565b51906103e882101562004cfd576202f549916003906001600160a01b0362012148868d62004d46565b91906202f557828862004d46565b51906103e882101562004cfd576202f5859362000faa926003906001600160a01b036201219c878f62004d46565b6202f467565b5094915091620121cd6202f59f9162032f53565b93604051926202f5af8462002b3f565b60008452600036813760005b83518110156202f5e0578062000faa620079626202f5da938762004d46565b6202f5bb565b50945092602092506202f5f4915062004cdf565b9190506202f3d1565b602081949293940151602681101562002a23576002036202f895576040018051928351906202f635620079c260a08097015162004cef565b519382518651036202f8405782518451036202f7ea5782518551036202f7915760005b86518110156202f77b576202f66e818862004d46565b516103e881101562004cfd5760ff60076202f6909260031b015416156202e162565b6202f69c818862004d46565b516103e881101562004cfd5760031b600701805460ff191660011790556202f6c5818562004d46565b516202f6d2828962004d46565b51906103e882101562004cfd5760056202f6f09260031b016200571f565b6202f6fc818662004d46565b516202f709828962004d46565b516103e881101562004cfd5760031b600101556202f728818762004d46565b516202f735828962004d46565b516103e881101562004cfd5760031b600201556202f754818862004d46565b51906103e882101562004cfd57600060066202f7759360031b015562004cdf565b6202f658565b509591509350602092506202f5f4915062004cdf565b60405162461bcd60e51b815260206004820152603c6024820152600080516020620337ec83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b81526020600482015260396024820152600080516020620337ec8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b81526020600482015260386024820152600080516020620337ec8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b602081949392940151602681101562002a23576003036202f8c3576020919262000faa6202f5f4926202e707565b6020810151602681101562002a23576004036202faf95760400160c0936202f8f36200ca5c868451015162004cef565b51906202f90a60a06200779b818651015162004cef565b51936202f91f875184511462000fa3620331b7565b6202f932875185511462000fa3620331b7565b6202f945875186511462000fa3620331b7565b60005b87518110156202f98d576202f95e818662004d46565b51906103e882101562004cfd576202f987916003906001600160a01b03620124d9848d62004d46565b6202f948565b509095919593929360005b83518110156202fab6576202f9ae818762004d46565b516103e881101562004cfd576003906001600160a01b036202f9d1848862004d46565b5116600052811b016020526202f9f260406000205462007d56838862004d46565b906202f9ff838962004d46565b51916103e883101562004cfd576202fa28926003906001600160a01b036201259b878b62004d46565b6202fa34818762004d46565b516103e881101562004cfd576003906001600160a01b036202fa57848c62004d46565b5116600052811b016020526202fa7860406000205462006814838862004d46565b9190506202fa87818862004d46565b51916103e883101562004cfd576202fab0926003906001600160a01b036201263e858e62004d46565b6202f998565b50936202fad091929693506200847962007e479162032f53565b9260005b83518110156202f5e0578062000faa620079626202faf3938762004d46565b6202fad4565b92906020840151602681101562002a2357600503620300585760408401906202fb2c60a06200851e818551015162004cef565b519282518451036200ad0a5760005b83518110156202fb94576202fb51818562004d46565b51906103e882101562004cfd5760036202fb8e9260018060a01b038a5116600052811b0160205262000faa60406000205462007ce9838962004d46565b6202fb3b565b509060005b83518110156202fc37576202fbaf818562004d46565b516103e881101562004cfd5760039060018060a01b03895116600052811b016020526202fbe760406000205462007d56838862004d46565b91906202fbf5828762004d46565b51906103e882101562004cfd576202fc3193600362000faa9360018060a01b038d5116600052811b0160205260406000205562000fa3620332bb565b6202fb99565b50916202fc48919495935062032f53565b92604051926202fc588462002b78565b6001845260203681860137516001600160a01b03166202fc788462004cef565b52604051926202fc888462002b3f565b6000845260003681376000945b805186101562030044576202fcab868262004d46565b516109e0526202fcbc855162004e62565b966000946202fccc845162004e62565b6109005260009460005b88518110156202fd9c578a896202fd066001600160a01b036202fcfa858462004d46565b51166109e05162032d3b565b15806202fd56575b6202fd27575b50506202fd219062004cdf565b6202fcd6565b986202fd4b9162001ac782859c62007f376202fd219760018060a01b039262004d46565b9790508a896202fd14565b5050506103e86109e051101562004cfd576001600160a01b036202fd7b828b62004d46565b511660005260036109e051811b016020528a8960406000205415156202fd0e565b50909895979498969291939660005b88518110156202fe3f576103e86109e051101562004cfd576001600160a01b036202fdd7828b62004d46565b511660005260036109e051811b01602052604060002054156202fe06575b6202fe009062004cdf565b6202fdab565b996202fe00906202fe36906001600160a01b036202fe258e8d62004d46565b511662001ac7826109005162004d46565b9a90506202fdf5565b509850969592919093966109e0516103e881101580610ac05262004cfd5760031b60040154986202fe7562008068898c62006200565b610940526000610ae05260006108e0525b610ac05162004cfd576108e0518a8110156202ff4f576202febb6202fed8916000610ac05260046109e05160031b0162004f5e565b90546109005160039290921b1c6001600160a01b03169062032dea565b156202fef7575b6202feed6108e05162004cdf565b6108e0526202fe86565b6000610ac0526202ff156108e05160046109e05160031b0162004f5e565b60018060a01b0391549060031b1c166202ff36610ae0516109405162004d46565b526202ff45610ae05162004cdf565b610ae0526202fedf565b50979294959093985095909560005b8281106202fff857505050610ac05162004cfd5761094051516001600160401b03811162002a9b576202ff9b8160046109e05160031b016200509a565b6020610940510160046109e05160031b01600052602060002060005b8381106202ffda57505050506202ffce9062004cdf565b9492959091956202fc95565b82516001600160a01b0316818301556020909201916001016202ffb7565b6203003e906001600160a01b0362030011828562004d46565b511662030025610ae0516109405162004d46565b5262030034610ae05162004cdf565b610ae05262004cdf565b6202ff5e565b5050936202f5f49193506020925062004cdf565b90926020810151602681101562002a2357600603620301f0576040016203008460c08251015162004cef565b51936203009b60a06200851e818551015162004cef565b519285518351036200db485785518451036200dafb5760005b8651811015620300f957620300ca818562004d46565b51906103e882101562004cfd57620300f3916003906001600160a01b0362012771848c62004d46565b620300b4565b509060005b86518110156203019a5762030114818562004d46565b516103e881101562004cfd576003906001600160a01b0362030137848b62004d46565b5116600052811b016020526203015860406000205462007d56838862004d46565b919062030166828762004d46565b51906103e882101562004cfd57620301949362000faa926003906001600160a01b036201259b878f62004d46565b620300fe565b509491620301af919350620121cd9062032f53565b9160405194620301bf8662002b3f565b60008652600036813760005b83518110156202f5e0578062000faa62007962620301ea938762004d46565b620301cb565b6020810151602681101562002a23576007036203027657604001926203021b60c08551015162004cef565b51916203022d60a08651015162004cef565b519451519162030245845187511462000fa3620331b7565b60005b84518110156202f5e057620302709062000faa6001600160a01b03806201290f848a62004d46565b62030248565b6020819493940151602681101562002a2357600803620302e45760c06040620302a3920151015162004cef565b519160005b8351811015620302d257620302cc906001600160a01b0380620129f7838862004d46565b620302a8565b509260209192506202f5f49062004cdf565b6020810151602681101562002a23576009036203033d5760c060406203030e920151015162004cef565b519160005b8351811015620302d25762030337906001600160a01b038062012a8b838862004d46565b62030313565b6020810151602681101562002a2357600a03620303c357604001906203036e60a06200df3360c08551015162004cef565b519262030383835185511462000fa3620331b7565b60005b8351811015620303b057620303aa906001600160a01b038062012b27838862004d46565b62030386565b50936202f5f49193506020925062004cdf565b602081949392940151602681101562002a2357600b036203044e5760400192620303f260c08551015162004cef565b51935151916203040a855184511462000fa3620331b7565b60005b85518110156203043b57620304359062000faa6001600160a01b038062012bda848b62004d46565b6203040d565b50935091602091506202f5f49062004cdf565b9091926020820151602681101562002a2357600c036203052b57606060408301510151926203047d846202d698565b60005b8451811015620303b05760c0620304a08260606040880151015162004d46565b51015115620304ed57620304c162008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca9620304e7936000190162005cba565b62030480565b6203050562008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca9620304e7936000190162005c7a565b9291906020810151602681101562002a2357600d0362030594576040019260206203055b60a08651015162004cef565b5194510151916203057085518451146202dd8c565b60005b85518110156203043b578062012d5b6203058e928662004d46565b62030573565b6020819492940151602681101562002a2357600e03620305fd57604001906020620305c460a08451015162004cef565b519251015193620305d983518651146202dd8c565b60005b83518110156203043b578062012e3f620305f7928862004d46565b620305dc565b906020829493940151602681101562002a2357600f03620306db57606060408301510151926203062d846202d698565b60005b8451811015620303b05760c0620306508260606040880151015162004d46565b510151156203069d576203067162008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262030697936000190162005cba565b62030630565b620306b562008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262030697936000190162005c7a565b906020819493940151602681101562002a23576010036203074c5760400151906203070f60a0608084015193015162004cef565b519362030724835186511462000fa3620331b7565b60005b83518110156203043b578062000faa6200902b62030746938762004d46565b62030727565b6020819492940151602681101562002a23576011036203096557604001906203078060a06200df3360c08551015162004cef565b51936203079183518651146202d510565b60005b8351811015620307c257620307bc9062000faa6001600160a01b03806201304a848962004d46565b62030794565b50935090620307d19062032e37565b90611f465493620307e86200806884518762006200565b9060009260005b8781106203094a575060005b8551811015620308a2576000805b89811062030853575b50156203082b575b620308259062004cdf565b620307fb565b9362030825906203084a906001600160a01b036200e724888a62004d46565b9490506203081a565b6203085e8162004eb6565b90546001600160a01b0360039290921b1c8116906203087e858b62004d46565b5116146203089757620308919062004cdf565b62030809565b505060013862030812565b509550939250620308b38262004e62565b8051906001600160401b03821162002a9b57602090620308d38362004ff7565b01611f46600052602060002060005b8381106203092c575050505060005b82811062030909575050506202f5f460209162004cdf565b620309269062000faa6001600160a01b03620019fb838662004d46565b620308f1565b82516001600160a01b031681830155602090920191600101620308e2565b936200e8706203095f916200e8528762004eb6565b620307ef565b6020819492940151602681101562002a235760120362030b8857604001906203099960a06200df3360c08551015162004cef565b5193620309aa83518651146202d510565b60005b8351811015620309db57620309d59062000faa6001600160a01b0380620132ac848962004d46565b620309ad565b5093509190620309eb9062032e37565b611f4654620309fa8162004e62565b906000926000915b80831062030aaf5750505062030a188262004e62565b8051906001600160401b03821162002a9b5760209062030a388362004ff7565b01611f46600052602060002060005b83811062030a91575050505060005b82811062030a6e575050506202f5f460209162004cdf565b62030a8b9062000faa6001600160a01b03620019fb838662004d46565b62030a56565b82516001600160a01b03168183015560209092019160010162030a47565b91956000959193959760005b855181101562030b795762030ad08962004eb6565b90546001600160a01b0360039290921b1c81169062030af0838962004d46565b51161462030b095762030b039062004cdf565b62030abb565b509750956001959391955b8062030b48575b1562030b335762030b2c9062004cdf565b9162030a02565b936200e87062030b2c916200e8528762004eb6565b5062030b548162004eb6565b60018060a01b0391549060031b1c16600052611f456020526040600020541562030b1b565b50979690969593919562030b14565b6020810151602681101562002a235760130362030be15760408091015101519260005b845181101562030bd0578062000faa6200959f62030bca938862004d46565b62030bab565b509250906202f5f460209162004cdf565b6020810151602681101562002a235760140362030d8e576040019062030c0c60c08351015162004cef565b519362030c2360a06200779b818651015162004cef565b519162030c3486518551146202df8a565b62030c4386518451146202dff0565b60005b865181101562030d395762030c5c818562004d46565b5162030c69828762004d46565b51906103e882101562004cfd57600662030c899260031b0154906200608f565b9062030c96838862004d46565b51916103e883101562004cfd57600662030cb59360031b01556202e0aa565b62030cc1818562004d46565b5162030cce828762004d46565b51906103e882101562004cfd5762030cf7916003906001600160a01b0362012148868d62004d46565b919062030d05828862004d46565b51906103e882101562004cfd5762030d339362000faa926003906001600160a01b036201219c878f62004d46565b62030c46565b5094915091620121cd62030d4d9162032f53565b936040519262030d5d8462002b3f565b60008452600036813760005b83518110156202f5e0578062000faa6200796262030d88938762004d46565b62030d69565b6020810151602681101562002a235760150362030db8576020919262000faa6202f5f4926202e707565b6020810151602681101562002a235760160362030e145760c0604062030de2920151015162004cef565b519260005b845181101562030bd05762030e0e9062000faa6001600160a01b0362009d36838962004d46565b62030de7565b6020810151602681101562002a235760170362030e715760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a235760180362030edb5760c0604062030e9b920151015162004cef565b51611fb6805460ff191660011790559260005b845181101562030bd05762030ed59062000faa6001600160a01b0362009e02838962004d46565b62030eae565b6020819392930151602681101562002a235760190362030fc25760008091604082910160a08082510151805162030f89575b5050519060e08201519162030f316200680d60c060018060a01b0393015162004cef565b511690602083519301915af13d1562030f80573d9062030f518262002f5b565b9162030f61604051938462002b94565b82523d6000602084013e5b156201387a57506202f5f460209162004cdf565b60609062030f6c565b62030f949062004cef565b515162030fa3575b8062030f0d565b8192506200680d9062030fb99251015162004cef565b51903862030f9c565b6020810151602681101562002a2357601a03620310445760a0604062030fec920151015162004cef565b5162030ffc60038251146202d510565b620310078162004cef565b519162031018620139a08362004d13565b51916200f9d5576020926202f5f4926001036200a043576200a023906200a016611fb19182546200608f565b6020810151602681101562002a2357601b036203142f5750919062031074611faf546200225a6200a0b962033044565b50506203108062033108565b506000805b6103e88110620313e3575b50506203109c62006161565b90620310ab613f745462004e62565b906000946000905b6103e8821015620313d7578160031b9260ff60078501541615620311bf57600096600285015415620311a6576000975b62004cfd576004850154881015620311a6576203119f62031198899a62031112620311499b60048a0162004f5e565b60018060a01b0391549060031b1c1680600052600389016020526203113d8b60406000205462005eb0565b9c9062000fa362033108565b6203118c620311706203116460009e60028d01549062005eb0565b919062000fa362033108565b82600052611f476020526200a01660406000209182546200608f565b62001ac7828b62004d46565b9962004cdf565b97620310e3565b92909350620311b791965062004cdf565b9094620310b3565b95969392509350505b620311d38262004e62565b9160009160005b8281106203134157505050611f485491620311fa62008068848462006200565b926000906000905b8082106203132457505060005b8381106203128e5750508251929150506001600160401b03821162002a9b576020906203123c8362004fbc565b01611f48600052602060002060005b8381106203127057505050506202f5f46020916000611fb1556000611fb25562004cdf565b82516001600160a01b0316818301556020909201916001016203124b565b6000805b838110620312dc575b5015620312b4575b620312ae9062004cdf565b6203120f565b90620312ae90620312d3906001600160a01b03620081f0858762004d46565b919050620312a3565b6001600160a01b0380620312f1858862004d46565b51169062031300838a62004d46565b5116146203131957620313139062004cdf565b62031292565b50506001386203129b565b9091620081fe6203133a91620094f58562004e9a565b9062031202565b6000805b8581106203138f575b501562031367575b620313619062004cdf565b620311da565b92620313619062031386906001600160a01b03620081f0878662004d46565b93905062031356565b6001600160a01b0380620313a4858762004d46565b511690620313b3838a62004d46565b511614620313cc57620313c69062004cdf565b62031345565b50506001386203134e565b935050929390620311c8565b8060039594951b9060ff6007830154161562031425576200a4f86200746162000faa946200a4ec6203141c9560026200a4e28762005e1c565b93929362031085565b5093929362031090565b6020810151602681101562002a2357601c036203148c5760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601d03620314b2575b506202f5f460209162004cdf565b9290916020840151602681101562002a2357601e0362031bc357604084019060a090620314e3828451015162004cef565b5151620314f4838551015162004d13565b5151036200ade9576203150b828451015162004cef565b51516203151c838551015162004d24565b5151036200ad6d5762031533828451015162004cef565b519462031544838551015162004d13565b5191620315596200a641858751015162004d24565b519585518751036200ad0a5760005b8651811015620315c1576203157e818862004d46565b51906103e882101562004cfd576003620315bb9260018060a01b038d5116600052811b0160205262000faa60406000205462007ce9838c62004d46565b62031568565b5090969192939660005b86518110156203166a57620315e1818862004d46565b516103e881101562004cfd5760039060018060a01b038c5116600052811b016020526203161960406000205462007d56838b62004d46565b919062031627828a62004d46565b51906103e882101562004cfd576203166493600362000faa938f60018060a01b03905116600052811b0160205260406000205562000fa3620332bb565b620315cb565b50939692979550936203167d9062032f53565b96604051966203168d8862002b78565b60018852602036818a013786516001600160a01b0316620316ae8962004cef565b5260405196620316be8862002b3f565b600088526000610a60525b8951610a60519081101562031a6a57620316e4908b62004d46565b51610a4052620316f5885162004e62565b99600097620317058b5162004e62565b6109c05260009760005b8b51811015620317d5578d8c6203173f6001600160a01b0362031733858462004d46565b5116610a405162032d3b565b15806203178f575b62031760575b50506203175a9062004cdf565b6203170f565b9b620317849162001ac782859f62007f376203175a9760018060a01b039262004d46565b9a90508d8c6203174d565b5050506103e8610a4051101562004cfd576001600160a01b03620317b4828e62004d46565b51166000526003610a4051811b016020528d8c604060002054151562031747565b50909b989a99949691929395979b60005b8b5181101562031869576103e8610a4051101562004cfd576001600160a01b0362031812828e62004d46565b51166000526003610a4051811b016020526040600020541562031841575b6203183b9062004cdf565b620317e6565b9c620318606203183b918f6200d8da8f9160018060a01b039262004d46565b9d905062031830565b509b50989590929496919396610a4051996103e88b10159c8d62004cfd57620318a06200806860048f9e60031b01549e8f62006200565b610960526000610980528d60009e5b62004cfd578d8f10156203196e575060009d620318f7620318da826004610a405160031b0162004f5e565b90546109c05160039290921b1c6001600160a01b03169062032dea565b1562031911575b6203190a8f9162004cdf565b9e620318af565b6203190a9e5060009e8f9162031931816004610a405160031b0162004f5e565b60018060a01b0391549060031b1c1662031952610980516109605162004d46565b52620319616109805162004cdf565b61098052915050620318fe565b9396999b929d509396999094979b5060005b82811062031a1e5750505062004cfd5761096051516001600160401b03811162002a9b57620319b9816004610a405160031b016200509a565b60206109605101906004610a405160031b0160005260206000209160005b82811062031a005750505050620319f1610a605162004cdf565b610a60529598909498620316c9565b81516001600160a01b031681850155602090910190600101620319d7565b62031a64906001600160a01b0362031a37828562004d46565b511662031a4b610980516109605162004d46565b5262031a5a6109805162004cdf565b6109805262004cdf565b62031980565b509492975094955091965060009460005b875181101562031ace5762031a996200abc66200abb9838962004d46565b8062031ab2575b5062031aac9062004cdf565b62031a7b565b906200abfc62031ac79862031aac936200608f565b9062031aa0565b5096509450929091508062031af0575b50506202f5f46020915b9150620314a4565b62031b1b9060018060a01b038351166000526200ac5a611f459182602052604060002054906200608f565b60018060a01b03835116600052602052604060002055600080611f4654905b81811062031b79575b5050916202f5f4916020931562031b5d575b509162031ade565b5162031b72906001600160a01b0316620065d6565b3862031b55565b62031b848162004eb6565b9054855160039290921b1c6001600160a01b0390811691161462031bb35762031bad9062004cdf565b62031b3a565b5060019150829050602062031b43565b9190926020810151602681101562002a2357601f0362031bfe5760209162031bf86200ae9d60406202f5f49401515162004cef565b62031ae8565b6020810151602681101562002a235760200362031c24575b506202f5f460209162031ae8565b6020810151602681101562002a2357602180910362031c45575b5062031c16565b602082015160268110156200b01a5760220362031c815750506202f5f4602091611fb660ff19815416905562031c7a62005087565b9162031c3e565b602082015160268110156200b01a5760230362031ca8575b50506202f5f460209162031c7a565b602082015160268110156200b01a5760241462031c9957602082015160268110156200b01a5760251462031c99576020829593949201519060268210156201478c575060150362010ee557604084019062031d0860c08351015162004cef565b519062031d1f60a06200779b818651015162004cef565b519362031d34835185511462000fa3620331b7565b62031d47835186511462000fa3620331b7565b60005b835181101562031da35762031d60818662004d46565b51906103e882101562004cfd57600362031d9d9260018060a01b038b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b62031d4a565b509095919560005b875181101562031ece5762031dc1818662004d46565b516103e881101562004cfd5760039060018060a01b03865116600052811b0160205262031df960406000205462007d56838962004d46565b9062031e06838862004d46565b51916103e883101562004cfd57600362031e3d9360018060a01b03895116600052811b0160205260406000205562000fa3620332bb565b62031e49818662004d46565b516103e881101562004cfd576003906001600160a01b0362031e6c848c62004d46565b5116600052811b0160205262031e8d60406000205462006814838962004d46565b919062031e9b828862004d46565b51906103e882101562004cfd5762031ec893600362000faa938d62007e0f8760018060a01b039262004d46565b62031dab565b509262031ee6919294506200c6369096959662032f53565b926040519062031ef68262002b78565b6001825260203681840137516001600160a01b031662031f168262004cef565b526000945b8051861015620322835762031f31868262004d46565b51610aa05262031f42855162004e62565b9660009462031f52845162004e62565b6109205260009460005b885181101562032022578a8962031f8c6001600160a01b0362031f80858462004d46565b5116610aa05162032d3b565b158062031fdc575b62031fad575b505062031fa79062004cdf565b62031f5c565b9862031fd19162001ac782859c62007f3762031fa79760018060a01b039262004d46565b9790508a8962031f9a565b5050506103e8610aa051101562004cfd576001600160a01b0362032001828b62004d46565b51166000526003610aa051811b016020528a89604060002054151562031f94565b50909895979498969291939660005b8851811015620320b4576103e8610aa051101562004cfd576001600160a01b036203205d828b62004d46565b51166000526003610aa051811b01602052604060002054156203208c575b620320869062004cdf565b62032031565b996203208690620320ab906001600160a01b036200a9638e8d62004d46565b9a90506203207b565b50985096959291909396610aa0516103e881101580610a205262004cfd5760031b6004015498620320ea62008068898c62006200565b610a00526000610a805260006109a0525b610a205162004cfd576109a0518a811015620321a7576200a9ff62032130916000610a20526004610aa05160031b0162004f5e565b156203214f575b620321456109a05162004cdf565b6109a052620320fb565b6000610a20526203216d6109a0516004610aa05160031b0162004f5e565b60018060a01b0391549060031b1c166203218e610a8051610a005162004d46565b526203219d610a805162004cdf565b610a805262032137565b50979294959093985095909560005b8281106203225057505050610a205162004cfd57610a0051516001600160401b03811162002a9b57620321f3816004610aa05160031b016200509a565b6020610a0051016004610aa05160031b01600052602060002060005b838110620322325750505050620322269062004cdf565b94929590919562031f1b565b82516001600160a01b0316818301556020909201916001016203220f565b6203227d906001600160a01b0362032269828562004d46565b51166200c214610a8051610a005162004d46565b620321b6565b5050936202f5f4919350602092509162031c99565b8151620322ae906001600160a01b031662006600565b6202f343565b620322bf8162004f0a565b9054865160039290921b1c6001600160a01b03908116911614620322ee57620322e89062004cdf565b6202f331565b505050600138806202f33a565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062032382575050565b62002c3b91600052601f6020600020910160051c81019062004fa3565b90600160401b811162002a9b578154818355808210620323be57505050565b62002c3b92600052601f6020600020918180850160051c8401941680620323ed575b500160051c019062004fa3565b600019908186019182549160200360031b1c16905538620323e0565b9060ff809160031b9316831b921b19161790565b620324356203242e6000936202f17f565b506200356f565b92825b845180518210156203252b5781620324509162004d46565b516103e881101562004cfd57600390811b9460018060a01b038516600052602091860182526203248d604096600188600020549101549062005eb0565b919015620324f65790620324a1916200608f565b959015620324bc575050620324b69062004cdf565b62032438565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b865162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b505092505090565b60005b613f78549081600052613f7691602092808452600393604092858460002001805486101562032694576203256f866203257b9262004f5e565b905490881b1c6202f17f565b509560ff60068098015416620325a3575b50505050506203259d915062004cdf565b62032536565b81600052838352620325cb620325bf8783886000200162004f5e565b905490831b1c6202f17f565b5096620325eb876001809a01549285600052878752886000200162004f5e565b905490831b1c91836000528585526203260b886005896000200162004f5e565b9054911b1c90600092606492838102938185041490151715620326805790620326349162004f77565b1062032678575b6203264757806203258c565b6009945060005252600020019060ff19918183825416179055613f73918254161790556000613f71556000613f7255565b50856203263b565b634e487b7160e01b84526011600452602484fd5b505050505050506000613f7854905b81600052613f76602052600380604060002001805483101562032719576006620326e0620326d48560ff9462004f5e565b905490851b1c6202f17f565b50015416156203271457620326f58262032929565b9081101562002a235762014d61576203270e9062004cdf565b620326a3565b505050565b50505060ff1990613f73600383825416179055600052613f766020526009604060002001908154169055565b613f785490600090828252613f769160209280845260039060409082828520015495620327728762002c61565b96620327818451988962002b94565b80885262032792601f199162002c61565b013682890137845b888652828252848487200154811015620327e35790620327d88262000faa620327c68897969562032929565b620327d2838d62004d46565b620052db565b90919293506203279a565b5050505090919350815b83518110156203285a5762032803818562004d46565b518281101562032846576001809114620328295750620328239062004cdf565b620327ed565b613f73805460ff191690911790555050613f71819055613f725550565b634e487b7160e01b84526021600452602484fd5b50909150613f7280544210600014620328815750613f739060ff19825416179055613f7155565b9050613f73600160ff1982541617905581613f715555565b15620328a157565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b15620328ee57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b613f785490600091808352613f76806020528260408520600301906203294f9162004f5e565b90549060031b1c62032961816202f17f565b50600101549383865282602052806040872060040190620329829162004f5e565b90549060031b1c9284875280602052816040882060050190620329a59162004f5e565b90549060031b1c9487526020526040862060060190620329c59162004f5e565b90549060031b1c90620329d8906202f17f565b506006015460ff1662032a24575062032a149262005e4362022e1f938362032a0462032a0c9562005e7a565b9690620328e6565b9290620328e6565b111562032a1e5790565b50600190565b6200fab9925062032a149362032a3e62032a0c9362005e7a565b9490620328e6565b9092919262032a56825162004e62565b60009162032a65815162004e62565b8390845b865181101562032b00576001600160a01b0362032a8c816202e43c848b62004d46565b158062032acb575b62032aac575b5062032aa69062004cdf565b62032a69565b819662032ac391620081f062032aa6948b62004d46565b959062032a9a565b506103e88a101562004cfd578062032ae4838a62004d46565b511660005260038a811b01602052604060002054151562032a94565b509295919694509260005b875181101562032b81576103e886101562004cfd576001600160a01b038062032b35838b62004d46565b5116600052600387811b016020526040600020541562032b62575b5062032b5c9062004cdf565b62032b0b565b819562032b79916200e72462032b5c948c62004d46565b949062032b50565b5092509450926103e8831015938462004cfd5760049586600395861b019687549462032bb262008068828862006200565b9460009689889a5b62032d2657818b101562032c5b57506000998b62032bf562032bdd838362004f5e565b90546001600160a01b0392918e1b1c82168a62032dea565b1562032c18575b50509062032c0d8b94939262004cdf565b9a9091929362032bba565b91998c95949392909162032c2e908c9062004f5e565b9054908d1b1c1662032c41828b62004d46565b5262032c4d9062004cdf565b9890919293508b3862032bfc565b9697949a98505091975092506000915b83831062032d01575050505062032cec578051926001600160401b03841162032cd7575062032c9b83836200509a565b602080910191600052806000209060005b84811062032cbb575050505050565b83516001600160a01b0316838201559281019260010162032cac565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b62032d1f90620081fe906001600160a01b036200a36b868662004d46565b9162032c6b565b603285634e487b7160e01b6000525260246000fd5b9060005b6103e883101562004cfd576003600484821b01805483101562016f9a578262032d689162004f5e565b9054911b1c6001600160a01b0390811690831614620065b45762032d8c9062004cdf565b62032d3f565b9060005b6103e883101562004cfd576003611fbc84821b01805483101562016f9a578262032dc09162004f5e565b9054911b1c6001600160a01b0390811690831614620065b45762032de49062004cdf565b62032d96565b9060005b8251811015620065c7576001600160a01b038062032e0d838662004d46565b511690831614620065b45762032e239062004cdf565b62032dee565b801562001e07576000190190565b9081519060005b60001983810184811162001e075782101562032f05576001820180831162001e07575b84811062032e7c57505062032e769062004cdf565b62032e3e565b6001600160a01b038062032e91858962004d46565b51168162032ea0848a62004d46565b51161462032ebb575b5062032eb59062004cdf565b62032e61565b828692960182811162001e075762032eb59262032efe9262032ee262032ef7938b62004d46565b511662032ef0898b62004d46565b5262032e29565b9562032e29565b9062032ea9565b50509062032f138162004e62565b9060005b81811062032f26575090925050565b62032f4d906001600160a01b0362032f3f828862004d46565b511662001ac7828662004d46565b62032f17565b80519160005b60001984810185811162001e07578210156203300b576001820180831162001e07575b85811062032f9757505062032f919062004cdf565b62032f59565b62032fa3838662004d46565b5162032fb0828762004d46565b511462032fc9575b62032fc39062004cdf565b62032f7c565b948181019080821162001e075762032ffc620330039162032fef62032fc3948962004d46565b5162032ef08a8a62004d46565b9662032e29565b905062032fb8565b505090916203301a8162004e62565b9060005b8181106203302d575090925050565b806202b4c76203303e928762004d46565b6203301e565b604051620330528162002a7f565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b604051620330c08162002b06565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620331168162002b78565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b604051620331508162002b78565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b6040516203317b8162002b06565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620331c58162002b78565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620331f58162002b78565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620332288162002b78565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b6040516203325d8162002b78565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620332968162002b78565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b604051620332c98162002b78565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b604051620332f88162002b78565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b6040516203332e8162002b78565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b602681101562002a23578015620074b2576001811462032a1e57600281146203358657600381146203358057600481146203357a57600581146203357457600681146203356e57600781146203356857600881146203356257600981146203355c57600a81146203355657600b81146203355057600c81146203354a57600d81146203354457600e81146203353e57600f81146203353857601081146203353257601181146203352c57601281146203352657601381146203352057601481146203351a57601581146203351457601681146203350e5760178114620335085760188114620335025760198114620334fc57601a8114620334f657601b8114620334f057601c8114620334ea57601d8114620334e457601e8114620334de57601f8114620334d85760208114620334d25760218114620334cc5760228114620334c65760238114620334c05760248114620334ba57602514620334b557600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b908151815103620065cf57600090815b835181101562017689576001600160f81b031980620335bc838762006506565b511690620335cb838562006506565b5116036201768257620335de9062004cdf565b6203359c565b60405190620335f38262002b06565b60288252604036602084013760005b601481106203361057505090565b60139080820391821162001e0757600382901b916001600160fd1b0381160362001e075760ff80831162001e0757600192620336599084901b6001600160a01b038616620050d4565b60f081168282160391821162001e07576203367d9060f41b600f60f81b16620336e6565b82841b916001600160ff1b038416840362001e0757620336ba9160001a620336a6848962006506565b5360f81b6001600160f81b031916620336e6565b92810180911162001e0757620336d9620336e09360001a918662006506565b5362004cdf565b62033602565b60f81c600a8110156203370f5760300160ff811162001e075760f81b6001600160f81b03191690565b60570160ff811162001e075760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65305d206c656e677468206973206e6f742032000000000000000000000000000034dd862f2dd4c33543972cb453e26b9cc23a6eb518176c0de5db12d08007dc6d617665203120656c656d656e7400000000000000000000000000000000000000dd388e0eb473c306304080e96aea031c0fb4686a37f7b1a3c8a2301cd0627f0b7420686176652074776f20656c656d656e747300000000000000000000000000546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f742031000000000000000000000000000000742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f74202e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973748b3bb33683ac4daad017d30a0e9972b15e6854cd1f296e14295598f57ce03d506470626d4cb7d88e800a628455fe3f45216f254e8294f25d17ea4ac7e2f4f0a35d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d70546865206c656e677468206f6620746f6b656e436c617373417272617920616e6c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212200b7dff630712f4e35e13cd6b52bb4915fdb7f860f9ed94b9e17edff45824d9ad64736f6c63430008130033", + "deployedBytecode": "0x610bc08060405260043610156200001557600080fd5b600090813560e01c908163036ee850146200299d575080630fda3e1e146200290557806310ade3ea14620028d65780631797631d146200284f5780631c75255a14620027e957806323b65c7814620027625780632514a6b4146200253c5780632eeb063b146200236c5780633fb18aec146200230257806356424cf414620022235780635c00d98714620022005780635d0b184914620002055780635f1231ea14620021165780635f5d5f00146200208f578063681ece9d146200204a5780636c0d4fa41462001eb75780637daa10ce1462001e9a5780638129fc1c1462001ad757806383e4cccf146200186e578063864f9f7a146200183057806386ad77e214620014e25780638c7a63ae1462001451578063942d59fa146200126e5780639f36145f14620011e8578063a064c4f114620011bd578063acf80bc4146200117f578063aec266871462001095578063aefca42a1462001074578063c41f9482146200102c578063c591aa981462000fde578063cab847f714620002a4578063d5a172f21462000278578063d6a93c511462000226578063f179f23b14620002055763f8ce8bdc14620001c757600080fd5b346200020257806003193601126200020257620001e3620052e8565b50610c80620001f162002bb8565b620002006040518092620029ed565bf35b80fd5b503462000202578060031936011262000202576020613f7854604051908152f35b503462000202578060031936011262000202575b6103e8811062000250575b602090604051908152f35b60ff60078260031b0154161562000272576200026c9062004cdf565b6200023a565b62000245565b50346200020257806003193601126200020257613f70546040516001600160a01b039091168152602090f35b5060031960203682011262000ca5576001600160401b036004351162000ca557606090600435360301126200020257604051620002e18162002b06565b620002f1600435600401620029d8565b8152600435602401356101608190526001600160401b03811162000ca957600435013660238201121562000ca957600462000333910135806101805262002c61565b9062000343604051928362002b94565b610180518252602082016101c052610180516101605160043501906024369160051b8301011162000ca15760240160e052825b6101805160051b610160516004350190602460e0519183010181101562000ebd57356101e08190526001600160401b03811162000ca95760609101360360231901126200020257620003cf604051806101205262002b06565b620003e960246101e05161016051600435010101620029d8565b610120515260446101e0516101605160043501010135602681101562000ca55760206101205101526101e0516101605160043501016064810135806101005260018060401b03811162000ca957610100910136036023190112620002025762000459604051806101405262002b22565b610100516101e051610160516004350101016001600160401b0360248201351162000ca55762000493906024369181810135010162004925565b6101405152610100516101e05161016051600435010101916001600160401b0360448401351162000ca5573660436044850135850101121562000ca557620004e5602460448501358501013562002c61565b90620004f5604051928362002b94565b6024604485013585010135825260208201906044850135610100516101e05161016051600435010101013660446024818901358901013560051b8301011162000db457604401915b60446024818801358801013560051b81880135610100516101e051610160516004350101010101018310156200058857602080916200057c85620049b0565b8152019201916200053d565b50610140516020019290925250610100516101e051610160519395600435909401010192506001600160401b0360648401351162000ca1573660436064850135850101121562000ca157602460648401358401013590620005e98262002c61565b90620005f9604051928362002b94565b828252602082016064860135610100516101e05161016051600435010101013660448660051b8301011162000bb157604401905b6064870135610100516101e051610160516004350101010160448660051b8201018310156200074f576001600160401b038335116200074b5760e083358201360360431901126200074b5760405191620006878362002acd565b6001600160401b038435830160440135116200074757620006b436604486358501818101350101620049be565b835283358201606481013560208501526084810135604085015260a48101356060850152620006e69060c401620049b0565b60808401526001600160401b038435830160e40135116200074757602092839262000736906101049062000727368935830160e48101350160440162002f77565b60a085015287350101620049b0565b60c08201528152019101906200062d565b8980fd5b8880fd5b50505092935090506040610140510152610100516101e05161016051600435010101608481013560c05260018060401b0360848201351162000ca1573660436084830135830101121562000ca157608481013501602401356080819052620007ca90620007bc9062002c61565b604051806101a05262002b94565b6101a051608051905260206101a051019160805160051b60c051610100516101e051610160516004350101010190604436918301011162000db45760440160a052929091905b60805160051b60c051610100516101e0516101605160043501010101604460a0519282010182101562000cad576001600160401b0382351162000ca95760e082359091013603604319011262000ca557604051926200086f8462002acd565b6044823560c051610100516101e0516101605160043501010101010135600681101562000ca15784526064823560c051610100516101e05161016051600435010101010101356020850152813560c051610100516101e0516101605160043501010101019360018060401b0360848601351162000ca1573660636084870135870101121562000ca1576200090d604460848701358701013562002c61565b956200091d604051978862002b94565b6044608487013587010135875260208701906084870135853560c051610100516101e05161016051600435010101010101366064604460848b01358b01013560051b8301011162000c9d57606401915b60c051610100516101e051610160516004350101010186350160848901359081019089016044013560051b810160640184101562000bb5576001600160401b0384351162000bb15760c0843582013603606319011262000bb15760405190620009d68262002ab1565b8435810160648101358352600560849091013510156200074b578435810160848101356020840152600460a49091013510156200074b578435810160a4810135604084015260c481013560608401526001600160401b0360e490910135116200074b5762000a51368635830160e481013501606401620049be565b60808301526001600160401b03853582016101040135116200074b5760808535820161010481013501360360631901126200074b576040519062000a958262002a7f565b6001600160401b0386358201610104810135016064013511620007475762000ad136606461010489358501908101350181810135010162004925565b82526001600160401b0386358201610104810135016084013511620007475762000b0f36873583016101048101350160848101350160640162004a24565b60208301526001600160401b03863582016101048101350160a4013511620007475762000b5036873583016101048101350160a48101350160640162004aaf565b60408301526001600160401b03863582016101048101350160c4013511620007475760209384939092909162000b9b9036908935016101048101350160c48101350160640162002f77565b606082015260a08201528152019201916200096d565b8780fd5b50509550509091929594604082015260a4833560c051610100516101e05161016051600435010101010101356060820152823560c051610100516101e0516101605160043501010101019260018060401b0360c48501351162000c9d5761010462000c819162000c326020966044369160c4810135010162002f77565b608085015262000c5d60e4823560c051610100516101e05161016051600435010101010101620049b0565b60a08501523560c051610100516101e05161016051600435010101010101620049b0565b60c082015281520191602060a0510160a0529291909162000810565b8680fd5b8380fd5b5080fd5b8280fd5b50506101a0516101405160600152610100516101e0516101605194956004359095010101929091506001600160401b0360a48401351162000ca55736604360a4850135850101121562000ca55762000d0f602460a48501358501013562002c61565b9062000d1f604051928362002b94565b602460a4850135850101358252602082019060a4850135610100516101e0516101605160043501010101366044602460a48901358901013560051b8301011162000db457604401915b610100516101e0516101605160043501010160a48701359081019087016024013560051b0160440183101562000db85760058335101562000db457823581526020928301920162000d68565b8480fd5b509350509290926080610140510152610100516101e0516101605160043501010160018060401b0360c48201351162000ca15762000e01906024369160c4810135010162004a24565b6101405160a00152610100516101e051610160516004350101016001600160401b0360e48201351162000ca15762000e44906024369160e4810135010162004aaf565b60c0610140510152610100516101e051610160516004350101016101048101359060018060401b03821162000db457602462000e84923692010162002f77565b60e0610140510152610140516040610120510152610120516101c0515260206101c051016101c052602060e0510160e052909162000376565b60208401858152849084600435604401356001600160401b03811162000ca55762000ef090600436918135010162002f77565b604084015282516001600160a01b03919062000f4990831662000f4062000f2162000f1b33620335e4565b62004ba8565b62000f3962000f33878a5116620335e4565b62004c0e565b9062004c65565b90331462004cac565b8251805182101562000fb6579062000faa62000fb0928462000f6d84339362004d46565b5151161462000fa362000f8462000f1b33620335e4565b62000f3962000f338862000f9a888c5162004d46565b515116620335e4565b9062004cac565b62004cdf565b62000f49565b62000fda62000fc5866200677e565b60405191829160208352602083019062002e26565b0390f35b503462000202576040366003190112620002025760209060ff906040906001600160a01b036200100d620029bc565b168152613f778452818120602435825284522054166040519015158152f35b503462000202576020366003190112620002025760c06200104f6004356200621c565b93604093919351958652602086015260408501526060840152608083015260a0820152f35b503462000202578060031936011262000202576020613f7254604051908152f35b50346200020257806003193601126200020257613f7590815491620010ba8362002c61565b91620010ca604051938462002b94565b8383526020938484018093835285832083915b838310620011475750505050604051928484019085855251809152604084019460408260051b8601019392955b828710620011185785850386f35b90919293828062001136600193603f198a8203018652885162002e26565b96019201960195929190926200110a565b600188819260409a99979a516200116c8162001164818962002cb6565b038262002b94565b81520192019201919096939596620010dd565b50346200020257602036600319011262000202576020906040906001600160a01b03620011ab620029bc565b168152611f4783522054604051908152f35b50346200020257602036600319011262000202576020620011e06004356200610a565b604051908152f35b5034620002025760203660031901126200020257604062001243916004358152613f76602052206200121a816200370e565b9060ff600782015491600960088201549101549060405195869560a0875260a087019062003273565b93602086015260408501526200125f606085018383166200350e565b60081c16151560808301520390f35b5034620002025760208060031936011262000ca557604051620012918162002ae9565b60405192620012a08462002b06565b80845260609384848201528460408201528252838383015283604083015283808301528360808301528060a08301528060c08301528060e083015280610100809301526004358152613f768352604090209160405192620013018462002ae9565b6200130c816200370e565b84526200131c600382016200351c565b8483019081529262001331600483016200351c565b604086019081529562001347600584016200351c565b868201908152926200135c600682016200351c565b956080880196875260078201549660a0890197885260088301549260c08a01938452600901549560e08a019460ff8816620013989087620052db565b868b019760081c60ff16151588526040519b8c9b8a8d52518c6101209b8c9101526101408d01620013c99162003273565b9451601f198d8703810160408f015295620013e49162002fcf565b905191858d830301908d0152620013fb9162002fcf565b905190838b82030160808c0152620014139162002fcf565b9051918982030160a08a01526200142a9162002fcf565b955160c08801525160e08701525190850162001446916200350e565b511515908301520390f35b5034620002025760203660031901126200020257600435906103e8821015620014ce575060031b6001810154600282015491620014c46005620014a560068401549362001164604051809481930162002cb6565b6040519485948552602085015260806040850152608084019062002e26565b9060608301520390f35b634e487b7160e01b81526032600452602490fd5b50346200020257806003193601126200020257611f42805490620015068262002c61565b9162001516604051938462002b94565b808352602083019184526020842084925b828410620016e4578585611f43805490620015428262002c61565b9362001552604051958662002b94565b82855260208501918152602081209080925b8484106200159a576200158b8662000fda89604051938493604085526040850190620030b7565b908382036020850152620030b7565b604051620015a88162002acd565b620015b860ff85541682620035e5565b60018401546020820152600284018054620015d38162002c61565b91620015e3604051938462002b94565b81835285526020808620869184015b8383106200165d57505050506001928260209260406006950152600387015460608201526040516200162d81620011648160048c0162002cb6565b608082015260ff6005880154818116151560a084015260081c16151560c082015281520193019301929162001564565b600190602060405191620016718362002ab1565b84548352838501549260ff8416620016898162002fc4565b8382015260ff600894851c16620016a08162002a18565b604082015260028601546060820152620016bd600387016200351c565b6080820152620016d060048701620036ac565b60a0820152815201920192019190620015f2565b604051620016f28162002acd565b6200170260ff84541682620035e5565b6001808401546020830152600284019081546200171f8162002c61565b926200172f604051948562002b94565b8184528a526020808b208b9185015b838310620017aa5750505050506001928260209260406006950152600386015460608201526040516200177a81620011648160048b0162002cb6565b608082015260ff6005870154818116151560a084015260081c16151560c082015281520192019301929062001527565b8490602060405191620017bd8362002ab1565b84548352838501549260ff8416620017d58162002fc4565b8382015260ff600894851c16620017ec8162002a18565b60408201526002860154606082015262001809600387016200351c565b60808201526200181c60048701620036ac565b60a08201528152019201920191906200173e565b50346200020257602036600319011262000202576020906040906001600160a01b036200185c620029bc565b168152611f4583522054604051908152f35b5034620002025760208060031936011262000ca5578160043591620018b14784111562000fa36200189f86620050f5565b620018aa47620050f5565b9062004d8e565b3382526200191c611f45808352620018f5604085205486111562000fa3620018d988620050f5565b338852848752620018ee6040892054620050f5565b9062004dfa565b3384528083526200190b856040862054620050ba565b929062000fa3620018d988620050f5565b3384528252806040842055156200195e575b508080809381811562001954575b3390f115620019485780f35b604051903d90823e3d90fd5b506108fc6200193c565b9050611f46805491620019718362004e62565b918593865b81811062001a645750506200198b8462004e62565b805192906001600160401b03841162001a50579080849392620019b18a98979662004ff7565b0191865280862090865b84811062001a31575050505050825b828110620019da5750506200192e565b9192509062001a279062000faa6001600160a01b03620019fb838662004d46565b511662001a088362004eb6565b90919082549060031b9160018060a01b03809116831b921b1916179055565b90849291620019ca565b83516001600160a01b03168184015589975092810192600101620019bb565b634e487b7160e01b88526041600452602488fd5b62001a6f8162004eb6565b90546001600160a01b03916003913391831b1c83160362001a9e575b505062001a989062004cdf565b62001976565b9662001ace91839862001ab562001a989562004eb6565b9054911b1c1662001ac7828962004d46565b5262004cdf565b95903862001a8b565b50346200020257806003193601126200020257613f7080546001600160a01b03191633179055613f73805460ff19166001908117909155604051909190819062001b218162002b3f565b5290611f428054600082558062001e31575b508252818060405162001b468162002b3f565b5262001e1d57611f438054600082558062001d9e575b508252612710613f745562001d9062001b7462005bee565b836040519162001b848362002b3f565b81835262001c866040519162001b9a8362002b3f565b8383526040519462001bac8662002b3f565b8486526040519362001bbe8562002b3f565b8585526040519462001bd08662002b3f565b8686526040519162001be28362002a7f565b8252602097888301526040820152606094858201526040519162001c068362002ab1565b8683526003888401528660408401528686840152608083015260a082015262001c2f8262004cef565b5262001c3b8162004cef565b506040519062001c4b8262002acd565b6004825287868301526040820152838382015260405162001c6c8162002b3f565b84815260808201528660a08201528660c082015262005cfa565b62001c9062005bee565b60405162001c9e8162002b3f565b83815260405162001caf8162002b3f565b84815260405162001cc08162002b3f565b85815260405162001cd18162002b3f565b8681526040519162001ce38362002b3f565b8783526040519362001cf58562002a7f565b8452888401526040830152848201526040519162001d138362002ab1565b8583526003878401528560408401528585840152608083015260a082015262001d3c8262004cef565b5262001d488162004cef565b50856040519462001d598662002acd565b60058652850152604084015282015260405162001d768162002b3f565b84815260808201528260a08201528360c082015262005d46565b611388611faf55611fb05580f35b92506006838102938185040362001e075760009382855260208520908101905b81811062001dce57505062001b5c565b8086849255868682015562001de66002820162005504565b86600382015562001dfa6004820162005399565b8660058201550162001dbe565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b82526041600452602482fd5b92506006838102938185040362001e075760009382855260208520908101905b81811062001e6157505062001b33565b8086849255868682015562001e796002820162005504565b86600382015562001e8d6004820162005399565b8660058201550162001e51565b503462000202578060031936011262000202576020604051338152f35b5034620002025780600319360112620002025762001ed462002bb8565b6040519162001ee38362002b22565b611faf548352611fb0549060209182850152611fb1546040850152611fb254606085015260405180611fb390848254918281520191845284842090845b8181106200202c575050508162001f3991038262002b94565b6080850152611fb4805462001f4e8162002c61565b9162001f5e604051938462002b94565b818352835283832083908584015b83831062001ffe575050505060a085015260405180928391611fb591808354928381520192855280852094905b82821062001fda5750505062001fb29250038262002b94565b60c083015260ff611fb65416151560e083015262000fda611fb7546040519384938462002ead565b85546001600160a01b03168452600195860195879550938101939091019062001f99565b60018781926040999899516200201a8162001164818962002cb6565b81520192019201919095949562001f6c565b82546001600160a01b03168452928601926001928301920162001f20565b5034620002025760203660031901126200020257600435906103e8821015620014ce5762000fda6200208260048460031b0162002c03565b6040519182918262002a39565b50346200020257806003193601126200020257604051611f4180548083529083526020808301937f68ffef30f3d6829c9938575e8bc340aa2a3398e927d767947dd5024d1581d59292915b828210620020f55762000fda85620020828189038262002b94565b83546001600160a01b031686529485019460019384019390910190620020da565b5034620002025760209081600319360112620002025760409062002139620029bc565b8160608451620021498162002a7f565b82815286810183905285810182905201526001600160a01b03168152611f40835220604051906200217a8262002a7f565b620021f581549160ff83161515845260ff8585019360081c1615158352600260405191620021b983620021b1816001850162002cb6565b038462002b94565b6040860192835201549260608501938452604051958695818752511515908601525115156040850152516080606085015260a084019062002e26565b905160808301520390f35b50346200020257602036600319011262000202576020620011e060043562005e1c565b50346200020257806003193601126200020257611faf546200227c6200224862033044565b916200225a6127109384831062004cac565b62002272611fb254611fb054111562000fa3620330b2565b611fb15462005eb0565b90506200228862033108565b50825b6103e88110620022b0575b6020620022a685858504620061de565b9050604051908152f35b909260ff60078360031b01541615620022fa5781620022e4620022f092620022dd62000faa969562005e1c565b906200608f565b949062000fa362033108565b929091926200228b565b929062002296565b50346200020257604036600319011262000202576001600160401b0360043581811162000ca9576200233990369060040162002f77565b916024359182116200020257602062002362846200235b366004870162002f77565b9062006518565b6040519015158152f35b503462000202578060031936011262000202576040516200238d8162002b3f565b604051613f0383825b606482106200252557505050620023ad8162002b5b565b815260405191620023be8362002b22565b613f67548352613f68549060209182850152613f69546040850152613f6a54606085015260405180613f6b90848254918281520191845284842090845b8181106200250757505050816200241491038262002b94565b6080850152613f6c8054620024298162002c61565b9162002439604051938462002b94565b818352835283832083908584015b838310620024d9575050505060a085015260405180928391613f6d91808354928381520192855280852094905b828210620024b5575050506200248d9250038262002b94565b60c083015260ff613f6e5416151560e083015262000fda613f6f546040519384938462002ead565b85546001600160a01b03168452600195860195879550938101939091019062002474565b6001878192604099989951620024f58162001164818962002cb6565b81520192019201919095949562002447565b82546001600160a01b031684529286019260019283019201620023fb565b600160208192855481520193019101909162002396565b5034620002025760208060031936011262000ca5576004356200256b4782111562000fa36200189f84620050f5565b33835282808080611f4794858752620025b0604083205482111562000fa36200259484620050f5565b338652898b52620025a96040872054620050f5565b906200526f565b338252858752620025f0620025ca826040852054620050ba565b919062000fa3620025db85620050f5565b3387528a8c52620025a96040882054620050f5565b338352868852604083205581811562002758575b3390f1156200274d57338352815260408220541562002621575080f35b611f48805491620026328362004e62565b918493855b818110620026f35750506200264c8462004e62565b805192906001600160401b038411620026df5781906200266c8562004fbc565b0191865280862090865b848110620026c3575050505050825b828110620026935750505080f35b620026bd9062000faa6001600160a01b03620026b0838662004d46565b511662001a088362004e9a565b62002685565b83516001600160a01b0316838201559281019260010162002676565b634e487b7160e01b87526041600452602487fd5b620026fe8162004e9a565b90546001600160a01b03916003913391831b1c8316036200272d575b5050620027279062004cdf565b62002637565b966200274491839862001ab5620027279562004e9a565b9590386200271a565b6040513d84823e3d90fd5b506108fc62002604565b50346200020257806003193601126200020257604051611f4680548083529083526020808301937f721f0813146d89d6f0f0dbb1451dd10acd9dadea7c30d73459c3079bc665b9a892915b828210620027c85762000fda85620020828189038262002b94565b83546001600160a01b031686529485019460019384019390910190620027ad565b50346200020257604036600319011262000202576004356024356001600160a01b0381169081900362000ca9576103e88210156200283b579160036040926020948352811b0183522054604051908152f35b634e487b7160e01b83526032600452602483fd5b50346200020257806003193601126200020257604051611f4880548083529083526020808301937f54b856f7ae688db523226c6d190d6c3f1578f46968ba7de0cc9e487420dbf24c92915b828210620028b55762000fda85620020828189038262002b94565b83546001600160a01b0316865294850194600193840193909101906200289a565b50346200020257806003193601126200020257602060ff613f73541660405190620029018162002a18565b8152f35b5034620002025760209081600319360112620002025762002925620029bc565b6200292f620052e8565b506001600160a01b03168152611f498252604080822090519190620029548362002b3f565b60405193849192915b606483106200298757610c808587620029768162002b5b565b8152620002006040518092620029ed565b600182819286548152019401920191926200295d565b90503462000ca5578160031936011262000ca557602090613f71548152f35b600435906001600160a01b0382168203620029d357565b600080fd5b35906001600160a01b0382168203620029d357565b516000915b6064831062002a0057505050565b600190825181526020809101920192019190620029f2565b6004111562002a2357565b634e487b7160e01b600052602160045260246000fd5b6020908160408183019282815285518094520193019160005b82811062002a61575050505090565b83516001600160a01b03168552938101939281019260010162002a52565b608081019081106001600160401b0382111762002a9b57604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b0382111762002a9b57604052565b60e081019081106001600160401b0382111762002a9b57604052565b61012081019081106001600160401b0382111762002a9b57604052565b606081019081106001600160401b0382111762002a9b57604052565b61010081019081106001600160401b0382111762002a9b57604052565b602081019081106001600160401b0382111762002a9b57604052565b610c8081019081106001600160401b0382111762002a9b57604052565b604081019081106001600160401b0382111762002a9b57604052565b601f909101601f19168101906001600160401b0382119082101762002a9b57604052565b6040519062002bc78262002b3f565b60405182611f4b6000835b6064821062002bec5750505062002be98262002b5b565b52565b600160208192855481520193019101909162002bd2565b9060405191828154918282526020928383019160005283600020936000905b82821062002c3d5750505062002c3b9250038362002b94565b565b85546001600160a01b03168452600195860195889550938101939091019062002c22565b6001600160401b03811162002a9b5760051b60200190565b90600182811c9216801562002cab575b602083101462002c9557565b634e487b7160e01b600052602260045260246000fd5b91607f169162002c89565b906000929180549162002cc98362002c79565b91828252600193848116908160001462002d30575060011462002ced575b50505050565b90919394506000526020928360002092846000945b83861062002d1b57505050500101903880808062002ce7565b80548587018301529401938590820162002d02565b9294505050602093945060ff191683830152151560051b0101903880808062002ce7565b90815462002d628162002c61565b9260409362002d748551918262002b94565b828152809460208092019260005281600020906000935b85851062002d9b57505050505050565b6001848192845162002db38162001164818a62002cb6565b81520193019401939162002d8b565b90815180825260208080930193019160005b82811062002de3575050505090565b83516001600160a01b03168552938101939281019260010162002dd4565b60005b83811062002e155750506000910152565b818101518382015260200162002e04565b9060209162002e418151809281855285808601910162002e01565b601f01601f1916010190565b908082519081815260208091019281808460051b8301019501936000915b84831062002e7c5750505050505090565b909192939495848062002e9c600193601f198682030187528a5162002e26565b980193019301919493929062002e6b565b93929162002ebf85610ca093620029ed565b610cc080610c808701528151908601526020810151610ce08601526040810151610d008601526060810151610d2086015260e062002f4b62002f146080840151610100610d408a0152610dc089019062002dc2565b62002f3460a085015191610cbf1992838b830301610d608c015262002e4d565b9060c08501519089830301610d808a015262002dc2565b9101511515610da0860152930152565b6001600160401b03811162002a9b57601f01601f191660200190565b81601f82011215620029d35780359062002f918262002f5b565b9262002fa1604051948562002b94565b82845260208383010111620029d357816000926020809301838601378301015290565b6005111562002a2357565b90815180825260208080930193019160005b82811062002ff0575050505090565b83518552938101939281019260010162002fe1565b90815180825260208092019182818360051b82019501936000915b848310620030315750505050505090565b90919293949584806200304d83856001950387528a5162002fcf565b980193019301919493929062003020565b90815180825260208092019182818360051b82019501936000915b8483106200308a5750505050505090565b9091929394958480620030a683856001950387528a5162002dc2565b980193019301919493929062003079565b90815180825260208092019081926005928183851b82019601946000915b848310620030e7575050505050505090565b90919293949596818103835287519060e0808201835190600682101562002a235783929189945283850151848401528a60409182870151938386015283518091528561010082818801941b87010194019260005b8281106200319a5750505050509282916200317060019560608085015190840152608080850151908483039085015262002e26565b9160a08082015115159083015260c0809101511515910152990193019301919594939290620030d5565b91939596806200325f600193959760ff198b82030189528951908151815283820151620031c78162002fc4565b8482015287820151620031da8162002a18565b888201526060908183015182820152816200324f6200323e6200322d6080620032108189015160c080848a015288019062002fcf565b9560a0809901519881880391015287519080875286019062002e4d565b888701518582038a87015262003005565b8b8601518482038d8601526200305e565b9301519181840391015262002e26565b970195019101918b9695949391926200313b565b90606081019160018060a01b03815116825260208101519260606020840152835180915260808301602060808360051b86010195019160005b818110620032d55750505050906040620032d29392015190604081840391015262002e26565b90565b858703607f19018352835180516001600160a01b031688526020810151949793949293919290602682101562002a2357604091602084015201519060606040820152620033318251610100606084015261016083019062002e4d565b602083810151838303605f190160808501528051808452928201929101906000905b808210620034f3575050506040830151605f198383030160a0840152805180835260208301906020808260051b86010193019360005b8281106200346e57505050506060840151838203605f190160c0850152620033b29250620030b7565b608083015190605f198382030160e0840152602080835192838152019201906000905b8082106200344a575050506200343d8360209360e0620034266200340e879660a060019a0151605f198683030161010087015262003005565b60c0850151848203605f19016101208601526200305e565b92015190610140605f198285030191015262002e26565b98019401929101620032ac565b9091926020806001928651620034608162002fc4565b8152019401920190620033d5565b90919293602080600192601f19868203018852885190620034d76200349c835160e080855284019062002fcf565b8484015185840152604084015160408401526060840151606084015260808401511515608084015260a084015183820360a085015262002e26565b60c0928301511515919092015297019695019392910162003389565b90919260208060019286511515815201940192019062003353565b90600382101562002a235752565b9060405191828154918282526020928383019160005283600020936000905b828210620035545750505062002c3b9250038362002b94565b8554845260019586019588955093810193909101906200353b565b906040516200357e8162002acd565b60c060ff6006839562003591816200351c565b85526001810154602086015260028101546040860152600381015460608601528260048201541615156080860152604051620035d68162001164816005860162002cb6565b60a08601520154161515910152565b600682101562002a235752565b908154620036008162002c61565b9262003610604051948562002b94565b818452600090815260208082208186015b84841062003630575050505050565b600183819262003640856200351c565b81520192019301929062003621565b9081546200365d8162002c61565b926200366d604051948562002b94565b818452600090815260208082208186015b8484106200368d575050505050565b60018381926200369d8562002c03565b8152019201930192906200367e565b9060036060604051620036bf8162002a7f565b6200370a8195620036d08162002d54565b8352620036e060018201620035f2565b6020840152620036f3600282016200364f565b6040840152620021b1604051809681930162002cb6565b0152565b906040516200371d8162002b06565b82546001600160a01b03168152600183018054919384929091620037418262002c61565b9162003751604051938462002b94565b80835260208301916000526020600020916000905b828210620037935750505050916200370a6040926002946020840152620021b18451809681930162002cb6565b604051620037a18162002b06565b84546001600160a01b038116825260a01c60ff16602681101562002a23576020820152604051620037d28162002b22565b620037e06001870162002d54565b815260028601604051808260208294549384815201906000526020600020926000905b80601f83011062004753576200393c9454918181106200473c575b81811062004722575b81811062004708575b818110620046ee575b818110620046d5575b818110620046bb575b818110620046a1575b81811062004687575b8181106200466d575b81811062004653575b81811062004639575b8181106200461f575b81811062004605575b818110620045eb575b818110620045d1575b818110620045b7575b8181106200459d575b81811062004583575b81811062004569575b8181106200454f575b81811062004535575b8181106200451b575b81811062004501575b818110620044e7575b818110620044cd575b818110620044b3575b81811062004499575b8181106200447f575b81811062004465575b8181106200444b575b81811062004431575b1062004420575b50038262002b94565b6020820152600386018054620039528162002c61565b9162003962604051938462002b94565b81835260208301906000526020600020906000905b838210620043ff57505050506040820152600486018054620039998162002c61565b91620039a9604051938462002b94565b81835260208301906000526020600020906000905b838210620042af57505050506060820152600586016040519081602082549182815201916000526020600020906000915b81601f84011062003fa65784600997946020979460019a979462003b3594549181811062003f88575b81811062003f67575b81811062003f46575b81811062003f25575b81811062003f05575b81811062003ee4575b81811062003ec3575b81811062003ea2575b81811062003e81575b81811062003e60575b81811062003e3f575b81811062003e1e575b81811062003dfd575b81811062003ddc575b81811062003dbb575b81811062003d9a575b81811062003d79575b81811062003d58575b81811062003d37575b81811062003d16575b81811062003cf5575b81811062003cd4575b81811062003cb3575b81811062003c92575b81811062003c71575b81811062003c50575b81811062003c2f575b81811062003c0e575b81811062003bed575b81811062003bcc575b81811062003bab575b1062003b905750038262002b94565b608082015262003b4860068a01620035f2565b60a082015262003b5b60078a016200364f565b60c082015260405162003b7781620011648160088e0162002cb6565b60e0820152604082015281520194019101909262003766565b90889160f81c62003ba18162002fc4565b8152013862003933565b928a8d9160ff8560f01c1662003bc18162002fc4565b815201930162003b26565b928a8d9160ff8560e81c1662003be28162002fc4565b815201930162003b1d565b928a8d9160ff8560e01c1662003c038162002fc4565b815201930162003b14565b928a8d9160ff8560d81c1662003c248162002fc4565b815201930162003b0b565b928a8d9160ff8560d01c1662003c458162002fc4565b815201930162003b02565b928a8d9160ff8560c81c1662003c668162002fc4565b815201930162003af9565b928a8d9160ff8560c01c1662003c878162002fc4565b815201930162003af0565b928a8d9160ff8560b81c1662003ca88162002fc4565b815201930162003ae7565b928a8d9160ff8560b01c1662003cc98162002fc4565b815201930162003ade565b928a8d9160ff8560a81c1662003cea8162002fc4565b815201930162003ad5565b928a8d9160ff8560a01c1662003d0b8162002fc4565b815201930162003acc565b928a8d9160ff8560981c1662003d2c8162002fc4565b815201930162003ac3565b928a8d9160ff8560901c1662003d4d8162002fc4565b815201930162003aba565b928a8d9160ff8560881c1662003d6e8162002fc4565b815201930162003ab1565b928a8d9160ff8560801c1662003d8f8162002fc4565b815201930162003aa8565b928a8d9160ff8560781c1662003db08162002fc4565b815201930162003a9f565b928a8d9160ff8560701c1662003dd18162002fc4565b815201930162003a96565b928a8d9160ff8560681c1662003df28162002fc4565b815201930162003a8d565b928a8d9160ff8560601c1662003e138162002fc4565b815201930162003a84565b928a8d9160ff8560581c1662003e348162002fc4565b815201930162003a7b565b928a8d9160ff8560501c1662003e558162002fc4565b815201930162003a72565b928a8d9160ff8560481c1662003e768162002fc4565b815201930162003a69565b928a8d9160ff8560401c1662003e978162002fc4565b815201930162003a60565b928a8d9160ff8560381c1662003eb88162002fc4565b815201930162003a57565b928a8d9160ff8560301c1662003ed98162002fc4565b815201930162003a4e565b928a8d9160ff8560281c1662003efa8162002fc4565b815201930162003a45565b928a8d9160ff85831c1662003f1a8162002fc4565b815201930162003a3c565b928a8d9160ff8560181c1662003f3b8162002fc4565b815201930162003a33565b928a8d9160ff8560101c1662003f5c8162002fc4565b815201930162003a2a565b928a8d9160ff8560081c1662003f7d8162002fc4565b815201930162003a21565b928a8d9160ff851662003f9b8162002fc4565b815201930162003a18565b926001610400602092865460ff811662003fc08162002fc4565b825260ff8160081c1662003fd48162002fc4565b8583015260ff8160101c1662003fea8162002fc4565b604083015260ff8160181c16620040018162002fc4565b606083015260ff81861c16620040178162002fc4565b608083015260ff8160281c166200402e8162002fc4565b60a083015260ff8160301c16620040458162002fc4565b60c08301526200405b60ff8260381c1662002fc4565b60ff8160381c1660e083015260ff8160401c16620040798162002fc4565b61010083015260ff8160481c16620040918162002fc4565b61012083015260ff8160501c16620040a98162002fc4565b61014083015260ff8160581c16620040c18162002fc4565b61016083015260ff8160601c16620040d98162002fc4565b61018083015260ff8160681c16620040f18162002fc4565b6101a083015260ff8160701c16620041098162002fc4565b6101c083015260ff8160781c16620041218162002fc4565b6101e083015260ff8160801c16620041398162002fc4565b61020083015260ff8160881c16620041518162002fc4565b61022083015260ff8160901c16620041698162002fc4565b61024083015260ff8160981c16620041818162002fc4565b61026083015260ff8160a01c16620041998162002fc4565b61028083015260ff8160a81c16620041b18162002fc4565b6102a083015260ff8160b01c16620041c98162002fc4565b6102c083015260ff8160b81c16620041e18162002fc4565b6102e083015260ff8160c01c16620041f98162002fc4565b61030083015260ff8160c81c16620042118162002fc4565b61032083015260ff8160d01c16620042298162002fc4565b61034083015260ff8160d81c16620042418162002fc4565b61036083015260ff8160e01c16620042598162002fc4565b61038083015260ff8160e81c16620042718162002fc4565b6103a083015260ff8160f01c16620042898162002fc4565b6103c083015260f81c6200429d8162002fc4565b6103e0820152019401920191620039ef565b604051620042bd8162002acd565b620042cd60ff85541682620035e5565b60018401546020820152600284018054620042e88162002c61565b91620042f8604051938462002b94565b81835260208301906000526020600020906000905b8382106200437857505050506001928260209260406006950152600387015460608201526040516200434881620011648160048c0162002cb6565b608082015260ff6005880154818116151560a084015260081c16151560c0820152815201930191019091620039be565b6001906020604051916200438c8362002ab1565b85548352838601549260ff8416620043a48162002fc4565b8382015260ff600894851c16620043bb8162002a18565b604082015260028701546060820152620043d8600388016200351c565b6080820152620043eb60048801620036ac565b60a08201528152019301910190916200430d565b6007602060019262004411866200356f565b81520193019101909162003977565b60f81c151581526020013862003933565b92602060019160ff8560f01c16151581520193016200392c565b92602060019160ff8560e81c161515815201930162003923565b92602060019160ff8560e01c16151581520193016200391a565b92602060019160ff8560d81c161515815201930162003911565b92602060019160ff8560d01c161515815201930162003908565b92602060019160ff8560c81c1615158152019301620038ff565b92602060019160ff8560c01c1615158152019301620038f6565b92602060019160ff8560b81c1615158152019301620038ed565b92602060019160ff8560b01c1615158152019301620038e4565b92602060019160ff8560a81c1615158152019301620038db565b92602060019160ff8560a01c1615158152019301620038d2565b92602060019160ff8560981c1615158152019301620038c9565b92602060019160ff8560901c1615158152019301620038c0565b92602060019160ff8560881c1615158152019301620038b7565b92602060019160ff8560801c1615158152019301620038ae565b92602060019160ff8560781c1615158152019301620038a5565b92602060019160ff8560701c16151581520193016200389c565b92602060019160ff8560681c161515815201930162003893565b92602060019160ff8560601c16151581520193016200388a565b92602060019160ff8560581c161515815201930162003881565b92602060019160ff8560501c161515815201930162003878565b92602060019160ff8560481c16151581520193016200386f565b92602060019160ff8560401c161515815201930162003866565b92602060019160ff8560381c16151581520193016200385d565b92602060019160ff8560301c161515815201930162003854565b92602060019160ff8560281c16151581520193016200384b565b92602060019160ff85831c161515815201930162003842565b92602060019160ff8560181c161515815201930162003839565b92602060019160ff8560101c161515815201930162003830565b92602060019160ff8560081c161515815201930162003827565b92602060019160ff8516151581520193016200381e565b916020919350610400600191865460ff81161515825260ff8160081c1615158583015260ff8160101c161515604083015260ff816060828260181c161515818601528282608082828c1c16151581890152828260281c16151560a0890152828260c095828260301c161515878c0152828260381c16151560e08c0152828260401c1615156101008c0152828260481c1615156101208c0152828260501c1615156101408c0152828260581c1615156101608c01521c161515610180890152828260681c1615156101a0890152828260701c1615156101c0890152828260781c1615156101e08901521c161515610200860152828260881c161515610220860152828260901c161515610240860152828260981c161515610260860152828260a01c161515610280860152828260a81c1615156102a0860152828260b01c1615156102c0860152828260b81c1615156102e08601521c16151561030083015260ff8160c81c16151561032083015260ff8160d01c16151561034083015260ff8160d81c16151561036083015260ff8160e01c16151561038083015260ff8160e81c1615156103a083015260ff8160f01c1615156103c083015260f81c15156103e082015201940192018492939162003803565b9080601f83011215620029d357813590620049408262002c61565b9262004950604051948562002b94565b828452602092838086019160051b83010192808411620029d357848301915b848310620049805750505050505090565b82356001600160401b038111620029d3578691620049a48484809489010162002f77565b8152019201916200496f565b35908115158203620029d357565b81601f82011215620029d357803591620049d88362002c61565b92620049e8604051948562002b94565b808452602092838086019260051b820101928311620029d3578301905b82821062004a14575050505090565b8135815290830190830162004a05565b9080601f83011215620029d35781359062004a3f8262002c61565b9262004a4f604051948562002b94565b828452602092838086019160051b83010192808411620029d357848301915b84831062004a7f5750505050505090565b82356001600160401b038111620029d357869162004aa384848094890101620049be565b81520192019162004a6e565b9080601f83011215620029d35781359162004aca8362002c61565b9260409262004adc8451958662002b94565b8185526020938486019185600594851b86010194818611620029d357868101935b86851062004b1057505050505050505090565b84356001600160401b038111620029d357820183603f82011215620029d357888101359062004b3f8262002c61565b9162004b4e8751938462002b94565b808352868b8401918a1b83010191868311620029d35791878c94929593015b81811062004b8657505082935081520194019362004afd565b91938091939562004b9784620029d8565b8152019101918b9391949262004b6d565b9062002c3b604560405180947f496e76616c69642070726f6772616d20616464726573732e204d73672e73656e60208301526403232b91d160dd1b604083015262004bfd815180926020868601910162002e01565b810103602581018552018362002b94565b9062002c3b6040805180947f2c20616e642070726f6772616d206f70657261746f7220616464726573733a20602083015262004c54815180926020868601910162002e01565b810103602081018552018362002b94565b602062002c3b91939293604051948162004c89879351809286808701910162002e01565b820162004c9f8251809386808501910162002e01565b0103808552018362002b94565b1562004cb55750565b60405162461bcd60e51b81526020600482015290819062004cdb90602483019062002e26565b0390fd5b600019811462001e075760010190565b80511562004cfd5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101562004cfd5760400190565b80516002101562004cfd5760600190565b80516003101562004cfd5760800190565b805182101562004cfd5760209160051b010190565b7f496e76616c696420776974686472617720616d6f756e742e20416d6f756e743a8152600160fd1b602082015260210190565b600f62002c3b916020949360405195869262004dbe62004db083860162004d5b565b918281519485920162002e01565b016e0161030b732103130b630b731b29d1608d1b815262004de9825180936020878501910162002e01565b010360101981018552018362002b94565b601962002c3b916020949360405195869262004e1c62004db083860162004d5b565b01780161030b732103bb4ba34323930bbb0b136329031b0b9b41d1603d1b815262004e51825180936020878501910162002e01565b010360061981018552018362002b94565b9062004e6e8262002c61565b62004e7d604051918262002b94565b828152809262004e90601f199162002c61565b0190602036910137565b611f48805482101562004cfd5760005260206000200190600090565b611f46805482101562004cfd5760005260206000200190600090565b611f41805482101562004cfd5760005260206000200190600090565b613f02805482101562004cfd5760005260206000200190600090565b611f4a805482101562004cfd5760005260206000200190600090565b613efe805482101562004cfd5760005260206000200190600090565b613f00805482101562004cfd5760005260206000200190600090565b805482101562004cfd5760005260206000200190600090565b8181029291811591840414171562001e0757565b919082549060031b91821b91600019901b1916179055565b81811062004faf575050565b6000815560010162004fa3565b600160401b811162002a9b57611f489081549080835581811062004fdf57505050565b62002c3b926000526020600020918201910162004fa3565b600160401b811162002a9b57611f469081549080835581811062004fdf57505050565b805460008255806200502a575050565b62002c3b9160005260206000209081019062004fa3565b600160401b811162002a9b57613efe9081549080835581811062004fdf57505050565b600160401b811162002a9b57613f009081549080835581811062004fdf57505050565b611fb5805460008255806200502a575050565b90600160401b811162002a9b5781549080835581811062004fdf57505050565b9190828111620050cb576001920390565b50600091508190565b8115620050df570490565b634e487b7160e01b600052601260045260246000fd5b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8082101562005260575b506904ee2d6d415b85acef8160201b8083101562005250575b50662386f26fc100008083101562005240575b506305f5e1008083101562005230575b506127108083101562005220575b5060648210156200520f575b600a8092101562005204575b60019081602181860195620051918762002f5b565b96620051a1604051988962002b94565b808852620051b2601f199162002f5b565b01366020890137860101905b620051cb575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215620051fe57919082620051be565b620051c4565b91600101916200517c565b919060646002910491019162005170565b6004919392049101913862005164565b6008919392049101913862005156565b6010919392049101913862005146565b6020919392049101913862005133565b6040935081049150386200511a565b601e62002c3b91602094936040519586926200529162004db083860162004d5b565b017f2c20616e6420776974686472617761626c65206469766964656e64733a2000008152620052ca825180936020878501910162002e01565b010360011981018552018362002b94565b600382101562002a235752565b60405190620052f78262002b3f565b60405182620053068262002b5b565b610c8036833752565b906200531b8262002c61565b6040906200532c8251918262002b94565b83815280936200533f601f199162002c61565b019160005b838110620053525750505050565b6020908251620053628162002acd565b6000815282600081830152606080868401526000818401526080830152600060a0830152600060c083015282860101520162005344565b620053a5815462002c79565b9081620053b0575050565b81601f60009311600114620053c3575055565b908083918252620053e4601f60208420940160051c84016001850162004fa3565b5555565b8054906000815581620053f9575050565b6000526020600020908101905b81811062005412575050565b806200542060019262005399565b0162005406565b90600160401b811162002a9b578154918181558282106200544757505050565b600052602060002091820191015b81811062005461575050565b806200546f60019262005399565b0162005455565b805490600081558162005487575050565b6000526020600020908101905b818110620054a0575050565b80620054ae6001926200501a565b0162005494565b90600160401b811162002a9b57815491818155828210620054d557505050565b600052602060002091820191015b818110620054ef575050565b80620054fd6001926200501a565b01620054e3565b8054600091828155816200551757505050565b6001600160fd1b0382168203620055a45782526020822091600391821b8301925b838110620055465750505050565b808260089255826001820155826002820155620055658482016200501a565b6200557360048201620053e8565b620055816005820162005476565b6200558f6006820162005476565b6200559d6007820162005399565b0162005538565b634e487b7160e01b83526011600452602483fd5b600160401b821162002a9b57805490828155818310620055d757505050565b6001600160fd1b03828116830362001e07578316830362001e0757600090815260208120600392831b810193831b015b838110620056155750505050565b808260089255826001820155826002820155620056348482016200501a565b6200564260048201620053e8565b620056506005820162005476565b6200565e6006820162005476565b6200566c6007820162005399565b0162005607565b51600681101562002a235790565b90600681101562002a235760ff80198354169116179055565b90620056a68162002fc4565b60ff80198354169116179055565b90620056c08162002a18565b61ff0082549160081b169061ff001916179055565b9190601f8111620056e557505050565b62002c3b926000526020600020906020601f840160051c8301931062005714575b601f0160051c019062004fa3565b909150819062005706565b81519192916001600160401b03811162002a9b576200574b8162005744845462002c79565b84620056d5565b602080601f83116001146200578a5750819293946000926200577e575b50508160011b916000199060031b1c1916179055565b01519050388062005768565b90601f198316958460005282600020926000905b888210620057d957505083600195969710620057bf575b505050811b019055565b015160001960f88460031b161c19169055388080620057b5565b806001859682949686015181550195019301906200579e565b9060ff801983541691151516179055565b9061ff00825491151560081b169061ff001916179055565b8151600681101562002a235762005833908262005681565b602082015160018201556002810160408301516020815191620058578385620055b8565b01916000526020600020916000905b828210620058b857505050509060c0600562002c3b9360608401516003820155620058996080850151600483016200571f565b0191620058ad60a0820151151584620057f2565b015115159062005803565b805180518555620058f860018601620058e16020840151620058da8162002fc4565b826200569a565b604083015190620058f28262002a18565b620056b4565b60608101516002860155608081015180519060038701906001600160401b03831162002a9b576020906200592d84846200509a565b0190600052602060002060005b83811062005bd9575050505060a001518051805190600487019060209062005963848462005427565b01906000526020600020906000905b83821062005bb957505050506005850160208201516020815191620059988385620054b5565b019160005260206000206000925b82841062005b5557505050506006850160408201516020815191620059cc8385620054b5565b019160005260206000206000925b82841062005ae85750505050606001518051906001600160401b03821162002a9b5762005a1a8262005a10600789015462002c79565b60078901620056d5565b602090601f831160011462005a6d57928260089360209360019660009262005a61575b5050600019600383901b1c191690851b1760078801555b0194019101909262005866565b01519050388062005a3d565b906007870160005260206000209160005b601f198516811062005acf575083602093600196938793600897601f1981161062005ab5575b505050811b01600788015562005a54565b015160001960f88460031b161c1916905538808062005aa4565b9192602060018192868501518155019401920162005a7e565b80518051906001600160401b03821162002a9b5760209062005b0b83866200509a565b0183600052602060002060005b83811062005b37575050505060016020819201920193019290620059da565b82516001600160a01b03168183015560209092019160010162005b18565b80518051906001600160401b03821162002a9b5760209062005b7883866200509a565b0183600052602060002060005b83811062005ba4575050505060016020819201920193019290620059a6565b60019060208451940193818401550162005b85565b600160208262005bcc839451876200571f565b0193019101909162005972565b6001906020845194019381840155016200593a565b60409081519162005bff8362002b78565b60018352829160005b60208082101562005c725783516020929162005c248262002ab1565b60008252600081830152600086830152606060008184015280608084015286519062005c508262002a7f565b808252808383015280888301528082015260a083015282880101520162005c08565b505091925050565b611f43805482101562004cfd576000526006602060002091020190600090565b613efb805482101562004cfd576000526006602060002091020190600090565b611f42805482101562004cfd576000526006602060002091020190600090565b613efa805482101562004cfd576000526006602060002091020190600090565b611f428054600160401b81101562002a9b5762005d1d9160018201905562005cba565b91909162005d305762002c3b916200581b565b634e487b7160e01b600052600060045260246000fd5b611f438054600160401b81101562002a9b5762005d1d9160018201905562005c7a565b613efb8054600160401b81101562002a9b5762005d1d9160018201905562005c9a565b613efa8054600160401b81101562002a9b5762005d1d9160018201905562005cda565b1562005db757565b60405162461bcd60e51b815260206004820152603760248201527f73756d4469766964656e64576569676874466f72546f6b656e436c6173733a206044820152766469766964656e64576569676874206f766572666c6f7760481b6064820152608490fd5b6103e881101562004cfd5762005e4a8162005e436002620032d29460031b01549162005f36565b9062005eb0565b919062005daf565b6103e881101562004cfd5762005e4a8162005e43611fba620032d29460031b01549162005fe5565b90811562005ea757606462005e938184029384620050d4565b0362005e9f5760019190565b600091508190565b60019150600090565b9190821562005ec85762005e938184029384620050d4565b5060019150600090565b1562005eda57565b60405162461bcd60e51b815260206004820152602e60248201527f746f74616c546f6b656e73506572546f6b656e436c6173733a20746f74616c5460448201526d6f6b656e73206f766572666c6f7760901b6064820152608490fd5b6103e8811015908162004cfd57600390811b906004928383019182549260009582879601935b85871062005f6e575050505050505090565b97969091929394959762005fd05762005fc48862005fbc62005f9662000faa9a9b8762004f5e565b905490881b1c6001600160a01b031660009081526020899052604081205490946200608f565b999062005ed2565b95949392919062005f5c565b603282634e487b7160e01b6000525260246000fd5b6103e8811015908162004cfd5790600391821b90611fbc820190815490600094611fbb869501915b8386106200601e5750505050505090565b9590919293949562004cfd576200607186620060696200604362000faa998962004f5e565b905490861b1c6001600160a01b031660009081526020879052604081205490946200608f565b989062005ed2565b94939291906200600d565b906001820191821062005e9f5760019190565b9190820191821062005e9f5760019190565b15620060a957565b60405162461bcd60e51b815260206004820152603360248201527f73756d566f74696e67576569676874466f72546f6b656e436c6173733a20766f60448201527274696e67576569676874206f766572666c6f7760681b6064820152608490fd5b6103e881101562004cfd57620061318162005e436001620032d29460031b01549162005f36565b9190620060a1565b6103e881101562004cfd57620061318162005e43611fb9620032d29460031b01549162005fe5565b611faf54620061736200224862033044565b9190506200618062033108565b5060009081925b6103e88410620061a4575b6200619f935004620061de565b905090565b9160ff60078560031b01541615620061d75783620022e4620061d092620022dd62000faa969762005e1c565b9262006187565b9162006192565b908015620061f657620061f191620050d4565b600191565b5050600090600090565b9190820180921162001e0757565b9190820391821162001e0757565b906107b2906301e1853e80840483810180821162001e07576001820181811162001e0757604583019082821162001e075760646200625f92049060021c6200620e565b9561017183019682881162001e075762006280906101908099049062006200565b9084840294848604148415171562001e075762015180948583029280840487149015171562001e0757620062c092620062b99162006200565b906200620e565b91600495869108159586620064df575b506040516101a081016001600160401b03811182821017620064ca57604052600c9687825261018080366020850137601f91826200630e8562004cef565b5215620064c05760ff601d5b16620063268462004d13565b5281620063338462004d24565b52601e620063418462004d35565b528251881015620064ab578160a0840152825160051015620064ab57601e60c0840152825160061015620064ab578160e0840152825160071015620064ab5781610100840152825160081015620064ab57601e610120840152825160091015620064ab57816101408401528251600a1015620064ab57601e6101608401528251600b1015620064ab57820152600096905b81881062006426575b50508282049460018601809611620064115760018701809711620064115750949392603c80610e10809585060494840604920690565b601190634e487b7160e01b6000525260246000fd5b90969262006435848362004d46565b51858102908082048714901517156200648e578110620064a3576200645b848362004d46565b5190858202918083048714901517156200648e5762006486916200647f916200620e565b9362004cdf565b9690620063d2565b601188634e487b7160e01b6000525260246000fd5b9296620063db565b603288634e487b7160e01b6000525260246000fd5b60ff601c6200631a565b604187634e487b7160e01b6000525260246000fd5b909550606486061590811591620064fa575b509438620062d0565b905085061538620064f1565b90815181101562004cfd570160200190565b908151815111620065cf576000905b6200653683518251906200620e565b8211620065c75760019260005b8251811015620065bc576001600160f81b0319806200656e62006567848862006200565b8562006506565b5116906200657d838662006506565b5116036200659657620065909062004cdf565b62006543565b5092509060005b620065b457620065ad9062004cdf565b9062006527565b505050600190565b50929190916200659d565b505050600090565b5050600090565b611f4680549190600160401b83101562002a9b578262001a0891600162002c3b9501905562004eb6565b611f4a80549190600160401b83101562002a9b578262001a0891600162002c3b9501905562004f0a565b611fb5805490600160401b82101562002a9b576001820180825582101562004cfd576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611fb3805490600160401b82101562002a9b576001820180825582101562004cfd576000908152602090200180546001600160a01b0319166001600160a01b03909216919091179055565b611f4180549190600160401b83101562002a9b578262001a0891600162002c3b9501905562004ed2565b60405190620066f98262002b78565b60188252772a343290383937b3b930b69034b99032bc32b1baba32b21760411b6020830152565b604051906200672f8262002b06565b603a82527930b33a32b9103b37ba34b7339030b7321030b8383937bb30b61760311b6040837f5468652070656e64696e672070726f6772616d2069732065786563757465642060208201520152565b90600091825b60208083019081518051871015620069155781620067a788620067af9362004d46565b510162007387565b6026928382101562002a2357601a9182036200686d5787620067d2915162004d46565b5192828401519081101562002a2357036200682b5750936200681c6200682492620068146200680d60a0604062000faa9a0151015162004cef565b5162004cef565b51906200608f565b959062007395565b9262006784565b6064906040519062461bcd60e51b82526004820152601b60248201527a2a34329037b831b7b2329034b9903737ba102820acafa1a0a9a41760291b6044820152fd5b929190506200688681620067a789869a979a5162004d46565b8281101562002a2357601403620068bf575050906200681c62000faa95620022dd620068b88462006824965162004d46565b51620073e2565b620068d190620067a785855162004d46565b9081101562002a2357601514620068ef575b50620068249062004cdf565b906200681c6200690e95620022dd620068b88462006824965162004d46565b90620068e3565b5050509092508034106000146200698b5760405162461bcd60e51b815260206004820152603760248201527f546865207061796d656e74206973206e6f7420656e6f7567682e205468652074604482015276037ba30b6103830bcb6b2b73a1039b437bab6321031329604d1b6064820152608490fd5b8034116200720c575b50613f739182549260ff841693620069ac8562002a18565b600194808603620069e657505050620069dc919250620069d6620069d08262007479565b62007550565b620075da565b620032d2620066ea565b620069f18162002a18565b600281148080620071ff575b1562006e285750505062006a11826200748e565b1562006de95762006a22826200748e565b1562006dad5762006a5b90602080930190600260ff8560018060a01b0362006a4b865162004cef565b5151169460409687915162004cef565b510151015192541662006a6e8162002a18565b0362006d6d5781600052613f778085528360002092613f7880549485600052875260ff86600020541662006d2f5783519480600052613f7693848952600396878960002001540362006cc95783600052885286600020906000528752856000208960ff19825416179055886000905b62006b27575b505050505050742a3432903b37ba329034b99032bc32b1baba32b21760591b9192935062006b1062032533565b519162006b1d8362002b78565b6015835282015290565b845181101562006cc35786825480600052858a5262006b4c8389846000200162004f5e565b905490891b1c908a84888b62006b63838d62004d46565b511562006c2157505050505062006bc662006ba685549283600052888d52620022dd62006b9887600480986000200162004f5e565b9054908d1b1c91896203241d565b9092600052878c5262006bbf85858d6000200162004f5e565b9062004f8b565b1562006bdf575062006bd89062004cdf565b8962006add565b875162461bcd60e51b8152908101899052601c60248201527b766f74696e6720666f7220706f776572596573206f766572666c6f7760201b6044820152606490fd5b9062006c5e62006c7096620022dd87999462006bbf979860005284895262006c5187600580986000200162004f5e565b9054911b1c918d6203241d565b959097600052528c6000200162004f5e565b1562006c815762006bd89062004cdf565b865162461bcd60e51b815260048101899052601b60248201527a766f74696e6720666f7220706f7765724e6f206f766572666c6f7760281b6044820152606490fd5b62006ae3565b875162461bcd60e51b8152600481018a9052603960248201527f746865206e756d626572206f6620766f74657320646f6573206e6f74206d6174604482015278636820746865206e756d626572206f6620706f6c696369657360381b6064820152608490fd5b855162461bcd60e51b81526004810188905260176024820152761d9bdd195c881a185cc8185b1c9958591e481d9bdd1959604a1b6044820152606490fd5b825162461bcd60e51b8152600481018590526019602482015278766f74696e67206973206e6f7420696e2070726f677265737360381b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c696420766f74652070726f6772616d60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103b37ba34b73390383937b3b930b69760491b6044820152606490fd5b62006e3882979495969762002a18565b60038214918280620071f2575b1562006ec75750505050505062006e5c81620074f5565b1562006e775762006e6d906202f2b7565b620032d262006720565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420657865637574696e672070656e64696e672070726f677261604482015261369760f11b6064820152608490fd5b62006ed28162002a18565b8180620071e4575b80620071d7575b156200710157505050509060ff9062006ef962032745565b54169062006f078262002a18565b810362006fc5575062006f1a8162007479565b1562006f345780620069d6620069d0620069dc9362007479565b60405162461bcd60e51b815260206004820152605f60248201527f54686520766f74696e672069732072656a656374656420616e64206e6f77204460448201527f41524320697320696e2069646c652073746174652e2054686520696e7075742060648201527f70726f6772616d206973206e6f7420612076616c69642070726f6772616d2e00608482015260a490fd5b8062006fd360039262002a18565b146200700c57505b60405162006fe98162002b78565b6013815272283937b3b930b6903a32b936b4b730ba32b21760691b602082015290565b6200701781620074f5565b15620070285762006e6d906202f2b7565b60405162461bcd60e51b815260206004820152609960248201527f54686520766f74696e672069732070617373656420616e64206e6f772044415260448201527f4320697320696e20657865637574696e672070656e64696e672073746174652e60648201527f2054686520696e7075742070726f6772616d206973206e6f7420612076616c6960848201527f6420455845435554455f50454e44494e475f50524f4752414d20746f2065786560a48201527831baba32903a3432903832b73234b73390383937b3b930b69760391b60c482015260e490fd5b6200710c8162002a18565b8215620071c2575b505080620071b4575b6200712c575050505062006fdb565b60ff19161790556200713e8162007479565b15620071585780620069d6620069d0620069dc9362007479565b60405162461bcd60e51b815260206004820152602e60248201527f5b4572726f72203030335d5468652070726f6772616d206973206e6f7420612060448201526d3b30b634b210383937b3b930b69760911b6064820152608490fd5b50613f72544210156200711d565b620071cf91925062002a18565b388062007114565b50613f7254421062006ee1565b50613f715442101562006eda565b50613f7254421062006e45565b50613f71544210620069fd565b60018060a01b039081845116600052611f4590816020526040600020541562007302575b6200723c9034620050ba565b9015620072be576200725f9083865116600052826020526040600020546200608f565b9290156200727d578451166000526020526040600020553862006994565b60405162461bcd60e51b81526020600482015260196024820152782a3432903732bb903130b630b731b29037bb32b9333637bb9760391b6044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527b2a3432903830bcb6b2b73a103932ba3ab9371037bb32b9333637bb9760211b6044820152606490fd5b611f4654939291906000805b86811062007344575b506200723c92939495501562007330575b905062007230565b6200733e84875116620065d6565b62007328565b84620073508262004eb6565b919054818b51169260031b1c161462007374576200736e9062004cdf565b6200730e565b5093945084935060016200723c62007317565b51602681101562002a235790565b156200739d57565b60405162461bcd60e51b815260206004820152601f60248201527f54686520746f74616c207061796d656e7420697320746f6f206c617267652e006044820152606490fd5b906000805b6040840160a0620073fc818351015162004d13565b51518410156200747157926200681c62007461604094620074598562007451866200743f8b620074468362000faa9f9e6200743f90620074679e51015162004d13565b5162004d46565b519451015162004d24565b519062005eb0565b929062007395565b6200608f565b91929050620073e7565b509093505050565b6020015151156200748957600190565b600090565b602001516001815103620074b257620074ab620032d29162004cef565b51620074b8565b50600090565b6020810151602681101562002a2357602003620074b2576040015160a081015151620074b25760c081015151620074b25751516200748957600190565b602001516001815103620074b25762007512620032d29162004cef565b516020810151602681101562002a2357602103620074b2576040015160a081015151620074b25760c081015151620074b25751516200748957600190565b156200755857565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070726f6772616d60881b6044820152606490fd5b60809060208152602a60208201527f5468652070726f6772616d2069732064656e6965642062792074686520706c7560408201526967696e2073797374656d60b01b60608201520190565b620075e58162015182565b5162014c9357600681101562002a23576003811462014c3a5780620076425760405162461bcd60e51b8152602060048201526016602482015275151a19481c1c9bd9dc985b481a5cc81a5b9d985b1a5960521b6044820152606490fd5b600481036200b0db5750600080611f4a54905b8181106200b094575b5050156200b078575b60005b60209081830151918251821015620076cf57620076c181611f49620076a7620076a162000faa95620067a788620076c99a62004d46565b62033353565b9160018060a01b03885116600052526040600020620242c3565b429162004f8b565b6200766a565b50505060005b60208083015180518310156200771d57620076fa91620067a784620076a19362004d46565b90606482101562004cfd5762007717914290611f4b015562004cdf565b620076d5565b505050906000905b602083015180518310156200b0725782620077409162004d46565b516020810180516026908181101562002a2357156200b02f5781518181101562002a23576001036200798e5750506040809101906200778460c08351015162004cef565b5192620077a660a06200779b818651015162004cef565b519451015162004d13565b5195620077b785518551146202df8a565b620077c685518851146202dff0565b60005b85518110156200790c57620077df818662004d46565b516103e8908181101562004cfd57600160ff6007620078079360031b0154161515146202e052565b62007813828a62004d46565b5162007820838862004d46565b51908282101562004cfd5760066200783e9260031b0154906200608f565b906200784b848962004d46565b51918383101562004cfd576006620078689360031b01556202e0aa565b62007874828a62004d46565b519062007882838862004d46565b518181101562004cfd576001600160a01b039392620078c29160039086620078ab878e62004d46565b5116600052811b016020528760002054906200608f565b620078ce848a62004d46565b519283101562004cfd57600362000faa936200790696620078f0878e62004d46565b5116600052811b0160205287600020556202e109565b620077c9565b5093926200792991929650620079229062032f53565b9262032e37565b945192620079378462002b3f565b60008452600036813760005b835181101562007971578062000faa620079626200796b938762004d46565b51878a62032a46565b62007943565b509450926020925062007985915062004cdf565b91905062007725565b81518181101562002a235760020362007c255750506040809101805192835195620079d3620079c260a08097015162004cef565b519562007446818651015162004d13565b5193875186510362007bd257875184510362007b7e57875185510362007b27575060005b855181101562007b115762007a0d818762004d46565b51906103e8918281101562004cfd5762007a3360ff6007809360031b015416156202e162565b62007a3f828962004d46565b518381101562004cfd5760031b01805460ff1916600117905562007a64818a62004d46565b5162007a71828962004d46565b51908382101562004cfd57600562007a8d9260031b016200571f565b62007a99818662004d46565b5162007aa6828962004d46565b518381101562004cfd5760031b6001015562007ac3818762004d46565b5162007ad0828962004d46565b518381101562004cfd5760031b6002015562007aed818862004d46565b519182101562004cfd576000600662007b0b9360031b015562004cdf565b620079f7565b5095509390506020925062007985915062004cdf565b5162461bcd60e51b815260206004820152603c6024820152600080516020620337ec83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b5162461bcd60e51b81526020600482015260396024820152600080516020620337ec8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b5162461bcd60e51b81526020600482015260386024820152600080516020620337ec8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b819593949295518181101562002a235760030362008221575050604084019062007c5460c08351015162004cef565b519362007c6b60a06200779b818651015162004cef565b519362007c80865185511462000fa3620331b7565b62007c93865186511462000fa3620331b7565b60005b865181101562007cfc5762007cac818662004d46565b51906103e882101562004cfd57600362007cf69260018060a01b038b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b51111562000fa3620332bb565b62007c96565b50909493919460005b855181101562007e305762007d1b818662004d46565b51906103e88083101562004cfd57600360018060a01b0393848c5116600052811b0160205262007d5e60406000205462007d56848962004d46565b5190620050ba565b9062007d6b848a62004d46565b51918383101562004cfd57600362007d9a93878f5116600052811b0160205260406000205562000fa3620332bb565b62007da6828862004d46565b518181101562004cfd576003908462007dc0858c62004d46565b5116600052811b0160205262007de160406000205462006814848962004d46565b62007ded848a62004d46565b519283101562004cfd57600362000faa9362007e2a9662007e0f878e62004d46565b5116600052811b0160205260406000205562000fa362033320565b62007d05565b5091509162007e4762007e4e919695949662032f53565b9562032e37565b926040519462007e5e8662002b78565b6001865260203681880137516001600160a01b031662007e7e8662004cef565b526000905b86518210156200820c5762007e99828862004d46565b516104c05262007eaa855162004e62565b9660009462007eba885162004e62565b610ae0528594865b885181101562007f91578a8962007ef26001600160a01b0362007ee6858462004d46565b51166104c05162032d3b565b158062007f4b575b62007f13575b505062007f0d9062004cdf565b62007ec2565b9862007f409162001ac782859c62007f3762007f0d9760018060a01b039262004d46565b51169262004d46565b9790508a8962007f00565b5050506103e86104c051101562004cfd576001600160a01b0362007f70828b62004d46565b511660005260036104c051811b016020528a89604060002054151562007efa565b509098949897969291939760005b885181101562008033576103e86104c051101562004cfd576001600160a01b0362007fcb828b62004d46565b511660005260036104c051811b016020526040600020541562007ffa575b62007ff49062004cdf565b62007f9f565b9962007ff4906200802a906001600160a01b03620080198e8d62004d46565b511662001ac782610ae05162004d46565b9a905062007fe9565b5098509694939291956104c0516103e8811015806107405262004cfd5760031b60040154966200806e62008068878a62006200565b62004e62565b996000998a6104e0525b6107405162004cfd576104e0518a8110156200812d57620080ad620080ca9160006107405260046104c05160031b0162004f5e565b9054610ae05160039290921b1c6001600160a01b03169062032dea565b15620080e9575b620080df6104e05162004cdf565b6104e05262008078565b99808c62001ac762008126936200810d6104e05160046104c05160031b0162004f5e565b905460039190911b1c6001600160a01b03169262004d46565b99620080d1565b509a939794969299919850946000915b838310620081d257505050506107405162004cfd578051906001600160401b03821162002a9b576020906200817c8360046104c05160031b016200509a565b0160046104c05160031b01600052602060002060005b838110620081b45750505050620081a99062004cdf565b909295919562007e83565b82516001600160a01b03168183015560209092019160010162008192565b6200820590620081fe906001600160a01b03620081f0868662004d46565b511662001ac7828962004d46565b9262004cdf565b916200813d565b91945050620079859194506020925062004cdf565b819593949295518181101562002a2357600403620084a9575050604080920160c0946200826262008256878451015162004cef565b51968351015162004d13565b51946200827960a06200779b818651015162004cef565b51936200828e885188511462000fa3620331b7565b620082a1885185511462000fa3620331b7565b620082b4885186511462000fa3620331b7565b60005b88518110156200831c57620082cd818662004d46565b51906103e882101562004cfd5762008316916003906001600160a01b03620082f6848e62004d46565b5116600052811b0160205262000faa886000205462007ce9838a62004d46565b620082b7565b50909691959294939660005b83518110156200845d576200833e818862004d46565b51906103e8918281101562004cfd576001600160a01b03906003908262008366858a62004d46565b5116600052811b01602052620083878b62007d56848b600020549262004d46565b9062008394848c62004d46565b51918583101562004cfd576003620083cd9385620083b3888d62004d46565b5116600052811b016020528a6000205562000fa3620332bb565b620083d9828a62004d46565b518381101562004cfd5760039082620083f3858b62004d46565b5116600052811b01602052620084148b62006814848b600020549262004d46565b91905062008423838b62004d46565b519384101562004cfd57620084579360039162008441858b62004d46565b5116600052811b01602052876000205562004cdf565b62008328565b50946200848092975062007e4791939450620084799062032f53565b9362032e37565b9260005b835181101562007971578062000faa62007962620084a3938762004d46565b62008484565b8195949593929351908082101562002a23576005918203620084db575050506020919262000faa62007985926202ec1a565b82518181101562002a23576006036200874c575050509060408092016200850760c08251015162004cef565b51946200852960a06200851e818551015162004cef565b519351015162004d13565b51928651835103620086fb578651845103620086af5760005b8751811015620085a75762008558818562004d46565b51906103e882101562004cfd57620085a1916003906001600160a01b0362008581848d62004d46565b5116600052811b0160205262000faa876000205462007ce9838962004d46565b62008542565b509092919260005b87518110156200865b57620085c5818662004d46565b516103e88082101562004cfd576001600160a01b03929160039084620085ec858e62004d46565b5116600052811b016020526200860c886000205462007d56848962004d46565b62008618848a62004d46565b519283101562004cfd57600362000faa9362008655966200863b8f889062004d46565b5116600052811b01602052896000205562000fa3620332bb565b620085af565b50959262008670919250620079229062032f53565b9251946200867e8662002b3f565b60008652600036813760005b835181101562007971578062000faa62007962620086a9938762004d46565b6200868a565b845162461bcd60e51b8152602060048201526030602482015260008051602062033aec83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b845162461bcd60e51b815260206004820152603560248201526000805160206203372c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b82518181101562002a23576007036200889b575050506040809101936200877860c08651015162004cef565b51926200878a60a08751015162004cef565b5195515191620087a2855188511462000fa3620331b7565b60005b855181101562007b1157620088959062000faa6001600160a01b03826002886200887d8e620088728e620088688f89620087e08a8562004d46565b51166000526200881c896200881481611f409a8b6020526200880e60ff8760002054161562000fa362033288565b62004d46565b519662004d46565b51968a6200885283519b8c96620088338862002a7f565b600188526060602089019860008a528781019b8c52019b8c5262004d46565b51166000526020526000209751151588620057f2565b5115158662005803565b51600185016200571f565b519101556200888d838a62004d46565b5116620066c0565b620087a5565b82519596959394928185101562002a235760089485036200899257505050620088cd60c0604080950151015162004cef565b519360005b85518110156200897d5762008977906001600160a01b0380620088f6838a62004d46565b5116600052611f4090816020526200894c60ff620089236001828c600020541615151462000fa3620331e7565b8262008930868d62004d46565b5116600052836020528960002054891c161562000fa36203324f565b62008958838a62004d46565b51166000526020528560002061010061ff001982541617905562004cdf565b620088d2565b50949093506020925062007985915062004cdf565b80518281101562002a235760090362008a6657505050620089bc60c0604080950151015162004cef565b519360005b85518110156200897d5762008a6090866001600160a01b0380620089e6848462004d46565b511660005262008a396001898362008a1b87611f4097886020526200880e8660ff8097600020541615151462000fa3620331e7565b5116600052846020528a600020548a1c1615151462000fa36203321a565b62008a45838a62004d46565b51166000526020528560002061ff0019815416905562004cdf565b620089c1565b809192939597969450518281101562002a2357600a0362008b445750505060408094019162008aab60a062008aa060c08651015162004cef565b519451015162004cef565b519162008ac0845184511462000fa3620331b7565b60005b8451811015620079715762008b3e906001600160a01b038062008ae7838962004d46565b5116600052611f408060205262008b0e600160ff8c600020541615151462000fa3620331e7565b62008b1a838862004d46565b519162008b28848a62004d46565b5116600052602052600289600020015562004cdf565b62008ac3565b80969496518281101562002a2357600b0362008c125750505060408092019362008b7360c08651015162004cef565b519451519162008b8b865184511462000fa3620331b7565b60005b8651811015620079715762008c0c9062000faa6001600160a01b038062008bb6848c62004d46565b5116600052611f408060205262008bdd600160ff8b600020541615151462000fa3620331e7565b62008be9848962004d46565b519162008bf7858d62004d46565b5116600052602052600188600020016200571f565b62008b8e565b80969394929596518281101562002a2357600c0362008d1257505060400160609182825101519362008c44856202d698565b60005b855181101562008cfc5760c062008c6382878751015162004d46565b5101511562008cbf5762008c8762008c8082878751015162004d46565b5162005cfa565b611f425460001981019190821162001e07578762008ca962008cb99362005cba565b5001805460ff1916905562004cdf565b62008c47565b62008cda62008cd382878751015162004d46565b5162005d46565b611f425460001981019190821162001e07578762008ca962008cb99362005c7a565b5095915093506020925062007985915062004cdf565b809695949396518281101562002a2357600d0362008e3657505060400193602062008d4260a08751015162004cef565b51955101519162008d5786518451146202dd8c565b60005b865181101562007971578062008d7562008de5928662004d46565b511562008deb5762008d9862008d8c828a62004d46565b51611f4254116202de15565b62008dc160ff8762008db662008daf858d62004d46565b5162005cba565b50015416156202de6d565b8562008dd262008daf838b62004d46565b5001805460ff1916600117905562004cdf565b62008d5a565b62008e0762008dfb828a62004d46565b51611f4354116202de15565b62008e2560ff8762008db662008e1e858d62004d46565b5162005c7a565b8562008dd262008e1e838b62004d46565b80518281101562002a2357600e0362008ef457505060400193602062008e6160a08751015162004cef565b51955101519162008e7686518451146202dd8c565b60005b865181101562007971578062008e9462008ea0928662004d46565b5162008ea65762004cdf565b62008e79565b62008ec262008eb6828a62004d46565b51611f4254116202dece565b62008ee360ff8762008ed962008daf858d62004d46565b500154166202df27565b8562008ca962008daf838b62004d46565b809693949596518281101562002a2357600f0362008fbf57505060400160609182825101519362008f25856202d698565b60005b855181101562008cfc5760c062008f4482878751015162004d46565b5101511562008f895762008f6162008c8082878751015162004d46565b611f425460001981019190821162001e07578762008dd262008f839362005cba565b62008f28565b62008f9d62008cd382878751015162004d46565b611f425460001981019190821162001e07578762008dd262008f839362005c7a565b8091929394969550518281101562002a235760100362009064575050604001519062008ff460a0608084015193015162004cef565b519362009009835186511462000fa3620331b7565b60005b835181101562009051578062000faa6200902b6200904b938762004d46565b51620090378162002fc4565b62009043838a62004d46565b51906202d55c565b6200900c565b5093509160209150620079859062004cdf565b80959295518281101562002a2357601103620092ed575050906040809401916200909960a062008aa060c08651015162004cef565b5191620090aa84518451146202d510565b60005b845181101562009122576200911c9062000faa6001600160a01b0380620090d5848a62004d46565b5116600052611f4580602052620090f68b6000205462006814868b62004d46565b91909262009105868c62004d46565b51166000526020528a6000205562000fa36203316d565b620090ad565b509394509162009133915062032e37565b90611f46928354946200914c6200806885518862006200565b91600093845b888110620092ad575060005b865181101562009205576000805b8a8110620091b6575b50156200918e575b620091889062004cdf565b6200915e565b946200918890620091ad906001600160a01b03620081f0898b62004d46565b9590506200917d565b620091c18162004eb6565b90546001600160a01b0360039290921b1c811690620091e1858c62004d46565b511614620091fa57620091f49062004cdf565b6200916c565b505060013862009175565b50965094909350620092178362004e62565b805191906001600160401b03831162002a9b57602090620092388462004ff7565b0190600052602060002060005b8381106200928f575050505060005b8281106200926c575050506200798560209162004cdf565b620092899062000faa6001600160a01b03620019fb838662004d46565b62009254565b82516001600160a01b03168183015560209092019160010162009245565b94620092e0620092e791620092c28862004eb6565b905460039190911b1c6001600160a01b031662001ac7828962004d46565b9562004cdf565b62009152565b80518281101562002a23576012036200955c5750506040809401916200931e60a062008aa060c08651015162004cef565b51916200932f84518451146202d510565b60005b845181101562009381576200937b9062000faa6001600160a01b03806200935a848a62004d46565b5116600052611f4580602052620090f68b6000205462007d56868b62004d46565b62009332565b509491509291620093929062032e37565b90611f468054620093a38162004e62565b9260009485925b808410620094575750505050620093c18362004e62565b805191906001600160401b03831162002a9b57602090620093e28462004ff7565b0190600052602060002060005b83811062009439575050505060005b82811062009416575050506200798560209162004cdf565b620094339062000faa6001600160a01b03620019fb838662004d46565b620093fe565b82516001600160a01b031681830155602090920191600101620093ef565b9297600097929597949194998a5b86518110156200954a576200947a8b62004eb6565b90546001600160a01b0360039290921b1c8116906200949a838a62004d46565b511614620094b357620094ad9062004cdf565b62009465565b509950976001979592979491945b806200951a575b15620094e057620094d99062004cdf565b92620093aa565b9562009513620094d991620094f58962004eb6565b905460039190911b1c6001600160a01b031662001ac7828a62004d46565b9662004cdf565b50620095268162004eb6565b60018060a01b0391549060031b1c16600052611f45602052826000205415620094c8565b509998909897959297949194620094c1565b80959295518281101562002a2357601303620095bd57505060408091015101519260005b8451811015620095ac578062000faa6200959f620095a6938862004d46565b516202f24b565b62009580565b509250906200798560209162004cdf565b8051918083101562002a235760149283036200976057505050604080910190620095ec60c08351015162004cef565b51926200960360a06200779b818651015162004cef565b51956200961485518551146202df8a565b6200962385518851146202dff0565b60005b85518110156200970b576200963c818962004d46565b5162009649828762004d46565b516103e8918282101562004cfd5760066200966a9260031b0154906200608f565b9062009677848962004d46565b51918383101562004cfd576006620096949360031b01556202e0aa565b620096a0828a62004d46565b5190620096ae838862004d46565b518181101562004cfd576001600160a01b039392620096d79160039086620078ab878e62004d46565b620096e3848a62004d46565b519283101562004cfd57600362000faa936200970596620078f0878e62004d46565b62009626565b5093926200972191929650620079229062032f53565b9451926200972f8462002b3f565b60008452600036813760005b835181101562007971578062000faa620079626200975a938762004d46565b6200973b565b819694959396518181101562002a2357601590810362009cd7575050505060408401906200979360c08351015162004cef565b5193620097aa60a06200779b818651015162004cef565b5193620097bf865185511462000fa3620331b7565b620097d2865186511462000fa3620331b7565b60005b86518110156200982e57620097eb818662004d46565b51906103e882101562004cfd576003620098289260018060a01b038b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b620097d5565b50909493919460005b85518110156200993f576200984d818662004d46565b51906103e88083101562004cfd57600360018060a01b0393848c5116600052811b016020526200988860406000205462007d56848962004d46565b9062009895848a62004d46565b51918383101562004cfd576003620098c493878f5116600052811b0160205260406000205562000fa3620332bb565b620098d0828862004d46565b518181101562004cfd5760039084620098ea858c62004d46565b5116600052811b016020526200990b60406000205462006814848962004d46565b62009917848a62004d46565b519283101562004cfd57600362000faa93620099399662007e0f878e62004d46565b62009837565b5091509162007e4762009956919695949662032f53565b9260405194620099668662002b78565b6001865260203681880137516001600160a01b0316620099868662004cef565b526000905b86518210156200820c57620099a1828862004d46565b516103a052620099b2855162004e62565b96600094620099c2885162004e62565b610580528594865b885181101562009a90578a89620099fa6001600160a01b03620099ee858462004d46565b51166103a05162032d3b565b158062009a4a575b62009a1b575b505062009a159062004cdf565b620099ca565b9862009a3f9162001ac782859c62007f3762009a159760018060a01b039262004d46565b9790508a8962009a08565b5050506103e86103a051101562004cfd576001600160a01b0362009a6f828b62004d46565b511660005260036103a051811b016020528a89604060002054151562009a02565b509098949897969291939760005b885181101562009b32576103e86103a051101562004cfd576001600160a01b0362009aca828b62004d46565b511660005260036103a051811b016020526040600020541562009af9575b62009af39062004cdf565b62009a9e565b9962009af39062009b29906001600160a01b0362009b188e8d62004d46565b511662001ac7826105805162004d46565b9a905062009ae8565b5098509694939291956103a0516103e8811015806105c05262004cfd5760031b600401549662009b6762008068878a62006200565b996000998a610200525b6105c05162004cfd57610200518a81101562009c0d5762009ba662009bc39160006105c05260046103a05160031b0162004f5e565b90546105805160039290921b1c6001600160a01b03169062032dea565b1562009be2575b62009bd86102005162004cdf565b6102005262009b71565b99808c62001ac762009c06936200810d6102005160046103a05160031b0162004f5e565b9962009bca565b509a939794969299919850946000915b83831062009cb257505050506105c05162004cfd578051906001600160401b03821162002a9b5760209062009c5c8360046103a05160031b016200509a565b0160046103a05160031b01600052602060002060005b83811062009c94575050505062009c899062004cdf565b90929591956200998b565b82516001600160a01b03168183015560209092019160010162009c72565b62009cd090620081fe906001600160a01b03620081f0868662004d46565b9162009c1d565b82979496959751918083101562002a2357601692830362009d4457505050505060c0604062009d0a920151015162004cef565b519260005b8451811015620095ac5762009d3e9062000faa6001600160a01b0362009d36838962004d46565b511662006675565b62009d0f565b83518181101562002a235760170362009d9d5760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b83518181101562002a235760180362009e1057505050505060c0604062009dc8920151015162004cef565b51611fb6805460ff191660011790559260005b8451811015620095ac5762009e0a9062000faa6001600160a01b0362009e02838962004d46565b51166200662a565b62009ddb565b83979697518181101562002a235760190362009f8457505050505060008080604080940160a08082510151805162009f4b575b5050519060e08201519162009e676200680d60c060018060a01b0393015162004cef565b511690602083519301915af1903d1562009f42573d9162009e888362002f5b565b9262009e978351948562002b94565b83523d6000602085013e5b1562009eb75750506200798560209162004cdf565b62004cdb925062009f23815192600080516020620338cc833981519152602085015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b8385015283815162009f12816059946020868601910162002e01565b810103603981018552018362002b94565b5162461bcd60e51b815260206004820152918291602483019062002e26565b60609162009ea2565b62009f569062004cef565b515162009f65575b8062009e43565b8192506200680d9062009f7b9251015162004cef565b51903862009f5e565b83518181101562002a2357601a036200a084575050505062009faf60a0604080940151015162004cef565b519062009fc060038351146202d510565b62009fcb8262004cef565b519262009fe462009fdc8462004d13565b519362004d24565b51926200a04a5750509162007985916001602094146000146200a043576200a023906200a016611fb19182546200608f565b90915562000fa362033108565b62000faa611fb26200a03681546200607c565b90915562000fa362033142565b5062004cdf565b60649250519062461bcd60e51b825260206004830152602482015273496e76616c6964207061796d656e74207479706560601b6044820152fd5b909192809450518181101562002a2357601b036200a51957505050505091906200a0c4611faf546200225a6200a0b962033044565b612710831062004cac565b50506200a0d062033108565b506000805b6103e881106200a4a8575b50506200a0ec62006161565b6200a0fa613f745462004e62565b9060009485935b6103e88510156200a49b5760ff60078660031b015416156200a25a5760009560028660031b0154156200a24b57869796975b62004cfd5760048660031b01548810156200a232576200a15b886004600389901b0162004f5e565b600160a01b6001900391549060031b1c1696876000528660031b600301602052604097858960002054906200a1909162005eb0565b99906200a19c62033108565b6200a1a79162004cac565b6000998960031b600201546200a1bd9162005eb0565b91906200a1c962033108565b6200a1d49162004cac565b828b52611f476020528a20908154906200a1ee916200608f565b9091556200a1fb62033108565b6200a2069162004cac565b6200a212828862004d46565b526200a21e9062004cdf565b976200a22a9062004cdf565b97966200a133565b91946200a2429196975062004cdf565b9390946200a101565b91946200a24291965062004cdf565b949592915092505b6200a26d8262004e62565b91600091825b8281106200a40557505050611f48908154926200a29562008068858462006200565b9360009081905b8082106200a3ca57505060005b8381106200a3265750508351939150506001600160401b03831162002a9b576020906200a2d68462004fbc565b0190600052602060002060005b8381106200a3085750505050620079856020916000611fb1556000611fb25562004cdf565b82516001600160a01b0316818301556020909201916001016200a2e3565b6000805b8381106200a382575b50156200a34c575b6200a3469062004cdf565b6200a2a9565b906200a346906200a379906001600160a01b036200a36b858762004d46565b511662001ac7828a62004d46565b9190506200a33b565b6001600160a01b03806200a397858862004d46565b5116906200a3a6838b62004d46565b5116146200a3bf576200a3b99062004cdf565b6200a32a565b50506001386200a333565b9091620081fe6200a3fe916200a3e08562004e9a565b905460039190911b1c6001600160a01b031662001ac7828b62004d46565b906200a29c565b6000805b8581106200a453575b50156200a42b575b6200a4259062004cdf565b6200a273565b926200a425906200a44a906001600160a01b03620081f0878662004d46565b9390506200a41a565b6001600160a01b03806200a468858762004d46565b5116906200a477838a62004d46565b5116146200a490576200a48a9062004cdf565b6200a409565b50506001386200a412565b949592915092506200a262565b806003959394951b9060ff600783015416156200a50e576200a4f86200746162000faa946200a4ec6200a5049560026200a4e28762005e1c565b9101549062005eb0565b929062000fa362033108565b939062000fa362033108565b939291936200a0d5565b50939291936200a0e0565b83518181101562002a2357601c036200a5725760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b83518181101562002a2357601d036200a598575b50505050506200798560209162004cdf565b839795969497518181101562002a2357601e036200ae665750505050604084019060a0906200a5cb828451015162004cef565b51516200a5dc838551015162004d13565b5151036200ade9576200a5f3828451015162004cef565b51516200a604838551015162004d24565b5151036200ad6d576200a61b828451015162004cef565b51946200a62c838551015162004d13565b51916200a65d6200a641858751015162004d24565b51946200a652818851015162004cef565b519651015162004d13565b519585518751036200ad0a5760005b86518110156200a6c5576200a682818862004d46565b51906103e882101562004cfd5760036200a6bf9260018060a01b038d5116600052811b0160205262000faa60406000205462007ce9838c62004d46565b6200a66c565b5090969192939660005b86518110156200a76e576200a6e5818862004d46565b516103e881101562004cfd5760039060018060a01b038c5116600052811b016020526200a71d60406000205462007d56838b62004d46565b91906200a72b828a62004d46565b51906103e882101562004cfd576200a76893600362000faa938f60018060a01b03905116600052811b0160205260406000205562000fa3620332bb565b6200a6cf565b5093979550936200a7829096929662032f53565b96604051966200a7928862002b78565b60018852602036818a013786516001600160a01b03166200a7b38962004cef565b52604051966200a7c38862002b3f565b600088526000610460525b895161046051908110156200ab8b576200a7e9908b62004d46565b51610520526200a7fa885162004e62565b996000976200a80a8b5162004e62565b610920528897895b8b518110156200a8d8578d8c6200a8426001600160a01b036200a836858462004d46565b51166105205162032d3b565b15806200a892575b6200a863575b50506200a85d9062004cdf565b6200a812565b9b6200a8879162001ac782859f62007f376200a85d9760018060a01b039262004d46565b9a90508d8c6200a850565b5050506103e861052051101562004cfd576001600160a01b036200a8b7828e62004d46565b5116600052600361052051811b016020528d8c60406000205415156200a84a565b50909b989a99949691929395979b60005b8b518110156200a97d576103e861052051101562004cfd576001600160a01b036200a915828e62004d46565b5116600052600361052051811b01602052604060002054156200a944575b6200a93e9062004cdf565b6200a8e9565b9c6200a9746200a93e918f6200a9638f9160018060a01b039262004d46565b511662001ac7826109205162004d46565b9d90506200a933565b509a9b509895969193969490929461052051996103e88b10159b8c62004cfd578d9b60031b600401549d6200a9b3908f62006200565b6200a9be9062004e62565b6103205260006108c0528c6000610640525b62004cfd57610640519c8e8e10156200aa8e57506200aa1c6200a9ff60009e60046105205160031b0162004f5e565b90546109205160039290921b1c6001600160a01b03169062032dea565b156200aa3c575b8c6200aa326106405162004cdf565b610640526200a9d0565b6200aa546106405160046105205160031b0162004f5e565b60018060a01b0391549060031b1c166200aa756108c0516103205162004d46565b526200aa846108c05162004cdf565b6108c0526200aa23565b939d509396999094979b50999094979960005b8281106200ab3f5750505062004cfd5761032051516001600160401b03811162002a9b576200aada8160046105205160031b016200509a565b602061032051019060046105205160031b0160005260206000209160005b8281106200ab2157505050506200ab126104605162004cdf565b6104605295989094986200a7ce565b81516001600160a01b0316818501556020909101906001016200aaf8565b6200ab85906001600160a01b036200ab58828562004d46565b51166200ab6c6108c0516103205162004d46565b526200ab7b6108c05162004cdf565b6108c05262004cdf565b6200aaa1565b5094929750929750939450600094855b87518110156200ac0b576200abce6200abc66200abb9838962004d46565b5162007451848d62004d46565b91906202f07a565b806200abe7575b506200abe19062004cdf565b6200ab9b565b906200abfc6200ac04986200abe1936200608f565b98906202f0c7565b906200abd5565b509650945092909150806200ac2f575b5050620079856020915b913880806200a586565b6200ac629060018060a01b038351166000526200ac5a611f459182602052604060002054906200608f565b92906202f120565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106200acc0575b5050916200798591602093156200aca4575b50916200ac1b565b516200acb9906001600160a01b0316620065d6565b386200ac9c565b6200accb8162004eb6565b9054855160039290921b1c6001600160a01b039081169116146200acfa576200acf49062004cdf565b6200ac81565b506001915082905060206200ac8a565b60405162461bcd60e51b815260206004820152603560248201527f546865206c656e677468206f6620746f6b656e436c61737320616e6420746f6b604482015274195b905b5bdd5b9d081a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b60405162461bcd60e51b81526020600482015260596024820152600080516020620339ec83398151915260448201527f642070726963654172726179206973206e6f7420657175616c2061742042415460648201527810d217d095549397d513d2d15394d7d0539117d49151955391603a1b608482015260a490fd5b60405162461bcd60e51b815260206004820152605a6024820152600080516020620339ec83398151915260448201527f6420616d6f756e744172726179206973206e6f7420657175616c2061742042416064820152791510d217d095549397d513d2d15394d7d0539117d4915195539160321b608482015260a490fd5b839794969597518181101562002a2357601f036200aeaa57505050506020916200aea46200ae9d6040620079859401515162004cef565b516202f281565b6200ac25565b83518181101562002a23576020036200aed0575b5050505050620079856020916200ac25565b83518181101562002a235760218091036200aeed575b506200aebe565b8451828110156200b01a576022036200af2d5750505050505062007985602091611fb660ff1981541690556200af2262005087565b91388080806200aee6565b8451828110156200b01a576023036200af54575b505050505050620079856020916200af22565b845194828610156200b01a5760248096036200af72575b506200af41565b8051838110156200b006576025146200af6b5751918210156200aff25750036200afb65750506020916200afaa62007985926202e1ae565b9138808080806200af6b565b60405162461bcd60e51b8152602060048201529182015275496e76616c6964206f7065726174696f6e207479706560501b604482015260649150fd5b8490634e487b7160e01b6000526004526000fd5b8683634e487b7160e01b6000526004526000fd5b50634e487b7160e01b60005260045260246000fd5b60405162461bcd60e51b815260206004820152601b60248201527a13dc195c985d1a5bdb881d1e5c19481a5cc81d5b9919599a5b9959602a1b6044820152606490fd5b50915050565b80516200b08e906001600160a01b031662006600565b62007667565b6200b09f8162004f0a565b9054855160039290921b1c6001600160a01b039081169116146200b0ce576200b0c89062004cdf565b62007655565b505050600138806200765e565b600281036200b0ff5760405162461bcd60e51b81528062004cdb600482016200758f565b6001146200b10a5750565b6200b118611f43546200530f565b805190600160401b821162002a9b57613efb5482613efb5580831062014bbf575b50602001613efb60005260206000206000915b83831062014b9e575050505060005b611f43548110156200b194578062000faa6200b17b6200b18e9362005c7a565b506200b1878362005c9a565b90620150c9565b6200b15b565b506200b1a3611f42546200530f565b805190600160401b821162002a9b57613efa5482613efa5580831062014b02575b50602001613efa60005260206000206000915b83831062014ae1575050505060005b611f42548110156200b218578062000faa6200b2066200b2129362005cba565b506200b1878362005cda565b6200b1e6565b5060005b6103e8811015806200b3c957600160ff611fbf8460031b0154161515146200b251575b506200b24b9062004cdf565b6200b21c565b916000835b62004cfd57611fbc8360031b01548110156200b2c0576200b2b7929350600092816200b28b8593611fbc8860031b0162004f5e565b9054600391821b1c6001600160a01b031660009081529087901b611fbb01602052604081205562004cdf565b9093926200b256565b5091604051906200b2d18262002b3f565b6000825262004cfd578051906001600160401b03821162002a9b576020906200b30283611fbc8660031b016200509a565b01611fbc8360031b01600052602060002060005b8381106200b3ab57505050611fbf600383901b908101805460ff191690556000611fb88201819055611fb98201819055611fba8201819055611fbd90910180546200b24b9493506200b3689062002c79565b601f908181116200b389575b5050556000611fbe8260031b0155906200b23f565b6200b3a39183855260208520910160051c81019062004fa3565b38806200b374565b82516001600160a01b0316818301556020909201916001016200b316565b505060005b6103e8811062014a53575060005b611f41548110156200b43757806200b3f86200b4319262004ed2565b60018060a01b0391549060031b1c16600052613ef860205260006002604082208281556200b4296001820162005399565b015562004cdf565b6200b3dc565b506200b446611f415462004e62565b8051906001600160401b03821162002a9b57600160401b821162002a9b57602090613ef95483613ef95580841062014a31575b5001613ef9600052602060002060005b83811062014a13575050505060005b611f41548110156200b50a576200b4af8162004ed2565b9054613ef95460039290921b1c6001600160a01b0316919081101562004cfd57613ef96000526000805160206203398c833981519152810180546001600160a01b0319169092179091556200b5049062004cdf565b6200b498565b509060005b611f41548110156200b5c957806200b52b6200b57e9262004ed2565b9060018060a01b03918291549060031b1c16600052611f40602052604080600020916200b5588462004ed2565b90549060031b1c16600052613ef8602052600020908082036200b584575b505062004cdf565b6200b50f565b600280916200b5aa60ff6200b59d8184541687620057f2565b825460081c168562005803565b6200b5bc600182016001860162014d65565b015491015538806200b576565b5060005b613f02548110156200b61b57806200b5e96200b6159262004eee565b60018060a01b0391549060031b1c16600052613f0160205262000faa6040600020606481019062004fa3565b6200b5cd565b506200b62a611f4a5462004e62565b8051906001600160401b03821162002a9b57600160401b821162002a9b57602090613f025483613f0255808410620149f1575b5001613f02600052602060002060005b838110620149d3575050505060005b611f4a548110156200b6bf578062000faa6200b69c6200b6b99362004f0a565b905460039190911b1c6001600160a01b031662001a088362004eee565b6200b67c565b5060005b611f4a548110156200b74a57806200b6df6200b7319262004f0a565b9060018060a01b03918291549060031b1c16600052611f49602052604080600020916200b70c8462004f0a565b90549060031b1c16600052613f01602052600020908082036200b73757505062004cdf565b6200b6c3565b6200b742916201514b565b38806200b576565b50611f4b80546000905b60648210620149ba575050611faf54613f675550611fb054613f6855611fb154613f6955611fb254613f6a55611fb3546001600160401b03811162002a9b57600160401b811162002a9b57613f6b5481613f6b558082106201498c575b50613f6b60009081527f0c040229f6fc4874d4176ee508a0872dc89a48e51cc9b61a792006f29e06275480546000805160206203376c83398151915291905b8484106201496a575050505050611fb454600160401b811162002a9b57613f6c5481613f6c5580821062014928575b50613f6c6000908152600080516020620337ac8339815191527fcdf85548d0b3537a0f46212d2994f9493fe1dfa88d3af4ddb0cac3c506fd3f595b8383106201490a575050611fb5549150506001600160401b03811162002a9b57600160401b811162002a9b57613f6d5481613f6d55808210620148dc575b50613f6d60009081527f70c3d981fef3a436e3d026045c487f2278cccbfa7f9e11fbd3c1406b0017bd5d80546000805160206203396c83398151915291905b848410620148ba57505050505060ff611fb65416151560ff8019613f6e5416911617613f6e5560005b613efe548110156200b94a57806200b91c6200b9449262004f26565b905460039190911b1c6001600160a01b03166000908152613efd602052604081205562004cdf565b6200b900565b506200b959611f465462004e62565b8051906001600160401b03821162002a9b576020906200b9798362005041565b01613efe600052602060002060005b8381106201489c575050505060005b611f46548110156200b9da578062000faa6200b9b76200b9d49362004eb6565b905460039190911b1c6001600160a01b031662001a088362004f26565b6200b997565b5060005b611f46548110156200ba4957806200b9fa6200ba439262004eb6565b9060018060a01b03918291549060031b1c16600052611f4560205260408060002054916200ba288462004eb6565b90549060031b1c16600052613efd6020526000205562004cdf565b6200b9de565b5060005b613f00548110156200ba9757806200ba696200ba919262004f42565b905460039190911b1c6001600160a01b03166000908152613eff602052604081205562004cdf565b6200ba4d565b506200baa6611f485462004e62565b8051906001600160401b03821162002a9b576020906200bac68362005064565b01613f00600052602060002060005b8381106201487e575050505060005b611f48548110156200bb27578062000faa6200bb046200bb219362004e9a565b905460039190911b1c6001600160a01b031662001a088362004f42565b6200bae4565b5060005b611f48548110156200bb9657806200bb476200bb909262004e9a565b9060018060a01b03918291549060031b1c16600052611f4760205260408060002054916200bb758462004e9a565b90549060031b1c16600052613eff6020526000205562004cdf565b6200bb2b565b50613f02546000805b82811062014839575b501562014803575b5060005b60208301519081518110156200bc0c5762000faa620076c16200bbe6620076a16020620067a7866200bc069862004d46565b86516001600160a01b03166000908152613f0160205260409020620242c3565b6200bbb4565b505060005b602083015180518210156200bc5957620076a16020620067a7846200bc369462004d46565b90606482101562004cfd576200bc53914290613f03015562004cdf565b6200bc11565b5050906000905b6020810151805183101562010f2357826200bc7b9162004d46565b516020810151602681101562002a2357156200b02f576020810151602681101562002a23576001036200c24d57604001906200bcbc60c08351015162004cef565b51936200bcd360a06200779b818651015162004cef565b51916200bce486518551146202df8a565b6200bcf386518451146202dff0565b60005b86518110156200be51576200bd0c818662004d46565b516103e881101562004cfd57600160ff611fbf6200bd339360031b0154161515146202e052565b6200bd3f818562004d46565b516200bd4c828762004d46565b51906103e882101562004cfd57611fbe6200bd6d9260031b0154906200608f565b906200bd7a838862004d46565b51916103e883101562004cfd57611fbe6200bd9a9360031b01556202e0aa565b6200bda6818562004d46565b516200bdb3828762004d46565b51906103e882101562004cfd576200bdf691611fbb906001600160a01b036200bddd868d62004d46565b511660005260031b01602052604060002054906200608f565b91906200be04828862004d46565b51906103e882101562004cfd576200be4b9362000faa92611fbb906001600160a01b036200be33878f62004d46565b511660005260031b016020526040600020556202e109565b6200bcf6565b50926200be68919250620084799095949562032f53565b916040516200be778162002b3f565b6000815260003681376000945b80518610156200c233576200be9a868262004d46565b516102c0526200beab855162004e62565b966000946200bebb845162004e62565b6105a05260009460005b88518110156200bf8d578a896200bef56001600160a01b036200bee9858462004d46565b51166102c05162032d92565b15806200bf45575b6200bf16575b50506200bf109062004cdf565b6200bec5565b986200bf3a9162001ac782859c62007f376200bf109760018060a01b039262004d46565b9790508a896200bf03565b5050506103e86102c051101562004cfd576001600160a01b036200bf6a828b62004d46565b5116600052611fbb6102c05160031b016020528a8960406000205415156200befd565b50909895979498969291939660005b88518110156200c02b576103e86102c051101562004cfd576001600160a01b03806200bfc9838c62004d46565b5116600052611fbb6102c05160031b01602052604060002054156200bffb575b506200bff59062004cdf565b6200bf9c565b819b6200c023916200c0126200bff5948d62004d46565b511662001ac7826105a05162004d46565b9a906200bfe9565b509850969592919093966102c0516103e8811015806103e05262004cfd5760031b611fbc0154986200c06262008068898c62006200565b6108a0526000610a80526000610ac0525b6103e05162004cfd57610ac0518a8110156200c13c576200c0a96200c0c99160006103e052611fbc6102c05160031b0162004f5e565b90546105a0516001600160a01b03939260031b9190911c83169062032dea565b156200c0e9575b506200c0df610ac05162004cdf565b610ac0526200c073565b60006103e0526200c108610ac051611fbc6102c05160031b0162004f5e565b90549060031b1c166200c122610a80516108a05162004d46565b526200c131610a805162004cdf565b610a8052386200c0d0565b50979294959093985095909560005b8281106200c1e7575050506103e05162004cfd576108a051516001600160401b03811162002a9b576200c18981611fbc6102c05160031b016200509a565b60206108a05101611fbc6102c05160031b01600052602060002060005b8381106200c1c957505050506200c1bd9062004cdf565b9492959091956200be84565b82516001600160a01b0316818301556020909201916001016200c1a6565b6200c22d906001600160a01b036200c200828562004d46565b51166200c214610a80516108a05162004d46565b526200c223610a805162004cdf565b610a805262004cdf565b6200c14b565b5050939092506200c245915062004cdf565b90916200bc60565b906020829493940151602681101562002a23576002036200c404576040809201908151938451916200c2a46200c28860a08098015162004cef565b51966200c299818751015162004d13565b519551015162004d24565b5194835187510362007bd257835185510362007b7e57835186510362007b27575060005b86518110156200c3f1576200c2de818862004d46565b516103e881101562004cfd5760ff611fbf6200c3019260031b015416156202e162565b6200c30d818862004d46565b516103e881101562004cfd5760031b611fbf01805460ff191660011790556200c337818562004d46565b516200c344828962004d46565b51906103e882101562004cfd57611fbd6200c3639260031b016200571f565b6200c36f818662004d46565b516200c37c828962004d46565b516103e881101562004cfd5760031b611fb901556200c39c818762004d46565b516200c3a9828962004d46565b516103e881101562004cfd5760031b611fba01556200c3c9818862004d46565b51906103e882101562004cfd576000611fbe6200c3eb9360031b015562004cdf565b6200c2c8565b509592509350506200c245915062004cdf565b9092916020840151602681101562002a23576003036200ca2a5760408401906200c43360c08351015162004cef565b51906200c44a60a06200779b818651015162004cef565b51936200c45f835185511462000fa3620331b7565b6200c472835186511462000fa3620331b7565b60005b83518110156200c4d0576200c48b818662004d46565b51906103e882101562004cfd57611fbb6200c4ca9260018060a01b038b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b6200c475565b509095919560005b87518110156200c61e576200c4ee818662004d46565b516103e881101562004cfd57611fbb9060018060a01b0386511660005260031b016020526200c52860406000205462007d56838962004d46565b906200c535838862004d46565b51916103e883101562004cfd57611fbb6200c56e9360018060a01b0389511660005260031b0160205260406000205562000fa3620332bb565b6200c57a818662004d46565b516103e881101562004cfd57611fbb906001600160a01b036200c59e848c62004d46565b511660005260031b016020526200c5c060406000205462006814838962004d46565b91906200c5ce828862004d46565b51906103e882101562004cfd576200c61893611fbb62000faa938d6200c5fc8760018060a01b039262004d46565b511660005260031b0160205260406000205562000fa362033320565b6200c4d8565b50926200c63d919294506200c6369096959662032f53565b9462032e37565b92604051906200c64d8262002b78565b6001825260203681840137516001600160a01b03166200c66d8262004cef565b526000945b80518610156200c233576200c688868262004d46565b51610220526200c699855162004e62565b966000946200c6a9845162004e62565b6104005260009460005b88518110156200c77b578a896200c6e36001600160a01b036200c6d7858462004d46565b51166102205162032d92565b15806200c733575b6200c704575b50506200c6fe9062004cdf565b6200c6b3565b986200c7289162001ac782859c62007f376200c6fe9760018060a01b039262004d46565b9790508a896200c6f1565b5050506103e861022051101562004cfd576001600160a01b036200c758828b62004d46565b5116600052611fbb6102205160031b016020528a8960406000205415156200c6eb565b50909895979498969291939660005b88518110156200c820576103e861022051101562004cfd576001600160a01b036200c7b6828b62004d46565b5116600052611fbb6102205160031b01602052604060002054156200c7e7575b6200c7e19062004cdf565b6200c78a565b996200c7e1906200c817906001600160a01b036200c8068e8d62004d46565b511662001ac7826104005162004d46565b9a90506200c7d6565b50985096959291909396610220516103e8811015806104a05262004cfd5760031b611fbc0154986200c85762008068898c62006200565b6103c0526000610a40526000610540525b6104a05162004cfd57610540518a8110156200c933576200c89e6200c8bb9160006104a052611fbc6102205160031b0162004f5e565b90546104005160039290921b1c6001600160a01b03169062032dea565b156200c8da575b6200c8d06105405162004cdf565b610540526200c868565b60006104a0526200c8f961054051611fbc6102205160031b0162004f5e565b60018060a01b0391549060031b1c166200c91a610a40516103c05162004d46565b526200c929610a405162004cdf565b610a40526200c8c2565b50979294959093985095909560005b8281106200c9de575050506104a05162004cfd576103c051516001600160401b03811162002a9b576200c98081611fbc6102205160031b016200509a565b60206103c05101611fbc6102205160031b01600052602060002060005b8381106200c9c057505050506200c9b49062004cdf565b9492959091956200c672565b82516001600160a01b0316818301556020909201916001016200c99d565b6200ca24906001600160a01b036200c9f7828562004d46565b51166200ca0b610a40516103c05162004d46565b526200ca1a610a405162004cdf565b610a405262004cdf565b6200c942565b90926020810151602681101562002a23576004036200d0575760400160c0936200ca686200ca5c868451015162004cef565b51958351015162004d13565b51906200ca7f60a06200779b818651015162004cef565b51936200ca94875184511462000fa3620331b7565b6200caa7875185511462000fa3620331b7565b6200caba875186511462000fa3620331b7565b60005b87518110156200cb25576200cad3818662004d46565b51906103e882101562004cfd576200cb1f91611fbb906001600160a01b036200cafd848d62004d46565b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b6200cabd565b509095919593929360005b83518110156200cc88576200cb46818762004d46565b516103e881101562004cfd57611fbb906001600160a01b036200cb6a848862004d46565b511660005260031b016020526200cb8c60406000205462007d56838862004d46565b906200cb99838962004d46565b51916103e883101562004cfd576200cbdf92611fbb906001600160a01b036200cbc3878b62004d46565b511660005260031b0160205260406000205562000fa3620332bb565b6200cbeb818762004d46565b516103e881101562004cfd57611fbb906001600160a01b036200cc0f848c62004d46565b511660005260031b016020526200cc3160406000205462006814838862004d46565b9190506200cc40818862004d46565b51916103e883101562004cfd576200cc8292611fbb906001600160a01b036200cc6a858e62004d46565b511660005260031b0160205260406000205562004cdf565b6200cb30565b5091936200cca491935062007e47620084799197969762032f53565b6000945b80518610156200c233576200ccbe868262004d46565b51610280526200cccf855162004e62565b966000946200ccdf845162004e62565b6107005260009460005b88518110156200cdb1578a896200cd196001600160a01b036200cd0d858462004d46565b51166102805162032d92565b15806200cd69575b6200cd3a575b50506200cd349062004cdf565b6200cce9565b986200cd5e9162001ac782859c62007f376200cd349760018060a01b039262004d46565b9790508a896200cd27565b5050506103e861028051101562004cfd576001600160a01b036200cd8e828b62004d46565b5116600052611fbb6102805160031b016020528a8960406000205415156200cd21565b50909895979498969291939660005b88518110156200ce4f576103e861028051101562004cfd576001600160a01b03806200cded838c62004d46565b5116600052611fbb6102805160031b01602052604060002054156200ce1f575b506200ce199062004cdf565b6200cdc0565b819b6200ce47916200ce366200ce19948d62004d46565b511662001ac7826107005162004d46565b9a906200ce0d565b50985096959291909396610280516103e881101580610a005262004cfd5760031b611fbc0154986200ce8662008068898c62006200565b610260526000610780526000610620525b610a005162004cfd57610620518a8110156200cf60576200cecd6200ceed916000610a0052611fbc6102805160031b0162004f5e565b9054610700516001600160a01b03939260031b9190911c83169062032dea565b156200cf0d575b506200cf036106205162004cdf565b610620526200ce97565b6000610a00526200cf2c61062051611fbc6102805160031b0162004f5e565b90549060031b1c166200cf46610780516102605162004d46565b526200cf556107805162004cdf565b61078052386200cef4565b50979294959093985095909560005b8281106200d00b57505050610a005162004cfd5761026051516001600160401b03811162002a9b576200cfad81611fbc6102805160031b016200509a565b60206102605101611fbc6102805160031b01600052602060002060005b8381106200cfed57505050506200cfe19062004cdf565b9492959091956200cca8565b82516001600160a01b0316818301556020909201916001016200cfca565b6200d051906001600160a01b036200d024828562004d46565b51166200d038610780516102605162004d46565b526200d0476107805162004cdf565b6107805262004cdf565b6200cf6f565b92906020840151602681101562002a23576005036200d5b15760408401906200d08a60a06200851e818551015162004cef565b519282518451036200ad0a5760005b83518110156200d0f4576200d0af818562004d46565b51906103e882101562004cfd57611fbb6200d0ee9260018060a01b038a511660005260031b0160205262000faa60406000205462007ce9838962004d46565b6200d099565b509060005b83518110156200d19b576200d10f818562004d46565b516103e881101562004cfd57611fbb9060018060a01b0389511660005260031b016020526200d14960406000205462007d56838862004d46565b91906200d157828762004d46565b51906103e882101562004cfd576200d19593611fbb62000faa9360018060a01b038d511660005260031b0160205260406000205562000fa3620332bb565b6200d0f9565b50916200d1ac919495935062032f53565b92604051926200d1bc8462002b78565b6001845260203681860137516001600160a01b03166200d1dc8462004cef565b52604051926200d1ec8462002b3f565b6000845260003681376000945b80518610156200c233576200d20f868262004d46565b516107c0526200d220855162004e62565b966000946200d230845162004e62565b6102405260009460005b88518110156200d302578a896200d26a6001600160a01b036200d25e858462004d46565b51166107c05162032d92565b15806200d2ba575b6200d28b575b50506200d2859062004cdf565b6200d23a565b986200d2af9162001ac782859c62007f376200d2859760018060a01b039262004d46565b9790508a896200d278565b5050506103e86107c051101562004cfd576001600160a01b036200d2df828b62004d46565b5116600052611fbb6107c05160031b016020528a8960406000205415156200d272565b50909895979498969291939660005b88518110156200d3a7576103e86107c051101562004cfd576001600160a01b036200d33d828b62004d46565b5116600052611fbb6107c05160031b01602052604060002054156200d36e575b6200d3689062004cdf565b6200d311565b996200d368906200d39e906001600160a01b036200d38d8e8d62004d46565b511662001ac7826102405162004d46565b9a90506200d35d565b509850969592919093966107c0516103e8811015806109e05262004cfd5760031b611fbc0154986200d3de62008068898c62006200565b610560526000610420526000610480525b6109e05162004cfd57610480518a8110156200d4ba576200d4256200d4429160006109e052611fbc6107c05160031b0162004f5e565b90546102405160039290921b1c6001600160a01b03169062032dea565b156200d461575b6200d4576104805162004cdf565b610480526200d3ef565b60006109e0526200d48061048051611fbc6107c05160031b0162004f5e565b60018060a01b0391549060031b1c166200d4a1610420516105605162004d46565b526200d4b06104205162004cdf565b610420526200d449565b50979294959093985095909560005b8281106200d565575050506109e05162004cfd5761056051516001600160401b03811162002a9b576200d50781611fbc6107c05160031b016200509a565b60206105605101611fbc6107c05160031b01600052602060002060005b8381106200d54757505050506200d53b9062004cdf565b9492959091956200d1f9565b82516001600160a01b0316818301556020909201916001016200d524565b6200d5ab906001600160a01b036200d57e828562004d46565b51166200d592610420516105605162004d46565b526200d5a16104205162004cdf565b6104205262004cdf565b6200d4c9565b926020810151602681101562002a23576006036200db9a576040016200d5dc60c08251015162004cef565b51936200d5f360a06200851e818551015162004cef565b519285518351036200db485785518451036200dafb5760005b86518110156200d674576200d622818562004d46565b51906103e882101562004cfd576200d66e91611fbb906001600160a01b036200d64c848c62004d46565b511660005260031b0160205262000faa60406000205462007ce9838962004d46565b6200d60c565b509060005b86518110156200d718576200d68f818562004d46565b516103e881101562004cfd57611fbb906001600160a01b036200d6b3848b62004d46565b511660005260031b016020526200d6d560406000205462007d56838862004d46565b91906200d6e3828762004d46565b51906103e882101562004cfd576200d7129362000faa92611fbb906001600160a01b036200cbc3878f62004d46565b6200d679565b50916200d72f919350620084799095949562032f53565b91604051926200d73f8462002b3f565b6000845260003681376000945b80518610156200c233576200d762868262004d46565b51610aa0526200d773855162004e62565b966000946200d783845162004e62565b6109c05260009460005b88518110156200d855578a896200d7bd6001600160a01b036200d7b1858462004d46565b5116610aa05162032d92565b15806200d80d575b6200d7de575b50506200d7d89062004cdf565b6200d78d565b986200d8029162001ac782859c62007f376200d7d89760018060a01b039262004d46565b9790508a896200d7cb565b5050506103e8610aa051101562004cfd576001600160a01b036200d832828b62004d46565b5116600052611fbb610aa05160031b016020528a8960406000205415156200d7c5565b50909895979498969291939660005b88518110156200d8f3576103e8610aa051101562004cfd576001600160a01b03806200d891838c62004d46565b5116600052611fbb610aa05160031b01602052604060002054156200d8c3575b506200d8bd9062004cdf565b6200d864565b819b6200d8eb916200d8da6200d8bd948d62004d46565b511662001ac7826109c05162004d46565b9a906200d8b1565b50985096959291909396610aa0516103e8811015806102e05262004cfd5760031b611fbc0154986200d92a62008068898c62006200565b6109a05260006102a05260006107e0525b6102e05162004cfd576107e0518a8110156200da04576200d9716200d9919160006102e052611fbc610aa05160031b0162004f5e565b90546109c0516001600160a01b03939260031b9190911c83169062032dea565b156200d9b1575b506200d9a76107e05162004cdf565b6107e0526200d93b565b60006102e0526200d9d06107e051611fbc610aa05160031b0162004f5e565b90549060031b1c166200d9ea6102a0516109a05162004d46565b526200d9f96102a05162004cdf565b6102a052386200d998565b50979294959093985095909560005b8281106200daaf575050506102e05162004cfd576109a051516001600160401b03811162002a9b576200da5181611fbc610aa05160031b016200509a565b60206109a05101611fbc610aa05160031b01600052602060002060005b8381106200da9157505050506200da859062004cdf565b9492959091956200d74c565b82516001600160a01b0316818301556020909201916001016200da6e565b6200daf5906001600160a01b036200dac8828562004d46565b51166200dadc6102a0516109a05162004d46565b526200daeb6102a05162004cdf565b6102a05262004cdf565b6200da13565b60405162461bcd60e51b8152602060048201526030602482015260008051602062033aec83398151915260448201526f1b9d1cc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b60405162461bcd60e51b815260206004820152603560248201526000805160206203372c8339815191526044820152741b90db185cdcd95cc81a5cc81b9bdd08195c5d585b605a1b6064820152608490fd5b602081949293940151602681101562002a23576007036200dd3557604001916200dbc960c08451015162004cef565b51916200dbdb60a08551015162004cef565b51935151916200dbf3845186511462000fa3620331b7565b60005b84518110156200dd23576001600160a01b03806200dc15838862004d46565b5116600052613ef8806020526200dc3960ff604060002054161562000fa362033288565b60026200dc47848862004d46565b516200dcb16200dc58868c62004d46565b5191620088728b604051966200dc6e8862002a7f565b60018852886200dc958b60208b01946000865260408c0197885260608c01998a5262004d46565b51166000526020526200886860406000209751151588620057f2565b519101556200dcc1828762004d46565b51613ef954929116600160401b83101562002a9b576001830180613ef95583101562004cfd57613ef96000526000805160206203398c83398151915290920180546001600160a01b0319169092179091556200dd1d9062004cdf565b6200dbf6565b5094915092506200c245915062004cdf565b6020810151602681101562002a23576008036200de235760c060406200dd5f920151015162004cef565b519160005b83518110156200de14576200de0e906001600160a01b03806200dd88838862004d46565b5116600052613ef890816020526200ddb1600160ff6040600020541615151462000fa3620331e7565b806200ddbe848962004d46565b5116600052816020526200dde260ff60406000205460081c161562000fa36203324f565b6200ddee838862004d46565b5116600052602052604060002061010061ff001982541617905562004cdf565b6200dd64565b50926200c24591925062004cdf565b6020810151602681101562002a23576009036200df025760c060406200de4d920151015162004cef565b519160005b83518110156200de14576200defc906001600160a01b03806200de76838862004d46565b5116600052613ef890816020526200de9f600160ff6040600020541615151462000fa3620331e7565b806200deac848962004d46565b5116600052816020526200ded4600160ff60406000205460081c1615151462000fa36203321a565b6200dee0838862004d46565b5116600052602052604060002061ff0019815416905562004cdf565b6200de52565b6020810151602681101562002a2357600a036200dfea57604001906200df3e60a06200df3360c08551015162004cef565b519351015162004cef565b51926200df53835185511462000fa3620331b7565b60005b83518110156200dfd9576200dfd3906001600160a01b03806200df7a838862004d46565b5116600052613ef8806020526200dfa2600160ff6040600020541615151462000fa3620331e7565b6200dfae838962004d46565b51916200dfbc848962004d46565b511660005260205260026040600020015562004cdf565b6200df56565b50939092506200c245915062004cdf565b602081949392940151602681101562002a2357600b036200e0ca57604001926200e01960c08551015162004cef565b51935151916200e031855184511462000fa3620331b7565b60005b85518110156200e0ba576200e0b49062000faa6001600160a01b03806200e05c848b62004d46565b5116600052613ef8806020526200e084600160ff6040600020541615151462000fa3620331e7565b6200e090848962004d46565b51916200e09e858c62004d46565b511660005260205260016040600020016200571f565b6200e034565b509350916200c245915062004cdf565b9091926020820151602681101562002a2357600c036200e1b557606060408301510151926200e0f9846202d698565b60005b84518110156200dfd95760c06200e11c8260606040880151015162004d46565b510151156200e170576200e1446200e13d8260606040880151015162004d46565b5162005d8c565b613efa54908160001981011162001e0757600562008ca96200e16a936000190162005cda565b6200e0fc565b6200e18f6200e1888260606040880151015162004d46565b5162005d69565b613efb54908160001981011162001e0757600562008ca96200e16a936000190162005c9a565b9291906020810151602681101562002a2357600d036200e2bf576040019260206200e1e560a08651015162004cef565b5194510151916200e1fa85518451146202dd8c565b60005b85518110156200e0ba57806200e2186200e26c928662004d46565b51156200e272576200e23b6200e22f828962004d46565b51613efa54116202de15565b6200e25a60ff600562008db66200e253858c62004d46565b5162005cda565b600562008dd26200e253838a62004d46565b6200e1fd565b6200e28e6200e282828962004d46565b51613efb54116202de15565b6200e2ad60ff600562008db66200e2a6858c62004d46565b5162005c9a565b600562008dd26200e2a6838a62004d46565b6020810151602681101562002a2357600e036200e3b8576040019260206200e2ec60a08651015162004cef565b5194510151916200e30185518451146202dd8c565b60005b85518110156200e0ba57806200e31f6200e36c928662004d46565b51156200e372576200e3426200e336828962004d46565b51613efa54116202dece565b6200e35a60ff600562008ed96200e253858c62004d46565b600562008ca96200e253838a62004d46565b6200e304565b6200e38e6200e382828962004d46565b51613efb54116202dece565b6200e3a660ff600562008ed96200e2a6858c62004d46565b600562008ca96200e2a6838a62004d46565b9091926020820151602681101562002a2357600f036200e49557606060408301510151926200e3e7846202d698565b60005b84518110156200dfd95760c06200e40a8260606040880151015162004d46565b510151156200e457576200e42b6200e13d8260606040880151015162004d46565b613efa54908160001981011162001e0757600562008dd26200e451936000190162005cda565b6200e3ea565b6200e46f6200e1888260606040880151015162004d46565b613efb54908160001981011162001e0757600562008dd26200e451936000190162005c9a565b9291906020810151602681101562002a23576010036200e5da5760400151926200e4c860a0608086015195015162004cef565b51916200e4dd855184511462000fa3620331b7565b60005b85518110156200e0ba57806200e4fb6200e570928862004d46565b516200e5078162002fc4565b6200e513828762004d46565b51906200e5208162002fc4565b6200e5376200e52e620332ea565b82151562004cac565b6200e5428162002fc4565b600181036200e57657506200e5666200e55a620332ea565b61271083111562004cac565b613f675562004cdf565b6200e4e0565b6200e5818162002fc4565b600281036200e5955750613f685562004cdf565b6200e5a08162002fc4565b600381036200e5b45750613f695562004cdf565b806200e5c260049262002fc4565b146200e5cf575062004cdf565b613f6a55386200a043565b6020810151602681101562002a23576011036200e87d57604001906200e60b60a06200df3360c08551015162004cef565b51936200e61c83518651146202d510565b60005b83518110156200e69c576200e696906200e6766001600160a01b03806200e647848962004d46565b5116600052613efd90816020526200e66a60406000205462006814868d62004d46565b939062000fa36203316d565b6200e682848962004d46565b511660005260205260406000205562004cdf565b6200e61f565b509350906200e6ab9062032e37565b90613efe54936200e6c26200806884518762006200565b9060009260005b8781106200e83d575060005b85518110156200e78a576000805b8981106200e73b575b50156200e705575b6200e6ff9062004cdf565b6200e6d5565b936200e6ff906200e732906001600160a01b036200e724888a62004d46565b511662001ac7828862004d46565b9490506200e6f4565b6200e7468162004f26565b90546001600160a01b0360039290921b1c8116906200e766858b62004d46565b5116146200e77f576200e7799062004cdf565b6200e6e3565b50506001386200e6ec565b5095509392506200e79b8262004e62565b8051906001600160401b03821162002a9b576020906200e7bb8362005041565b01613efe600052602060002060005b8381106200e81f575050505060005b8281106200e7ef575050506200c2459062004cdf565b6200e8199062000faa6001600160a01b036200e80c838662004d46565b511662001a088362004f26565b6200e7d9565b82516001600160a01b0316818301556020909201916001016200e7ca565b936200e8706200e877916200e8528762004f26565b905460039190911b1c6001600160a01b031662001ac7828862004d46565b9462004cdf565b6200e6c9565b6020819492940151602681101562002a23576012036200eac157604001906200e8b160a06200df3360c08551015162004cef565b51936200e8c283518651146202d510565b60005b83518110156200e916576200e910906200e6766001600160a01b03806200e8ed848962004d46565b5116600052613efd90816020526200e66a60406000205462007d56868d62004d46565b6200e8c5565b50935091906200e9269062032e37565b613efe546200e9358162004e62565b906000926000915b8083106200e9e8575050506200e9538262004e62565b8051906001600160401b03821162002a9b576020906200e9738362005041565b01613efe600052602060002060005b8381106200e9ca575050505060005b8281106200e9a7575050506200c2459062004cdf565b6200e9c49062000faa6001600160a01b036200e80c838662004d46565b6200e991565b82516001600160a01b0316818301556020909201916001016200e982565b91956000959193959760005b85518110156200eab2576200ea098962004f26565b90546001600160a01b0360039290921b1c8116906200ea29838962004d46565b5116146200ea42576200ea3c9062004cdf565b6200e9f4565b509750956001959391955b806200ea81575b156200ea6c576200ea659062004cdf565b916200e93d565b936200e8706200ea65916200e8528762004f26565b506200ea8d8162004f26565b60018060a01b0391549060031b1c16600052613efd602052604060002054156200ea54565b5097969096959391956200ea4d565b6020819493940151602681101562002a23576013036200eb625760408091015101519160005b83518110156200de14576200eafd818562004d46565b5190613efc54600160401b81101562002a9b576001810180613efc5581101562004cfd57613efc6000526200eb5c9262000faa916007027f6710e0bb821cd3dfcfba05f5136082a6d0bca8d604d6d14bfd93de2dd49659d2016202f19f565b6200eae7565b602081949392940151602681101562002a23576014036200f0a457604001906200eb9160c08351015162004cef565b51936200eba860a06200779b818651015162004cef565b51916200ebb986518551146202df8a565b6200ebc886518451146202dff0565b60005b86518110156200ecc2576200ebe1818562004d46565b516200ebee828762004d46565b51906103e882101562004cfd57611fbe6200ec0f9260031b0154906200608f565b906200ec1c838862004d46565b51916103e883101562004cfd57611fbe6200ec3c9360031b01556202e0aa565b6200ec48818562004d46565b516200ec55828762004d46565b51906103e882101562004cfd576200ec7f91611fbb906001600160a01b036200bddd868d62004d46565b91906200ec8d828862004d46565b51906103e882101562004cfd576200ecbc9362000faa92611fbb906001600160a01b036200be33878f62004d46565b6200ebcb565b50926200ecd9919250620084799095949562032f53565b916040516200ece88162002b3f565b6000815260003681376000945b80518610156200c233576200ed0b868262004d46565b516106e0526200ed1c855162004e62565b966000946200ed2c845162004e62565b6103005260009460005b88518110156200edfe578a896200ed666001600160a01b036200ed5a858462004d46565b51166106e05162032d92565b15806200edb6575b6200ed87575b50506200ed819062004cdf565b6200ed36565b986200edab9162001ac782859c62007f376200ed819760018060a01b039262004d46565b9790508a896200ed74565b5050506103e86106e051101562004cfd576001600160a01b036200eddb828b62004d46565b5116600052611fbb6106e05160031b016020528a8960406000205415156200ed6e565b50909895979498969291939660005b88518110156200ee9c576103e86106e051101562004cfd576001600160a01b03806200ee3a838c62004d46565b5116600052611fbb6106e05160031b01602052604060002054156200ee6c575b506200ee669062004cdf565b6200ee0d565b819b6200ee94916200ee836200ee66948d62004d46565b511662001ac7826103005162004d46565b9a906200ee5a565b509850969592919093966106e0516103e8811015806103405262004cfd5760031b611fbc0154986200eed362008068898c62006200565b610440526000610900526000610980525b6103405162004cfd57610980518a8110156200efad576200ef1a6200ef3a91600061034052611fbc6106e05160031b0162004f5e565b9054610300516001600160a01b03939260031b9190911c83169062032dea565b156200ef5a575b506200ef506109805162004cdf565b610980526200eee4565b6000610340526200ef7961098051611fbc6106e05160031b0162004f5e565b90549060031b1c166200ef93610900516104405162004d46565b526200efa26109005162004cdf565b61090052386200ef41565b50979294959093985095909560005b8281106200f058575050506103405162004cfd5761044051516001600160401b03811162002a9b576200effa81611fbc6106e05160031b016200509a565b60206104405101611fbc6106e05160031b01600052602060002060005b8381106200f03a57505050506200f02e9062004cdf565b9492959091956200ecf5565b82516001600160a01b0316818301556020909201916001016200f017565b6200f09e906001600160a01b036200f071828562004d46565b51166200f085610900516104405162004d46565b526200f0946109005162004cdf565b6109005262004cdf565b6200efbc565b926020840151602681101562002a23576015036200f6a55760408401906200f0d160c08351015162004cef565b51906200f0e860a06200779b818651015162004cef565b51936200f0fd835185511462000fa3620331b7565b6200f110835186511462000fa3620331b7565b60005b83518110156200f16e576200f129818662004d46565b51906103e882101562004cfd57611fbb6200f1689260018060a01b038b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b6200f113565b509095919560005b87518110156200f2a0576200f18c818662004d46565b516103e881101562004cfd57611fbb9060018060a01b0386511660005260031b016020526200f1c660406000205462007d56838962004d46565b906200f1d3838862004d46565b51916103e883101562004cfd57611fbb6200f20c9360018060a01b0389511660005260031b0160205260406000205562000fa3620332bb565b6200f218818662004d46565b516103e881101562004cfd57611fbb906001600160a01b036200f23c848c62004d46565b511660005260031b016020526200f25e60406000205462006814838962004d46565b91906200f26c828862004d46565b51906103e882101562004cfd576200f29a93611fbb62000faa938d6200c5fc8760018060a01b039262004d46565b6200f176565b50926200f2b8919294506200c6369096959662032f53565b92604051906200f2c88262002b78565b6001825260203681840137516001600160a01b03166200f2e88262004cef565b526000945b80518610156200c233576200f303868262004d46565b51610a60526200f314855162004e62565b966000946200f324845162004e62565b6108405260009460005b88518110156200f3f6578a896200f35e6001600160a01b036200f352858462004d46565b5116610a605162032d92565b15806200f3ae575b6200f37f575b50506200f3799062004cdf565b6200f32e565b986200f3a39162001ac782859c62007f376200f3799760018060a01b039262004d46565b9790508a896200f36c565b5050506103e8610a6051101562004cfd576001600160a01b036200f3d3828b62004d46565b5116600052611fbb610a605160031b016020528a8960406000205415156200f366565b50909895979498969291939660005b88518110156200f49b576103e8610a6051101562004cfd576001600160a01b036200f431828b62004d46565b5116600052611fbb610a605160031b01602052604060002054156200f462575b6200f45c9062004cdf565b6200f405565b996200f45c906200f492906001600160a01b036200f4818e8d62004d46565b511662001ac7826108405162004d46565b9a90506200f451565b50985096959291909396610a60516103e8811015806106805262004cfd5760031b611fbc0154986200f4d262008068898c62006200565b6108605260006106c0526000610880525b6106805162004cfd57610880518a8110156200f5ae576200f5196200f53691600061068052611fbc610a605160031b0162004f5e565b90546108405160039290921b1c6001600160a01b03169062032dea565b156200f555575b6200f54b6108805162004cdf565b610880526200f4e3565b6000610680526200f57461088051611fbc610a605160031b0162004f5e565b60018060a01b0391549060031b1c166200f5956106c0516108605162004d46565b526200f5a46106c05162004cdf565b6106c0526200f53d565b50979294959093985095909560005b8281106200f659575050506106805162004cfd5761086051516001600160401b03811162002a9b576200f5fb81611fbc610a605160031b016200509a565b60206108605101611fbc610a605160031b01600052602060002060005b8381106200f63b57505050506200f62f9062004cdf565b9492959091956200f2ed565b82516001600160a01b0316818301556020909201916001016200f618565b6200f69f906001600160a01b036200f672828562004d46565b51166200f6866106c0516108605162004d46565b526200f6956106c05162004cdf565b6106c05262004cdf565b6200f5bd565b9091926020810151602681101562002a23576016036200f7575760c060406200f6d2920151015162004cef565b519160005b83518110156200de14576001600160a01b036200f6f5828662004d46565b51613f6b54929116600160401b83101562002a9b576001830180613f6b5583101562004cfd57613f6b6000526000805160206203376c83398151915290920180546001600160a01b0319169092179091556200f7519062004cdf565b6200f6d7565b6020810151602681101562002a23576017036200f7b45760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a23576018036200f8725760c060406200f7de920151015162004cef565b5191600160ff19613f6e541617613f6e5560005b83518110156200de14576001600160a01b036200f810828662004d46565b51613f6d54929116600160401b83101562002a9b576001830180613f6d5583101562004cfd57613f6d6000526000805160206203396c83398151915290920180546001600160a01b0319169092179091556200f86c9062004cdf565b6200f7f2565b602081949293940151602681101562002a23576019036200f89a575b506200c2459062004cdf565b6020810151602681101562002a2357601a036200fa115760a060406200f8c4920151015162004cef565b51906200f8d560038351146202d510565b6200f8e08262004cef565b516200f8f062009fdc8462004d13565b51926200f9d5576200c245926001036200f9ce576200f9176200f97591613f69546200608f565b613f6955604051906200f92a8262002b06565b603282527f6469766964656e6461626c652062616c616e6365206f766572666c6f772077686020830152710cadc40e0e4dec6cae6e6d2dcce40c6c2e6d60731b604083015262004cac565b6200f9c76200f987613f6a546200607c565b613f6a55604051906200f99a8262002b78565b601a8252796469766964656e647320636f756e746572206f766572666c6f7760301b602083015262004cac565b906200f88e565b506200f9c7565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fd5b6020810151602681101562002a2357601b036200ffa157509190613f67546200fa3d6200a0b962033044565b613f6a54613f685411156200fa5c6200fa55620330b2565b8262004cac565b613f6954906200fa6d838362005eb0565b50506200fa7962033108565b506000805b6103e882106200ff52575b5050906200fab96200fabf93926200faaf6200faa462033044565b612710861062004cac565b62000fa3620330b2565b62005eb0565b90506200facb62033108565b5060009060005b6103e881106200fe7f575b50906127106200faee9204620061de565b90506200fafe613f745462004e62565b906000946000905b6103e88210156200fe72578160031b9460ff611fbf87015416156200fc5c57600096611fba870154156200fc4b57600098975b62004cfd57611fbc8701548910156200fc31576200fb5c89611fbc890162004f5e565b600160a01b6001900391549060031b1c169788600052611fbb8801602052604098868a60002054906200fb8f9162005eb0565b9a906200fb9b62033108565b6200fba69162004cac565b60009a611fba8b01546200fbba9162005eb0565b91906200fbc662033108565b6200fbd19162004cac565b82600052613eff602052600020908154906200fbed916200608f565b9091556200fbfa62033108565b6200fc059162004cac565b6200fc11828962004d46565b526200fc1d9062004cdf565b986200fc299062004cdf565b98976200fb39565b929095506200fc439196975062004cdf565b90946200fb06565b929095506200fc4391965062004cdf565b95969392509350505b6200fc708262004e62565b9160009160005b8281106200fddc57505050613f0054916200fc9762008068848462006200565b926000906000905b8082106200fdbf57505060005b8381106200fd295750508251929150506001600160401b03821162002a9b576020906200fcd98362005064565b01613f00600052602060002060005b8381106200fd0b57505050506200c245906000613f69556000613f6a556200f9c7565b82516001600160a01b0316818301556020909201916001016200fce8565b6000805b8381106200fd77575b50156200fd4f575b6200fd499062004cdf565b6200fcac565b906200fd49906200fd6e906001600160a01b03620081f0858762004d46565b9190506200fd3e565b6001600160a01b03806200fd8c858862004d46565b5116906200fd9b838a62004d46565b5116146200fdb4576200fdae9062004cdf565b6200fd2d565b50506001386200fd36565b9091620081fe6200fdd591620094f58562004f42565b906200fc9f565b6000805b8581106200fe2a575b50156200fe02575b6200fdfc9062004cdf565b6200fc77565b926200fdfc906200fe21906001600160a01b03620081f0878662004d46565b9390506200fdf1565b6001600160a01b03806200fe3f858762004d46565b5116906200fe4e838a62004d46565b5116146200fe67576200fe619062004cdf565b6200fde0565b50506001386200fde9565b939495929150506200fc65565b90918160039695961b60ff611fbf82015416156200ff4657611fba810154611fbc8201546000928391825b8184106200fee65750505050620074616200fedd936200fed562000faa979694620022e49462005eb0565b929062005daf565b9493946200fad2565b94929462004cfd576200ff3f856200ff376200ff0b62000faa98611fbc870162004f5e565b905460039190911b1c6001600160a01b03166000908152611fbb8601602052604081205490966200608f565b979062005ed2565b926200feaa565b5091909493946200fadd565b8160039897981b60ff611fbf82015416156200ff9757916200a4f8620074616200ff8d936200a4ec62000faa96611fba6200a4e28762005e52565b909695966200fa7e565b509695966200fa89565b6020810151602681101562002a2357601c036200fffe5760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601d0362010022575b506200c245906200f9c7565b9290916020840151602681101562002a2357601e036201075857604084019060a09062010053828451015162004cef565b515162010064838551015162004d13565b5151036200ade9576201007b828451015162004cef565b51516201008c838551015162004d24565b5151036200ad6d57620100a3828451015162004cef565b5194620100b4838551015162004d13565b5191620100c96200a641858751015162004d24565b519585518751036200ad0a5760005b86518110156201013357620100ee818862004d46565b51906103e882101562004cfd57611fbb6201012d9260018060a01b038d511660005260031b0160205262000faa60406000205462007ce9838c62004d46565b620100d8565b5090969192939660005b8651811015620101e05762010153818862004d46565b516103e881101562004cfd57611fbb9060018060a01b038c511660005260031b016020526201018d60406000205462007d56838b62004d46565b91906201019b828a62004d46565b51906103e882101562004cfd57620101da93611fbb62000faa938f60018060a01b0390511660005260031b0160205260406000205562000fa3620332bb565b6201013d565b5093969297955093620101f39062032f53565b9660405196620102038862002b78565b60018852602036818a013786516001600160a01b0316620102248962004cef565b5260405196620102348862002b3f565b600088526000610600525b89516106005190811015620105fa576201025a908b62004d46565b51610960526201026b885162004e62565b996000976201027b8b5162004e62565b6103605260009760005b8b518110156201034d578d8c620102b56001600160a01b03620102a9858462004d46565b51166109605162032d92565b158062010305575b620102d6575b5050620102d09062004cdf565b62010285565b9b620102fa9162001ac782859f62007f37620102d09760018060a01b039262004d46565b9a90508d8c620102c3565b5050506103e861096051101562004cfd576001600160a01b036201032a828e62004d46565b5116600052611fbb6109605160031b016020528d8c6040600020541515620102bd565b50909b989a99949691929395979b60005b8b51811015620103f4576103e861096051101562004cfd576001600160a01b036201038a828e62004d46565b5116600052611fbb6109605160031b0160205260406000205415620103bb575b620103b59062004cdf565b6201035e565b9c620103eb620103b5918f620103da8f9160018060a01b039262004d46565b511662001ac7826103605162004d46565b9d9050620103aa565b509b5098959092949691939661096051996103e88b10159c8d62004cfd576201042c62008068611fbc8f9e60031b01549e8f62006200565b6108005260006107a0528d60009e5b62004cfd578d8f1015620104fc575060009d620104846201046782611fbc6109605160031b0162004f5e565b90546103605160039290921b1c6001600160a01b03169062032dea565b156201049e575b620104978f9162004cdf565b9e6201043b565b620104979e5060009e8f91620104bf81611fbc6109605160031b0162004f5e565b60018060a01b0391549060031b1c16620104e06107a0516108005162004d46565b52620104ef6107a05162004cdf565b6107a0529150506201048b565b9396999b929d509396999094979b5060005b828110620105ae5750505062004cfd5761080051516001600160401b03811162002a9b576201054881611fbc6109605160031b016200509a565b6020610800510190611fbc6109605160031b0160005260206000209160005b828110620105905750505050620105816106005162004cdf565b6106005295989094986201023f565b81516001600160a01b03168185015560209091019060010162010567565b620105f4906001600160a01b03620105c7828562004d46565b5116620105db6107a0516108005162004d46565b52620105ea6107a05162004cdf565b6107a05262004cdf565b6201050e565b509492975094955091965060009460005b87518110156201065e57620106296200abc66200abb9838962004d46565b8062010642575b506201063c9062004cdf565b6201060b565b906200abfc62010657986201063c936200608f565b9062010630565b5096509450915091806201067c575b506200c24591505b9062010016565b620106a79060018060a01b038451166000526200ac5a613efd9182602052604060002054906200608f565b60018060a01b03845116600052602052604060002055600091600092613efe54935b84811062010713575b506201066d57516001600160a01b031691600160401b81101562002a9b576200c2459262001a088260016201070c9401613efe5562004f26565b386201066d565b6201071e8162004f26565b9054845160039290921b1c6001600160a01b039081169116146201074d57620107479062004cdf565b620106c9565b5050600138620106d2565b9190926020810151602681101562002a2357601f03620107d3576040620107829101515162004cef565b5190613f6c54600160401b81101562002a9b576001810180613f6c5581101562004cfd57613f6c6000526200c24592620107cd91600080516020620337ac833981519152016200571f565b62010675565b6020810151602681101562002a2357602003620107f7575b506200c2459062010675565b6020810151602681101562002a2357602114620107eb576020810151602681101562002a23576022036201087d57506200c2459060ff19613f6e5416613f6e55613f6d546000613f6d558062010851575b505b90620107eb565b613f6d60005262010876906000805160206203396c8339815191529081019062004fa3565b3862010848565b6020810151602681101562002a2357602303620108a1575b506200c245906201084a565b6020810151602681101562002a235760241462010895576020810151602681101562002a235760251462010895579290916020840151602681101562002a235760150362010ee5576040840190620108fe60c08351015162004cef565b51906201091560a06200779b818651015162004cef565b51936201092a835185511462000fa3620331b7565b6201093d835186511462000fa3620331b7565b60005b83518110156201099b5762010956818662004d46565b51906103e882101562004cfd57611fbb620109959260018060a01b038b511660005260031b0160205262000faa60406000205462007ce9838a62004d46565b62010940565b509095919560005b875181101562010acd57620109b9818662004d46565b516103e881101562004cfd57611fbb9060018060a01b0386511660005260031b01602052620109f360406000205462007d56838962004d46565b9062010a00838862004d46565b51916103e883101562004cfd57611fbb62010a399360018060a01b0389511660005260031b0160205260406000205562000fa3620332bb565b62010a45818662004d46565b516103e881101562004cfd57611fbb906001600160a01b0362010a69848c62004d46565b511660005260031b0160205262010a8b60406000205462006814838962004d46565b919062010a99828862004d46565b51906103e882101562004cfd5762010ac793611fbb62000faa938d6200c5fc8760018060a01b039262004d46565b620109a3565b509262010ae5919294506200c6369096959662032f53565b926040519062010af58262002b78565b6001825260203681840137516001600160a01b031662010b158262004cef565b526000945b805186101562010ed25762010b30868262004d46565b516106a05262010b41855162004e62565b9660009462010b51845162004e62565b6103805260009460005b885181101562010c23578a8962010b8b6001600160a01b0362010b7f858462004d46565b51166106a05162032d92565b158062010bdb575b62010bac575b505062010ba69062004cdf565b62010b5b565b9862010bd09162001ac782859c62007f3762010ba69760018060a01b039262004d46565b9790508a8962010b99565b5050506103e86106a051101562004cfd576001600160a01b0362010c00828b62004d46565b5116600052611fbb6106a05160031b016020528a89604060002054151562010b93565b50909895979498969291939660005b885181101562010cc8576103e86106a051101562004cfd576001600160a01b0362010c5e828b62004d46565b5116600052611fbb6106a05160031b016020526040600020541562010c8f575b62010c899062004cdf565b62010c32565b9962010c899062010cbf906001600160a01b0362010cae8e8d62004d46565b511662001ac7826103805162004d46565b9a905062010c7e565b509850969592919093966106a0516103e8811015806106605262004cfd5760031b611fbc01549862010cff62008068898c62006200565b6105e0526000610820526000610500525b6106605162004cfd57610500518a81101562010ddb5762010d4662010d6391600061066052611fbc6106a05160031b0162004f5e565b90546103805160039290921b1c6001600160a01b03169062032dea565b1562010d82575b62010d786105005162004cdf565b6105005262010d10565b60006106605262010da161050051611fbc6106a05160031b0162004f5e565b60018060a01b0391549060031b1c1662010dc2610820516105e05162004d46565b5262010dd16108205162004cdf565b6108205262010d6a565b50979294959093985095909560005b82811062010e86575050506106605162004cfd576105e051516001600160401b03811162002a9b5762010e2881611fbc6106a05160031b016200509a565b60206105e05101611fbc6106a05160031b01600052602060002060005b83811062010e68575050505062010e5c9062004cdf565b94929590919562010b1a565b82516001600160a01b03168183015560209092019160010162010e45565b62010ecc906001600160a01b0362010e9f828562004d46565b511662010eb3610820516105e05162004d46565b5262010ec26108205162004cdf565b6108205262004cdf565b62010dea565b5050939092506200c24591509062010895565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7065726174696f6e207479706560501b6044820152606490fd5b5091905062010f32826201561e565b9290600681101562002a23576002810362010f625760405162461bcd60e51b81528062004cdb600482016200758f565b6003810362011ef65750613f738054600260ff821662010f828162002a18565b1462011eb15760ff19166002179055613f78549060018201821162001e075760018201613f7855611f44549092600019929060005b8651811015620110335762010fda8462010fd2838a62004d46565b511062032899565b84600262010ff462010fed848b62004d46565b516202f17f565b500154106201100f575b620110099062004cdf565b62010fb7565b93506201100960026201102762010fed878a62004d46565b50015494905062010ffe565b5090936000199360005b8751811015620110aa57620110588562010fd2838b62004d46565b8560036201106b62010fed848c62004d46565b5001541062011086575b620110809062004cdf565b6201103d565b94506201108060036201109e62010fed888b62004d46565b50015495905062011075565b5091946001919350620110be875162004e62565b620110ca885162004e62565b620110d6895162004e62565b90620110e38a5162004e62565b9260405197620110f38962002ae9565b88526020880152604087015260608601526080850152600060a0850152600060c0850152600260e0850152600061010085015201600052613f766020526040600020825160018060a01b0381511660018060a01b03198354161782556020810151805190600160401b821162002a9b57600184015482600186015580831062011cf2575b5060200190600184016000526020600020916000905b8282106201168d57505050506040620111ac910151600283016200571f565b60208301518051906001600160401b03821162002a9b5760206003840191620111d684846200509a565b0190600052602060002060005b83811062011678575050505060408301518051906001600160401b03821162002a9b57602060048401916201121984846200509a565b0190600052602060002060005b83811062011663575050505060608301518051906001600160401b03821162002a9b57602060058401916201125c84846200509a565b0190600052602060002060005b8381106201164e575050505060808301518051906001600160401b03821162002a9b57602060068401916201129f84846200509a565b0190600052602060002060005b83811062011639575050505060a0830151600782015560c0830151600882015560e08301519290600901600384101562002a235761010062011304926201130b9560ff80198554169116178355015115159062005803565b426200608f565b9015620115f957613f7854600052613f7660205280600760406000200155613f715562011349613f785491826000526007604060002001546200608f565b919015620115b657600052613f7660205280600860406000200155613f7255613f78546000526009604060002001600260ff1982541617905560005b8251811015620113cb578062000faa620113a4620113c5938662004d46565b51613f7854600052613f7660205262006bbf83600360406000200162004f5e565b62011385565b506000915b8051831015620115b157613f78549283600052613f766020526201140d6201140082600360406000200162004f5e565b90549060031b1c6202f17f565b5054916201141b8362004e62565b9260005b818110620115665750506000906000915b8451831015620115355762011446838662004d46565b516103e8908181101562004cfd5760031b6001015462011467858862004d46565b519182101562004cfd576006620114849260031b01549062005eb0565b9015620114f15762011496916200608f565b929015620114b057620114a99062004cdf565b9162011430565b60405162461bcd60e51b8152602060048201526019602482015278746f74616c566f74696e67506f776572206f766572666c6f7760381b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f63757272656e74436c617373566f74696e67506f776572206f766572666c6f776044820152fd5b90956201155f945062000faa9250600052613f7660205262006bbf83600660406000200162004f5e565b91620113d0565b620115ab9087600052613f766020526201159881620115916201140088600360406000200162004f5e565b5062004f5e565b90549060031b1c62001ac7828862004d46565b6201141f565b509050565b60405162461bcd60e51b815260206004820152601b60248201527a657865637574696e6720656e642074696d65206f766572666c6f7760281b6044820152606490fd5b60405162461bcd60e51b8152602060048201526018602482015277766f74696e6720656e642074696d65206f766572666c6f7760401b6044820152606490fd5b600190602084519401938184015501620112ac565b60019060208451940193818401550162011269565b60019060208451940193818401550162011226565b600190602084519401938184015501620111e3565b805180518554602083015190916001600160a01b031690602681101562002a23576001600160a81b03199092161760a09190911b60ff60a01b161785556040015180518051906001870190602090620116e7848462005427565b01906000526020600020906000905b83821062011cd25750505050602081015180516001600160401b03811162002a9b57602060028801926201172b83856203239f565b019160005260206000209060005b8160051c811062011c965750601f198116810362011c51575b5050506040810151805190600160401b821162002a9b57600387015482600389015580831062011bc9575b50602001600387016000526020600020906000905b83821062011ba857505050506060810151805190600160401b821162002a9b57600487015482600489015580831062011b27575b50602001600487016000526020600020906000905b83821062011b065750505050608081015180516001600160401b03811162002a9b57602060058801926201181083856203239f565b019160005260206000209060005b8160051c811062011ac75750601f1981169283820362011a78575b505050506006850160a08201516020815191620118578385620054b5565b019160005260206000206000925b82841062011a1457505050506007850160c082015160208151916201188b8385620054b5565b019160005260206000206000925b828410620119a7575050505060e001518051906001600160401b03821162002a9b57620118d982620118cf600889015462002c79565b60088901620056d5565b602090601f83116001146201192c57928260099360209360019660009262011920575b5050600019600383901b1c191690851b1760088801555b019401910190926201118d565b015190503880620118fc565b906008870160005260206000209160005b601f19851681106201198e575083602093600196938793600997601f1981161062011974575b505050811b01600888015562011913565b015160001960f88460031b161c1916905538808062011963565b919260206001819286850151815501940192016201193d565b80518051906001600160401b03821162002a9b57602090620119ca83866200509a565b0183600052602060002060005b838110620119f657505050506001602081920192019301929062011899565b82516001600160a01b031681830155602090920191600101620119d7565b80518051906001600160401b03821162002a9b5760209062011a3783866200509a565b0183600052602060002060005b83811062011a6357505050506001602081920192019301929062011865565b60019060208451940193818401550162011a44565b6000936000905b808403821062011a9b5750505060051c01553880808062011839565b909194602062011abc6001928589519162011ab68362002fc4565b62032409565b960192019062011a7f565b6000805b6020811062011ae25750838201556001016201181e565b9490602062011afc6001928885519162011ab68362002fc4565b9201950162011acb565b600660208262011b1a60019451876200581b565b01930191019091620117db565b600681810204810362001e0757600683810204830362001e07576004880160005260206000208360060281015b826006028201811062011b69575050620117c6565b806000600692556000600182015562011b856002820162005504565b6000600382015562011b9a6004820162005399565b600060058201550162011b54565b600760208262011bbc60019451876202f19f565b0193019101909162011792565b600781810204810362001e0757600783810204830362001e07576003880160005260206000208360070281015b826007028201811062011c0b5750506201177d565b8062011c196007926200501a565b6000600182015560006002820155600060038201556000600482015562011c436005820162005399565b600060068201550162011bf6565b60009260005b601f1983168303811062011c7557505060051c015538808062011752565b9093602062011c8c60019284885115159162032409565b9501910162011c57565b6000805b6020811062011cb157508382015560010162011739565b9490602062011cc860019288855115159162032409565b9201950162011c9a565b600160208262011ce5839451876200571f565b01930191019091620116f6565b600981810204810362001e0757600983810204830362001e07576001850160005260206000208360090281015b826009028201811062011d3457505062011177565b6000815562011d4660018201620053e8565b62011d5b600282018054906000815562032377565b6003810154600060038301558062011e3b575b506004810154600060048301558062011dcc575b508062011d9b6005600993018054906000815562032377565b62011da96006820162005476565b62011db76007820162005476565b62011dc56008820162005399565b0162011d1f565b600681810204810362001e0757600482016000526020600020906006028101905b81811062011dfc575062011d82565b806000600692556000600182015562011e186002820162005504565b6000600382015562011e2d6004820162005399565b600060058201550162011ded565b600781810204810362001e0757600382016000526020600020906007028101905b81811062011e6b575062011d6e565b8062011e796007926200501a565b6000600182015560006002820155600060038201556000600482015562011ea36005820162005399565b600060068201550162011e5c565b60405162461bcd60e51b815260206004820152601d60248201527f766f74696e6720697320616c726561647920696e2070726f67726573730000006044820152606490fd5b6005919293501462011f055750565b90600080611f4a54905b818110620147bc575b505015620147a0575b60005b602083015190815181101562011f7c5762000faa620076c162011f56620076a16020620067a78662011f769862004d46565b86516001600160a01b03166000908152611f4960205260409020620242c3565b62011f24565b505060005b6020830151805182101562011fc957620076a16020620067a78462011fa69462004d46565b90606482101562004cfd5762011fc3914290611f4b015562004cdf565b62011f81565b50506000905b602083015180518310156200b072578262011fea9162004d46565b516020810151602681101562002a2357156200b02f576020810151602681101562002a23576001036201223257604001906201202b60c08351015162004cef565b51936201204260a06200779b818651015162004cef565b51916201205386518551146202df8a565b6201206286518451146202dff0565b60005b8651811015620121b9576201207b818662004d46565b516103e881101562004cfd57600160ff6007620120a19360031b0154161515146202e052565b620120ad818562004d46565b51620120ba828762004d46565b51906103e882101562004cfd576006620120da9260031b0154906200608f565b90620120e7838862004d46565b51916103e883101562004cfd576006620121069360031b01556202e0aa565b62012112818562004d46565b516201211f828762004d46565b51906103e882101562004cfd5762012160916003906001600160a01b0362012148868d62004d46565b5116600052811b01602052604060002054906200608f565b91906201216e828862004d46565b51906103e882101562004cfd57620121b39362000faa926003906001600160a01b036201219c878f62004d46565b5116600052811b016020526040600020556202e109565b62012065565b5094915091620121cd620121d49162032f53565b9162032e37565b9360405192620121e48462002b3f565b60008452600036813760005b835181101562012215578062000faa620079626201220f938762004d46565b620121f0565b509450926020925062012229915062004cdf565b91905062011fcf565b9091926020820151602681101562002a2357600203620123c9576040809201908151938451916201226c6200c28860a08098015162004cef565b5194835187510362007bd257835185510362007b7e57835186510362007b27575060005b8651811015620123b357620122a6818862004d46565b516103e881101562004cfd5760ff6007620122c89260031b015416156202e162565b620122d4818862004d46565b516103e881101562004cfd5760031b600701805460ff19166001179055620122fd818562004d46565b516201230a828962004d46565b51906103e882101562004cfd576005620123289260031b016200571f565b62012334818662004d46565b5162012341828962004d46565b516103e881101562004cfd5760031b6001015562012360818762004d46565b516201236d828962004d46565b516103e881101562004cfd5760031b600201556201238c818862004d46565b51906103e882101562004cfd5760006006620123ad9360031b015562004cdf565b62012290565b5095915093506020925062012229915062004cdf565b9291906020810151602681101562002a2357600303620123f6576020919262000faa62012229926202e1ae565b6020810151602681101562002a23576004036201269e576201242060c06040830151015162004cef565b51936201243560c06040840151015162004d13565b51906201245c60a06040620124508282880151015162004cef565b51950151015162004d13565b519362012471875184511462000fa3620331b7565b62012484875185511462000fa3620331b7565b62012497875186511462000fa3620331b7565b60005b87518110156201250057620124b0818662004d46565b51906103e882101562004cfd57620124fa916003906001600160a01b03620124d9848d62004d46565b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b6201249a565b509095919593929360005b83518110156201265b5762012521818762004d46565b516103e881101562004cfd576003906001600160a01b0362012544848862004d46565b5116600052811b016020526201256560406000205462007d56838862004d46565b9062012572838962004d46565b51916103e883101562004cfd57620125b6926003906001600160a01b036201259b878b62004d46565b5116600052811b0160205260406000205562000fa3620332bb565b620125c2818762004d46565b516103e881101562004cfd576003906001600160a01b03620125e5848c62004d46565b5116600052811b016020526201260660406000205462006814838862004d46565b91905062012615818862004d46565b51916103e883101562004cfd5762012655926003906001600160a01b036201263e858e62004d46565b5116600052811b0160205260406000205562004cdf565b6201250b565b50936201267591929693506200847962007e479162032f53565b9260005b835181101562012215578062000faa6200796262012698938762004d46565b62012679565b6020810151602681101562002a2357600503620126c8576020919262000faa62012229926202ec1a565b6020810151602681101562002a23576006036201288f57620126f260c06040830151015162004cef565b51936201271960a060406201270d8282870151015162004cef565b51940151015162004d13565b519285518351036200db485785518451036200dafb5760005b8651811015620127985762012748818562004d46565b51906103e882101562004cfd5762012792916003906001600160a01b0362012771848c62004d46565b5116600052811b0160205262000faa60406000205462007ce9838962004d46565b62012732565b509060005b86518110156201283957620127b3818562004d46565b516103e881101562004cfd576003906001600160a01b03620127d6848b62004d46565b5116600052811b01602052620127f760406000205462007d56838862004d46565b919062012805828762004d46565b51906103e882101562004cfd57620128339362000faa926003906001600160a01b036201259b878f62004d46565b6201279d565b5094916201284e919350620121cd9062032f53565b91604051946201285e8662002b3f565b60008652600036813760005b835181101562012215578062000faa6200796262012889938762004d46565b6201286a565b6020810151602681101562002a2357600703620129a15760400192620128ba60c08551015162004cef565b5191620128cc60a08651015162004cef565b5194515191620128e4845187511462000fa3620331b7565b60005b845181101562012215576201299b9062000faa6001600160a01b03806201290f848a62004d46565b51166000528660028b6201298b6201294e876201294681611f4097886020526200880e60ff604060002054161562000fa362033288565b519362004d46565b5191620088728d60405196620129648862002a7f565b60018852886200dc958c60208b01946000865260408c0197885260608c01998a5262004d46565b519101556200888d838962004d46565b620128e7565b6020819493940151602681101562002a235760080362012a385760c06040620129ce920151015162004cef565b519160005b835181101562012a265762012a20906001600160a01b0380620129f7838862004d46565b5116600052611f4090816020526200ddb1600160ff6040600020541615151462000fa3620331e7565b620129d3565b50926020919250620122299062004cdf565b6020810151602681101562002a235760090362012aba5760c0604062012a62920151015162004cef565b519160005b835181101562012a265762012ab4906001600160a01b038062012a8b838862004d46565b5116600052611f4090816020526200de9f600160ff6040600020541615151462000fa3620331e7565b62012a67565b6020810151602681101562002a2357600a0362012b68576040019062012aeb60a06200df3360c08551015162004cef565b519262012b00835185511462000fa3620331b7565b60005b835181101562012b555762012b4f906001600160a01b038062012b27838862004d46565b5116600052611f40806020526200dfa2600160ff6040600020541615151462000fa3620331e7565b62012b03565b5093620122299193506020925062004cdf565b602081949392940151602681101562002a2357600b0362012c1b576040019262012b9760c08551015162004cef565b519351519162012baf855184511462000fa3620331b7565b60005b855181101562012c085762012c029062000faa6001600160a01b038062012bda848b62004d46565b5116600052611f40806020526200e084600160ff6040600020541615151462000fa3620331e7565b62012bb2565b5093509160209150620122299062004cdf565b9091926020820151602681101562002a2357600c0362012cf8576060604083015101519262012c4a846202d698565b60005b845181101562012b555760c062012c6d8260606040880151015162004d46565b5101511562012cba5762012c8e62008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca962012cb4936000190162005cba565b62012c4d565b62012cd262008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca962012cb4936000190162005c7a565b9291906020810151602681101562002a2357600d0362012ddc5760400192602062012d2860a08651015162004cef565b51945101519162012d3d85518451146202dd8c565b60005b855181101562012c08578062012d5b62012d9c928662004d46565b511562012da25762012d7262008d8c828962004d46565b62012d8a60ff600562008db662008daf858c62004d46565b600562008dd262008daf838a62004d46565b62012d40565b62012db262008dfb828962004d46565b62012dca60ff600562008db662008e1e858c62004d46565b600562008dd262008e1e838a62004d46565b6020819492940151602681101562002a2357600e0362012e8b5760400190602062012e0c60a08451015162004cef565b51925101519362012e2183518651146202dd8c565b60005b835181101562012c08578062012e3f62012e4b928862004d46565b5162012e515762004cdf565b62012e24565b62012e6162008eb6828762004d46565b62012e7960ff600562008ed962008daf858a62004d46565b600562008ca962008daf838862004d46565b906020829493940151602681101562002a2357600f0362012f69576060604083015101519262012ebb846202d698565b60005b845181101562012b555760c062012ede8260606040880151015162004d46565b5101511562012f2b5762012eff62008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262012f25936000190162005cba565b62012ebe565b62012f4362008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262012f25936000190162005c7a565b906020819493940151602681101562002a235760100362012fda57604001519062012f9d60a0608084015193015162004cef565b519362012fb2835186511462000fa3620331b7565b60005b835181101562012c08578062000faa6200902b62012fd4938762004d46565b62012fb5565b6020819492940151602681101562002a23576011036201323c57604001906201300e60a06200df3360c08551015162004cef565b51936201301f83518651146202d510565b60005b83518110156201309957620130939062000faa6001600160a01b03806201304a848962004d46565b5116600052611f45806020526201306c60406000205462006814868d62004d46565b9190926201307b868b62004d46565b511660005260205260406000205562000fa36203316d565b62013022565b50935090620130a89062032e37565b90611f465493620130bf6200806884518762006200565b9060009260005b87811062013221575060005b855181101562013179576000805b8981106201312a575b501562013102575b620130fc9062004cdf565b620130d2565b93620130fc9062013121906001600160a01b036200e724888a62004d46565b949050620130f1565b620131358162004eb6565b90546001600160a01b0360039290921b1c81169062013155858b62004d46565b5116146201316e57620131689062004cdf565b620130e0565b5050600138620130e9565b5095509392506201318a8262004e62565b8051906001600160401b03821162002a9b57602090620131aa8362004ff7565b01611f46600052602060002060005b83811062013203575050505060005b828110620131e0575050506201222960209162004cdf565b620131fd9062000faa6001600160a01b03620019fb838662004d46565b620131c8565b82516001600160a01b031681830155602090920191600101620131b9565b936200e87062013236916200e8528762004eb6565b620130c6565b6020819492940151602681101562002a23576012036201348157604001906201327060a06200df3360c08551015162004cef565b51936201328183518651146202d510565b60005b8351811015620132d457620132ce9062000faa6001600160a01b0380620132ac848962004d46565b5116600052611f45806020526201306c60406000205462007d56868d62004d46565b62013284565b5093509190620132e49062032e37565b611f4654620132f38162004e62565b906000926000915b808310620133a857505050620133118262004e62565b8051906001600160401b03821162002a9b57602090620133318362004ff7565b01611f46600052602060002060005b8381106201338a575050505060005b82811062013367575050506201222960209162004cdf565b620133849062000faa6001600160a01b03620019fb838662004d46565b6201334f565b82516001600160a01b03168183015560209092019160010162013340565b91956000959193959760005b85518110156201347257620133c98962004eb6565b90546001600160a01b0360039290921b1c811690620133e9838962004d46565b5116146201340257620133fc9062004cdf565b620133b4565b509750956001959391955b8062013441575b156201342c57620134259062004cdf565b91620132fb565b936200e87062013425916200e8528762004eb6565b506201344d8162004eb6565b60018060a01b0391549060031b1c16600052611f456020526040600020541562013414565b5097969096959391956201340d565b6020810151602681101562002a2357601303620134da5760408091015101519260005b8451811015620134c9578062000faa6200959f620134c3938862004d46565b620134a4565b509250906201222960209162004cdf565b6020810151602681101562002a23576014036201368757604001906201350560c08351015162004cef565b51936201351c60a06200779b818651015162004cef565b51916201352d86518551146202df8a565b6201353c86518451146202dff0565b60005b8651811015620136325762013555818562004d46565b5162013562828762004d46565b51906103e882101562004cfd576006620135829260031b0154906200608f565b906201358f838862004d46565b51916103e883101562004cfd576006620135ae9360031b01556202e0aa565b620135ba818562004d46565b51620135c7828762004d46565b51906103e882101562004cfd57620135f0916003906001600160a01b0362012148868d62004d46565b9190620135fe828862004d46565b51906103e882101562004cfd576201362c9362000faa926003906001600160a01b036201219c878f62004d46565b6201353f565b5094915091620121cd620136469162032f53565b9360405192620136568462002b3f565b60008452600036813760005b835181101562012215578062000faa6200796262013681938762004d46565b62013662565b6020810151602681101562002a2357601503620136b1576020919262000faa62012229926202e1ae565b6020810151602681101562002a23576016036201370d5760c06040620136db920151015162004cef565b519260005b8451811015620134c957620137079062000faa6001600160a01b0362009d36838962004d46565b620136e0565b6020810151602681101562002a23576017036201376a5760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601803620137d55760c0604062013794920151015162004cef565b5192600160ff19611fb6541617611fb65560005b8451811015620134c957620137cf9062000faa6001600160a01b0362009e02838962004d46565b620137a8565b6020819392930151602681101562002a23576019036201394a5760008091604082910160a08082510151805162013911575b5050519060e0820151916201382b6200680d60c060018060a01b0393015162004cef565b511690602083519301915af13d1562013908573d906201384b8262002f5b565b916201385b604051938462002b94565b82523d6000602084013e5b156201387a57506201222960209162004cdf565b62004cdb90620138e760405191600080516020620338cc833981519152602084015278039bab1b1b2b9b9b33ab617102932ba3ab937103230ba309d1603d1b6040840152828151620138d6816059946020868601910162002e01565b810103603981018452018262002b94565b60405162461bcd60e51b815260206004820152918291602483019062002e26565b60609062013866565b6201391c9062004cef565b51516201392b575b8062013807565b8192506200680d90620139419251015162004cef565b51903862013924565b6020810151602681101562002a2357601a0362013a005760a0604062013974920151015162004cef565b516201398460038251146202d510565b6201398f8162004cef565b5191620139a8620139a08362004d13565b519262004d24565b51916200f9d55760209262012229926001036200a04357620139d2620139e091611fb1546200608f565b611fb15562000fa362033108565b62000faa620139f2611fb2546200607c565b611fb25562000fa362033142565b6020810151602681101562002a2357601b0362013e305750919062013a30611faf546200225a6200a0b962033044565b505062013a3c62033108565b506000805b6103e8811062013de4575b505062013a5862006161565b62013a66613f745462004e62565b906000946000905b6103e882101562013dd7578160031b9460ff6007870154161562013bbf5760009660028701541562013bae57600098975b62004cfd57600487015489101562013b945762013ac0896004890162004f5e565b9054600391821b1c6001600160a01b031660008181529189016020526040918290205491999162013af390889062005eb0565b9a9062013aff62033108565b62013b0a9162004cac565b60009a60028b015462013b1d9162005eb0565b919062013b2962033108565b62013b349162004cac565b82600052611f476020526000209081549062013b50916200608f565b90915562013b5d62033108565b62013b689162004cac565b62013b74828962004d46565b5262013b809062004cdf565b9862013b8c9062004cdf565b989762013a9f565b9290955062013ba69196975062004cdf565b909462013a6e565b9290955062013ba691965062004cdf565b95969392509350505b62013bd38262004e62565b9160009160005b82811062013d4157505050611f48549162013bfa62008068848462006200565b926000906000905b80821062013d2457505060005b83811062013c8e5750508251929150506001600160401b03821162002a9b5760209062013c3c8362004fbc565b01611f48600052602060002060005b83811062013c705750505050620122296020916000611fb1556000611fb25562004cdf565b82516001600160a01b03168183015560209092019160010162013c4b565b6000805b83811062013cdc575b501562013cb4575b62013cae9062004cdf565b62013c0f565b9062013cae9062013cd3906001600160a01b03620081f0858762004d46565b91905062013ca3565b6001600160a01b038062013cf1858862004d46565b51169062013d00838a62004d46565b51161462013d195762013d139062004cdf565b62013c92565b505060013862013c9b565b9091620081fe62013d3a91620094f58562004e9a565b9062013c02565b6000805b85811062013d8f575b501562013d67575b62013d619062004cdf565b62013bda565b9262013d619062013d86906001600160a01b03620081f0878662004d46565b93905062013d56565b6001600160a01b038062013da4858762004d46565b51169062013db3838a62004d46565b51161462013dcc5762013dc69062004cdf565b62013d45565b505060013862013d4e565b9394959291505062013bc8565b8060039594951b9060ff6007830154161562013e26576200a4f86200746162000faa946200a4ec62013e1d9560026200a4e28762005e1c565b93929362013a41565b5093929362013a4c565b6020810151602681101562002a2357601c0362013e8d5760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601d0362013eb3575b506201222960209162004cdf565b9290916020840151602681101562002a2357601e03620145d557604084019060a09062013ee4828451015162004cef565b515162013ef5838551015162004d13565b5151036200ade95762013f0c828451015162004cef565b515162013f1d838551015162004d24565b5151036200ad6d5762013f34828451015162004cef565b519462013f45838551015162004d13565b519162013f5a6200a641858751015162004d24565b519585518751036200ad0a5760005b865181101562013fc25762013f7f818862004d46565b51906103e882101562004cfd57600362013fbc9260018060a01b038d5116600052811b0160205262000faa60406000205462007ce9838c62004d46565b62013f69565b5090969192939660005b86518110156201406b5762013fe2818862004d46565b516103e881101562004cfd5760039060018060a01b038c5116600052811b016020526201401a60406000205462007d56838b62004d46565b919062014028828a62004d46565b51906103e882101562004cfd576201406593600362000faa938f60018060a01b03905116600052811b0160205260406000205562000fa3620332bb565b62013fcc565b50939692979550936201407e9062032f53565b96604051966201408e8862002b78565b60018852602036818a013786516001600160a01b0316620140af8962004cef565b5260405196620140bf8862002b3f565b600088526000610760525b895161076051908110156201447c57620140e5908b62004d46565b5161072052620140f6885162004e62565b99600097620141068b5162004e62565b6109405260009760005b8b51811015620141d6578d8c620141406001600160a01b0362014134858462004d46565b51166107205162032d3b565b158062014190575b62014161575b50506201415b9062004cdf565b62014110565b9b620141859162001ac782859f62007f376201415b9760018060a01b039262004d46565b9a90508d8c6201414e565b5050506103e861072051101562004cfd576001600160a01b03620141b5828e62004d46565b5116600052600361072051811b016020528d8c604060002054151562014148565b50909b989a99949691929395979b60005b8b518110156201427b576103e861072051101562004cfd576001600160a01b0362014213828e62004d46565b5116600052600361072051811b016020526040600020541562014242575b6201423c9062004cdf565b620141e7565b9c620142726201423c918f620142618f9160018060a01b039262004d46565b511662001ac7826109405162004d46565b9d905062014231565b509b5098959092949691939661072051996103e88b10159c8d62004cfd57620142b26200806860048f9e60031b01549e8f62006200565b6108e0526000610a20528d60009e5b62004cfd578d8f101562014380575060009d62014309620142ec8260046107205160031b0162004f5e565b90546109405160039290921b1c6001600160a01b03169062032dea565b1562014323575b6201431c8f9162004cdf565b9e620142c1565b6201431c9e5060009e8f91620143438160046107205160031b0162004f5e565b60018060a01b0391549060031b1c1662014364610a20516108e05162004d46565b5262014373610a205162004cdf565b610a205291505062014310565b9396999b929d509396999094979b5060005b828110620144305750505062004cfd576108e051516001600160401b03811162002a9b57620143cb8160046107205160031b016200509a565b60206108e051019060046107205160031b0160005260206000209160005b828110620144125750505050620144036107605162004cdf565b610760529598909498620140ca565b81516001600160a01b031681850155602090910190600101620143e9565b62014476906001600160a01b0362014449828562004d46565b51166201445d610a20516108e05162004d46565b526201446c610a205162004cdf565b610a205262004cdf565b62014392565b509492975094955091965060009460005b8751811015620144e057620144ab6200abc66200abb9838962004d46565b80620144c4575b50620144be9062004cdf565b6201448d565b906200abfc620144d998620144be936200608f565b90620144b2565b5096509450929091508062014502575b5050620122296020915b915062013ea5565b6201452d9060018060a01b038351166000526200ac5a611f459182602052604060002054906200608f565b60018060a01b03835116600052602052604060002055600080611f4654905b8181106201458b575b5050916201222991602093156201456f575b5091620144f0565b5162014584906001600160a01b0316620065d6565b3862014567565b620145968162004eb6565b9054855160039290921b1c6001600160a01b03908116911614620145c557620145bf9062004cdf565b6201454c565b5060019150829050602062014555565b9190926020810151602681101562002a2357601f0362014610576020916201460a6200ae9d6040620122299401515162004cef565b620144fa565b6020810151602681101562002a235760200362014636575b5062012229602091620144fa565b6020810151602681101562002a2357602180910362014657575b5062014628565b602082015160268110156200b01a57602203620146945750506201222960209160ff19611fb65416611fb6556201468d62005087565b9162014650565b602082015160268110156200b01a57602303620146bb575b5050620122296020916201468d565b60208201519060268210156201478c576024809203620146dd575b50620146ac565b602083015160268110156201477957602514620146d65760208301519060268210156201476557506015036201472857506020916201472062012229926202e1ae565b9138620146d6565b60649060166040519162461bcd60e51b83526020600484015282015275496e76616c6964206f7065726174696f6e207479706560501b6044820152fd5b9050634e487b7160e01b6000526004526000fd5b50634e487b7160e01b6000526004526000fd5b634e487b7160e01b60005260045260246000fd5b8151620147b6906001600160a01b031662006600565b62011f21565b620147c78162004f0a565b9054865160039290921b1c6001600160a01b03908116911614620147f657620147f09062004cdf565b62011f0f565b5050506001388062011f18565b82516001600160a01b0316600160401b82101562002a9b5762001a08826001620148329401613f025562004eee565b386200bbb0565b620148448162004eee565b9054865160039290921b1c6001600160a01b0390811691161462014873576201486d9062004cdf565b6200bb9f565b50506001386200bba8565b82516001600160a01b0316818301556020909201916001016200bad5565b82516001600160a01b0316818301556020909201916001016200b988565b600191820180546001600160a01b03909216848601559390910192906200b8d7565b613f6d60005262014903906000805160206203396c83398151915290810190830162004fa3565b386200b898565b600180826201491b82948662014d65565b019201920191906200b85a565b613f6c600052600080516020620337ac833981519152908282015b8183018110620149555750506200b81f565b806201496360019262005399565b0162014943565b600191820180546001600160a01b03909216848601559390910192906200b7f0565b613f6b600052620149b3906000805160206203376c83398151915290810190830162004fa3565b386200b7b1565b6001809193019182549381613f0301550190916200b754565b82516001600160a01b0316818301556020909201916001016200b66d565b62014a0c90613f026000528484600020918201910162004fa3565b386200b65d565b82516001600160a01b0316818301556020909201916001016200b489565b62014a4c90613ef96000528484600020918201910162004fa3565b386200b479565b8062014a759160031b600160ff60078301541615151462014a7b575062004cdf565b6200b3ce565b62014a8e60048201611fbc830162014efe565b611fbf8101600160ff19825416179055805481611fb801556001810154611fb98201556002810154611fba82015562014acf60058201611fbd830162014d65565b611fbe6006820154910155386200a043565b600660208262014af560019451866200581b565b019201920191906200b1d7565b600681810204810362001e0757600683810204830362001e0757613efa6000527f2dfc264c6ecd0c6ea7ea3726867a09cc7eed901a6e437c010038bab559d48ed86006840281015b826006028201811062014b5f5750506200b1c4565b806000600692556000600182015562014b7b6002820162005504565b6000600382015562014b906004820162005399565b600060058201550162014b4a565b600660208262014bb260019451866200581b565b019201920191906200b14c565b8060060290600682040362001e07578260060260068104840362001e0757600090613efb82526020822092830192015b82811062014bff5750506200b139565b80826006925582600182015562014c196002820162005504565b82600382015562014c2d6004820162005399565b8260058201550162014bef565b608460405162461bcd60e51b815260206004820152604060248201526000805160206203394c83398151915260448201527f656d2073686f756c64206e6f742072657475726e20766f7465206e65656465646064820152fd5b60405162461bcd60e51b815260206004820152604760248201526000805160206203394c83398151915260448201527f656d2073686f756c64206e6f742072657475726e206120766f74696e672072756064820152661b19481b1a5cdd60ca1b608482015260a490fd5b81811462014d61578154916001600160401b03831162002a9b5762014d2383836200509a565b60005260206000209060005260206000208154916000925b84841062014d4a575050505050565b600180919201938454928185015501929062014d3b565b5050565b9080821462014d615762014d7a815462002c79565b906001600160401b03821162002a9b57819062014da48262014d9d865462002c79565b86620056d5565b600090601f831160011462014ddd5760009262014dd15750508160011b916000199060031b1c1916179055565b01549050388062005768565b81526020808220858352818320935090601f1985169083905b82821062014e3257505090846001959493921062014e1857505050811b019055565b015460001960f88460031b161c19169055388080620057b5565b849581929585015481556001809101960194019062014df6565b81811462014d615781549162014e63838362005427565b6000526020600020906000526020600020906000905b83821062014e875750505050565b8062014e966001928562014d65565b92810192918101910162014e79565b81811462014d615781549162014ebc8383620054b5565b6000526020600020906000526020600020906000905b83821062014ee05750505050565b8062014eef6001928562014cfd565b92810192918101910162014ed2565b81811462014d61578154916001600160401b03831162002a9b5762014f2483836200509a565b60005260206000209060005260206000208154916000925b84841062014f4b575050505050565b600191820180546001600160a01b039092168486015593909101929062014f3c565b81811462014d615781549162014f848383620054b5565b6000526020600020906000526020600020906000905b83821062014fa85750505050565b8062014fb76001928562014efe565b92810192918101910162014f9a565b81811462014d615781549162014fdd8383620055b8565b6000526020600020906000526020600020906000905b838210620150015750505050565b8060019184036201501e575b600880910193019101909162014ff3565b805484556201504b8280860190830160ff906201503f82825416846200569a565b5460081c1690620056b4565b6002808201549085015562015067600380830190860162014cfd565b600480850190820180820362015080575b50506201500d565b6201508b9162014e4c565b6201509d600580830190860162014ea5565b620150af600680830190860162014f6d565b620150c1600780830190860162014d65565b388062015078565b919062005d3057808203620150dc575050565b60ff60058062002c3b94620150f5848654168262005681565b6001850154600182015562015111600286016002830162014fc6565b600385015460038201556201512d600486016004830162014d65565b0192016201513f8282541684620057f2565b5460081c169062005803565b9080821462014d6157908154906000915b606483106201516b5750505050565b60018091940192835494818401550191926201515c565b90611f42549060009060208401805151906201519e8262002c61565b91620151ae604051938462002b94565b808352620151bf601f199162002c61565b01366020840137620151d48151518662005eb0565b9015620155c657620151e69062004e62565b92849180515115620155bb57620152008793929362004e62565b95915b81515183101562015404576000958687805b8c8c83109182156201537d576201522e89895162004d46565b5194600092839662015241859662015a04565b620152528588846001948562015bb7565b6201533e575b508284118062015328575b15620152cd575050509183918b620152c3575b600685101562002a23578c8f95600314620152a3575b5050620152999062004cdf565b9190925062015215565b9b620152ba9162001ac78262015299959f62004d46565b9a908c6201528c565b60009b5062015276565b909391809593148062015312575b15620153045750600685101562002a23578c8f95600314620152a3575050620152999062004cdf565b945050620152999062004cdf565b5050600685101562002a23578e851515620152db565b5050600686101562002a23578f86151562015263565b92935093509450620153508462005cba565b5001549060ff620153618562005cba565b505416946003620153728662005cba565b500154933862015258565b50505050969096949391946201539f8162015399858a62004d46565b620035e5565b600681101562002a2357600314620153c6575b50620153be9062004cdf565b919262015203565b6000905b808210620153d95750620153b2565b9094620092e0620153fd91620153f0888c62004d46565b5162001ac7828c62004d46565b90620153ca565b9650505094509150600093845b83518610156201555657620154316201542b878662004d46565b62005673565b9060068083101562002a235760029283036201545c57505062015455909562004cdf565b9462015411565b6201546c6201542b898862004d46565b928184101562002a235760018094148062015542575b15620154975750505062015455909562004cdf565b620154ac6201542b8a899b9694959b62004d46565b928084101562002a23576004809414928362015516575b5082620154eb575b5050620154df575b50620154559062004cdf565b955062015455620154d3565b90915088101562015501578714153880620154cb565b602182634e487b7160e01b6000525260246000fd5b908093508a10156201552d578914159138620154c3565b602184634e487b7160e01b6000525260246000fd5b508183101562002a23578083141562015482565b925092909350600682101562002a235760038203620155b2575b6201557b8162004e62565b9360005b8281106201558e575050509190565b806201559f620155ac928462004d46565b5162001ac7828962004d46565b6201557f565b50600062015570565b509450505092509190565b60405162461bcd60e51b815260206004820152602a60248201527f546865206c656e677468206f6620766f74696e672072756c65206c697374206960448201526973206f766572666c6f7760b01b6064820152608490fd5b90611f43549060009060208401805151906201563a8262002c61565b916201564a604051938462002b94565b8083526201565b601f199162002c61565b01366020840137620156708151518662005eb0565b9015620155c657620156829062004e62565b92849180515115620155bb576201569c8793929362004e62565b95915b8151518310156201588a576000958680805b8c8c82109283156201581557620156ca89895162004d46565b5194600092620156eb848683829a620156e4849b62015a04565b8362015bb7565b620157d6575b81841180620157c0575b1562015764575050509083928b6201575a575b600685101562002a23578c8f956003146201573a575b5050620157319062004cdf565b909250620156b1565b9b620157519162001ac78262015731959f62004d46565b9a908c62015724565b60009b506201570e565b908094939592951480620157aa575b156201579c5750600685101562002a23578c8f956003146201573a575050620157319062004cdf565b945050620157319062004cdf565b5050600685101562002a23578e85151562015773565b5050600686101562002a23578f861515620156fb565b9450945090506001620157e98362005c7a565b5001549060ff620157fa8462005c7a565b5054169460036201580b8562005c7a565b50015494620156f1565b935050505096909694939194620158328162015399858a62004d46565b600681101562002a235760031462015859575b50620158519062004cdf565b91926201569f565b6000905b8082106201586c575062015845565b9094620092e06201588391620153f0888c62004d46565b906201585d565b9650505094509150600093845b8351861015620159ac57620158b16201542b878662004d46565b9060068083101562002a23576002928303620158dc575050620158d5909562004cdf565b9462015897565b620158ec6201542b898862004d46565b928184101562002a235760038094148062015998575b156201591757505050620158d5909562004cdf565b6201592c6201542b8a899b9694959b62004d46565b928084101562002a23576005809414928362015981575b50826201596b575b50506201595f575b50620158d59062004cdf565b9550620158d562015953565b90915088101562002a235787141538806201594b565b908093508a101562002a2357891415913862015943565b508183101562002a23578083141562015902565b925092909350600682101562002a235760038203620159fb575b620159d18162004e62565b9360005b828110620159e4575050509190565b806201559f620159f5928462004d46565b620159d5565b506000620159c6565b1562015a0c57565b60405162461bcd60e51b815260206004820152602860248201527f506c7567696e466163746f72793a20706c7567696e20696e646578206f7574206044820152676f662072616e676560c01b6064820152608490fd5b9062002c3b606160405180947f436865636b696e6720636f6e646974696f6e206578703a20706c7567696e206960208301527f6e646578206f7574206f662072616e67652c20706c7567696e20696e6465783a6040830152600160fd1b606083015262015ad9815180926020868601910162002e01565b810103604181018552018362002b94565b606d62002c3b919392936040519485917f436865636b696e6720636f6e646974696f6e206578703a206e6f646520696e6460208401527f6578206f7574206f662072616e67652c20706c7567696e20696e6465783a2000604084015262015b5c815180926020605f8701910162002e01565b82016d016103737b2329034b73232bc1d160951b605f82015262015b8a825180936020878501910162002e01565b0103604d81018552018362002b94565b805482101562004cfd5760005260206000209060031b0190600090565b93929190841562015f485762015be1611f4254841062000fa362015bdb86620050f5565b62015a62565b62015c18600262015bf28562005cba565b500154851062000fa362015c0686620050f5565b62015c1188620050f5565b9062015aea565b841562015f295762015c48600162015c3f86600262015c378862005cba565b500162015b9a565b50015460ff1690565b945b62015c558662002fc4565b8562015c6657505050505050600090565b62015c718662002fc4565b60039580870362015c885750505050505050600190565b62015c938162002fc4565b6004810362015ca85750505050505050600090565b62015cb38162002fc4565b6001810362015cc95750620032d2955062015f78565b91959392949062015cda8362002fc4565b600280931462015cf1575b50505050505050600090565b801562015f0b5762015d1b600162015d0f848662015c378962005cba565b50015460081c60ff1690565b935b811562015eef578562015d36848662015c378562005cba565b500154965b62015d468862004e62565b9860005b89811062015e645750505050505062015d638262002a18565b6001820362015dc657505050906001916000915b81831062015d855750505090565b9091928062015da3575b62015d9b909362004cdf565b919062015d77565b5062015d9b62015dbe62015db8858462004d46565b51151590565b905062015d8f565b62015dd18262002a18565b810362015e2b5750509060009182915b81831062015def5750505090565b909192801562015e0e575b62015e06909362004cdf565b919062015de1565b5062015e0662015e2362015db8858462004d46565b905062015dfa565b90915062015e398162002a18565b1462015e4d57503880808080808062015ce5565b62015e6062015db8620032d29262004cef565b1590565b808b62015ead828c8a8c8a8c1562015ece5762015ea3949262015e99949262015c3762015e919362005cba565b500162004f5e565b90549060031b1c90565b8787878b62015bb7565b62015ec162015ec89462000faa9362004d46565b9015159052565b62015d4a565b62015ee9949262015e99949262015c3762015e919362005c7a565b62015ea3565b8562015f01848662015c378562005c7a565b5001549662015d3b565b62015f22600162015d0f848662015c378962005c7a565b9362015d1d565b62015f41600162015c3f86600262015c378862005c7a565b9462015c4a565b62015f61611f4354841062000fa362015bdb86620050f5565b62015f72600262015bf28562005c7a565b62015c18565b9392600462015fc291866000146201619057600262015f9d878262015c378562005cba565b500154955b87156201617f57600262015c3762015fba9362005cba565b5001620036ac565b916032841115620161735760338410158062016167575b6201615a576097841015806201614e575b620161415760d38410158062016134575b620161285761012d841015806201611c575b6201610f576101918410158062016102575b620160f5576101af84101580620160e8575b620160db576101cd84101580620160ce575b620160c1576101f584101580620160b4575b620160a757610259841015806201609a575b6201608c57506102bd831015620160815750505050600090565b620032d293620241b4565b9050620032d293506202b4f1565b506102bc84111562016067565b50620032d293506201e3df565b5061025884111562016055565b50620032d293506202be55565b506101f484111562016043565b50620032d293506202c8b8565b506101cc84111562016031565b50620032d2935062023923565b506101ae8411156201601f565b50620032d2935062028765565b5061019084106201600d565b50620032d293620161ad565b5061012c84111562015ffb565b50620032d2935062023f9f565b5060b484111562015fea565b5050620032d2926201f03f565b50609584111562015fd9565b50620032d29362025742565b600262015c3762015fba9362005c7a565b6002620161a3878262015c378562005c7a565b5001549562015fa2565b9260d381146201677c5760d481146201676f5760d58114620167625760d68114620167555760d78114620167485760d881146201673b5760d981146201672f5760da8114620167225760db8114620167155760dc8114620167095760dd8114620166fa5760de8114620166eb5760df8114620166de5760e08114620166d15760e18114620166c55760e28114620166b85760e38114620166ab5760e481146201669f5760e58114620166905760e68114620166815760e78114620166745760e88114620166675760e981146201665a5760ea81146201664d5760eb8114620166405760ec8114620166335760ed8114620166265760ee8114620166195760ef81146201660c5760f08114620165ff5760f18114620165f25760f28114620165e55760f38114620165d85760f48114620165cb5760f58114620165be5760f68114620165b15760f78114620165a45760f88114620165975760f981146201658b5760fa81146201657f5760fb8114620165735760fc8114620165675760fd81146201655b5760fe81146201654f5760ff811462016543576101008114620165375761010181146201652b5761010281146201651f5761010381146201651357610104811462016507576101058114620164fb576101068114620164ef576101078114620164e3576101088114620164d7576101098114620164cb5761010a8114620164bf5761010b8114620164b35761010c8114620164a75761010d81146201649b5761010e81146201648f5761010f811462016483576101108114620164775761011181146201646b5761011281146201645f57610113811462016453576101148114620164475761011581146201643b57610116146201643057505050600090565b620032d2926201da96565b50620032d2926201d86d565b50620032d2926201d644565b50620032d2926201d341565b50620032d2926201d120565b50620032d2926201ceff565b50620032d2926201cccd565b50620032d2926201cb04565b50620032d2926201c93b565b50620032d2926201c703565b50620032d2926201c53c565b50620032d2926201c20d565b50620032d2926201bfdb565b50620032d2926201be12565b50620032d2926201bc49565b50620032d2926201ba84565b50620032d2926201b84c565b50620032d2926201b685565b50620032d2926201b34f565b50620032d2926201b0ef565b50620032d2926201af1e565b50620032d2926201ad3d565b50620032d2926201ab76565b50620032d2926201a920565b50620032d2926201a757565b50620032d2926201a58e565b50620032d2926201a2ad565b50620032d29262019fad565b50620032d29262019cc0565b50620032d292620199c0565b50620032d292506201983b565b50620032d29250620196f6565b50620032d2925062019584565b50620032d292506201943f565b50620032d29250620192fa565b50620032d29250620191b6565b50620032d2925062019041565b50620032d2925062018efd565b50620032d2925062018db9565b50620032d2925062018c78565b50620032d2925062018b35565b50620032d29250620189f4565b50620032d29250620188ab565b50620032d2925062018767565b50620032d2925062018623565b50620032d29250620184ae565b50620032d2925062018310565b50620032d29250620181cd565b509050620032d2915062018172565b509050620032d2915062018115565b50620032d29262017ed7565b50620032d2925062017d48565b50620032d2925062017bf9565b50620032d292620179e2565b50620032d292506201783a565b50620032d29250620176ed565b509050620032d2915062017692565b509050620032d2915062017625565b50620032d292620173d9565b50620032d292506201724a565b50620032d29250620170f5565b50620032d29262016ec7565b50620032d2925062016d0f565b50620032d2925062016bb3565b50620032d2925062016ab2565b50620032d2925062016985565b50620032d2925062016884565b50620032d2925090602001906001825151036201682b576001620167a1835162004cef565b515103620167d157620167b4906201dd9d565b919015620065cf576200680d620167cc915162004cef565b511090565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231313a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001825151036201692c576001620168a2835162004cef565b515103620168d257620168b5906201dd9d565b919015620065cf576200680d620168cd915162004cef565b511190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231323a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016a59576002620169a3835162004cef565b515103620169fd57620169b6906201dd9d565b9015620065cf57620169cd6200680d835162004cef565b518110159182620169dd57505090565b620169f7919250620169f0905162004cef565b5162004d13565b51101590565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231333a205468652055494e545f324441525241595b305d206c60448201526d32b733ba341034b9903737ba101960911b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b906020019060018251510362016b5a57600162016ad0835162004cef565b51510362016b005762016ae3906201dd9d565b919015620065cf576200680d62016afb915162004cef565b511490565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231343a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3231343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90604001600191828251510362016cb5578262016bd1835162004cef565b51510362016c5b5762016be4906201e110565b15620065c757829160009182945b62016c00575b505050905090565b805185101562016c55576001600160a01b038062016c1f878462004d46565b51169062016c326200680d855162004cef565b51160362016c4d5762016c46849562004cdf565b9462016bf2565b505091505090565b62016bf8565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231353a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231353a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362016e6d578262016d2d835162004cef565b51511062016e135762016d40906201e110565b15620065c757600091835b62016d57575b50505090565b815183101562016e0d57600080855b62016d8f575b501562016d865762016d7f849362004cdf565b9262016d4b565b50505050600090565b62016da08396949295965162004cef565b515181101562016e02576001600160a01b038062016dbf888562004d46565b51169062016dd3836200743f875162004cef565b51161462016df5579062016de984939262004cdf565b90939594919262016d66565b5091809493503862016d6c565b949390929462016d6c565b62016d51565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231363a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231363a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201709b578462016ee9845162004cef565b515103620170415762016efc906201e110565b1562016f9a5784931562016fb1576000935b62016f1a575050505090565b8051841015620051fe576001600160a01b038062016f39868462004d46565b5116600052611f4080845260409060ff8260002054161562016fa45760029262016f64888662004d46565b51166000528452600020015462016f806200680d855162004cef565b510362016f9a5762016f93859462004cdf565b9362016f0e565b5050505050600090565b5050505050505050600090565b6000935b62016fc1575050505090565b8051841015620051fe576001600160a01b038062016fe0868462004d46565b5116600052613ef880845260409060ff8260002054161562016fa4576002926201700b888662004d46565b511660005284526000200154620170276200680d855162004cef565b510362016f9a576201703a859462004cdf565b9362016fb5565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3231373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3231373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906040016001918282515103620171f0578262017113835162004cef565b515103620171965762017126906201e110565b91909115620065c757600091835b620171425750505050600090565b8051831015620171905783926001600160a01b038062017163838562004d46565b511690620171766200680d865162004cef565b511614620051c457620171899062004cdf565b9262017134565b62016d86565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3231383a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231383a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060400160019182825151036201737f578262017268835162004cef565b51511062017325576201727b906201e110565b15620065c75782916000935b620172955750505050600090565b815184101562017190576000835b620172bd575b50620172b6839462004cdf565b9362017287565b939291620172cc825162004cef565b51518510156201731c576001600160a01b0380620172eb868462004d46565b511690620172ff876200743f865162004cef565b51161462016c4d576201731483949562004cdf565b9092620172a3565b919293620172a9565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3231393a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3231393a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90916020809101906001938483515103620175cb5784620173fb845162004cef565b51510362017571576201740e906201e110565b9190911562016f9a57849315620174cf576000935b62017432575050505050600090565b8151841015620174c95784936001600160a01b03908162017454828662004d46565b5116600052611f4080845260409060ff82600020541662017485575b50506201747e915062004cdf565b9362017423565b8293620174956002948862004d46565b511660005284526000200154620174b16200680d865162004cef565b5114620174c15780388062017470565b505050505090565b62016f9a565b6000935b620174e2575050505050600090565b8151841015620174c95784936001600160a01b03908162017504828662004d46565b5116600052613ef880845260409060ff82600020541662017535575b50506201752e915062004cdf565b93620174d3565b8293620175456002948862004d46565b511660005284526000200154620175616200680d865162004cef565b5114620174c15780388062017520565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b62017630816201e110565b91909115620065cf57815115620065cf57600090815b835181101562017689576001600160a01b038062017665838762004d46565b5116908351160362017682576201767c9062004cdf565b62017646565b5050905090565b50505050600190565b6201769d816201e110565b91909115620065cf57815115620065cf5760005b8251811015620065c7576001600160a01b0380620176d0838662004d46565b51169083511614620065b457620176e79062004cdf565b620176b1565b906040016001918282515103620177e057826201770b835162004cef565b51510362017786576201771e906201e199565b15620065c757829160009182945b6201773957505050905090565b805185101562016c55576001600160a01b038062017758878462004d46565b5116906201776b6200680d855162004cef565b51160362016c4d576201777f849562004cdf565b946201772c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232333a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232333a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362017988578262017858835162004cef565b5151106201792e576201786b906201e199565b15620065c757600091835b620178815750505090565b815183101562016e0d57600080855b620178b0575b501562016d8657620178a9849362004cdf565b9262017876565b620178c18396949295965162004cef565b515181101562017923576001600160a01b0380620178e0888562004d46565b511690620178f4836200743f875162004cef565b5116146201791657906201790a84939262004cdf565b90939594919262017890565b5091809493503862017896565b949390929462017896565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232343a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232343a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910190600193848351510362017b9f578462017a04845162004cef565b51510362017b455762017a17906201e199565b1562016f9a5784931562017ab5576000935b62017a35575050505090565b8051841015620051fe576001600160a01b038062017a54868462004d46565b5116600052611f4080845260409060ff8260002054161562016fa45760029262017a7f888662004d46565b51166000528452600020015462017a9b6200680d855162004cef565b510362016f9a5762017aae859462004cdf565b9362017a29565b6000935b62017ac5575050505090565b8051841015620051fe576001600160a01b038062017ae4868462004d46565b5116600052613ef880845260409060ff8260002054161562016fa45760029262017b0f888662004d46565b51166000528452600020015462017b2b6200680d855162004cef565b510362016f9a5762017b3e859462004cdf565b9362017ab9565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362017cee578262017c17835162004cef565b51510362017c945762017c2a906201e199565b91909115620065c757600091835b62017c465750505050600090565b8051831015620171905783926001600160a01b038062017c67838562004d46565b51169062017c7a6200680d865162004cef565b511614620051c45762017c8d9062004cdf565b9262017c38565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3232363a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232363a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90604001600191828251510362017e7d578262017d66835162004cef565b51511062017e235762017d79906201e199565b15620065c75782916000935b62017d935750505050600090565b815184101562017190576000835b62017dbb575b5062017db4839462004cdf565b9362017d85565b93929162017dca825162004cef565b515185101562017e1a576001600160a01b038062017de9868462004d46565b51169062017dfd876200743f865162004cef565b51161462016c4d5762017e1283949562004cdf565b909262017da1565b91929362017da7565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3232373a2054686520414444524553535f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3232373a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90916020809101906001938483515103620180bb578462017ef9845162004cef565b515103620180615762017f0c906201e199565b9190911562016f9a5784931562017fbf576000935b62017f30575050505050600090565b8151841015620174c95784936001600160a01b03908162017f52828662004d46565b5116600052611f4080845260409060ff82600020541662017f83575b505062017f7c915062004cdf565b9362017f21565b829362017f936002948862004d46565b51166000528452600020015462017faf6200680d865162004cef565b5114620174c15780388062017f6e565b6000935b62017fd2575050505050600090565b8151841015620174c95784936001600160a01b03908162017ff4828662004d46565b5116600052613ef880845260409060ff82600020541662018025575b50506201801e915062004cdf565b9362017fc3565b8293620180356002948862004d46565b511660005284526000200154620180516200680d865162004cef565b5114620174c15780388062018010565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3232383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3232383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b62018120816201e199565b91909115620065cf57815115620065cf57600090815b835181101562017689576001600160a01b038062018155838762004d46565b5116908351160362017682576201816c9062004cdf565b62018136565b6201817d816201e199565b91909115620065cf57815115620065cf5760005b8251811015620065c7576001600160a01b0380620181b0838662004d46565b51169083511614620065b457620181c79062004cdf565b62018191565b906020016001918282515103620182b65782620181eb835162004cef565b5151036201825c57620181fe906201e1d2565b905015620065c757829160009182945b6201821b57505050905090565b805185101562016c555762018231858262004d46565b51620182426200680d845162004cef565b510362016c4d5762018255849562004cdf565b946201820e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201845457826201832e835162004cef565b515110620183fa5762018341906201e1d2565b905015620065c757600091835b620183595750505090565b815183101562016e0d57600080855b62018388575b501562016d865762018381849362004cdf565b926201834e565b620183998396949295965162004cef565b5151811015620183ef57620183af868362004d46565b51620183c1826200743f865162004cef565b5114620183e25790620183d684939262004cdf565b90939594919262018368565b509180949350386201836e565b94939092946201836e565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3233323a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620185c9576002620184cd835162004cef565b5151036201856f57620184e0906201e1d2565b905091909115620065c757829160009182945b6201850057505050905090565b815185101562016c555762018516858362004d46565b51620185276200680d835162004cef565b5111801562018549575b62016c4d5762018542849562004cdf565b94620184f3565b5062018556858362004d46565b5162018567620169f0835162004cef565b511062018531565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201870d578262018641835162004cef565b515103620186b35762018654906201e1d2565b905015620065c757829160009182945b6201867157505050905090565b805185101562016c555762018687858262004d46565b51620186986200680d845162004cef565b51101562016c4d57620186ac849562004cdf565b9462018664565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018851578262018785835162004cef565b515103620187f75762018798906201e1d2565b905015620065c757829160009182945b620187b557505050905090565b805185101562016c5557620187cb858262004d46565b51620187dc6200680d845162004cef565b51111562016c4d57620187f0849562004cdf565b94620187a8565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201899a5782620188c9835162004cef565b5151036201894057620188dc906201e1d2565b9093915015620065c7578060009384925b62018906575b5050506200680d620167cc915162004cef565b909193815185101562018939576200e870620189309162018928878562004d46565b519062006200565b919081620188ed565b93620188f3565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018adb578262018a12835162004cef565b51510362018a815762018a25906201e1d2565b9093915015620065c7578060009384925b62018a4f575b5050506200680d620168cd915162004cef565b909193815185101562018a7a576200e87062018a719162018928878562004d46565b91908162018a36565b9362018a3c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200190600190818351510362018c1e57600262018b55845162004cef565b51510362018bc45762018b68906201e1d2565b90915015620065c757906000918183925b62018b92575b505050620169cd6200680d835162004cef565b909192825184101562018bbd576200647f62018bb49162018928868662004d46565b91908062018b79565b9262018b7f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233383a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018d5f578262018c96835162004cef565b51510362018d055762018ca9906201e1d2565b9093915015620065c7578060009384925b62018cd3575b5050506200680d62016afb915162004cef565b909193815185101562018cfe576200e87062018cf59162018928878562004d46565b91908162018cba565b9362018cc0565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3233393a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3233393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018ea3578262018dd7835162004cef565b51510362018e495762018dea906201e1d2565b9092915015620065c757600091835b62018e075750505050600090565b805183101562017190578262018e1f85948362004d46565b5162018e306200680d855162004cef565b5110620051c45762018e429062004cdf565b9262018df9565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362018fe7578262018f1b835162004cef565b51510362018f8d5762018f2e906201e1d2565b9291921562016d8657600092845b62018f4b575050505050600090565b8051841015620174c9578362018f6386958462004d46565b5162018f746200680d865162004cef565b5111620174c15762018f869062004cdf565b9362018f3c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201915c57600262019060835162004cef565b515103620191025762019073906201e1d2565b929091921562016d8657600092845b62019091575050505050600090565b8051841015620174c95783620190a986958562004d46565b51620190ba6200680d855162004cef565b51111580620190db575b620174c157620190d49062004cdf565b9362019082565b50620190e8818562004d46565b51620190f9620169f0855162004cef565b511015620190c4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234323a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620192a05782620191d4835162004cef565b5151036201924657620191e7906201e1d2565b9291921562016d8657600092845b62019204575050505050600090565b8051841015620174c957836201921c86958462004d46565b516201922d6200680d865162004cef565b5114620174c1576201923f9062004cdf565b93620191f5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620193e5578262019318835162004cef565b5151036201938b576201932b906201e1d2565b905091909115620065c757600091835b620193495750505050600090565b80518310156201719057826201936185948362004d46565b51620193726200680d855162004cef565b5110620051c457620193849062004cdf565b926201933b565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201952a57826201945d835162004cef565b515103620194d05762019470906201e1d2565b905091909115620065c757600091835b6201948e5750505050600090565b8051831015620171905782620194a685948362004d46565b51620194b76200680d855162004cef565b5111620051c457620194c99062004cdf565b9262019480565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036201969c576002620195a3835162004cef565b5151036201964257620195b6906201e1d2565b905015620065c757600091835b620195d15750505050600090565b8151831015620171905782620195e985948462004d46565b51620195fa6200680d845162004cef565b511115806201961b575b620051c457620196149062004cdf565b92620195c3565b5062019628818462004d46565b5162019639620169f0845162004cef565b51101562019604565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020016001918282515103620197e1578262019714835162004cef565b515103620197875762019727906201e1d2565b905091909115620065c757600091835b620197455750505050600090565b80518310156201719057826201975d85948362004d46565b516201976e6200680d855162004cef565b5114620051c457620197809062004cdf565b9262019737565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3234373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b90602001600191828251510362019966578262019859835162004cef565b5151106201990c576201986c906201e1d2565b905015620065c75782916000935b620198885750505050600090565b815184101562017190576000835b620198b0575b50620198a9839462004cdf565b936201987a565b939291620198bf825162004cef565b51518510156201990357620198d5848262004d46565b51620198e7866200743f855162004cef565b511462016c4d57620198fb83949562004cdf565b909262019896565b9192936201989c565b60405162461bcd60e51b815260206004820152603e60248201527f43452049445f3234383a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3234383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910190600193848351510362019c665784620199e2845162004cef565b51511062019c0c57620199f5906201e199565b9290921562016f9a5784931562019b09576000935b62019a16575050505090565b8251841015620051fe576001600160a01b038062019a35868662004d46565b5116600052611f40808452604060ff8160002054161562016fa457879160009384935b62019a7b575b505050501562016f9a5762019a74859462004cdf565b9362019a0a565b9092989591939662019a8e865162004cef565b51518a101562019afd578162019aa58a8362004d46565b5116600052838352600285600020015462019ac68b6200743f895162004cef565b511462019aea5762019adb8798999a62004cdf565b93919097999894929662019a58565b9650509396505050843880808062019a5e565b96938296995062019a5e565b6000935b62019b19575050505090565b8251841015620051fe576001600160a01b038062019b38868662004d46565b5116600052613ef8808452604060ff8160002054161562016fa457879160009384935b62019b7e575b505050501562016f9a5762019b77859462004cdf565b9362019b0d565b9092989591939662019b91865162004cef565b51518a101562019c00578162019ba88a8362004d46565b5116600052838352600285600020015462019bc98b6200743f895162004cef565b511462019bed5762019bde8798999a62004cdf565b93919097999894929662019b5b565b9650509396505050843880808062019b61565b96938296995062019b61565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3234393a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3234393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b6020809301600192838251510362019f53578362019cdf835162004cef565b51511062019ef95762019cf2906201e199565b9490941562016f9a5783921562019e045793926000905b62019d18575050505050600090565b8351811015620174c9576001600160a01b038062019d37838762004d46565b5116600052611f4080875260409160ff83600020541662019d6d575b5050509362019d6483949562004cdf565b90949362019d09565b6000929190865b62019d81575b5062019d53565b90929791939662019d93865162004cef565b515189101562019df9578162019daa898362004d46565b5116600052838352600285600020015462019dcb8a6200743f895162004cef565b511462019ded5762019ddf87989962004cdf565b939190979894929862019d74565b50505050505091505090565b969382985062019d7a565b93926000905b62019e19575050505050600090565b8351811015620174c9576001600160a01b038062019e38838762004d46565b5116600052613ef880875260409160ff83600020541662019e6e575b5050509362019e6583949562004cdf565b90949362019e0a565b6000929190865b62019e82575b5062019e54565b90929791939662019e94865162004cef565b515189101562019eee578162019eab898362004d46565b5116600052838352600285600020015462019ecc8a6200743f895162004cef565b511462019ded5762019ee087989962004cdf565b939190979894929862019e75565b969382985062019e7b565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235303a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201a253578462019fcf845162004cef565b5151106201a1f95762019fe2906201e110565b9290921562016f9a578493156201a0f6576000935b6201a003575050505090565b8251841015620051fe576001600160a01b03806201a022868662004d46565b5116600052611f40808452604060ff8160002054161562016fa457879160009384935b6201a068575b505050501562016f9a576201a061859462004cdf565b9362019ff7565b909298959193966201a07b865162004cef565b51518a10156201a0ea57816201a0928a8362004d46565b511660005283835260028560002001546201a0b38b6200743f895162004cef565b51146201a0d7576201a0c88798999a62004cdf565b9391909799989492966201a045565b965050939650505084388080806201a04b565b9693829699506201a04b565b6000935b6201a106575050505090565b8251841015620051fe576001600160a01b03806201a125868662004d46565b5116600052613ef8808452604060ff8160002054161562016fa457879160009384935b6201a16b575b505050501562016f9a576201a164859462004cdf565b936201a0fa565b909298959193966201a17e865162004cef565b51518a10156201a1ed57816201a1958a8362004d46565b511660005283835260028560002001546201a1b68b6200743f895162004cef565b51146201a1da576201a1cb8798999a62004cdf565b9391909799989492966201a148565b965050939650505084388080806201a14e565b9693829699506201a14e565b60405162461bcd60e51b815260048101839052603e60248201527f43452049445f3235313a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b602080930160019283825151036201a53457836201a2cc835162004cef565b5151106201a4da576201a2df906201e110565b9490941562016f9a578392156201a3e55793926000905b6201a305575050505050600090565b8351811015620174c9576001600160a01b03806201a324838762004d46565b5116600052611f4080875260409160ff8360002054166201a35a575b505050936201a35183949562004cdf565b9094936201a2f6565b6000929190865b6201a36e575b506201a340565b9092979193966201a380865162004cef565b51518910156201a3da57816201a397898362004d46565b511660005283835260028560002001546201a3b88a6200743f895162004cef565b511462019ded576201a3cc87989962004cdf565b93919097989492986201a361565b96938298506201a367565b93926000905b6201a3fa575050505050600090565b8351811015620174c9576001600160a01b03806201a419838762004d46565b5116600052613ef880875260409160ff8360002054166201a44f575b505050936201a44683949562004cdf565b9094936201a3eb565b6000929190865b6201a463575b506201a435565b9092979193966201a475865162004cef565b51518910156201a4cf57816201a48c898362004d46565b511660005283835260028560002001546201a4ad8a6200743f895162004cef565b511462019ded576201a4c187989962004cdf565b93919097989492986201a456565b96938298506201a45c565b60405162461bcd60e51b815260048101869052603e60248201527f43452049445f3235323a205468652055494e543235365f324441525241595b30604482015260008051602062033a2c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3235323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201a6fd57846201a5b0845162004cef565b5151036201a6a3576201a5c3906201e110565b1562016f9a578493156201a63a576000935b6201a5e1575050505090565b8051841015620051fe576001600160a01b036201a5ff858362004d46565b5116600052611f4582526040600020546201a61f6200680d855162004cef565b51101562016f9a576201a633859462004cdf565b936201a5d5565b6000935b6201a64a575050505090565b8051841015620051fe576001600160a01b036201a668858362004d46565b5116600052613efd82526040600020546201a6886200680d855162004cef565b51101562016f9a576201a69c859462004cdf565b936201a63e565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201a8c657846201a779845162004cef565b5151036201a86c576201a78c906201e110565b1562016f9a578493156201a803576000935b6201a7aa575050505090565b8051841015620051fe576001600160a01b036201a7c8858362004d46565b5116600052611f4582526040600020546201a7e86200680d855162004cef565b51111562016f9a576201a7fc859462004cdf565b936201a79e565b6000935b6201a813575050505090565b8051841015620051fe576001600160a01b036201a831858362004d46565b5116600052613efd82526040600020546201a8516200680d855162004cef565b51111562016f9a576201a865859462004cdf565b936201a807565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910160019384825151036201ab1c5760026201a942835162004cef565b5151036201aac2576201a955906201e110565b9290921562016f9a578493156201aa14576000935b6201a976575050505090565b8251841015620051fe576001600160a01b03806201a995868662004d46565b5116600052611f4580835260409081600020546201a9b86200680d875162004cef565b51119283156201a9de575b50505062016f9a576201a9d7859462004cdf565b936201a96a565b909192506201a9ee878762004d46565b51166000528252600020546201aa09620169f0845162004cef565b51103880806201a9c3565b6000935b6201aa24575050505090565b8251841015620051fe576001600160a01b03806201aa43868662004d46565b5116600052613efd80835260409081600020546201aa666200680d875162004cef565b51119283156201aa8c575b50505062016f9a576201aa85859462004cdf565b936201aa18565b909192506201aa9c878762004d46565b51166000528252600020546201aab7620169f0845162004cef565b51103880806201aa71565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235353a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201ace357846201ab98845162004cef565b5151036201ac89576201abab906201e110565b1562016f9a578493156201ac21576000935b6201abc9575050505090565b8051841015620051fe576001600160a01b036201abe7858362004d46565b5116600052611f4582526040600020546201ac076200680d855162004cef565b510362016f9a576201ac1a859462004cdf565b936201abbd565b6000935b6201ac31575050505090565b8051841015620051fe576001600160a01b036201ac4f858362004d46565b5116600052613efd82526040600020546201ac6f6200680d855162004cef565b510362016f9a576201ac82859462004cdf565b936201ac25565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201aec457846201ad5f845162004cef565b5151036201ae6a576201ad72906201e110565b1562016f9a578493156201adfd5760009182945b6201ad97575b505050505050600090565b81518510156201adf75785946001600160a01b036201adb7828562004d46565b51168452611f45825260408420546201add56200680d875162004cef565b51106201adee576201ade79062004cdf565b946201ad86565b50505050505090565b6201ad8c565b60009182945b6201ae1357505050505050600090565b81518510156201adf75785946001600160a01b036201ae33828562004d46565b51168452613efd825260408420546201ae516200680d875162004cef565b51106201adee576201ae639062004cdf565b946201ae03565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909160208091019060019384835151036201b09557846201af40845162004cef565b5151036201b03b576201af53906201e110565b1562016f9a578493156201afce5760009182945b6201af7757505050505050600090565b81518510156201adf75785946001600160a01b036201af97828562004d46565b51168452611f45825260408420546201afb56200680d875162004cef565b51116201adee576201afc79062004cdf565b946201af67565b60009182945b6201afe457505050505050600090565b81518510156201adf75785946001600160a01b036201b004828562004d46565b51168452613efd825260408420546201b0226200680d875162004cef565b51116201adee576201b0349062004cdf565b946201afd4565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3235383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3235383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9091602080910160019384825151036201b2f55760026201b111835162004cef565b5151036201b29b576201b124906201e110565b9190911562016f9a578493156201b1e8576000935b6201b148575050505050600090565b8151841015620174c95784936001600160a01b03806201b169838662004d46565b5116600052611f4580865260409081600020546201b18c6200680d875162004cef565b51111592836201b1b1575b505050620174c1576201b1aa9062004cdf565b936201b139565b909192506201b1c1848762004d46565b51166000528552600020546201b1dc620169f0845162004cef565b5110153880806201b197565b6000935b6201b1fb575050505050600090565b8151841015620174c95784936001600160a01b03806201b21c838662004d46565b5116600052613efd80865260409081600020546201b23f6200680d875162004cef565b51111592836201b264575b505050620174c1576201b25d9062004cdf565b936201b1ec565b909192506201b274848762004d46565b51166000528552600020546201b28f620169f0845162004cef565b5110153880806201b24a565b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3235393a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052602e60248201527f43452049445f3235393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201b4cc57836201b36e845162004cef565b5151036201b47257156201b3f7576201b387906201e110565b15620065c757829160009182945b6201b3a257505050905090565b805185101562016c55576201b3cc6001600160a01b036201b3c4878462004d46565b51166201b583565b6201b3dc6200680d845162004cef565b51101562016c4d576201b3f0849562004cdf565b946201b395565b6201b402906201e110565b15620065c757829160009182945b6201b41d57505050905090565b805185101562016c55576201b4476001600160a01b036201b43f878462004d46565b51166201b526565b6201b4576200680d845162004cef565b51101562016c4d576201b46b849562004cdf565b946201b410565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60009081905b6103e882106201b53b57505090565b9091620081fe6201b57c916201b5758560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f77565b9062006200565b906201b52c565b60009081905b6103e882106201b59857505090565b9091620081fe6201b5d0916201b575600386811b9060018060a01b038716600052810160205260016040600020549101549062004f77565b906201b589565b600091906201b632576000905b6103e882106201b5f357505090565b9091620081fe6201b62b916201b575600386811b9060018060a01b038716600052810160205260016040600020549101549062004f77565b906201b5e4565b81905b6103e882106201b64457505090565b9091620081fe6201b67e916201b5758560031b60018060a01b038616600052611fbb8101602052611fb96040600020549101549062004f77565b906201b635565b916020019060019283835151036201b7f257836201b6a4845162004cef565b5151036201b79857156201b725576201b6bd906201e110565b15620065c757829160009182945b6201b6d857505050905090565b805185101562016c55576201b6fa6001600160a01b036201b3c4878462004d46565b6201b70a6200680d845162004cef565b51111562016c4d576201b71e849562004cdf565b946201b6cb565b6201b730906201e110565b15620065c757829160009182945b6201b74b57505050905090565b805185101562016c55576201b76d6001600160a01b036201b43f878462004d46565b6201b77d6200680d845162004cef565b51111562016c4d576201b791849562004cdf565b946201b73e565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201ba2a5760026201b86c845162004cef565b5151036201b9d057156201b925576201b885906201e110565b91909115620065c757829160009182945b6201b8a357505050905090565b815185101562016c55576001600160a01b036201b8c6816201b3c4888662004d46565b6201b8d66200680d845162004cef565b51119081156201b8fa575b5062016c4d576201b8f3849562004cdf565b946201b896565b6201b90c91506201b3c4878562004d46565b6201b91c620169f0835162004cef565b5110386201b8e1565b6201b930906201e110565b91909115620065c757829160009182945b6201b94e57505050905090565b815185101562016c55576001600160a01b036201b971816201b43f888662004d46565b6201b9816200680d845162004cef565b51119081156201b9a5575b5062016c4d576201b99e849562004cdf565b946201b941565b6201b9b791506201b43f878562004d46565b6201b9c7620169f0835162004cef565b5110386201b98c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236323a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201bbef57836201baa3845162004cef565b5151036201bb9557156201bb23576201babc906201e110565b15620065c757829160009182945b6201bad757505050905090565b805185101562016c55576201baf96001600160a01b036201b3c4878462004d46565b6201bb096200680d845162004cef565b510362016c4d576201bb1c849562004cdf565b946201baca565b6201bb2e906201e110565b15620065c757829160009182945b6201bb4957505050905090565b805185101562016c55576201bb6b6001600160a01b036201b43f878462004d46565b6201bb7b6200680d845162004cef565b510362016c4d576201bb8e849562004cdf565b946201bb3c565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201bdb857836201bc68845162004cef565b5151036201bd5e57156201bcea576201bc81906201e110565b91909115620065c757600091835b6201bc9d5750505050600090565b8051831015620171905783926201bcc16001600160a01b036201b3c4838562004d46565b6201bcd16200680d855162004cef565b5110620051c4576201bce39062004cdf565b926201bc8f565b6201bcf5906201e110565b91909115620065c757600091835b6201bd115750505050600090565b8051831015620171905783926201bd356001600160a01b036201b43f838562004d46565b6201bd456200680d855162004cef565b5110620051c4576201bd579062004cdf565b926201bd03565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201bf8157836201be31845162004cef565b5151036201bf2757156201beb3576201be4a906201e110565b91909115620065c757600091835b6201be665750505050600090565b8051831015620171905783926201be8a6001600160a01b036201b3c4838562004d46565b6201be9a6200680d855162004cef565b5111620051c4576201beac9062004cdf565b926201be58565b6201bebe906201e110565b91909115620065c757600091835b6201beda5750505050600090565b8051831015620171905783926201befe6001600160a01b036201b43f838562004d46565b6201bf0e6200680d855162004cef565b5111620051c4576201bf209062004cdf565b926201becc565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201c1b35760026201bffb845162004cef565b5151036201c15957156201c0b1576201c014906201e110565b15620065c757600091835b6201c02d5750505050600090565b8151831015620171905783926001600160a01b036201c052816201b3c4848762004d46565b6201c0626200680d855162004cef565b51111590816201c085575b50620051c4576201c07e9062004cdf565b926201c01f565b6201c09791506201b3c4838662004d46565b6201c0a7620169f0845162004cef565b511015386201c06d565b6201c0bc906201e110565b15620065c757600091835b6201c0d55750505050600090565b8151831015620171905783926001600160a01b036201c0fa816201b43f848762004d46565b6201c10a6200680d855162004cef565b51111590816201c12d575b50620051c4576201c1269062004cdf565b926201c0c7565b6201c13f91506201b43f838662004d46565b6201c14f620169f0845162004cef565b511015386201c115565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201c38a57836201c22c845162004cef565b5151036201c33057156201c2b5576201c245906201e110565b15620065c757829160009182945b6201c26057505050905090565b805185101562016c55576201c28a6001600160a01b036201c282878462004d46565b51166201c43a565b6201c29a6200680d845162004cef565b51101562016c4d576201c2ae849562004cdf565b946201c253565b6201c2c0906201e110565b15620065c757829160009182945b6201c2db57505050905090565b805185101562016c55576201c3056001600160a01b036201c2fd878462004d46565b51166201c3e4565b6201c3156200680d845162004cef565b51101562016c4d576201c329849562004cdf565b946201c2ce565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236373a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60009081905b6103e882106201c3f957505090565b9091620081fe6201c433916201b5758560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f77565b906201c3ea565b60009081905b6103e882106201c44f57505090565b9091620081fe6201c487916201b575600386811b9060018060a01b038716600052810160205260026040600020549101549062004f77565b906201c440565b600091906201c4e9576000905b6103e882106201c4aa57505090565b9091620081fe6201c4e2916201b575600386811b9060018060a01b038716600052810160205260026040600020549101549062004f77565b906201c49b565b81905b6103e882106201c4fb57505090565b9091620081fe6201c535916201b5758560031b60018060a01b038616600052611fbb8101602052611fba6040600020549101549062004f77565b906201c4ec565b916020019060019283835151036201c6a957836201c55b845162004cef565b5151036201c64f57156201c5dc576201c574906201e110565b15620065c757829160009182945b6201c58f57505050905090565b805185101562016c55576201c5b16001600160a01b036201c282878462004d46565b6201c5c16200680d845162004cef565b51111562016c4d576201c5d5849562004cdf565b946201c582565b6201c5e7906201e110565b15620065c757829160009182945b6201c60257505050905090565b805185101562016c55576201c6246001600160a01b036201c2fd878462004d46565b6201c6346200680d845162004cef565b51111562016c4d576201c648849562004cdf565b946201c5f5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201c8e15760026201c723845162004cef565b5151036201c88757156201c7dc576201c73c906201e110565b91909115620065c757829160009182945b6201c75a57505050905090565b815185101562016c55576001600160a01b036201c77d816201c282888662004d46565b6201c78d6200680d845162004cef565b51119081156201c7b1575b5062016c4d576201c7aa849562004cdf565b946201c74d565b6201c7c391506201c282878562004d46565b6201c7d3620169f0835162004cef565b5110386201c798565b6201c7e7906201e110565b91909115620065c757829160009182945b6201c80557505050905090565b815185101562016c55576001600160a01b036201c828816201c2fd888662004d46565b6201c8386200680d845162004cef565b51119081156201c85c575b5062016c4d576201c855849562004cdf565b946201c7f8565b6201c86e91506201c2fd878562004d46565b6201c87e620169f0835162004cef565b5110386201c843565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3236393a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3236393a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020019060019283835151036201caaa57836201c95a845162004cef565b5151036201ca5057156201c9dc576201c973906201e110565b91909115620065c757600091835b6201c98f5750505050600090565b8051831015620171905783926201c9b36001600160a01b036201c282838562004d46565b6201c9c36200680d855162004cef565b5110620051c4576201c9d59062004cdf565b926201c981565b6201c9e7906201e110565b91909115620065c757600091835b6201ca035750505050600090565b8051831015620171905783926201ca276001600160a01b036201c2fd838562004d46565b6201ca376200680d855162004cef565b5110620051c4576201ca499062004cdf565b926201c9f5565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237303a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237303a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200190600192836201cb19845162004cef565b5151036201cc735783835151036201cc1957156201cba5576201cb3c906201e110565b91909115620065c757600091835b6201cb585750505050600090565b8051831015620171905783926201cb7c6001600160a01b036201c282838562004d46565b6201cb8c6200680d855162004cef565b5111620051c4576201cb9e9062004cdf565b926201cb4a565b6201cbb0906201e110565b91909115620065c757600091835b6201cbcc5750505050600090565b8051831015620171905783926201cbf06001600160a01b036201c2fd838562004d46565b6201cc006200680d855162004cef565b5111620051c4576201cc129062004cdf565b926201cbbe565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b916020019060026201cce0835162004cef565b5151036201cea55760019283835151036201ce4b57156201cda3576201cd06906201e110565b15620065c757600091835b6201cd1f5750505050600090565b8151831015620171905783926001600160a01b036201cd44816201c282848762004d46565b6201cd546200680d855162004cef565b51111590816201cd77575b50620051c4576201cd709062004cdf565b926201cd11565b6201cd8991506201c282838662004d46565b6201cd99620169f0845162004cef565b511015386201cd5f565b6201cdae906201e110565b15620065c757600091835b6201cdc75750505050600090565b8151831015620171905783926001600160a01b036201cdec816201c2fd848762004d46565b6201cdfc6200680d855162004cef565b51111590816201ce1f575b50620051c4576201ce189062004cdf565b926201cdb9565b6201ce3191506201c2fd838662004d46565b6201ce41620169f0845162004cef565b511015386201ce07565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3237323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3237323a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b919060208092019060019384835151036201d0c65760026201cf22845162004cef565b5151036201d06c57156201cfcd576201cf3b906201e110565b9290921562016d8657600092845b6201cf55575050505090565b8051841015620051fe576201cf6f6200680d845162004cef565b516103e881101562004cfd576001600160a01b036201cf8f868462004d46565b5116600052600390811b0182526040600020546201cfb2620169f0855162004cef565b51101562016f9a576201cfc6859462004cdf565b936201cf49565b6201cfd8906201e110565b9290921562016d8657600092845b6201cff2575050505090565b8051841015620051fe576201d00c6200680d845162004cef565b516103e881101562004cfd57611fbb906001600160a01b036201d030878562004d46565b511660005260031b0182526040600020546201d051620169f0855162004cef565b51101562016f9a576201d065859462004cdf565b936201cfe6565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919060208092019060019384835151036201d2e75760026201d143845162004cef565b5151036201d28d57156201d1ee576201d15c906201e110565b9290921562016d8657600092845b6201d176575050505090565b8051841015620051fe576201d1906200680d845162004cef565b516103e881101562004cfd576001600160a01b036201d1b0868462004d46565b5116600052600390811b0182526040600020546201d1d3620169f0855162004cef565b51111562016f9a576201d1e7859462004cdf565b936201d16a565b6201d1f9906201e110565b9290921562016d8657600092845b6201d213575050505090565b8051841015620051fe576201d22d6200680d845162004cef565b516103e881101562004cfd57611fbb906001600160a01b036201d251878562004d46565b511660005260031b0182526040600020546201d272620169f0855162004cef565b51111562016f9a576201d286859462004cdf565b936201d207565b60405162461bcd60e51b815260048101859052603160248201527f43452049445f3237343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916020809101600392836201d357835162004cef565b5151036201d5e55760019485835151036201d58b57156201d482576201d37d906201e110565b9390931562016f9a57600093855b6201d39857505050505090565b80518510156201d47c576201d3b26200680d845162004cef565b516103e8908181101562004cfd576001600160a01b03908490826201d3d88a8762004d46565b5116600052811b01865260409081600020546201d3fa620169f0885162004cef565b51119283156201d420575b5050506201ad8c576201d419869562004cdf565b946201d38b565b909192506201d4346200680d875162004cef565b519081101562004cfd5784916201d44c898662004d46565b5116600052811b018552600020546201d4716201d46a855162004cef565b5162004d24565b51103880806201d405565b620174c1565b6201d490909392936201e110565b9390931562016f9a57600093855b6201d4ab57505050505090565b80518510156201d47c576201d4c56200680d845162004cef565b516103e88082101562004cfd576001600160a01b0391826201d4e8898662004d46565b5116600052611fbb8091881b01855260409182600020546201d50f620169f0895162004cef565b51119384156201d536575b505050506201ad8c576201d52f869562004cdf565b946201d49e565b90919293506201d54b6200680d885162004cef565b519182101562004cfd576201d561898662004d46565b5116600052861b018352600020546201d57f6201d46a855162004cef565b5110388080806201d51a565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237353a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b919060208092019060026201d65a835162004cef565b5151036201d8135760019384835151036201d7b957156201d716576201d680906201e110565b9290921562016d8657600092845b6201d69d575050505050600090565b8051841015620174c9576201d6b76200680d845162004cef565b51936103e885101562004cfd5785946001600160a01b036201d6da838562004d46565b5116600052600390811b0183526040600020546201d6fd620169f0865162004cef565b5110620174c1576201d70f9062004cdf565b936201d68e565b6201d721906201e110565b9290921562016d8657600092845b6201d73e575050505050600090565b8051841015620174c9576201d7586200680d845162004cef565b51936103e885101562004cfd578594611fbb906001600160a01b036201d77f848662004d46565b511660005260031b0183526040600020546201d7a0620169f0865162004cef565b5110620174c1576201d7b29062004cdf565b936201d72f565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b919060208092019060026201d883835162004cef565b5151036201da3c5760019384835151036201d9e257156201d93f576201d8a9906201e110565b9290921562016d8657600092845b6201d8c6575050505050600090565b8051841015620174c9576201d8e06200680d845162004cef565b51936103e885101562004cfd5785946001600160a01b036201d903838562004d46565b5116600052600390811b0183526040600020546201d926620169f0865162004cef565b5111620174c1576201d9389062004cdf565b936201d8b7565b6201d94a906201e110565b9290921562016d8657600092845b6201d967575050505050600090565b8051841015620174c9576201d9816200680d845162004cef565b51936103e885101562004cfd578594611fbb906001600160a01b036201d9a8848662004d46565b511660005260031b0183526040600020546201d9c9620169f0865162004cef565b5111620174c1576201d9db9062004cdf565b936201d958565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237373a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b916020809101600392836201daac835162004cef565b5151036201dd3e5760019485835151036201dce457156201dbd2576201dad2906201e110565b9390931562016f9a57600093855b6201daf057505050505050600090565b80518510156201adf7576201db0a6200680d845162004cef565b51946103e8958681101562004cfd5787966001600160a01b03918590836201db33868862004d46565b5116600052811b018752604080600020546201db54620169f0895162004cef565b51111592836201db79575b5050506201adee576201db729062004cdf565b946201dae0565b91985091506201db8e6200680d875162004cef565b519788101562004cfd57889785916201dba8858762004d46565b5116600052811b018652600020546201dbc66201d46a865162004cef565b5110153880806201db5f565b6201dbe0909392936201e110565b9390931562016f9a57600093855b6201dbfe57505050505050600090565b80518510156201adf7576201dc186200680d845162004cef565b51946103e88087101562004cfd5787966001600160a01b0390816201dc3e858762004d46565b5116600052611fbb8091891b01865260409081600020546201dc65620169f08a5162004cef565b51111593846201dc8b575b505050506201adee576201dc849062004cdf565b946201dbee565b9193509198506201dca16200680d885162004cef565b519081101562004cfd5789986201dcb9858762004d46565b5116600052871b018452600020546201dcd76201d46a865162004cef565b511015388080806201dc70565b60405162461bcd60e51b815260048101859052602e60248201527f43452049445f3237383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101849052603160248201527f43452049445f3237383a205468652055494e543235365f324441525241595b306044820152705d206c656e677468206973206e6f74203360781b6064820152608490fd5b6201dda8816201df2d565b156201df24576040810190606082510151511515806201dee9575b156201ddd55750516060015151600191565b604082510151511515806201ded0575b156201ddf75750516040015151600191565b60808251015151151590816201deb6575b50156201de1a57516080015151600191565b805160c081015151156201de6157506201de3960c08251015162004cef565b51516201de4a57505b600090600090565b60c06201de5a9151015162004cef565b5151600191565b602081015151156201de795750516020015151600191565b60a0015180516201de8d575b50506201de42565b6201de989062004cef565b51516201dea657806201de85565b60a06201de5a9151015162004cef565b602091500151602681101562002a2357601014386201de08565b506020810151602681101562002a23576013146201dde5565b50602081018051602681101562002a2357600c149081156201df0d575b506201ddc3565b905051602681101562002a2357600f14386201df06565b50600090600090565b6020018051906026908183101562002a235760018093146201e10b5780518281101562002a23576002146201e10b5780518281101562002a23576003146201e10b578051908282101562002a2357600480921462016d51578051838110156201e0f65760051462016d51578051838110156201e0f65760061462016d51578051838110156201e0f65760071462016d51578051838110156201e0f65760081462016d51578051838110156201e0f65760091462016d51578051838110156201e0f657600a1462016d51578051838110156201e0f657600b1462016d51578051838110156201e0f657600c1462016d51578051838110156201e0f657600d1462016d51578051838110156201e0f657600e1462016d51578051838110156201e0f657600f1462016d51578051838110156201e0f65760101462016d51578051838110156201e0f65760111462016d51578051838110156201e0f65760121462016d51578051838110156201e0f65760131462016d51578051838110156201e0f65760141462016d51578051838110156201e0f65760151462016d515751918210156201e0e15750601e14620032d25750600090565b602190634e487b7160e01b6000525260246000fd5b602183634e487b7160e01b6000525260246000fd5b505090565b6201e11b816201df2d565b156201e18a576020810151602681101562002a23576004146201e177576040015160c0015180516201e16557506040516201e1568162002b3f565b60008152600036813790600090565b6201e1709062004cef565b5190600190565b60c060406201e170920151015162004d13565b506040516201e1568162002b3f565b6020810151602681101562002a23576004146201e1bf57506040516201e1568162002b3f565b60c060406201e170920151015162004cef565b6201e1dd816201e322565b156201e3125760208101908151916026908184101562002a235760018094146201e2f75780518281101562002a23576003146201e2f7578051908282101562002a235760048092146201e2db578051838110156201e0f6576005146201e2db578051838110156201e0f6576006146201e2db578051838110156201e0f6576014146201e2db578051838110156201e0f6576015146201e2db5751918210156201e0e15750601e146201e2bd575050604051906201e29a8262002b3f565b60008252604051916201e2ad8362002b3f565b6000835260003681379190600090565b604001916201e2d660a06200779b818651015162004cef565b519190565b505050604001916201e2d660a06200779b818651015162004cef565b5050604001916201e2d660a06200779b818651015162004cef565b50604051906201e29a8262002b3f565b6020018051906026908183101562002a235760018093146201e10b5780518281101562002a2357600214620065c75780518281101562002a23576003146201e10b578051908282101562002a2357600480921462016d51578051838110156201e0f65760141462016d51578051838110156201e0f65760151462016d51578051838110156201e0f657601e1462016d51578051838110156201e0f65760051462016d515751918210156201e0e15750600614620032d25750600090565b916101f581146201e489576101f681146201e47d576101f781146201e471576101f881146201e465576101f981146201e459576101fa81146201e44d576101fb81146201e441576101fc146201e436575050600090565b620032d2916201eeda565b50620032d2916201ed35565b50620032d2916201ebd0565b50620032d2916201ea6b565b50620032d2916201e906565b50620032d2916201e761565b50620032d2916201e5fc565b50620032d291906020019060019182815151036201e5a257826201e4ae825162004cef565b5151036201e548576020820151602681101562002a2357600203620065c757600091835b6201e4e05750505050600090565b604081019260a0936201e4f7858251015162004d24565b51518210156201e54057816200743f87966201e5169351015162004d24565b516201e5276200680d855162004cef565b5110620051c4576201e5399062004cdf565b926201e4d2565b505062016d86565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201e70757826201e61b825162004cef565b5151036201e6ad576020820151602681101562002a2357600203620065c757600091835b6201e64d5750505050600090565b604081019260a0936201e664858251015162004d24565b51518210156201e54057816200743f87966201e6839351015162004d24565b516201e6946200680d855162004cef565b5111620051c4576201e6a69062004cdf565b926201e63f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201e8ac5760026201e781825162004cef565b5151036201e852576020820151602681101562002a2357600203620065c757600091835b6201e7b35750505050600090565b604081019260a0936201e7ca858251015162004d24565b51518210156201e5405781856201e7eb826200743f8a998651015162004d24565b516201e7fc6200680d885162004cef565b51111592836201e821575b505050620051c4576201e81a9062004cdf565b926201e7a5565b5101516201e83592506200743f9062004d24565b516201e846620169f0855162004cef565b5110158138806201e807565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201ea1157826201e925825162004cef565b5151036201e9b7576020820151602681101562002a2357600203620065c757600091835b6201e9575750505050600090565b604081019260a0936201e96e858251015162004d24565b51518210156201e54057816200743f87966201e98d9351015162004d24565b516201e99e6200680d855162004cef565b5114620051c4576201e9b09062004cdf565b926201e949565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201eb7657826201ea8a825162004cef565b5151036201eb1c576020820151602681101562002a2357600203620065c757600091835b6201eabc5750505050600090565b604081019260a0936201ead3858251015162004d35565b51518210156201e54057816200743f87966201eaf29351015162004d13565b516201eb036200680d855162004cef565b5110620051c4576201eb159062004cdf565b926201eaae565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201ecdb57826201ebef825162004cef565b5151036201ec81576020820151602681101562002a2357600203620065c757600091835b6201ec215750505050600090565b604081019260a0936201ec38858251015162004d35565b51518210156201e54057816200743f87966201ec579351015162004d13565b516201ec686200680d855162004cef565b5111620051c4576201ec7a9062004cdf565b926201ec13565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201ee805760026201ed55825162004cef565b5151036201ee26576020820151602681101562002a2357600203620065c757600091835b6201ed875750505050600090565b604081019260a0936201ed9e858251015162004d35565b51518210156201e5405781856201edbf826200743f8a998651015162004d13565b516201edd06200680d885162004cef565b51111592836201edf5575b505050620051c4576201edee9062004cdf565b926201ed79565b5101516201ee0992506200743f9062004d13565b516201ee1a620169f0855162004cef565b5110158138806201eddb565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530373a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036201efe557826201eef9825162004cef565b5151036201ef8b576020820151602681101562002a2357600203620065c757600091835b6201ef2b5750505050600090565b604081019260a0936201ef42858251015162004d35565b51518210156201e54057816200743f87966201ef619351015162004d13565b516201ef726200680d855162004cef565b5114620051c4576201ef849062004cdf565b926201ef1d565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3530383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3530383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b91603381036201f129575060209150016001815151036201f0d95760016201f068825162004cef565b5151036201f086576200680d6201f080915162004cef565b51421190565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35313a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35313a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603481036201f212575060209150016001815151036201f1c25760016201f151825162004cef565b5151036201f16f576200680d6201f169915162004cef565b51421090565b60405162461bcd60e51b815260206004820152602560248201527f43452049445f35323a2055494e543235365f324441525241595b305d20697320604482015264656d70747960d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35323a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603581036201f324575060209150016001815151036201f2d45760026201f23a825162004cef565b5151036201f27a576201f2526200680d825162004cef565b5142101590816201f261575090565b6201f2739150620169f0905162004cef565b5142111590565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f43452049445f35333a2055494e543235365f3244415252415920697320656d70604482015261747960f01b6064820152608490fd5b603681036201f428575060209150016001815151036201f3ce5760016201f34c825162004cef565b5151036201f37457620167cc6200680d6201f367426200621c565b5050505050925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35343a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603781036201f51f575060209150016001815151036201f4c55760016201f450825162004cef565b5151036201f46b57620168cd6200680d6201f367426200621c565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35353a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603881036201f623575060209150016001815151036201f5c95760026201f547825162004cef565b5151036201f56f576201f55a426200621c565b5050505050620169cd6200680d835162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35363a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603981036201f728575060209150016001815151036201f6ce5760016201f64b825162004cef565b5151036201f67457620167cc6200680d6201f666426200621c565b505050509390505162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35373a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603a81036201f81f575060209150016001815151036201f7c55760016201f750825162004cef565b5151036201f76b57620168cd6200680d6201f666426200621c565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f35383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35383a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603b81036201f924575060209150016001815151036201f8ca5760026201f847825162004cef565b5151036201f870576201f85a426200621c565b505050509050620169cd6200680d835162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f35393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f35393a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603c81036201fa29575060209150016001815151036201f9cf5760016201f94c825162004cef565b5151036201f97557620167cc6200680d6201f967426200621c565b505050949150505162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36303a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603d81036201fb20575060209150016001815151036201fac65760016201fa51825162004cef565b5151036201fa6c57620168cd6200680d6201f967426200621c565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36313a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36313a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603e81036201fc25575060209150016001815151036201fbcb5760026201fb48825162004cef565b5151036201fb71576201fb5b426200621c565b505050915050620169cd6200680d835162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36323a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b603f81036201fd2a575060209150016001815151036201fcd05760016201fc4d825162004cef565b5151036201fc7657620167cc6200680d6201fc68426200621c565b505095925050505162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36333a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36333a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b6040928184036201fe20575050602001906001825151036201fdc85760016201fd54835162004cef565b5151036201fd705750620168cd6200680d6201fc68426200621c565b5162461bcd60e51b815260206004820152603060248201527f43452049445f36343a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36343a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b604182036201ff22575050602001906001825151036201feca5760026201fe48835162004cef565b5151036201fe7257506201fe5c426200621c565b505092505050620169cd6200680d835162004cef565b5162461bcd60e51b815260206004820152603160248201527f43452049445f36353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f36353a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b9092604284036201ff3a5750620032d29250620215a8565b604384036201ff505750620032d29250620217b2565b60448481036201ff68575050620032d29250620219b4565b604585036201ff7f575050620032d2925062021c31565b604685036201ff96575050620032d2925062021e33565b604785036201ffad575050620032d2925062022035565b604885036201ffc4575050620032d2925062022318565b604985036201ffdb575050620032d2925062022625565b604a85036201fff2575050620032d2925062022903565b604b850362020009575050620032d2925062022ccb565b604c850362020020575050620032d2925062022e76565b604d850362020037575050620032d2925062022f7a565b604e85036202004e575050620032d29250620230d2565b604f850362020065575050620032d2925062023253565b605085036202007c575050620032d2925062023357565b91909293605181146000146202017857505090916020019160018351510362020120576001620200ad845162004cef565b515103620200c8575050620167cc6200680d47925162004cef565b907f43452049445f38313a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b907f43452049445f38313a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b605281036202026d57505090916020019160018351510362020215576001620201a2845162004cef565b515103620201bd575050620168cd6200680d47925162004cef565b907f43452049445f38323a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b907f43452049445f38323a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b60538103620203835750509091602001916001835151036202032b57600262020297845162004cef565b515103620202d357505047620202b26200680d835162004cef565b5111159081620202c0575090565b9050620169f7620169f047925162004cef565b907f43452049445f38333a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b907f43452049445f38333a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b605481036202047857505090916020019160018351510362020420576001620203ad845162004cef565b515103620203c857505062016afb6200680d47925162004cef565b907f43452049445f38343a2055494e543235365f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b907f43452049445f38343a2055494e543235365f32444152524159206d7573742068608492519162461bcd60e51b835260206004840152602d60248401528201526000805160206203378c8339815191526064820152fd5b605581036202063357506020840192600284515103620205db5760019283620204a2865162004d13565b51510362020584575090829160009586945b620204cf575b50505050506200680d620167cc915162004d13565b9091929395620204e28383015162004cef565b51518710156202057d5762020539908415620205445762009513906202051d6103e8620205158b6200743f8c5162004cef565b5110620234af565b6201b575620205328a6200743f8b5162004cef565b516200610a565b9392919083620204b4565b6200951390620205616103e8620205158b6200743f8c5162004cef565b6201b575620205768a6200743f8b5162004cef565b5162006139565b95620204ba565b7f43452049445f38353a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38353a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b60568103620207b6575060208401926002845151036202075e57600192836202065d865162004d13565b51510362020707575090829160009586945b6202068a575b50505050506200680d620168cd915162004d13565b90919293956202069d8383015162004cef565b51518710156202070057620206d8908415620206e35762009513906202051d6103e8620206d08b6200743f8c5162004cef565b511062023521565b93929190836202066f565b6200951390620205616103e8620206d08b6200743f8c5162004cef565b9562020675565b7f43452049445f38363a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38363a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605781036202097c5750602084019460028651510362020923576002620207e2875162004d13565b515103620208cb5750600092835b620207fe8287015162004cef565b51518510156202089157906202085685620207fe93898760001462020860576103e862020839620092e0946200743f62020841945162004cef565b511062023593565b6201b57562020532896200743f8d5162004cef565b94909150620207f0565b6103e862020839620092e0946200743f6202087c945162004cef565b6201b57562020576896200743f8d5162004cef565b93505093925050620208a86200680d835162004d13565b518110159182620208b857505090565b620169f7919250620169f0905162004d13565b6084907f43452049445f38373a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b6084907f43452049445f38373a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b909491906058810362020b335750602084019260028451510362020adb5760019283620209aa865162004d13565b51510362020a84575090829160009586945b620209d65750505050506200680d620167cc915162004d13565b9091929395620209e98383015162004cef565b51518710156202057d5762020a4090841562020a4b57620095139062020a246103e862020a1c8b6200743f8c5162004cef565b511062023605565b6201b57562020a398a6200743f8b5162004cef565b5162005e1c565b9392919083620209bc565b620095139062020a686103e862020a1c8b6200743f8c5162004cef565b6201b57562020a7d8a6200743f8b5162004cef565b5162005e52565b7f43452049445f38383a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38383a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b6059810362020cae5750602084019260028451510362020c56576001928362020b5d865162004d13565b51510362020bff575090829160009586945b62020b895750505050506200680d620168cd915162004d13565b909192939562020b9c8383015162004cef565b5151871015620207005762020bd790841562020be257620095139062020a246103e862020bcf8b6200743f8c5162004cef565b511062023677565b939291908362020b6f565b620095139062020a686103e862020bcf8b6200743f8c5162004cef565b7f43452049445f38393a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f38393a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b91949091605a810362020e3a5750602084019460028651510362020de157600262020cda875162004d13565b51510362020d895750600092835b62020cf68287015162004cef565b515185101562020891579062020d4e8562020cf693898760001462020d58576103e862020d31620092e0946200743f62020d39945162004cef565b5110620236e9565b6201b57562020a39896200743f8d5162004cef565b9490915062020ce8565b6103e862020d31620092e0946200743f62020d74945162004cef565b6201b57562020a7d896200743f8d5162004cef565b6084907f43452049445f39303a20414444524553535f324441525241595b305d206d757385519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b6084907f43452049445f39303a20414444524553535f32444152524159206d757374206885519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b90949190605b8103620210135750602084019260028451510362020fbb576001928362020e68865162004d13565b51510362020f64575090829160009586945b62020e945750505050506200680d620167cc915162004d13565b909192939562020ea78383015162004cef565b51518710156202057d57831562020f17576103e862020ed98162020ed18a6200743f8b5162004cef565b51106202375b565b62020eea886200743f895162004cef565b519081101562004cfd5762020f0c916006620095139260031b01549062006200565b939291908362020e7a565b6103e862020f308162020ed18a6200743f8b5162004cef565b62020f41886200743f895162004cef565b519081101562004cfd5762020f0c91611fbe620095139260031b01549062006200565b7f43452049445f39313a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39313a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605c8103620211e8575060208401926002845151036202119057600192836202103d865162004d13565b51510362021139575090829160009586945b620210695750505050506200680d620168cd915162004d13565b90919293956202107c8383015162004cef565b515187101562020700578315620210ec576103e8620210ae81620210a68a6200743f8b5162004cef565b5110620237cd565b620210bf886200743f895162004cef565b519081101562004cfd57620210e1916006620095139260031b01549062006200565b93929190836202104f565b6103e86202110581620210a68a6200743f8b5162004cef565b62021116886200743f895162004cef565b519081101562004cfd57620210e191611fbe620095139260031b01549062006200565b7f43452049445f39323a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39323a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b605d81969293949614600014620213c8575060208401926002845151036202136f57600262021218855162004d13565b515103620213175750600080955b620212348187015162004cef565b515187101562021300578315620212ae576103e89162021267836202125f8a6200743f8a5162004cef565b51106202383f565b62021278886200743f885162004cef565b519283101562004cfd576202129e620212a5916006620212349560031b01549062006200565b9762004cdf565b96915062021226565b6103e891620212c8836202125f8a6200743f8a5162004cef565b620212d9886200743f885162004cef565b519283101562004cfd576202129e620212a591611fbe620212349560031b01549062006200565b50929350935050620208a86200680d835162004d13565b6084907f43452049445f39333a20414444524553535f324441525241595b305d206d757387519162461bcd60e51b835260206004840152603160248401528201526000805160206203392c8339815191526064820152fd5b6084907f43452049445f39333a20414444524553535f32444152524159206d757374206887519162461bcd60e51b835260206004840152602d60248401528201526c185d99480c88195b195b595b9d609a1b6064820152fd5b9094929190605e0362016d86576020840192600284515103620215505760019283620213f5865162004d13565b515103620214f9575090829160009586945b62021422575b50505050506200680d62016afb915162004d13565b9091929395620214358383015162004cef565b5151871015620214f2578315620214a5576103e862021467816202145f8a6200743f8b5162004cef565b5110620238b1565b62021478886200743f895162004cef565b519081101562004cfd576202149a916006620095139260031b01549062006200565b939291908362021407565b6103e8620214be816202145f8a6200743f8b5162004cef565b620214cf886200743f895162004cef565b519081101562004cfd576202149a91611fbe620095139260031b01549062006200565b956202140d565b7f43452049445f39343a20414444524553535f324441525241595b305d206d7573608492519162461bcd60e51b8352602060048401526030602484015282015260008051602062033a6c8339815191526064820152fd5b5162461bcd60e51b815260206004820152602d60248201527f43452049445f39343a20414444524553535f32444152524159206d7573742068818401526c185d99480c88195b195b595b9d609a1b6064820152608490fd5b90604081019060018251510362021758576001620215c7835162004cef565b515103620216fe5760200191600183515103620216a4576001620215ec845162004cef565b5151036202164a571562021626576200680d6202161e620167cc926201b3c46200680d60018060a01b03925162004cef565b925162004cef565b6200680d6202161e620167cc926201b43f6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36363a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36363a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b9060408101906001825151036202195a576001620217d1835162004cef565b515103620219005760200191600183515103620218a6576001620217f6845162004cef565b5151036202184c571562021828576200680d6202161e620168cd926201b3c46200680d60018060a01b03925162004cef565b6200680d6202161e620168cd926201b43f6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36373a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36373a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b604082019160018351510362021bd7576001620219d2845162004cef565b51510362021b7d576020019060018251510362021b23576002620219f7835162004cef565b51510362021ac9571562021a6d5760018060a01b0362021a21816201b3c46200680d865162004cef565b62021a316200680d845162004cef565b511115928362021a415750505090565b62021a61929350620169f0916201b3c46200680d6202161e935162004cef565b51101538808062016d51565b60018060a01b0362021a89816201b43f6200680d865162004cef565b62021a996200680d845162004cef565b511115928362021aa95750505090565b62021a61929350620169f0916201b43f6200680d6202161e935162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f36383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36383a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36383a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90604081019060018251510362021dd957600162021c50835162004cef565b51510362021d7f576020019160018351510362021d2557600162021c75845162004cef565b51510362021ccb571562021ca7576200680d6202161e620167cc926201c2826200680d60018060a01b03925162004cef565b6200680d6202161e620167cc926201c2fd6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f36393a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f36393a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90604081019060018251510362021fdb57600162021e52835162004cef565b51510362021f81576020019160018351510362021f2757600162021e77845162004cef565b51510362021ecd571562021ea9576200680d6202161e620168cd926201c2826200680d60018060a01b03925162004cef565b6200680d6202161e620168cd926201c2fd6200680d60018060a01b03925162004cef565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37303a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37303a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60408201916001835151036202224c57600162022053845162004cef565b515103620221f257602001906001825151036202219857600262022078835162004cef565b5151036202213e5715620220e25760018060a01b03620220a2816201c2826200680d865162004cef565b620220b26200680d845162004cef565b5111159283620220c25750505090565b62021a61929350620169f0916201c2826200680d6202161e935162004cef565b60018060a01b03620220fe816201c2fd6200680d865162004cef565b6202210e6200680d845162004cef565b51111592836202211e5750505090565b62021a61929350620169f0916201c2fd6200680d6202161e935162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37313a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37313a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37313a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b15620222ae57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37323a20746f6b656e436c617373496e6465782028706172616d6044820152600080516020620338ec833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202255a57600162022338845162004cef565b515103620225015760200192600184515103620224a85760026202235d855162004cef565b5151036202244f5715620223e0576103e8906202238c82620223846200680d875162004cef565b5110620222a6565b6202239c6200680d855162004cef565b519182101562004cfd576003620169f092620167cc94620223c96200680d60018060a01b03925162004cef565b5116600052811b0160205260002054925162004cef565b6103e890620223f982620223846200680d875162004cef565b620224096200680d855162004cef565b519182101562004cfd57611fbb620169f092620167cc94620224376200680d60018060a01b03925162004cef565b511660005260031b0160205260002054925162004cef565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37323a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37323a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37323a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b15620225bb57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37333a20746f6b656e436c617373496e6465782028706172616d6044820152600080516020620338ec833981519152606482015266662072616e676560c81b608482015260a490fd5b906040808201916001835151036202283857600162022645845162004cef565b515103620227df5760200192600184515103620227865760026202266a855162004cef565b5151036202272d5715620226d6576103e8906202269982620226916200680d875162004cef565b5110620225b3565b620226a96200680d855162004cef565b519182101562004cfd576003620169f092620168cd94620223c96200680d60018060a01b03925162004cef565b6103e890620226ef82620226916200680d875162004cef565b620226ff6200680d855162004cef565b519182101562004cfd57611fbb620169f092620168cd94620224376200680d60018060a01b03925162004cef565b815162461bcd60e51b815260206004820152603160248201527f43452049445f37333a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37333a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37333a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b156202289957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f37343a20746f6b656e436c617373496e6465782028706172616d6044820152600080516020620338ec833981519152606482015266662072616e676560c81b608482015260a490fd5b9060408082019260018451510362022c7257600162022923855162004cef565b51510362022c195760208093019260018451510362022bc157600391826202294c865162004cef565b51510362022b63571562022a5f576103e8916202297b83620229736200680d885162004cef565b511062022891565b6202298b6200680d865162004cef565b51928084101562004cfd5760018060a01b038281620229af6200680d8b5162004cef565b5116956000968752811b01845285852054620229d0620169f0895162004cef565b5111159788620229e6575b505050505050505090565b909192939495969750620229ff6200680d895162004cef565b519283101562022a4b57916201d46a95939162022a276200680d62022a3a9997955162004cef565b51168452811b0190522054925162004cef565b5110153880808080808080620229db565b634e487b7160e01b86526032600452602486fd5b6103e862022a7781620229736200680d885162004cef565b62022a876200680d865162004cef565b51908082101562004cfd5760018060a01b03938462022aab6200680d8a5162004cef565b5116946000958652611fbb8094831b0185528686205462022ad1620169f08a5162004cef565b511115988962022ae8575b50505050505050505090565b9091929394959697985062022b026200680d8a5162004cef565b519384101562022b4f579162022b3d9795939162022b2b6200680d6201d46a9997955162004cef565b511685521b0190522054925162004cef565b51101538808080808080808062022adc565b634e487b7160e01b87526032600452602487fd5b835162461bcd60e51b815260048101839052603160248201527f43452049445f37343a2055494e543235365f324441525241595b305d206d7573604482015270742068617665203320656c656d656e747360781b6064820152608490fd5b60849083519062461bcd60e51b82526004820152602d60248201527f43452049445f37343a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152fd5b815162461bcd60e51b815260206004820152603060248201527f43452049445f37343a20414444524553535f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b815162461bcd60e51b815260206004820152602d60248201527f43452049445f37343a20414444524553535f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b906020019060018251510362022d7557600162022ce9835162004cef565b51510362022d1b571562022d0957620167cc6200680d6202161e62022e38565b620167cc6200680d6202161e62022dcf565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37353a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37353a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b6000805b6103e8811062022de1575090565b908160031b60ff611fbf820154161562022e325762022e1f62022e2c9262022e17611fb962022e2594015462005e438762005fe5565b9290620060a1565b62006200565b9162004cdf565b62022dd3565b50905090565b6000805b6103e8811062022e4a575090565b9060ff60078360031b015416156200619f5762022e2562022e70916201b575846200610a565b62022e3c565b906020019060018251510362022f2057600162022e94835162004cef565b51510362022ec6571562022eb457620168cd6200680d6202161e62022e38565b620168cd6200680d6202161e62022dcf565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37363a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37363a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90602001906001825151036202307857600262022f98835162004cef565b5151036202301e571562022fe25762022fb062022e38565b62022fc06200680d835162004cef565b511115908162022fce575090565b9050620169f7620169f06202161e62022e38565b62022fec62022dcf565b62022ffc6200680d835162004cef565b51111590816202300a575090565b9050620169f7620169f06202161e62022dcf565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f37373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37373a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90602001906001825151036202317c576001620230f0835162004cef565b5151036202312257156202311057620167cc6200680d6202161e62023215565b620167cc6200680d6202161e620231d6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37383a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37383a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b6000805b6103e88110620231e8575090565b9060ff611fbf8360031b015416156200619f5762022e256202320f916201b5758462005e52565b620231da565b6000805b6103e8811062023227575090565b9060ff60078360031b015416156200619f5762022e256202324d916201b5758462005e1c565b62023219565b9060200190600182515103620232fd57600162023271835162004cef565b515103620232a357156202329157620168cd6200680d6202161e62023215565b620168cd6200680d6202161e620231d6565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f37393a2055494e543235365f324441525241595b305d206d7573604482015260008051602062033a6c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f37393a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b90602001906001825151036202345557600262023375835162004cef565b515103620233fb5715620233bf576202338d62023215565b6202339d6200680d835162004cef565b5111159081620233ab575090565b9050620169f7620169f06202161e62023215565b620233c9620231d6565b620233d96200680d835162004cef565b5111159081620233e7575090565b9050620169f7620169f06202161e620231d6565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f38303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203392c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f38303a2055494e543235365f32444152524159206d757374206860448201526000805160206203378c8339815191526064820152608490fd5b15620234b757565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38353a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202352957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38363a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202359b57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38373a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202360d57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38383a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202367f57565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f38393a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b15620236f157565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39303a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202376357565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39313a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b15620237d557565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39323a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b156202384757565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39333a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b15620238b957565b60405162461bcd60e51b815260206004820152604760248201527f43452049445f39343a20746f6b656e436c617373496e6465782028706172616d60448201526000805160206203390c833981519152606482015266662072616e676560c81b608482015260a490fd5b9161019181146202398b5761019281146202397f576101938114620239735761019681146202396757610197146202395c575050600090565b620032d29162023ec1565b50620032d29162023ddc565b50620032d29162023c37565b50620032d29162023af6565b50620032d2919060200190600191828151510362023a9c5782620239b0825162004cef565b51510362023a42576020820151602681101562002a2357600a03620065c757600091835b620239e25750505050600090565b604081019260a093620239f9858251015162004cef565b51518210156201e54057816200743f879662023a189351015162004cef565b5162023a296200680d855162004cef565b5114620051c45762023a3b9062004cdf565b92620239d4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200190600191828151510362023bdd576020820151602681101562002a2357600a03620065c75782916000935b62023b335750505050600090565b6040810160a062023b48818351015162004cef565b51518610156201e54057906000855b62023b73575b50505062023b6c839462004cdf565b9362023b25565b62023b7f855162004cef565b515181101562023bd75762023b9d876200743f858551015162004cef565b5162023baf826200743f885162004cef565b511462023bcd579062023bc486939262004cdf565b90919262023b57565b5050505050905090565b62023b5d565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430323a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200190600191828151510362023d8257600262023c57825162004cef565b51510362023d28576020820151602681101562002a2357600a03620065c757600091835b62023c895750505050600090565b604081019260a09362023ca0858251015162004cef565b51518210156201e54057818562023cc1826200743f8a998651015162004cef565b5162023cd26200680d885162004cef565b511115928362023cf7575b505050620051c45762023cf09062004cdf565b9262023c7b565b51015162023d0b92506200743f9062004cef565b5162023d1c620169f0855162004cef565b51101581388062023cdd565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3430333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3430333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b600191828151510362023e68576020820151602681101562002a2357600b03620065c757600091835b62023e135750505050600090565b60408101515192835181101562023e615762023e4a62023e3582879662004d46565b5162023e42855162004cef565b51906203358c565b620051c45762023e5a9062004cdf565b9262023e05565b5062016d86565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430363a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b600191828151510362023f46576020820151602681101562002a2357600b03620065c757600091835b62023ef85750505050600090565b60408101515192835181101562023e615762023f2f62023f1a82879662004d46565b5162023f27855162004cef565b519062006518565b620051c45762023f3f9062004cdf565b9262023eea565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3430373a2054686520535452494e475f4152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b916097811462023fc35760981462023fb8575050600090565b620032d291620240d4565b50602001805151620032d29290600019016202407b57600162023fe7835162004cef565b515103620240215760200151602681101562002a23576200680d6202161e620240109262033353565b51146202401c57600090565b600190565b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3135313a205468652055494e545f324441525241595b305d206c6044820152600080516020620338ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3135313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b919091602080930160019182825151036202415b57938293946000935b62024100575050505050600090565b6202410c835162004cef565b5151841015620174c9578181015193602685101562002a235762024131869562033353565b62024142826200743f875162004cef565b5114620174c157620241549062004cdf565b93620240f1565b60405162461bcd60e51b815260048101869052602b60248201527f43452049445f3135323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b926102bd8114620242b7576102be8114620242ab576102bf81146202429f576102c0811462024293576102c1811462024287576102c281146202427b576102c381146202426f576102c4811462024263576102c5811462024257576102c681146202424b576102c781146202423f576102c8146202423457505050600090565b620032d292620254dc565b50620032d292620252e1565b50620032d292620250dc565b50620032d29262024e6c565b50620032d29262024c67565b50620032d29262024a58565b50620032d29262024939565b50620032d29262024812565b50620032d292620246eb565b50620032d29262024591565b50620032d2926202443d565b50620032d292620242d4565b606482101562004cfd570190600090565b91602080910192600184515103620243e3576001620242f4855162004cef565b51510362024389571562024350576202161e62024342620167cc936202433b620076a16200680d9560018060a01b03845116600052611f4981526040600020930162007387565b90620242c3565b90549060031b1c426200620e565b6202161e62024342620167cc936202433b620076a16200680d9560018060a01b03845116600052613f0181526040600020930162007387565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b91602080910192600184515103620245375760016202445d855162004cef565b515103620244dd5715620244a4576202161e62024342620168cd936202433b620076a16200680d9560018060a01b03845116600052611f4981526040600020930162007387565b6202161e62024342620168cd936202433b620076a16200680d9560018060a01b03845116600052611f4981526040600020930162007387565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160208091019260018451510362024691576002620245b1855162004cef565b515103620246375715620246035781516001600160a01b03166000908152611f49825260409020620245f39262024342926202433b91620076a1910162007387565b620169cd6200680d835162004cef565b81516001600160a01b03166000908152611f49825260409020620245f39262024342926202433b91620076a1910162007387565b60405162461bcd60e51b815260048101839052603160248201527f43452049445f3730333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3730333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200191600183515103620247b857600162024709845162004cef565b5151036202475e57156202474c57620076a1602062024729920162007387565b606481101562004cfd576200680d6202161e620167cc92611f4b0154426200620e565b620076a1602062024729920162007387565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200191600183515103620248df57600162024830845162004cef565b5151036202488557156202487357620076a1602062024850920162007387565b606481101562004cfd576200680d6202161e620168cd92611f4b0154426200620e565b620076a1602062024850920162007387565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9160200191600183515103620249fe57600262024957845162004cef565b515103620249a457156202499257620076a1602062024977920162007387565b606481101562004cfd57620245f390611f4b0154426200620e565b620076a1602062024977920162007387565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3730363a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3730363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909291604093848201600193848251510362024c0e578462024a7b835162004cef565b51510362024bb5579584959660001462024b27576000945b62024aa357505050505050600090565b62024aaf825162004cef565b51518510156201adf757859460018060a01b0362024ad3826200743f865162004cef565b51166000526020611f49815262024b0e6200680d62024b0462024342866000206202433b620076a1878c0162007387565b9288015162004cef565b51106201adee5762024b209062004cdf565b9462024a93565b6000945b62024b3b57505050505050600090565b62024b47825162004cef565b51518510156201adf757859460018060a01b0362024b6b826200743f865162004cef565b51166000526020611f49815262024b9c6200680d62024b0462024342866000206202433b620076a1878c0162007387565b51106201adee5762024bae9062004cdf565b9462024b2b565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730373a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730373a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b909291604093848201600193848251510362024e13578462024c8a835162004cef565b51510362024dba579584959660001462024d2c576000945b62024cb257505050505050600090565b62024cbe825162004cef565b51518510156201adf757859460018060a01b0362024ce2826200743f865162004cef565b51166000526020611f49815262024d136200680d62024b0462024342866000206202433b620076a1878c0162007387565b51116201adee5762024d259062004cdf565b9462024ca2565b6000945b62024d4057505050505050600090565b62024d4c825162004cef565b51518510156201adf757859460018060a01b0362024d70826200743f865162004cef565b51166000526020611f49815262024da16200680d62024b0462024342866000206202433b620076a1878c0162007387565b51116201adee5762024db39062004cdf565b9462024d30565b865162461bcd60e51b815260206004820152603160248201527f43452049445f3730383a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b865162461bcd60e51b815260206004820152602e60248201527f43452049445f3730383a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b929160408082019260019384815151036202508357600262024e8f825162004cef565b5151036202502a5784959660001462024f66576000945b62024eb657505050505050600090565b62024ec2815162004cef565b51518510156201adf757859460018060a01b0362024ee6826200743f855162004cef565b51166000526020611f49815262024f0f62024342866000206202433b620076a185890162007387565b9086019062024f236200680d835162004cef565b51811015918262024f48575b50506201adee5762024f419062004cdf565b9462024ea6565b62024f5b919250620169f0905162004cef565b511015388062024f2f565b6000945b62024f7a57505050505050600090565b62024f86815162004cef565b51518510156201adf757859460018060a01b0362024faa826200743f855162004cef565b51166000526020611f49815262024fd362024342866000206202433b620076a185890162007387565b9086019062024fe76200680d835162004cef565b5181101591826202500c575b50506201adee57620250059062004cdf565b9462024f6a565b6202501f919250620169f0905162004cef565b511015388062024ff3565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3730393a2054686520414444524553535f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3730393a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b92916040808201926001938481515103620252885784620250fe825162004cef565b5151036202522f57849596600014620251a5576000945b6202512257505050505090565b6202512e815162004cef565b51518510156201d47c5760018060a01b0362025150866200743f845162004cef565b51166000526020611f4981526202518b6200680d6202518162024342876000206202433b620076a1878a0162007387565b9287015162004cef565b51116201ad8c576202519e869562004cdf565b9462025115565b6000945b620251b657505050505090565b620251c2815162004cef565b51518510156201d47c5760018060a01b03620251e4866200743f845162004cef565b51166000526020611f498152620252156200680d6202518162024342876000206202433b620076a1878a0162007387565b51116201ad8c5762025228869562004cdf565b94620251a9565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731303a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731303a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9291604080820192600193848151510362025483578462025303825162004cef565b5151036202542a57849596600014620253a0576000945b6202532757505050505090565b62025333815162004cef565b51518510156201d47c5760018060a01b0362025355866200743f845162004cef565b51166000526020611f498152620253866200680d6202518162024342876000206202433b620076a1878a0162007387565b51106201ad8c5762025399869562004cdf565b946202531a565b6000945b620253b157505050505090565b620253bd815162004cef565b51518510156201d47c5760018060a01b03620253df866200743f845162004cef565b51166000526020611f498152620254106200680d6202518162024342876000206202433b620076a1878a0162007387565b51106201ad8c5762025423869562004cdf565b94620253a4565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731313a2054686520414444524553535f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731313a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b92916040808201926001938481515103620256e9576002620254ff825162004cef565b5151036202569057849596600014620255d1576000945b6202552357505050505090565b6202552f815162004cef565b51518510156201d47c5760018060a01b0362025551866200743f845162004cef565b51166000526020611f4981526202557a62024342856000206202433b620076a185880162007387565b908501906202558e6200680d835162004cef565b518110918215620255b4575b50506201ad8c57620255ad869562004cdf565b9462025516565b620255c7919250620169f0905162004cef565b511038806202559a565b6000945b620255e257505050505090565b620255ee815162004cef565b51518510156201d47c5760018060a01b0362025610866200743f845162004cef565b51166000526020613f0181526202563962024342856000206202433b620076a185880162007387565b908501906202564d6200680d835162004cef565b51811091821562025673575b50506201ad8c576202566c869562004cdf565b94620255d5565b62025686919250620169f0905162004cef565b5110388062025659565b825162461bcd60e51b815260206004820152603160248201527f43452049445f3731323a2054686520414444524553535f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b825162461bcd60e51b815260206004820152602e60248201527f43452049445f3731323a2054686520414444524553535f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b6001938085036202575a5750620032d2935062025e2a565b60028103620257705750620032d2935062025f14565b600381036202587a575050906040019180835151036202581e5762025796835162004cef565b515103620257bf57620257b96200680d60018060a01b0380935116935162004cef565b51161490565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f333a20414444524553535f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f333a20414444524553535f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b60049080820362025893575050620032d2935062026059565b60058103620258aa575050620032d293506202619e565b60068103620258c1575050620032d29350620262e3565b60078103620258d8575050620032d293506202651f565b60088103620258ef575050620032d293506202677d565b6009810362025906575050620032d29350620269bd565b600a81036202591d575050620032d2935062026bf1565b600b810362025934575050620032d2935062026ef3565b600c81036202594b575050620032d293506202711f565b600d810362025962575050620032d293506202736f565b600e810362025979575050620032d2935062027568565b600f810362025990575050620032d29350620278b8565b60108103620259a7575050620032d2935062027ab1565b60118103620259be575050620032d2935062027bd1565b60128103620259d5575050620032d2935062027cf1565b60138103620259ec575050620032d2935062027e87565b6014810362025a03575050620032d2935062027fa7565b6015810362025a1a575050620032d29350620280c7565b6019810362025a31575050620032d2935062028250565b601a810362025a48575050620032d2935062028388565b601b810362025a5f575050620032d29350620284c0565b601c8195929394951460001462025ba2575060200193808551510362025b495762025a8b855162004cef565b51510362025af057506000901562025aca5750516001600160a01b03166000908152611f47602052604090205490620167cc906200680d905162004cef565b90516001600160a01b03168152613eff602052604090205490620167cc906200680d9081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32383a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b601d810362025cdd575060200193808551510362025c845762025bc6855162004cef565b51510362025c2b57506000901562025c055750516001600160a01b03166000908152611f47602052604090205490620168cd906200680d905162004cef565b90516001600160a01b03168152613eff602052604090205490620168cd906200680d9081565b60849060206040519162461bcd60e51b8352820152603260248201527f43452049445f32393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152fd5b60405162461bcd60e51b8152602081840152602f60248201527f43452049445f32393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b601e810362025e0f5750602001938451510362025db657600262025d02855162004cef565b51510362025d5d57506000901562025d3f5750516001600160a01b03166000908152611f476020526040902054620169cd6200680d835162004cef565b90516001600160a01b03168152613eff6020526040902054620245f3565b60849060206040519162461bcd60e51b8352820152603360248201527f43452049445f33303a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152fd5b60849060206040519162461bcd60e51b8352820152602f60248201527f43452049445f33303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152fd5b9294509291601f14159050620065c757620032d2926202862f565b91909160018251510362025ebb571562025e8757620032d29160018060a01b03905116600052611f406020526200116462025e8162025e726001604060002001935162004cef565b51926040519283809262002cb6565b6203358c565b620032d29160018060a01b03905116600052613ef86020526200116462025e8162025e726001604060002001935162004cef565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f313a20535452494e475f4152524159206d75737420686176652060448201526a1bdb9948195b195b595b9d60aa1b6064820152608490fd5b916020019160018351510362025ffd57600162025f32845162004cef565b51510362025f9e571562025f6f57516001600160a01b03166000908152611f406020526040902060020154905162016afb906200680d9062004cef565b516001600160a01b03166000908152613ef86020526040902060020154905162016afb906200680d9062004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f323a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f323a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b91602001916001835151036202614257600162026077845162004cef565b515103620260e35715620260b457516001600160a01b03166000908152611f4060205260409020600201549051620167cc906200680d9062004cef565b516001600160a01b03166000908152613ef860205260409020600201549051620167cc906200680d9062004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f343a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f343a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b916020019160018351510362026287576001620261bc845162004cef565b515103620262285715620261f957516001600160a01b03166000908152611f4060205260409020600201549051620168cd906200680d9062004cef565b516001600160a01b03166000908152613ef860205260409020600201549051620168cd906200680d9062004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f353a2055494e543235365f324441525241595b305d206d757374604482015270081a185d99481bdb9948195b195b595b9d607a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f353a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9091602080910191600183515103620264c357600262026304845162004cef565b51510362026463576202631c6200680d845162004cef565b516202632d620169f0855162004cef565b5110620263dd5715620263ae5760018060a01b039081845116600052611f4091828252600260406000200154620263696200680d865162004cef565b51111594856202637b57505050505090565b909192939450511660005252620263a0620169f0600260406000200154925162004cef565b5110153880808080620174c1565b60018060a01b039081845116600052613ef891828252600260406000200154620263696200680d865162004cef565b60405162461bcd60e51b815260048101839052605260248201527f43452049445f363a2055494e543235365f324441525241595b305d5b305d206d60448201527f757374206265206c657373207468616e206f7220657175616c20746f2055494e606482015271543235365f324441525241595b305d5b315d60701b608482015260a490fd5b60405162461bcd60e51b815260048101839052603260248201527f43452049445f363a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f363a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b9092919260208094019060019283835151036202669e5762026542835162004cef565b515115620266365794839495600014620265c6576000935b62026569575050505050600090565b62026575835162004cef565b5151841015620174c957849360018060a01b03835116600052611f408252600260406000200154620265ad826200743f875162004cef565b5114620174c157620265bf9062004cdf565b936202655a565b6000935b620265d9575050505050600090565b620265e5835162004cef565b5151841015620174c957849360018060a01b03835116600052613ef882526002604060002001546202661d826200743f875162004cef565b5114620174c1576202662f9062004cdf565b93620265ca565b60405162461bcd60e51b815260048101879052603a60248201527f43452049445f373a2055494e543235365f324441525241595b305d206d757374604482015279081a185d9948185d081b19585cdd081bdb9948195b195b595b9d60321b6064820152608490fd5b60405162461bcd60e51b815260048101879052602e60248201527f43452049445f373a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202670257565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f383a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062033a8c833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b9160200191600183515103620268de5760026202679b845162004cef565b5151036202687e5780156202686157620267c96103e8620267c16200680d865162004cef565b5110620266fa565b156202681757620267df6200680d835162004cef565b516103e881101562004cfd5760039160018060a01b03905116600052811b01602052620167cc620169f0604060002054925162004cef565b620268276200680d835162004cef565b516103e881101562004cfd57611fbb9160018060a01b0390511660005260031b01602052620167cc620169f0604060002054925162004cef565b620268786103e8620267c16200680d865162004cef565b620267c9565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f383a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f383a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b156202694257565b60405162461bcd60e51b815260206004820152605860248201527f43452049445f393a2055494e543235365f324441525241595b305d5b305d2028604482015260008051602062033a8c833981519152606482015277081d1a19481b195b99dd1a081bd9881d1bdad95b931a5cdd60421b608482015260a490fd5b916020019160018351510362026b1e576002620269db845162004cef565b51510362026abe57801562026aa15762026a096103e862026a016200680d865162004cef565b51106202693a565b1562026a575762026a1f6200680d835162004cef565b516103e881101562004cfd5760039160018060a01b03905116600052811b01602052620168cd620169f0604060002054925162004cef565b62026a676200680d835162004cef565b516103e881101562004cfd57611fbb9160018060a01b0390511660005260031b01602052620168cd620169f0604060002054925162004cef565b62026ab86103e862026a016200680d865162004cef565b62026a09565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f393a2055494e543235365f324441525241595b305d206d75737460448201527120686176652074776f20656c656d656e747360701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f393a2055494e543235365f32444152524159206d75737420686160448201526d1d99481bdb9948195b195b595b9d60921b6064820152608490fd5b1562026b8257565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31303a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062033aac83398151915260648201526000805160206203380c833981519152608482015260a490fd5b91909160208092019160018351510362026e23576003918262026c15855162004cef565b51510362026dc057801562026da35762026c436103e862026c3b6200680d875162004cef565b511062026b7a565b1562026cfe5762026c596200680d845162004cef565b51916103e88084101562004cfd5785516001600160a01b03908116600090815294831b830184526040852054865162026c9790620169f09062004cef565b511115968762026cac575b5050505050505090565b909192939495965062026cc46200680d885162004cef565b519283101562022a4b5751168452811b0190526040902054905162026cee906201d46a9062004cef565b5110153880808080808062026ca2565b62026d0e6200680d845162004cef565b516103e88082101562004cfd5760018060a01b039384875116946000958652611fbb8094831b018552604086205462026d4c620169f0895162004cef565b511115978862026d6157505050505050505090565b90919293949596975062026d7a6200680d895162004cef565b519384101562022b4f57511685521b0190526040902054905162022a3a906201d46a9062004cef565b62026dba6103e862026c3b6200680d875162004cef565b62026c43565b60405162461bcd60e51b815260048101839052603560248201527f43452049445f31303a2055494e543235365f324441525241595b305d206d757360448201527474206861766520746872656520656c656d656e747360581b6064820152608490fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f31303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152fd5b1562026e8457565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31313a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062033aac83398151915260648201526000805160206203380c833981519152608482015260a490fd5b91602001916001835151036202704e57600262026f11845162004cef565b51510362026ff457801562026fd75762026f3f6103e862026f376200680d865162004cef565b511062026e7c565b1562026f8d5762026f556200680d835162004cef565b516103e881101562004cfd5760039160018060a01b03905116600052811b0160205262016afb620169f0604060002054925162004cef565b62026f9d6200680d835162004cef565b516103e881101562004cfd57611fbb9160018060a01b0390511660005260031b0160205262016afb620169f0604060002054925162004cef565b62026fee6103e862026f376200680d865162004cef565b62026f3f565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b15620270b057565b60405162461bcd60e51b815260206004820152605960248201527f43452049445f31323a2055494e543235365f324441525241595b305d5b305d20604482015260008051602062033aac83398151915260648201526000805160206203380c833981519152608482015260a490fd5b9160200191600183515103620273155760026202713d845162004cef565b515103620272bb5780156202729e576202716b6103e8620271636200680d865162004cef565b5110620270a8565b156202721057620271816200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b03166000908152600392831b90920160205260408220546064808202939180159085049091141715620271fc57620271d56200680d855162004cef565b5191821015620014ce57506202161e620167cc926006620169f09360031b015490620050d4565b634e487b7160e01b81526011600452602490fd5b620272206200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620271fc57620272766200680d855162004cef565b5191821015620014ce57506202161e620167cc92611fbe620169f09360031b015490620050d4565b620272b56103e8620271636200680d865162004cef565b6202716b565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31323a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31323a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b91602001916001835151036202750e5760026202738d845162004cef565b515103620274b457156202742657620273ab6200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b03166000908152600392831b90920160205260408220546064808202939180159085049091141715620271fc57620273ff6200680d855162004cef565b5191821015620014ce57506202161e620168cd926006620169f09360031b015490620050d4565b620274366200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620271fc576202748c6200680d855162004cef565b5191821015620014ce57506202161e620168cd92611fbe620169f09360031b015490620050d4565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31333a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31333a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b906020809301916001835151036202785e57600262027588845162004cef565b515103620278045715620276c857620275a66200680d835162004cef565b516103e8908181101562004cfd5760018060a01b03948584511693600094855260038093811b0182526040852054606481029080820460641490151715620276b457620275f86200680d885162004cef565b518581101562022b4f57841b600601546202761391620050d4565b62027623620169f0885162004cef565b511115968762027637575050505050505090565b90919293949596506202764f6200680d885162004cef565b51918583101562022b4f5751168552821b8201905260408320546064808202949180159086049091141715620271fc576202768f6200680d865162004cef565b5192831015620014ce57501b6006015462026cee916201d46a916202161e91620050d4565b634e487b7160e01b86526011600452602486fd5b620276d86200680d835162004cef565b51906103e88083101562004cfd5760018060a01b039485835116936000948552611fbb809160031b018252604085205493606485029480860460641490151715620276b4576202772d6200680d885162004cef565b51948486101562022b4f576202774e90611fbe809760031b015490620050d4565b6202775e620169f0895162004cef565b51111597886202777357505050505050505090565b9091929394959697506202778c6200680d895162004cef565b519185831015620277f0575116865260031b019052604083205492606484029380850460641490151715620271fc57620277cb6200680d865162004cef565b5191821015620014ce575060031b015462022a3a916201d46a916202161e91620050d4565b634e487b7160e01b88526032600452602488fd5b60405162461bcd60e51b815260048101859052603360248201527f43452049445f31343a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260048101859052602f60248201527f43452049445f31343a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027a57576002620278d6845162004cef565b515103620279fd57156202796f57620278f46200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b03166000908152600392831b90920160205260408220546064808202939180159085049091141715620271fc57620279486200680d855162004cef565b5191821015620014ce57506202161e62016afb926006620169f09360031b015490620050d4565b6202797f6200680d835162004cef565b51906103e8908183101562004cfd57516001600160a01b0316600090815260039290921b611fbb0160205260408220546064808202939180159085049091141715620271fc57620279d56200680d855162004cef565b5191821015620014ce57506202161e62016afb92611fbe620169f09360031b015490620050d4565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31353a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027b7757600162027acf845162004cef565b51510362027b1d57801562027afd576202161e6200680d91620167cc9360018060a01b03905116906201b5d7565b5051620167cc906200680d906202161e906001600160a01b03166201b583565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027c9757600162027bef845162004cef565b51510362027c3d57801562027c1d576202161e6200680d91620168cd9360018060a01b03905116906201b5d7565b5051620168cd906200680d906202161e906001600160a01b03166201b583565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31373a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b90916020019060018251510362027e2d57600262027d10835162004cef565b51510362027dd357801562027d815782516001600160a01b039062027d38908216836201b5d7565b62027d486200680d855162004cef565b511115938462027d59575050505090565b62027d74939450916202161e91620169f0935116906201b5d7565b51101538808080620051c4565b5081516001600160a01b039062027d9a9082166201b583565b62027daa6200680d845162004cef565b511115928362027dba5750505090565b62021a61929350620169f0916202161e9151166201b583565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f31383a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31383a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362027f4d57600162027ea5845162004cef565b51510362027ef357801562027ed3576202161e6200680d91620167cc9360018060a01b03905116906201c48e565b5051620167cc906200680d906202161e906001600160a01b03166201c43a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f31393a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f31393a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b91602001916001835151036202806d57600162027fc5845162004cef565b5151036202801357801562027ff3576202161e6200680d91620168cd9360018060a01b03905116906201c48e565b5051620168cd906200680d906202161e906001600160a01b03166201c43a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32303a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32303a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b909160200190600182515103620281f6576002620280e6835162004cef565b5151036202819c5780156202814a5782516001600160a01b03906202810e908216836201c48e565b6202811e6200680d855162004cef565b51111593846202812f575050505090565b62027d74939450916202161e91620169f0935116906201c48e565b5081516001600160a01b0390620281639082166201c43a565b620281736200680d845162004cef565b5111159283620281835750505090565b62021a61929350620169f0916202161e9151166201c43a565b60405162461bcd60e51b815260206004820152603360248201527f43452049445f32313a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32313a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b91602001916001835151036202832e5760016202826e845162004cef565b515103620282d45715620282a857516001600160a01b03166000908152611f4560205260409020549051620167cc906200680d9062004cef565b516001600160a01b03166000908152613efd60205260409020549051620167cc906200680d9062004cef565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32353a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32353a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b916020019160018351510362028466576001620283a6845162004cef565b5151036202840c5715620283e057516001600160a01b03166000908152611f4560205260409020549051620168cd906200680d9062004cef565b516001600160a01b03166000908152613efd60205260409020549051620168cd906200680d9062004cef565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f32363a2055494e543235365f324441525241595b305d206d757360448201526000805160206203386c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f32363a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b9091602080910191600183515103620285d5576002620284e1845162004cef565b5151036202857b57156202854f5760018060a01b039081845116600052611f45918282526040600020546202851b6200680d865162004cef565b51111594856202852d57505050505090565b909192939450511660005252620263a0620169f0604060002054925162004cef565b60018060a01b039081845116600052613efd918282526040600020546202851b6200680d865162004cef565b60405162461bcd60e51b815260048101839052603360248201527f43452049445f32373a2055494e543235365f324441525241595b305d206d75736044820152600080516020620337cc8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f32373a2055494e543235365f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b909160400160019283825151036202870b57839215620286aa576000925b6202865b5750505050600090565b62028667825162004cef565b51518310156201719057839260018060a01b03808351169062028690836200743f875162004cef565b511614620051c457620286a39062004cdf565b926202864d565b6000925b620286bc5750505050600090565b620286c8825162004cef565b51518310156201719057839260018060a01b038083511690620286f1836200743f875162004cef565b511614620051c457620287049062004cdf565b92620286ae565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f33313a20414444524553535f32444152524159206d7573742068604482015260008051602062033a4c8339815191526064820152608490fd5b9161012d8114620289f85761012e8114620289ec5761012f8114620289e0576101308114620289d4576101318114620289c8576101328114620289bc576101338114620289b0576101348114620289a4576101358114620289985761013681146202898c5761013781146202898057610138811462028974576101398114620289685761013a81146202895c5761013b8114620289505761013c8114620289445761013d8114620289375761013e81146202892a5761013f81146202891d5761014081146202891057610141811462028904576101428114620288f8576101438114620288ec576101448114620288e0576101458114620288d4576101468114620288c8576101478114620288bc576101738114620288af576101748114620288a3576101751462028898575050600090565b620032d2916202b213565b50620032d2916202b050565b5050620032d2906202aff4565b50620032d2916202aea6565b50620032d2916202ab5c565b50620032d2916202a9e2565b50620032d2916202a861565b50620032d2916202a69c565b50620032d2916202a53a565b50620032d2916202a3bf565b5050620032d2906202a2b8565b5050620032d2906202a1a3565b5050620032d2906202a0a1565b5050620032d29062029f99565b50620032d29162029e18565b50620032d29162029c97565b50620032d29162029b14565b50620032d29162029991565b50620032d29162029810565b50620032d2916202968f565b50620032d2916202950c565b50620032d29162029389565b50620032d2916202924a565b50620032d2916202910b565b50620032d29162028fe6565b50620032d29162028ec2565b50620032d29162028d84565b50620032d29162028c46565b50620032d29162028b22565b50620032d2919060200190600191828151510362028ac9576020820151602681101562002a2357600d03620065c75762028a3383926202b3bf565b6000935b62028a455750505050600090565b62028a51825162004cef565b515184101562017190576000835b62028a79575b5062028a72839462004cdf565b9362028a37565b939291815185101562028ac05762028a97846200743f835162004cef565b5162028aa4868462004d46565b511462016c4d5762028ab883949562004cdf565b909262028a5f565b91929362028a65565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330313a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028bed576020820151602681101562002a2357600d03620065c75762028b5783926202b3bf565b6000935b62028b695750505050600090565b62028b75825162004cef565b515184101562017190576000835b62028b9d575b5062028b96839462004cdf565b9362028b5b565b939291815185101562028be45762028bbb846200743f835162004cef565b5162028bc8868462004d46565b511462016c4d5762028bdc83949562004cdf565b909262028b83565b91929362028b89565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330323a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028d2b576020820151602681101562002a2357600d03620065c75762028c7b83926202b3bf565b6000925b62028c8a5750505090565b62028c96825162004cef565b515183101562016e0d57600080855b62028cc5575b501562016d865762028cbe849362004cdf565b9262028c7f565b8295939194955181101562028d205762028ce5866200743f845162004cef565b5162028cf2828562004d46565b511462028d13579062028d0784939262004cdf565b90939594919262028ca5565b5091809493503862028cab565b949390929462028cab565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330333a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028e69576020820151602681101562002a2357600d03620065c75762028db983926202b3bf565b6000925b62028dc85750505090565b62028dd4825162004cef565b515183101562016e0d57600080855b62028e03575b501562016d865762028dfc849362004cdf565b9262028dbd565b8295939194955181101562028e5e5762028e23866200743f845162004cef565b5162028e30828562004d46565b511462028e51579062028e4584939262004cdf565b90939594919262028de3565b5091809493503862028de9565b949390929462028de9565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330343a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b9060200190600191828151510362028f8d576020820151602681101562002a2357600e03620065c75762028ef783926202b3bf565b6000935b62028f095750505050600090565b62028f15825162004cef565b515184101562017190576000835b62028f3d575b5062028f36839462004cdf565b9362028efb565b939291815185101562028f845762028f5b846200743f835162004cef565b5162028f68868462004d46565b511462016c4d5762028f7c83949562004cdf565b909262028f23565b91929362028f29565b60405162461bcd60e51b815260206004820152602b60248201527f43452049445f3330353a205468652055494e545f32444152524159206c656e6760448201526a7468206973206e6f74203160a81b6064820152608490fd5b90602001906001918281515103620290b1576020820151602681101562002a2357600e03620065c7576202901b83926202b3bf565b6000935b6202902d5750505050600090565b62029039825162004cef565b515184101562017190576000835b62029061575b506202905a839462004cdf565b936202901f565b9392918151851015620290a8576202907f846200743f835162004cef565b516202908c868462004d46565b511462016c4d57620290a083949562004cdf565b909262029047565b9192936202904d565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330363a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620291f0576020820151602681101562002a2357600e03620065c7576202914083926202b3bf565b6000925b6202914f5750505090565b6202915b825162004cef565b515183101562016e0d57600080855b6202918a575b501562016d865762029183849362004cdf565b9262029144565b82959391949551811015620291e557620291aa866200743f845162004cef565b51620291b7828562004d46565b5114620291d85790620291cc84939262004cdf565b9093959491926202916a565b5091809493503862029170565b949390929462029170565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330373a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b906020019060019182815151036202932f576020820151602681101562002a2357600e03620065c7576202927f83926202b3bf565b6000925b6202928e5750505090565b6202929a825162004cef565b515183101562016e0d57600080855b620292c9575b501562016d8657620292c2849362004cdf565b9262029283565b829593919495518110156202932457620292e9866200743f845162004cef565b51620292f6828562004d46565b51146202931757906202930b84939262004cdf565b909395949192620292a9565b50918094935038620292af565b9493909294620292af565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330383a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620294b2576002620293a9825162004cef565b51510362029458576020820151602681101562002a2357600d03620065c757620293d483926202b3bf565b906000925b620293e75750505050600090565b8151831015620171905782620293ff85948462004d46565b51620294106200680d845162004cef565b5111158062029431575b620051c4576202942a9062004cdf565b92620293d9565b506202943e818462004d46565b516202944f620169f0845162004cef565b5110156202941a565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3330393a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3330393a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620296355760026202952c825162004cef565b515103620295db576020820151602681101562002a2357600d03620065c7576202955783926202b3bf565b906000925b6202956a5750505050600090565b81518310156201719057826202958285948462004d46565b51620295936200680d845162004cef565b51111580620295b4575b620051c457620295ad9062004cdf565b926202955c565b50620295c1818462004d46565b51620295d2620169f0845162004cef565b5110156202959d565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331303a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331303a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b90602001906001918281515103620297b6576002620296af825162004cef565b5151036202975c576020820151602681101562002a2357600d03620065c757620296da83926202b3bf565b60009182945b620296ed57505050905090565b815185101562016c555762029703858362004d46565b51620297146200680d835162004cef565b5111801562029736575b62016c4d576202972f849562004cdf565b94620296e0565b5062029743858362004d46565b5162029754620169f0835162004cef565b51106202971e565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331313a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331313a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b906020019060019182815151036202993757600262029830825162004cef565b515103620298dd576020820151602681101562002a2357600d03620065c7576202985b83926202b3bf565b60009182945b6202986e57505050905090565b815185101562016c555762029884858362004d46565b51620298956200680d835162004cef565b51118015620298b7575b62016c4d57620298b0849562004cdf565b9462029861565b50620298c4858362004d46565b51620298d5620169f0835162004cef565b51106202989f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331323a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331323a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029aba576002620299b1825162004cef565b51510362029a60576020820151602681101562002a2357600e03620065c757620299dc83926202b3bf565b906000925b620299ef5750505050600090565b815183101562017190578262029a0785948462004d46565b5162029a186200680d845162004cef565b5111158062029a39575b620051c45762029a329062004cdf565b92620299e1565b5062029a46818462004d46565b5162029a57620169f0845162004cef565b51101562029a22565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331333a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331333a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029c3d57600262029b34825162004cef565b51510362029be3576020820151602681101562002a2357600e03620065c75762029b5f83926202b3bf565b906000925b62029b725750505050600090565b815183101562017190578262029b8a85948462004d46565b5162029b9b6200680d845162004cef565b5111158062029bbc575b620051c45762029bb59062004cdf565b9262029b64565b5062029bc9818462004d46565b5162029bda620169f0845162004cef565b51101562029ba5565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331343a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331343a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029dbe57600262029cb7825162004cef565b51510362029d64576020820151602681101562002a2357600e03620065c75762029ce283926202b3bf565b60009182945b62029cf557505050905090565b815185101562016c555762029d0b858362004d46565b5162029d1c6200680d835162004cef565b5111801562029d3e575b62016c4d5762029d37849562004cdf565b9462029ce8565b5062029d4b858362004d46565b5162029d5c620169f0835162004cef565b511062029d26565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331353a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331353a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200190600191828151510362029f3f57600262029e38825162004cef565b51510362029ee5576020820151602681101562002a2357600e03620065c75762029e6383926202b3bf565b60009182945b62029e7657505050905090565b815185101562016c555762029e8c858362004d46565b5162029e9d6200680d835162004cef565b5111801562029ebf575b62016c4d5762029eb8849562004cdf565b9462029e69565b5062029ecc858362004d46565b5162029edd620169f0835162004cef565b511062029ea7565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3331363a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3331363a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b6020808201908151602681101562002a2357600d1480156202a08b575b6202a03d57508051602681101562002a2357600f149081156202a026575b5062029fe05750600090565b6000805b606060408401510151805182101562017689576202a0058260c09262004d46565b5101511562022e325760406202a01d60609262004cdf565b91505062029fe4565b905051602681101562002a2357600c143862029fd4565b60009150815b816040850151015180518210156202a081576202a0638260019262004d46565b5115150362017682576202a07960409162004cdf565b90506202a043565b5050505050600190565b508151602681101562002a2357600e1462029fb6565b6020808201908151602681101562002a2357600d1480156202a18d575b6202a14957508051602681101562002a2357600f149081156202a132575b506202a0e85750600090565b6000805b6060604084015101518051821015620176895760c06202a10f8360019362004d46565b51015115151462022e325760406202a12960609262004cdf565b9150506202a0ec565b905051602681101562002a2357600c14386202a0dc565b60009150815b816040850151015180518210156202a081576202a16f8260019262004d46565b5115151462017682576202a18560409162004cdf565b90506202a14f565b508151602681101562002a2357600e146202a0be565b6020808201908151602681101562002a2357600d1480156202a2a2575b6202a25457508051602681101562002a2357600f149081156202a23d575b506202a1ea5750600090565b60005b6060604083015101518051821015620065c757819060c06202a213600193849362004d46565b5101511515146202a237575060406202a22e60609262004cdf565b9150506202a1ed565b91505090565b905051602681101562002a2357600c14386202a1de565b905060005b8160408401510151805182101562016d865781906202a27c600192839262004d46565b511515146202a29b57506202a29360409162004cdf565b90506202a259565b9250505090565b508151602681101562002a2357600e146202a1c0565b6020808201908151602681101562002a2357600d1480156202a3a9575b6202a36257508051602681101562002a2357600f149081156202a34b575b506202a2ff5750600090565b60005b6060604083015101518051821015620065c7576202a3238260c09262004d46565b510151156202a3445760406202a33b60609262004cdf565b9150506202a302565b5050600190565b905051602681101562002a2357600c14386202a2f3565b905060005b8160408401510151805182101562016d865781906202a38a600192839262004d46565b511515036202a29b57506202a3a160409162004cdf565b90506202a367565b508151602681101562002a2357600e146202a2d5565b60208092019160019283815151036202a4e0576202a3df84915162004cef565b5151036202a487578082018051602681101562002a2357600f141590816202a46f575b50620065c757600091835b6202a41b5750505050600090565b60408101926060845101519384518210156201e540576202a4566200680d60a0866202a449868b9a62004d46565b5101519351015162004cef565b5114620051c4576202a4689062004cdf565b926202a40d565b905051602681101562002a2357600c1415386202a402565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332313a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332313a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b60208092019160019283815151036202a642578183018051602681101562002a2357600f141590816202a62a575b5062016d865783926000945b6202a583575050505050600090565b6040810160608082510151518710156202a62257906000865b6202a5b8575b5050506202a5b1849562004cdf565b946202a574565b6202a5c4855162004cef565b51518110156202a61c57856202a5df89858551015162004d46565b5101516202a5f3826200743f885162004cef565b51146202a61157906202a60887939262004cdf565b9091926202a59c565b505050505050905090565b6202a5a2565b505062016f9a565b905051602681101562002a2357600c1415386202a568565b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332323a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b60208092019160019283815151036202a8075760026202a6bd825162004cef565b5151036202a7ad578183018051602681101562002a2357600f141590816202a795575b5062016d8657600092845b6202a6fa575050505050600090565b604081019360609485815101519586518310156202a78c57828691826202a723838c9b62004d46565b5101516202a7366200680d895162004cef565b51111593846202a75c575b50505050620174c1576202a7559062004cdf565b936202a6eb565b6202a76c93945051015162004d46565b5101516202a77f620169f0855162004cef565b511015848238806202a741565b50505062016f9a565b905051602681101562002a2357600c1415386202a6e0565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3332333a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3332333a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b602080920160019283825151036202a98957836202a880835162004cef565b5151036202a92a578083018051602681101562002a2357600f141590816202a912575b5062016d8657600092845b6202a8bd575050505050600090565b6060604082015101519384518110156202a90b57826202a8df82889762004d46565b5101516202a8f26200680d865162004cef565b5110620174c1576202a9049062004cdf565b936202a8ae565b5062016f9a565b905051602681101562002a2357600c1415386202a8a3565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332343a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332343a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152fd5b602080920160019283825151036202ab0357836202aa01835162004cef565b5151036202aaa4578083018051602681101562002a2357600f141590816202aa8c575b5062016d8657600092845b6202aa3e575050505050600090565b6060604082015101519384518110156202a90b57826202aa6082889762004d46565b5101516202aa736200680d865162004cef565b5111620174c1576202aa859062004cdf565b936202aa2f565b905051602681101562002a2357600c1415386202aa24565b6084906040519062461bcd60e51b82526004820152603260248201527f43452049445f3332353a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152fd5b6084906040519062461bcd60e51b82526004820152602f60248201527f43452049445f3332353a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152fd5b906020019060019182815151036202ae4c57826202ab7b825162004cef565b5151036202adec57602082018051602681101562002a2357600f141590816202add4575b50620065c7576000939291825b6202abbb575b50600093505050565b60408101946060808751015180518310156202adcb576202abe1836202abe89262004d46565b5162005673565b906006918281101562002a235715806202adb2575b6202ad58576202ac166202abe184838b51015162004d46565b8281101562002a23578614806202ad98575b6202ad58576202ac416202abe184838b51015162004d46565b8281101562002a2357600280911490816202ad7d575b506202ad58576202ac716202abe184838b51015162004d46565b8281101562002a2357600380911490816202ad62575b506202ad58576202aca16202abe184838b51015162004d46565b978289101562002a23576004809914806202ad3e575b6202ad3357836202acd0926202abe19251015162004d46565b908110156202ad1e5784959650600580911490816202ad03575b50620051c4576202acfb9062004cdf565b94936202abac565b90506202ad156200680d855162004cef565b5114386202acea565b602187634e487b7160e01b6000525260246000fd5b509496505050505050565b50886202ad506200680d885162004cef565b51146202acb7565b5093955050505050565b90506202ad746200680d875162004cef565b5114386202ac87565b90506202ad8f6200680d875162004cef565b5114386202ac57565b50856202adaa6200680d875162004cef565b51146202ac28565b506202adc36200680d865162004cef565b51156202abfd565b5050506202abb2565b905051602681101562002a2357600c1415386202ab9f565b60405162461bcd60e51b815260206004820152603260248201527f43452049445f3332363a205468652055494e545f3235365f324441525241595b604482015271305d206c656e677468206973206e6f74203160701b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332363a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b906020019060019182815151036202af9a57602082018051602681101562002a2357600f141590816202af82575b50620065c75782916000935b6202aeee5750505050600090565b6040810160608082510151518610156201e54057906000855b6202af23575b5050506202af1c839462004cdf565b936202aee0565b6202af2f855162004cef565b51518110156202af7c57826202af4a88828551015162004d46565b5101516202af5e826200743f885162004cef565b511462023bcd57906202af7386939262004cdf565b9091926202af07565b6202af0d565b905051602681101562002a2357600c1415386202aed4565b60405162461bcd60e51b815260206004820152602f60248201527f43452049445f3332373a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b6020810151602681101562002a2357601303620074b25760005b60408083015101518051821015620065c757819060c06202b033600193849362004d46565b5101511515146202a23757506202b04a9062004cdf565b6202b00e565b6020918201805151600094936001939091600019016202b1b95760026202b078845162004cef565b5151036202b15f5781810151602681101562002a23576013036202b155576000959493929190835b6202b0af575b50505050909150565b604080820190808251015180518a10156202b14c578491826202b0d48c809462004d46565b5101516202b0e76200680d895162004cef565b51111593846202b11c575b505050506202b112576202b1098495969762004cdf565b9695946202b0a0565b5050509150915090565b6202b12c93945051015162004d46565b5101516202b13f620169f0855162004cef565b511015828838806202b0f2565b5050506202b0a6565b5060009450505050565b60405162461bcd60e51b815260048101839052603260248201527f43452049445f3337323a205468652055494e545f3235365f324441525241595b60448201526000805160206203374c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101839052602f60248201527f43452049445f3337323a205468652055494e545f3235365f3244415252415920604482015260008051602062033a0c8339815191526064820152608490fd5b9060200160019182825151036202b36457826202b231835162004cef565b5151036202b306576020810151602681101562002a2357601303620065c75782916000935b6202b2645750505050600090565b6040808301908082510151518610156201e54057906000855b6202b299575b5050506202b292839462004cdf565b936202b256565b6202b2a987848451015162004d46565b5151518110156202b300576202b2d1816202b2c989868651015162004d46565b515162004d46565b516202b2e26200680d865162004cef565b511462023bcd57906202b2f786939262004cdf565b9091926202b27d565b6202b283565b60405162461bcd60e51b815260206004820152603060248201527f43452049445f3337333a2054686520535452494e475f324441525241595b305d60448201526f206c656e677468206973206e6f74203160801b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f43452049445f3337333a2054686520535452494e475f32444152524159206c6560448201526c6e677468206973206e6f74203160981b6064820152608490fd5b6020908181018051602681101562002a2357600d149081156202b4da575b506202b3ff5750506040516202b3f38162002b3f565b60008152600036813790565b6040019160a0916202b4216202b419848651015162004cef565b515162004e62565b93600092835b6202b436868451015162004cef565b51518110156202b493576202b45081858551015162004d46565b516202b46e575b6202b4666202b4369162004cdf565b90506202b427565b936202b4666202b489828762001ac76202b436958c62004d46565b959150506202b457565b50935050506202b4a38162004e62565b9060005b8181106202b4b6575090925050565b806202b4c76202b4d4928762004d46565b5162001ac7828662004d46565b6202b4a7565b905051602681101562002a2357600e14386202b3dd565b9161025981146202b86d5761025a81146202b77d5761025b81146202b68d5761025c81146202b5775761025d81146202b56b5761025e81146202b55f5761025f81146202b55357610260146202b548575050600090565b620032d2916202bd2b565b50620032d2916202bbb1565b50620032d2916202baa0565b50620032d2916202b95d565b50602001906001825151036202b6335760026202b595835162004cef565b5151036202b5d957602001908151516202b5b46200680d835162004cef565b51111591826202b5c357505090565b620169f7919250620169f0905151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630343a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b50602001906001825151036202b7235760016202b6ab835162004cef565b5151036202b6c9576200680d602062016afb92015151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b50602001906001825151036202b8135760016202b79b835162004cef565b5151036202b7b9576200680d6020620168cd92015151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b50602001906001825151036202b9035760016202b88b835162004cef565b5151036202b8a9576200680d6020620167cc92015151925162004cef565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3630313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3630313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919091602080930160019182825151036202ba4657826202b97f835162004cef565b5151036202b9ec57938293946000935b6202b99e575050505050600090565b818101519384518110156202a90b576202b9c3620076a184620067a7848a9962004d46565b6202b9d36200680d865162004cef565b5114620174c1576202b9e59062004cdf565b936202b98f565b60405162461bcd60e51b815260048101869052603160248201527f43452049445f3630353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919060208091019060019182815151036202bb57578293946000945b6202bacb575050505050600090565b8281018051518610156202a90b576000855b6202baf8575b50506202baf1849562004cdf565b946202babc565b6202bb04845162004cef565b51518110156202bb51576202bb24620076a186620067a78a865162004d46565b6202bb35826200743f875162004cef565b511462023bcd57906202bb49869262004cdf565b90916202badd565b6202bae3565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b91909160208093019060019182815151036202bcd157846202bbd4825162004cef565b5151920191825151036202bc565782939460009283955b6202bbfa575b50505050905090565b805180518710156202bc4f57620076a183620067a7896202bc1b9462004d46565b6202bc2c876200743f865162004cef565b51036202bc46576202bc3f859662004cdf565b956202bbeb565b50505091505090565b506202bbf1565b60405162461bcd60e51b815260048101869052604760248201527f43452049445f3630373a205468652055494e543235365f324441525241595b3060448201527f5d206c656e677468206973206e6f7420657175616c20746f2070726f6772616d606482015266040d8cadccee8d60cb1b608482015260a490fd5b60405162461bcd60e51b815260048101869052602e60248201527f43452049445f3630373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b919060208091019060019182815151036202bdfb578293946000935b6202bd53575050505090565b8281018051518510156202bdf457856000918183905b6202bd8b575b5050501562016f9a576202bd84859462004cdf565b936202bd47565b6202bd97865162004cef565b51518110156202bdee576202bdb7620076a188620067a78b865162004d46565b6202bdc8826200743f895162004cef565b51146202bde1576202bdda9062004cdf565b826202bd69565b505090508538806202bd6f565b6202bd6f565b50620051c4565b60405162461bcd60e51b815260048101839052602e60248201527f43452049445f3630383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b916101cd81146202bea7576101ce81146202be9b576101cf81146202be8f576101d0146202be84575050600090565b620032d2916202c4b5565b50620032d2916202c293565b50620032d2916202c0a0565b50620032d2919060200160019182825151036202c0465760026202becc835162004cef565b5151036202bfec576202bedf816202c6a8565b15620065c7576202bef0906202c705565b9180939150518251036202bf8157600092845b6202bf12575050505050600090565b8051841015620174c957836202bf2a86958362004d46565b516202bf3b6200680d855162004cef565b5114806202bf5b575b620174c1576202bf549062004cdf565b936202bf03565b506202bf68818562004d46565b516202bf79620169f0855162004cef565b51106202bf44565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436313a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036202c2395760026202c0bf835162004cef565b5151036202c1df576202c0d2816202c6a8565b15620065c7576202c0e3906202c705565b9180939150518251036202c17457600092845b6202c105575050505050600090565b8051841015620174c957836202c11d86958362004d46565b516202c12e6200680d855162004cef565b5114806202c14e575b620174c1576202c1479062004cdf565b936202c0f6565b506202c15b818562004d46565b516202c16c620169f0855162004cef565b51116202c137565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436323a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036202c45b5760036202c2b2835162004cef565b5151036202c401576202c2c5816202c6a8565b15620065c7576202c2d6906202c705565b9180939150518251036202c39657600092845b6202c2f8575050505050600090565b8051841015620174c957836202c31086958362004d46565b516202c3216200680d855162004cef565b5114806202c36f575b806202c348575b620174c1576202c3419062004cdf565b936202c2e9565b506202c355818562004d46565b516202c3666201d46a855162004cef565b5110156202c331565b506202c37c818562004d46565b516202c38d620169f0855162004cef565b5111156202c32a565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436333a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436333a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b9060200160019182825151036202c64e5760026202c4d4835162004cef565b5151036202c5f4576202c4e7816202c6a8565b15620065c7576202c4f8906202c705565b9180939150518251036202c58957600092845b6202c51a575050505050600090565b8051841015620174c957836202c53286958362004d46565b516202c5436200680d855162004cef565b5114806202c563575b620174c1576202c55c9062004cdf565b936202c50b565b506202c570818562004d46565b516202c581620169f0855162004cef565b51146202c54c565b60405162461bcd60e51b815260206004820152604860248201527f43452049445f3436343a2054686520746f6b656e20636c617373206c6973742060448201526000805160206203382c8339815191526064820152670e840d8cadccee8d60c31b608482015260a490fd5b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3436343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3436343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b6020018051602681101562002a23576014149081156202c6ed575b81156202c6d6575b506202401c57600090565b905051602681101562002a2357601e14386202c6cb565b80915051602681101562002a2357601514906202c6c3565b6202c710816202c6a8565b156202c81657602081018051602681101562002a23576014146202c801578051602681101562002a23576015146202c7ca5751602681101562002a2357601e146202c79857506040516202c7648162002b3f565b60008152604051916202c7778362002b3f565b60008352604051916202c78a8362002b3f565b600083526000368137929190565b604001906202c7ac60a08351015162004cef565b51906202c7c360a062007446818651015162004d13565b5191929190565b50604001906202c7df60a08351015162004cef565b51906202c7c360a06202c7f6818651015162004d24565b519451015162004d35565b50604001906202c7ac60a08351015162004cef565b60405162461bcd60e51b815260206004820152606860248201527f43452049445f3436313a20546865206f7065726174696f6e206973206e6f742060448201527f746f6b656e206f7065726174696f6e20776974682063617368287061792d746f60648201527f2d6d696e742c207061792d746f2d7472616e736665722c206275726e2d616e646084820152672d726566756e642960c01b60a482015260c490fd5b916101af81146202c962576101b081146202c956576101b181146202c94a576101b281146202c93e576101b381146202c932576101b481146202c926576101b581146202c91a576101b6146202c90f575050600090565b620032d2916202d3ab565b50620032d2916202d206565b50620032d2916202d0a1565b50620032d2916202cf3c565b50620032d2916202cdd7565b50620032d2916202cc32565b50620032d2916202cacd565b50620032d291906020019060019182815151036202ca7357826202c987825162004cef565b5151036202ca19576020820151602681101562002a2357601103620065c757600091835b6202c9b95750505050600090565b604081019260a0936202c9d0858251015162004cef565b51518210156201e54057816200743f87966202c9ef9351015162004cef565b516202ca006200680d855162004cef565b5110620051c4576202ca129062004cdf565b926202c9ab565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433313a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433313a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202cbd857826202caec825162004cef565b5151036202cb7e576020820151602681101562002a2357601103620065c757600091835b6202cb1e5750505050600090565b604081019260a0936202cb35858251015162004cef565b51518210156201e54057816200743f87966202cb549351015162004cef565b516202cb656200680d855162004cef565b5111620051c4576202cb779062004cdf565b926202cb10565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433323a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433323a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202cd7d5760026202cc52825162004cef565b5151036202cd23576020820151602681101562002a2357601103620065c757600091835b6202cc845750505050600090565b604081019260a0936202cc9b858251015162004cef565b51518210156201e5405781856202ccbc826200743f8a998651015162004cef565b516202cccd6200680d885162004cef565b51111592836202ccf2575b505050620051c4576202cceb9062004cdf565b926202cc76565b5101516202cd0692506200743f9062004cef565b516202cd17620169f0855162004cef565b5110158138806202ccd8565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433333a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433333a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202cee257826202cdf6825162004cef565b5151036202ce88576020820151602681101562002a2357601103620065c757600091835b6202ce285750505050600090565b604081019260a0936202ce3f858251015162004cef565b51518210156201e54057816200743f87966202ce5e9351015162004cef565b516202ce6f6200680d855162004cef565b5114620051c4576202ce819062004cdf565b926202ce1a565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433343a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433343a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d04757826202cf5b825162004cef565b5151036202cfed576020820151602681101562002a2357601203620065c757600091835b6202cf8d5750505050600090565b604081019260a0936202cfa4858251015162004cef565b51518210156201e54057816200743f87966202cfc39351015162004cef565b516202cfd46200680d855162004cef565b5110620051c4576202cfe69062004cdf565b926202cf7f565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433353a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433353a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d1ac57826202d0c0825162004cef565b5151036202d152576020820151602681101562002a2357601203620065c757600091835b6202d0f25750505050600090565b604081019260a0936202d109858251015162004cef565b51518210156201e54057816200743f87966202d1289351015162004cef565b516202d1396200680d855162004cef565b5111620051c4576202d14b9062004cdf565b926202d0e4565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433363a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433363a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d3515760026202d226825162004cef565b5151036202d2f7576020820151602681101562002a2357601203620065c757600091835b6202d2585750505050600090565b604081019260a0936202d26f858251015162004cef565b51518210156201e5405781856202d290826200743f8a998651015162004cef565b516202d2a16200680d885162004cef565b51111592836202d2c6575b505050620051c4576202d2bf9062004cdf565b926202d24a565b5101516202d2da92506200743f9062004cef565b516202d2eb620169f0855162004cef565b5110158138806202d2ac565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433373a205468652055494e543235365f324441525241595b306044820152600080516020620339ac8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433373a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b906020019060019182815151036202d4b657826202d3ca825162004cef565b5151036202d45c576020820151602681101562002a2357601203620065c757600091835b6202d3fc5750505050600090565b604081019260a0936202d413858251015162004cef565b51518210156201e54057816200743f87966202d4329351015162004cef565b516202d4436200680d855162004cef565b5114620051c4576202d4559062004cdf565b926202d3ee565b60405162461bcd60e51b815260206004820152603160248201527f43452049445f3433383a205468652055494e543235365f324441525241595b3060448201526000805160206203384c8339815191526064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f43452049445f3433383a205468652055494e543235365f32444152524159206c6044820152600080516020620338ac8339815191526064820152608490fd5b156202d51857565b60405162461bcd60e51b815260206004820152601c60248201527b496e76616c6964206e756d626572206f6620706172616d657465727360201b6044820152606490fd5b6202d5678162002fc4565b6202d5756200e52e620332ea565b6202d5808162002fc4565b600181036202d59e57506202d5986200e55a620332ea565b611faf55565b6202d5a98162002fc4565b600281036202d5b95750611fb055565b6202d5c48162002fc4565b600381036202d5d45750611fb155565b806202d5e260049262002fc4565b146202d5eb5750565b611fb255565b60609060208152601e60208201527f496e76616c69642072657475726e20747970653a20554e444546494e4544000060408201520190565b7f496e76616c69642061667465722d6f7020706c7567696e206c6576656c2e204c815264032bb32b6160dd1b602082015260250190565b7f496e76616c6964206265666f72652d6f7020706c7567696e206c6576656c2e2081526502632bb32b6160d51b602082015260260190565b9060005b8251811015620115b15760c06202d6b4828562004d46565b510151156202da6b576202d6cd6202abe1828562004d46565b60068082101562002a235760049182036202d818575060209060016003836202d6f7868962004d46565b51015106036202d7145750506202d70e9062004cdf565b6202d69c565b62004cdb82846202d7fd60636202d7456202d73e856202d735868e62004d46565b510151620050f5565b93620050f5565b92847f20697320776974682072657475726e2074797065205945535f414e445f534b4960409586519788946202d78162004db08388016202d660565b016000805160206203388c83398151915281526202d7aa82518093601396878501910162002e01565b01918201527f505f53414e44424f582c2073686f756c64206265206f6e206c6576656c205b3160338201526f2c20342c20372c2031302c202e2e2e5d60801b605382015203604381018552018362002b94565b5193849362461bcd60e51b8552840152602483019062002e26565b6202d8286202abe1848762004d46565b818110156201e0f6576001036202d938575060209060026003836202d84e868962004d46565b51015106036202d8655750506202d70e9062004cdf565b62004cdb82846202d7fd605d6202d8866202d73e856202d735868e62004d46565b92847f20697320776974682072657475726e20747970652053414e44424f585f4e454560409586519788946202d8c262004db08388016202d660565b016000805160206203388c83398151915281526202d8eb82518093601396878501910162002e01565b01918201527f4445442c2073686f756c64206265206f6e206c6576656c205b322c20352c20386033820152692c2031312c202e2e2e5d60b01b605382015203603d81018552018362002b94565b6202d9486202abe1848762004d46565b9081101562015501576002036202da4f576020906003826202d96b858862004d46565b510151066202d9815750506202d70e9062004cdf565b62004cdb82846202d7fd6202d9a76202d9a0846202d735858d62004d46565b92620050f5565b916202da4060409384519586936202d9c562004db08387016202d660565b016000805160206203388c83398151915281528151906202d9ef826013948d868501910162002e01565b01017f20697320776974682072657475726e2074797065204e4f2c2073686f756c642081527f6265206f6e206c6576656c205b332c20362c20392c2031322c202e2e2e5d00006020820152603e0190565b03601f19810184528362002b94565b60405162461bcd60e51b815290819062004cdb9082016202d5f1565b6202da7b6202abe1828562004d46565b6006908181101562002a23576005036202db965750602060016003826202daa3858862004d46565b51015106036202dab957506202d70e9062004cdf565b62004cdb826202db7960526202dada6202d73e866202d73581998c62004d46565b926040937f20697320776974682072657475726e2074797065205945532c2073686f756c6485519889936202db1562004db08387016202d629565b016000805160206203388c83398151915281528251906202db3f826013958c878501910162002e01565b01918201527f206265206f6e206c6576656c205b312c20342c20372c2031302c202e2e2e5d00603382015203603281018752018562002b94565b5192839262461bcd60e51b84526004840152602483019062002e26565b6202dba66202abe1838662004d46565b908082101562002a235760039182036202dcb557506002602091826202dbcd858862004d46565b51015106036202dbe357506202d70e9062004cdf565b62004cdb826202db79605c6202dc046202d73e866202d73581998c62004d46565b926040937f20697320776974682072657475726e207479706520564f54494e475f4e45454485519889936202dc3f62004db08387016202d629565b016000805160206203388c83398151915281528251906202dc69826013958c878501910162002e01565b01918201527f45442c2073686f756c64206265206f6e206c6576656c205b322c20352c20382c6033820152682031312c202e2e2e5d60b81b605382015203603c81018752018562002b94565b6202dcc56202abe1848762004d46565b9081101562002a23576002036202dd7157602090816202dce6848762004d46565b510151066202dcfb57506202d70e9062004cdf565b62004cdb826202db796202dd1a6202d9a0856202d73581988b62004d46565b916202dd6260409384519788936202dd3862004db08387016202d629565b016000805160206203388c83398151915281528151906202d9ef826013948b868501910162002e01565b03601f19810186528562002b94565b60405162461bcd60e51b81528062004cdb600482016202d5f1565b156202dd9457565b60405162461bcd60e51b815260206004820152604d60248201527f546865206c656e677468206f662074686520706c7567696e20696e646578657360448201527f20617272617920616e642074686520626f6f6c65616e206172726179206d757360648201526c74206265207468652073616d6560981b608482015260a490fd5b156202de1d57565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c696420706c7567696e20696e64657820746f20626520656e61626c604482015261195960f21b6064820152608490fd5b156202de7557565b60405162461bcd60e51b815260206004820152602b60248201527f54686520706c7567696e20746f20626520656e61626c656420697320616c726560448201526a18591e48195b98589b195960aa1b6064820152608490fd5b156202ded657565b60405162461bcd60e51b815260206004820152602360248201527f496e76616c696420706c7567696e20696e64657820746f2062652064697361626044820152621b195960ea1b6064820152608490fd5b156202df2f57565b60405162461bcd60e51b815260206004820152602d60248201527f54686520706c7567696e20746f2062652064697361626c656420697320616c7260448201526c1958591e48191a5cd8589b1959609a1b6064820152608490fd5b156202df9257565b60405162461bcd60e51b815260206004820152603060248201527f546865206c656e677468206f662074617267657420616e6420746f6b656e436c60448201526f185cdcc81a5cc81b9bdd08195c5d585b60821b6064820152608490fd5b156202dff857565b60405162461bcd60e51b815260206004820152602c60248201527f546865206c656e677468206f662074617267657420616e6420616d6f756e742060448201526b1a5cc81b9bdd08195c5d585b60a21b6064820152608490fd5b156202e05a57565b60405162461bcd60e51b815260206004820152602260248201527f54686520746f6b656e20636c617373206973206e6f7420696e697469616c697a604482015261195960f21b6064820152608490fd5b156202e0b257565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20737570706c79206f662074686520746f6b656e206973604482015268206f766572666c6f7760b81b6064820152608490fd5b156202e11157565b60405162461bcd60e51b8152602060048201526024808201527f5468652062616c616e6365206f662074686520746f6b656e206973206f766572604482015263666c6f7760e01b6064820152608490fd5b156202e16a57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520746f6b656e20697320616c726561647920696e697469616c697a65646044820152fd5b60408101906202e1c360c08351015162004cef565b51916202e1e560a06202e1da818451015162004cef565b519251015162004d13565b51936202e1fa845183511462000fa3620331b7565b6202e20d845186511462000fa3620331b7565b60005b84518110156202e26a576202e226818462004d46565b51906103e882101562004cfd576202e2649160018060a01b03865116600052600390811b0160205262000faa60406000205462007ce9838a62004d46565b6202e210565b5092919360005b83518110156202e395576202e287818462004d46565b51906103e8918281101562004cfd5760018060a01b03908189511660005260039081602091811b0181526202e2c760406000205462007d56868962004d46565b906202e2d4868a62004d46565b51918783101562004cfd57846202e30193878f5116600052811b01845260406000205562000fa3620332bb565b6202e30d848862004d46565b518581101562004cfd578290846202e326878c62004d46565b5116600052811b0181526202e34660406000205462006814868962004d46565b9190926202e355868a62004d46565b519687101562004cfd576202e38f9662000faa956202e375888d62004d46565b5116600052811b01905260406000205562000fa362033320565b6202e271565b5050620121cd6202e3a69162032f53565b90604051936202e3b68562002b78565b60018552602036818701376001600160a01b03610ba08190529051166202e3dd8562004cef565b526000935b81518510156202e700576202e3f8858362004d46565b51946202e406845162004e62565b916000936202e416825162004e62565b610b80528496855b87518110156202e4bf576202e445610ba0516202e43c838b62004d46565b51168b62032d3b565b15806202e487575b6202e464575b6202e45e9062004cdf565b6202e41e565b956202e47e6202e45e91610ba0516200a36b8a8c62004d46565b9690506202e453565b506103e88a101562004cfd57610ba0516202e4a3828a62004d46565b511660005260038a811b0160205260406000205415156202e44d565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202e559578762004cfd57610ba0516202e4fd828c62004d46565b51166000528b602052604060002054156202e524575b6202e51e9062004cdf565b6202e4dd565b976202e5506202e51e918b6202e53f8c610ba0519262004d46565b511662001ac782610b805162004d46565b9890506202e513565b5094959193965098509690959680610b405262004cfd5760040180610b005254956202e58a62008068868962006200565b610b605260009788610b20525b610b405162004cfd57610b2051888110156202e635576202e5c66202e5dc916000610b4052610b005162004f5e565b610ba05191549060031b1c16610b805162032dea565b156202e5fb575b6202e5f1610b205162004cdf565b610b20526202e597565b976202e62e906202e613610b2051610b005162004f5e565b610ba05191549060031b1c1662001ac782610b605162004d46565b976202e5e3565b5095939096509690969391936000915b8383106202e6cf5750505050610b405162004cfd57610b6051516001600160401b03811162002a9b576202e67d81610b00516200509a565b6020610b605101610b005160005260206000206000610ba051905b8481106202e6b85750505050506202e6b09062004cdf565b93926202e3e2565b60019060208386511695019481850155016202e698565b620081fe6202e6f991610ba0516202e6e8868662004d46565b511662001ac782610b605162004d46565b916202e645565b5050509050565b60408101906202e71c60c08351015162004cef565b51916202e73360a06202e1da818451015162004cef565b51936202e748845183511462000fa3620331b7565b6202e75b845186511462000fa3620331b7565b60005b84518110156202e7b8576202e774818462004d46565b51906103e882101562004cfd576202e7b29160018060a01b03865116600052600390811b0160205262000faa60406000205462007ce9838a62004d46565b6202e75e565b5092919360005b83518110156202e8c9576202e7d5818462004d46565b51906103e8918281101562004cfd5760018060a01b03908189511660005260039081602091811b0181526202e81560406000205462007d56868962004d46565b906202e822868a62004d46565b51918783101562004cfd57846202e84f93878f5116600052811b01845260406000205562000fa3620332bb565b6202e85b848862004d46565b518581101562004cfd578290846202e874878c62004d46565b5116600052811b0181526202e89460406000205462006814868962004d46565b9190926202e8a3868a62004d46565b519687101562004cfd576202e8c39662000faa956202e375888d62004d46565b6202e7bf565b5050620121cd6202e8da9162032f53565b90604051936202e8ea8562002b78565b60018552602036818701376001600160a01b03610b008190529051166202e9118562004cef565b526000935b81518510156202e700576202e92c858362004d46565b51946202e93a845162004e62565b916000936202e94a825162004e62565b610b60528496855b87518110156202e9ea576202e970610b00516202e43c838b62004d46565b15806202e9b2575b6202e98f575b6202e9899062004cdf565b6202e952565b956202e9a96202e98991610b00516200a36b8a8c62004d46565b9690506202e97e565b506103e88a101562004cfd57610b00516202e9ce828a62004d46565b511660005260038a811b0160205260406000205415156202e978565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202ea73578762004cfd57610b00516202ea28828c62004d46565b51166000528b602052604060002054156202ea4f575b6202ea499062004cdf565b6202ea08565b976202ea6a6202ea49918b6202e6e88c610b00519262004d46565b9890506202ea3e565b5094959193965098509690959680610ba05262004cfd5760040180610b405254956202eaa462008068868962006200565b610b205260009788610b80525b610ba05162004cfd57610b8051888110156202eb4f576202eae06202eaf6916000610ba052610b405162004f5e565b610b005191549060031b1c16610b605162032dea565b156202eb15575b6202eb0b610b805162004cdf565b610b80526202eab1565b976202eb48906202eb2d610b8051610b405162004f5e565b610b005191549060031b1c1662001ac782610b205162004d46565b976202eafd565b5095939096509690969391936000915b8383106202ebe95750505050610ba05162004cfd57610b2051516001600160401b03811162002a9b576202eb9781610b40516200509a565b6020610b205101610b405160005260206000206000610b0051905b8481106202ebd25750505050506202ebca9062004cdf565b93926202e916565b60019060208386511695019481850155016202ebb2565b620081fe6202ec1391610b00516202ec02868662004d46565b511662001ac782610b205162004d46565b916202eb5f565b9060408201916202ec3560a06200779b818651015162004cef565b519280518451036200ad0a5760005b81518110156202ec9e576202ec5a818362004d46565b51906103e882101562004cfd576202ec989160018060a01b03855116600052600390811b0160205262000faa60406000205462007ce9838962004d46565b6202ec44565b5060005b81518110156202ed3c576202ecb8818362004d46565b51906103e8918281101562004cfd5760018060a01b03908186511660005260039081602091811b0181526202ecf860406000205462007d56868c62004d46565b9190926202ed07868962004d46565b519687101562004cfd576202ed369662000faa958a5116600052811b01905260406000205562000fa3620332bb565b6202eca2565b506202ed4a91935062032f53565b604051926202ed598462002b78565b60018452602036818601376001600160a01b03610b008190529051166202ed808462004cef565b52604051906202ed908262002b3f565b6000825260003681376000935b81518510156202e700576202edb3858362004d46565b51946202edc1845162004e62565b916000936202edd1825162004e62565b610b60528496855b87518110156202ee71576202edf7610b00516202e43c838b62004d46565b15806202ee39575b6202ee16575b6202ee109062004cdf565b6202edd9565b956202ee306202ee1091610b00516200a36b8a8c62004d46565b9690506202ee05565b506103e88a101562004cfd57610b00516202ee55828a62004d46565b511660005260038a811b0160205260406000205415156202edff565b509793929096949195976000986103e88610159560031b9860038a019a5b89518110156202eefa578762004cfd57610b00516202eeaf828c62004d46565b51166000528b602052604060002054156202eed6575b6202eed09062004cdf565b6202ee8f565b976202eef16202eed0918b6202e6e88c610b00519262004d46565b9890506202eec5565b5094959193965098509690959680610ba05262004cfd5760040180610b205254956202ef2b62008068868962006200565b610b805260009788610b40525b610ba05162004cfd57610b4051888110156202efc0576202eae06202ef67916000610ba052610b205162004f5e565b156202ef86575b6202ef7c610b405162004cdf565b610b40526202ef38565b976202efb9906202ef9e610b4051610b205162004f5e565b610b005191549060031b1c1662001ac782610b805162004d46565b976202ef6e565b5095939096509690969391936000915b8383106202f05a5750505050610ba05162004cfd57610b8051516001600160401b03811162002a9b576202f00881610b20516200509a565b6020610b805101610b205160005260206000206000610b0051905b8481106202f0435750505050506202f03b9062004cdf565b93926202ed9d565b60019060208386511695019481850155016202f023565b620081fe6202f07391610b00516202e53f868662004d46565b916202efd0565b156202f08257565b60405162461bcd60e51b815260206004820152601d60248201527f54686520726566756e6420616d6f756e74206973206f766572666c6f770000006044820152606490fd5b156202f0cf57565b60405162461bcd60e51b815260206004820152602360248201527f54686520746f74616c20726566756e6420616d6f756e74206973206f766572666044820152626c6f7760e81b6064820152608490fd5b156202f12857565b60405162461bcd60e51b815260206004820152602960248201527f54686520746f74616c20776974686472617761626c6520616d6f756e74206973604482015268206f766572666c6f7760b81b6064820152608490fd5b611f44805482101562004cfd576000526007602060002091020190600090565b815180519192916001600160401b03811162002a9b576202f1c181856200509a565b6020809201846000528260002060005b8381106202f238575050505060c08260069262002c3b95940151600185015560408101516002850155606081015160038501556202f2196080820151151560048601620057f2565b6202f22c60a0820151600586016200571f565b015115159101620057f2565b825182820155918401916001016202f1d1565b611f448054600160401b81101562002a9b576202f26e916001820190556202f17f565b91909162005d305762002c3b916202f19f565b611fb4908154600160401b81101562002a9b576001810180845581101562004cfd5762002c3b926000526020600020016200571f565b620069d06202f2c691620074f5565b613f78805480600052613f76908160205260ff60096040600020015460081c16620322fb57613f73600160ff19825416179055600052602052600960406000200161010061ff0019825416179055546000526202f32760406000206200370e565b90600080611f4a54905b818110620322b4575b50501562032298575b60005b60208301519081518110156202f37e5762000faa620076c162011f56620076a16020620067a7866202f3789862004d46565b6202f346565b505060005b602083015180518210156202f3cb57620076a16020620067a7846202f3a89462004d46565b90606482101562004cfd576202f3c5914290611f4b015562004cdf565b6202f383565b50506000905b602083015180518310156200b07257826202f3ec9162004d46565b516020810151602681101562002a2357156200b02f576020810151602681101562002a23576001036202f5fd57604001906202f42d60c08351015162004cef565b51936202f44460a06200779b818651015162004cef565b51916202f45586518551146202df8a565b6202f46486518451146202dff0565b60005b86518110156202f58b576202f47d818662004d46565b516103e881101562004cfd57600160ff60076202f4a39360031b0154161515146202e052565b6202f4af818562004d46565b516202f4bc828762004d46565b51906103e882101562004cfd576202f4de906006809360031b0154906200608f565b6202f4ea848962004d46565b51926103e884101562004cfd576202f5079360031b01556202e0aa565b6202f513818562004d46565b516202f520828762004d46565b51906103e882101562004cfd576202f549916003906001600160a01b0362012148868d62004d46565b91906202f557828862004d46565b51906103e882101562004cfd576202f5859362000faa926003906001600160a01b036201219c878f62004d46565b6202f467565b5094915091620121cd6202f59f9162032f53565b93604051926202f5af8462002b3f565b60008452600036813760005b83518110156202f5e0578062000faa620079626202f5da938762004d46565b6202f5bb565b50945092602092506202f5f4915062004cdf565b9190506202f3d1565b602081949293940151602681101562002a23576002036202f895576040018051928351906202f635620079c260a08097015162004cef565b519382518651036202f8405782518451036202f7ea5782518551036202f7915760005b86518110156202f77b576202f66e818862004d46565b516103e881101562004cfd5760ff60076202f6909260031b015416156202e162565b6202f69c818862004d46565b516103e881101562004cfd5760031b600701805460ff191660011790556202f6c5818562004d46565b516202f6d2828962004d46565b51906103e882101562004cfd5760056202f6f09260031b016200571f565b6202f6fc818662004d46565b516202f709828962004d46565b516103e881101562004cfd5760031b600101556202f728818762004d46565b516202f735828962004d46565b516103e881101562004cfd5760031b600201556202f754818862004d46565b51906103e882101562004cfd57600060066202f7759360031b015562004cdf565b6202f658565b509591509350602092506202f5f4915062004cdf565b60405162461bcd60e51b815260206004820152603c6024820152600080516020620337ec83398151915260448201527b1b911a5d9a59195b9915d95a59da1d081a5cc81b9bdd08195c5d585b60221b6064820152608490fd5b60405162461bcd60e51b81526020600482015260396024820152600080516020620337ec8339815191526044820152781b959bdd1a5b99d41bddd95c881a5cc81b9bdd08195c5d585b603a1b6064820152608490fd5b60405162461bcd60e51b81526020600482015260386024820152600080516020620337ec8339815191526044820152771b925b99195e105c9c985e481a5cc81b9bdd08195c5d585b60421b6064820152608490fd5b602081949392940151602681101562002a23576003036202f8c3576020919262000faa6202f5f4926202e707565b6020810151602681101562002a23576004036202faf95760400160c0936202f8f36200ca5c868451015162004cef565b51906202f90a60a06200779b818651015162004cef565b51936202f91f875184511462000fa3620331b7565b6202f932875185511462000fa3620331b7565b6202f945875186511462000fa3620331b7565b60005b87518110156202f98d576202f95e818662004d46565b51906103e882101562004cfd576202f987916003906001600160a01b03620124d9848d62004d46565b6202f948565b509095919593929360005b83518110156202fab6576202f9ae818762004d46565b516103e881101562004cfd576003906001600160a01b036202f9d1848862004d46565b5116600052811b016020526202f9f260406000205462007d56838862004d46565b906202f9ff838962004d46565b51916103e883101562004cfd576202fa28926003906001600160a01b036201259b878b62004d46565b6202fa34818762004d46565b516103e881101562004cfd576003906001600160a01b036202fa57848c62004d46565b5116600052811b016020526202fa7860406000205462006814838862004d46565b9190506202fa87818862004d46565b51916103e883101562004cfd576202fab0926003906001600160a01b036201263e858e62004d46565b6202f998565b50936202fad091929693506200847962007e479162032f53565b9260005b83518110156202f5e0578062000faa620079626202faf3938762004d46565b6202fad4565b92906020840151602681101562002a2357600503620300585760408401906202fb2c60a06200851e818551015162004cef565b519282518451036200ad0a5760005b83518110156202fb94576202fb51818562004d46565b51906103e882101562004cfd5760036202fb8e9260018060a01b038a5116600052811b0160205262000faa60406000205462007ce9838962004d46565b6202fb3b565b509060005b83518110156202fc37576202fbaf818562004d46565b516103e881101562004cfd5760039060018060a01b03895116600052811b016020526202fbe760406000205462007d56838862004d46565b91906202fbf5828762004d46565b51906103e882101562004cfd576202fc3193600362000faa9360018060a01b038d5116600052811b0160205260406000205562000fa3620332bb565b6202fb99565b50916202fc48919495935062032f53565b92604051926202fc588462002b78565b6001845260203681860137516001600160a01b03166202fc788462004cef565b52604051926202fc888462002b3f565b6000845260003681376000945b805186101562030044576202fcab868262004d46565b516109e0526202fcbc855162004e62565b966000946202fccc845162004e62565b6109005260009460005b88518110156202fd9c578a896202fd066001600160a01b036202fcfa858462004d46565b51166109e05162032d3b565b15806202fd56575b6202fd27575b50506202fd219062004cdf565b6202fcd6565b986202fd4b9162001ac782859c62007f376202fd219760018060a01b039262004d46565b9790508a896202fd14565b5050506103e86109e051101562004cfd576001600160a01b036202fd7b828b62004d46565b511660005260036109e051811b016020528a8960406000205415156202fd0e565b50909895979498969291939660005b88518110156202fe3f576103e86109e051101562004cfd576001600160a01b036202fdd7828b62004d46565b511660005260036109e051811b01602052604060002054156202fe06575b6202fe009062004cdf565b6202fdab565b996202fe00906202fe36906001600160a01b036202fe258e8d62004d46565b511662001ac7826109005162004d46565b9a90506202fdf5565b509850969592919093966109e0516103e881101580610ac05262004cfd5760031b60040154986202fe7562008068898c62006200565b610940526000610ae05260006108e0525b610ac05162004cfd576108e0518a8110156202ff4f576202febb6202fed8916000610ac05260046109e05160031b0162004f5e565b90546109005160039290921b1c6001600160a01b03169062032dea565b156202fef7575b6202feed6108e05162004cdf565b6108e0526202fe86565b6000610ac0526202ff156108e05160046109e05160031b0162004f5e565b60018060a01b0391549060031b1c166202ff36610ae0516109405162004d46565b526202ff45610ae05162004cdf565b610ae0526202fedf565b50979294959093985095909560005b8281106202fff857505050610ac05162004cfd5761094051516001600160401b03811162002a9b576202ff9b8160046109e05160031b016200509a565b6020610940510160046109e05160031b01600052602060002060005b8381106202ffda57505050506202ffce9062004cdf565b9492959091956202fc95565b82516001600160a01b0316818301556020909201916001016202ffb7565b6203003e906001600160a01b0362030011828562004d46565b511662030025610ae0516109405162004d46565b5262030034610ae05162004cdf565b610ae05262004cdf565b6202ff5e565b5050936202f5f49193506020925062004cdf565b90926020810151602681101562002a2357600603620301f0576040016203008460c08251015162004cef565b51936203009b60a06200851e818551015162004cef565b519285518351036200db485785518451036200dafb5760005b8651811015620300f957620300ca818562004d46565b51906103e882101562004cfd57620300f3916003906001600160a01b0362012771848c62004d46565b620300b4565b509060005b86518110156203019a5762030114818562004d46565b516103e881101562004cfd576003906001600160a01b0362030137848b62004d46565b5116600052811b016020526203015860406000205462007d56838862004d46565b919062030166828762004d46565b51906103e882101562004cfd57620301949362000faa926003906001600160a01b036201259b878f62004d46565b620300fe565b509491620301af919350620121cd9062032f53565b9160405194620301bf8662002b3f565b60008652600036813760005b83518110156202f5e0578062000faa62007962620301ea938762004d46565b620301cb565b6020810151602681101562002a23576007036203027657604001926203021b60c08551015162004cef565b51916203022d60a08651015162004cef565b519451519162030245845187511462000fa3620331b7565b60005b84518110156202f5e057620302709062000faa6001600160a01b03806201290f848a62004d46565b62030248565b6020819493940151602681101562002a2357600803620302e45760c06040620302a3920151015162004cef565b519160005b8351811015620302d257620302cc906001600160a01b0380620129f7838862004d46565b620302a8565b509260209192506202f5f49062004cdf565b6020810151602681101562002a23576009036203033d5760c060406203030e920151015162004cef565b519160005b8351811015620302d25762030337906001600160a01b038062012a8b838862004d46565b62030313565b6020810151602681101562002a2357600a03620303c357604001906203036e60a06200df3360c08551015162004cef565b519262030383835185511462000fa3620331b7565b60005b8351811015620303b057620303aa906001600160a01b038062012b27838862004d46565b62030386565b50936202f5f49193506020925062004cdf565b602081949392940151602681101562002a2357600b036203044e5760400192620303f260c08551015162004cef565b51935151916203040a855184511462000fa3620331b7565b60005b85518110156203043b57620304359062000faa6001600160a01b038062012bda848b62004d46565b6203040d565b50935091602091506202f5f49062004cdf565b9091926020820151602681101562002a2357600c036203052b57606060408301510151926203047d846202d698565b60005b8451811015620303b05760c0620304a08260606040880151015162004d46565b51015115620304ed57620304c162008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca9620304e7936000190162005cba565b62030480565b6203050562008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008ca9620304e7936000190162005c7a565b9291906020810151602681101562002a2357600d0362030594576040019260206203055b60a08651015162004cef565b5194510151916203057085518451146202dd8c565b60005b85518110156203043b578062012d5b6203058e928662004d46565b62030573565b6020819492940151602681101562002a2357600e03620305fd57604001906020620305c460a08451015162004cef565b519251015193620305d983518651146202dd8c565b60005b83518110156203043b578062012e3f620305f7928862004d46565b620305dc565b906020829493940151602681101562002a2357600f03620306db57606060408301510151926203062d846202d698565b60005b8451811015620303b05760c0620306508260606040880151015162004d46565b510151156203069d576203067162008c808260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262030697936000190162005cba565b62030630565b620306b562008cd38260606040880151015162004d46565b611f4254908160001981011162001e0757600562008dd262030697936000190162005c7a565b906020819493940151602681101562002a23576010036203074c5760400151906203070f60a0608084015193015162004cef565b519362030724835186511462000fa3620331b7565b60005b83518110156203043b578062000faa6200902b62030746938762004d46565b62030727565b6020819492940151602681101562002a23576011036203096557604001906203078060a06200df3360c08551015162004cef565b51936203079183518651146202d510565b60005b8351811015620307c257620307bc9062000faa6001600160a01b03806201304a848962004d46565b62030794565b50935090620307d19062032e37565b90611f465493620307e86200806884518762006200565b9060009260005b8781106203094a575060005b8551811015620308a2576000805b89811062030853575b50156203082b575b620308259062004cdf565b620307fb565b9362030825906203084a906001600160a01b036200e724888a62004d46565b9490506203081a565b6203085e8162004eb6565b90546001600160a01b0360039290921b1c8116906203087e858b62004d46565b5116146203089757620308919062004cdf565b62030809565b505060013862030812565b509550939250620308b38262004e62565b8051906001600160401b03821162002a9b57602090620308d38362004ff7565b01611f46600052602060002060005b8381106203092c575050505060005b82811062030909575050506202f5f460209162004cdf565b620309269062000faa6001600160a01b03620019fb838662004d46565b620308f1565b82516001600160a01b031681830155602090920191600101620308e2565b936200e8706203095f916200e8528762004eb6565b620307ef565b6020819492940151602681101562002a235760120362030b8857604001906203099960a06200df3360c08551015162004cef565b5193620309aa83518651146202d510565b60005b8351811015620309db57620309d59062000faa6001600160a01b0380620132ac848962004d46565b620309ad565b5093509190620309eb9062032e37565b611f4654620309fa8162004e62565b906000926000915b80831062030aaf5750505062030a188262004e62565b8051906001600160401b03821162002a9b5760209062030a388362004ff7565b01611f46600052602060002060005b83811062030a91575050505060005b82811062030a6e575050506202f5f460209162004cdf565b62030a8b9062000faa6001600160a01b03620019fb838662004d46565b62030a56565b82516001600160a01b03168183015560209092019160010162030a47565b91956000959193959760005b855181101562030b795762030ad08962004eb6565b90546001600160a01b0360039290921b1c81169062030af0838962004d46565b51161462030b095762030b039062004cdf565b62030abb565b509750956001959391955b8062030b48575b1562030b335762030b2c9062004cdf565b9162030a02565b936200e87062030b2c916200e8528762004eb6565b5062030b548162004eb6565b60018060a01b0391549060031b1c16600052611f456020526040600020541562030b1b565b50979690969593919562030b14565b6020810151602681101562002a235760130362030be15760408091015101519260005b845181101562030bd0578062000faa6200959f62030bca938862004d46565b62030bab565b509250906202f5f460209162004cdf565b6020810151602681101562002a235760140362030d8e576040019062030c0c60c08351015162004cef565b519362030c2360a06200779b818651015162004cef565b519162030c3486518551146202df8a565b62030c4386518451146202dff0565b60005b865181101562030d395762030c5c818562004d46565b5162030c69828762004d46565b51906103e882101562004cfd57600662030c899260031b0154906200608f565b9062030c96838862004d46565b51916103e883101562004cfd57600662030cb59360031b01556202e0aa565b62030cc1818562004d46565b5162030cce828762004d46565b51906103e882101562004cfd5762030cf7916003906001600160a01b0362012148868d62004d46565b919062030d05828862004d46565b51906103e882101562004cfd5762030d339362000faa926003906001600160a01b036201219c878f62004d46565b62030c46565b5094915091620121cd62030d4d9162032f53565b936040519262030d5d8462002b3f565b60008452600036813760005b83518110156202f5e0578062000faa6200796262030d88938762004d46565b62030d69565b6020810151602681101562002a235760150362030db8576020919262000faa6202f5f4926202e707565b6020810151602681101562002a235760160362030e145760c0604062030de2920151015162004cef565b519260005b845181101562030bd05762030e0e9062000faa6001600160a01b0362009d36838962004d46565b62030de7565b6020810151602681101562002a235760170362030e715760405162461bcd60e51b81526020600482015260296024820152600080516020620339cc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a235760180362030edb5760c0604062030e9b920151015162004cef565b51611fb6805460ff191660011790559260005b845181101562030bd05762030ed59062000faa6001600160a01b0362009e02838962004d46565b62030eae565b6020819392930151602681101562002a235760190362030fc25760008091604082910160a08082510151805162030f89575b5050519060e08201519162030f316200680d60c060018060a01b0393015162004cef565b511690602083519301915af13d1562030f80573d9062030f518262002f5b565b9162030f61604051938462002b94565b82523d6000602084013e5b156201387a57506202f5f460209162004cdf565b60609062030f6c565b62030f949062004cef565b515162030fa3575b8062030f0d565b8192506200680d9062030fb99251015162004cef565b51903862030f9c565b6020810151602681101562002a2357601a03620310445760a0604062030fec920151015162004cef565b5162030ffc60038251146202d510565b620310078162004cef565b519162031018620139a08362004d13565b51916200f9d5576020926202f5f4926001036200a043576200a023906200a016611fb19182546200608f565b6020810151602681101562002a2357601b036203142f5750919062031074611faf546200225a6200a0b962033044565b50506203108062033108565b506000805b6103e88110620313e3575b50506203109c62006161565b90620310ab613f745462004e62565b906000946000905b6103e8821015620313d7578160031b9260ff60078501541615620311bf57600096600285015415620311a6576000975b62004cfd576004850154881015620311a6576203119f62031198899a62031112620311499b60048a0162004f5e565b60018060a01b0391549060031b1c1680600052600389016020526203113d8b60406000205462005eb0565b9c9062000fa362033108565b6203118c620311706203116460009e60028d01549062005eb0565b919062000fa362033108565b82600052611f476020526200a01660406000209182546200608f565b62001ac7828b62004d46565b9962004cdf565b97620310e3565b92909350620311b791965062004cdf565b9094620310b3565b95969392509350505b620311d38262004e62565b9160009160005b8281106203134157505050611f485491620311fa62008068848462006200565b926000906000905b8082106203132457505060005b8381106203128e5750508251929150506001600160401b03821162002a9b576020906203123c8362004fbc565b01611f48600052602060002060005b8381106203127057505050506202f5f46020916000611fb1556000611fb25562004cdf565b82516001600160a01b0316818301556020909201916001016203124b565b6000805b838110620312dc575b5015620312b4575b620312ae9062004cdf565b6203120f565b90620312ae90620312d3906001600160a01b03620081f0858762004d46565b919050620312a3565b6001600160a01b0380620312f1858862004d46565b51169062031300838a62004d46565b5116146203131957620313139062004cdf565b62031292565b50506001386203129b565b9091620081fe6203133a91620094f58562004e9a565b9062031202565b6000805b8581106203138f575b501562031367575b620313619062004cdf565b620311da565b92620313619062031386906001600160a01b03620081f0878662004d46565b93905062031356565b6001600160a01b0380620313a4858762004d46565b511690620313b3838a62004d46565b511614620313cc57620313c69062004cdf565b62031345565b50506001386203134e565b935050929390620311c8565b8060039594951b9060ff6007830154161562031425576200a4f86200746162000faa946200a4ec6203141c9560026200a4e28762005e1c565b93929362031085565b5093929362031090565b6020810151602681101562002a2357601c036203148c5760405162461bcd60e51b8152602060048201526029602482015260008051602062033acc8339815191526044820152683632b6b2b73a32b21760b91b6064820152608490fd5b6020810151602681101562002a2357601d03620314b2575b506202f5f460209162004cdf565b9290916020840151602681101562002a2357601e0362031bc357604084019060a090620314e3828451015162004cef565b5151620314f4838551015162004d13565b5151036200ade9576203150b828451015162004cef565b51516203151c838551015162004d24565b5151036200ad6d5762031533828451015162004cef565b519462031544838551015162004d13565b5191620315596200a641858751015162004d24565b519585518751036200ad0a5760005b8651811015620315c1576203157e818862004d46565b51906103e882101562004cfd576003620315bb9260018060a01b038d5116600052811b0160205262000faa60406000205462007ce9838c62004d46565b62031568565b5090969192939660005b86518110156203166a57620315e1818862004d46565b516103e881101562004cfd5760039060018060a01b038c5116600052811b016020526203161960406000205462007d56838b62004d46565b919062031627828a62004d46565b51906103e882101562004cfd576203166493600362000faa938f60018060a01b03905116600052811b0160205260406000205562000fa3620332bb565b620315cb565b50939692979550936203167d9062032f53565b96604051966203168d8862002b78565b60018852602036818a013786516001600160a01b0316620316ae8962004cef565b5260405196620316be8862002b3f565b600088526000610a60525b8951610a60519081101562031a6a57620316e4908b62004d46565b51610a4052620316f5885162004e62565b99600097620317058b5162004e62565b6109c05260009760005b8b51811015620317d5578d8c6203173f6001600160a01b0362031733858462004d46565b5116610a405162032d3b565b15806203178f575b62031760575b50506203175a9062004cdf565b6203170f565b9b620317849162001ac782859f62007f376203175a9760018060a01b039262004d46565b9a90508d8c6203174d565b5050506103e8610a4051101562004cfd576001600160a01b03620317b4828e62004d46565b51166000526003610a4051811b016020528d8c604060002054151562031747565b50909b989a99949691929395979b60005b8b5181101562031869576103e8610a4051101562004cfd576001600160a01b0362031812828e62004d46565b51166000526003610a4051811b016020526040600020541562031841575b6203183b9062004cdf565b620317e6565b9c620318606203183b918f6200d8da8f9160018060a01b039262004d46565b9d905062031830565b509b50989590929496919396610a4051996103e88b10159c8d62004cfd57620318a06200806860048f9e60031b01549e8f62006200565b610960526000610980528d60009e5b62004cfd578d8f10156203196e575060009d620318f7620318da826004610a405160031b0162004f5e565b90546109c05160039290921b1c6001600160a01b03169062032dea565b1562031911575b6203190a8f9162004cdf565b9e620318af565b6203190a9e5060009e8f9162031931816004610a405160031b0162004f5e565b60018060a01b0391549060031b1c1662031952610980516109605162004d46565b52620319616109805162004cdf565b61098052915050620318fe565b9396999b929d509396999094979b5060005b82811062031a1e5750505062004cfd5761096051516001600160401b03811162002a9b57620319b9816004610a405160031b016200509a565b60206109605101906004610a405160031b0160005260206000209160005b82811062031a005750505050620319f1610a605162004cdf565b610a60529598909498620316c9565b81516001600160a01b031681850155602090910190600101620319d7565b62031a64906001600160a01b0362031a37828562004d46565b511662031a4b610980516109605162004d46565b5262031a5a6109805162004cdf565b6109805262004cdf565b62031980565b509492975094955091965060009460005b875181101562031ace5762031a996200abc66200abb9838962004d46565b8062031ab2575b5062031aac9062004cdf565b62031a7b565b906200abfc62031ac79862031aac936200608f565b9062031aa0565b5096509450929091508062031af0575b50506202f5f46020915b9150620314a4565b62031b1b9060018060a01b038351166000526200ac5a611f459182602052604060002054906200608f565b60018060a01b03835116600052602052604060002055600080611f4654905b81811062031b79575b5050916202f5f4916020931562031b5d575b509162031ade565b5162031b72906001600160a01b0316620065d6565b3862031b55565b62031b848162004eb6565b9054855160039290921b1c6001600160a01b0390811691161462031bb35762031bad9062004cdf565b62031b3a565b5060019150829050602062031b43565b9190926020810151602681101562002a2357601f0362031bfe5760209162031bf86200ae9d60406202f5f49401515162004cef565b62031ae8565b6020810151602681101562002a235760200362031c24575b506202f5f460209162031ae8565b6020810151602681101562002a2357602180910362031c45575b5062031c16565b602082015160268110156200b01a5760220362031c815750506202f5f4602091611fb660ff19815416905562031c7a62005087565b9162031c3e565b602082015160268110156200b01a5760230362031ca8575b50506202f5f460209162031c7a565b602082015160268110156200b01a5760241462031c9957602082015160268110156200b01a5760251462031c99576020829593949201519060268210156201478c575060150362010ee557604084019062031d0860c08351015162004cef565b519062031d1f60a06200779b818651015162004cef565b519362031d34835185511462000fa3620331b7565b62031d47835186511462000fa3620331b7565b60005b835181101562031da35762031d60818662004d46565b51906103e882101562004cfd57600362031d9d9260018060a01b038b5116600052811b0160205262000faa60406000205462007ce9838a62004d46565b62031d4a565b509095919560005b875181101562031ece5762031dc1818662004d46565b516103e881101562004cfd5760039060018060a01b03865116600052811b0160205262031df960406000205462007d56838962004d46565b9062031e06838862004d46565b51916103e883101562004cfd57600362031e3d9360018060a01b03895116600052811b0160205260406000205562000fa3620332bb565b62031e49818662004d46565b516103e881101562004cfd576003906001600160a01b0362031e6c848c62004d46565b5116600052811b0160205262031e8d60406000205462006814838962004d46565b919062031e9b828862004d46565b51906103e882101562004cfd5762031ec893600362000faa938d62007e0f8760018060a01b039262004d46565b62031dab565b509262031ee6919294506200c6369096959662032f53565b926040519062031ef68262002b78565b6001825260203681840137516001600160a01b031662031f168262004cef565b526000945b8051861015620322835762031f31868262004d46565b51610aa05262031f42855162004e62565b9660009462031f52845162004e62565b6109205260009460005b885181101562032022578a8962031f8c6001600160a01b0362031f80858462004d46565b5116610aa05162032d3b565b158062031fdc575b62031fad575b505062031fa79062004cdf565b62031f5c565b9862031fd19162001ac782859c62007f3762031fa79760018060a01b039262004d46565b9790508a8962031f9a565b5050506103e8610aa051101562004cfd576001600160a01b0362032001828b62004d46565b51166000526003610aa051811b016020528a89604060002054151562031f94565b50909895979498969291939660005b8851811015620320b4576103e8610aa051101562004cfd576001600160a01b036203205d828b62004d46565b51166000526003610aa051811b01602052604060002054156203208c575b620320869062004cdf565b62032031565b996203208690620320ab906001600160a01b036200a9638e8d62004d46565b9a90506203207b565b50985096959291909396610aa0516103e881101580610a205262004cfd5760031b6004015498620320ea62008068898c62006200565b610a00526000610a805260006109a0525b610a205162004cfd576109a0518a811015620321a7576200a9ff62032130916000610a20526004610aa05160031b0162004f5e565b156203214f575b620321456109a05162004cdf565b6109a052620320fb565b6000610a20526203216d6109a0516004610aa05160031b0162004f5e565b60018060a01b0391549060031b1c166203218e610a8051610a005162004d46565b526203219d610a805162004cdf565b610a805262032137565b50979294959093985095909560005b8281106203225057505050610a205162004cfd57610a0051516001600160401b03811162002a9b57620321f3816004610aa05160031b016200509a565b6020610a0051016004610aa05160031b01600052602060002060005b838110620322325750505050620322269062004cdf565b94929590919562031f1b565b82516001600160a01b0316818301556020909201916001016203220f565b6203227d906001600160a01b0362032269828562004d46565b51166200c214610a8051610a005162004d46565b620321b6565b5050936202f5f4919350602092509162031c99565b8151620322ae906001600160a01b031662006600565b6202f343565b620322bf8162004f0a565b9054865160039290921b1c6001600160a01b03908116911614620322ee57620322e89062004cdf565b6202f331565b505050600138806202f33a565b60405162461bcd60e51b815260206004820152604860248201527f5468652070656e64696e672070726f6772616d20686173206265656e2065786560448201527f63757465642c20616e642073686f756c64206e6f742062652065786563757465606482015267321030b3b0b4b71760c11b608482015260a490fd5b908062032382575050565b62002c3b91600052601f6020600020910160051c81019062004fa3565b90600160401b811162002a9b578154818355808210620323be57505050565b62002c3b92600052601f6020600020918180850160051c8401941680620323ed575b500160051c019062004fa3565b600019908186019182549160200360031b1c16905538620323e0565b9060ff809160031b9316831b921b19161790565b620324356203242e6000936202f17f565b506200356f565b92825b845180518210156203252b5781620324509162004d46565b516103e881101562004cfd57600390811b9460018060a01b038516600052602091860182526203248d604096600188600020549101549062005eb0565b919015620324f65790620324a1916200608f565b959015620324bc575050620324b69062004cdf565b62032438565b60649250519062461bcd60e51b825260048201526014602482015273746f74616c20706f776572206f766572666c6f7760601b6044820152fd5b865162461bcd60e51b815260048101849052600e60248201526d706f776572206f766572666c6f7760901b6044820152606490fd5b505092505090565b60005b613f78549081600052613f7691602092808452600393604092858460002001805486101562032694576203256f866203257b9262004f5e565b905490881b1c6202f17f565b509560ff60068098015416620325a3575b50505050506203259d915062004cdf565b62032536565b81600052838352620325cb620325bf8783886000200162004f5e565b905490831b1c6202f17f565b5096620325eb876001809a01549285600052878752886000200162004f5e565b905490831b1c91836000528585526203260b886005896000200162004f5e565b9054911b1c90600092606492838102938185041490151715620326805790620326349162004f77565b1062032678575b6203264757806203258c565b6009945060005252600020019060ff19918183825416179055613f73918254161790556000613f71556000613f7255565b50856203263b565b634e487b7160e01b84526011600452602484fd5b505050505050506000613f7854905b81600052613f76602052600380604060002001805483101562032719576006620326e0620326d48560ff9462004f5e565b905490851b1c6202f17f565b50015416156203271457620326f58262032929565b9081101562002a235762014d61576203270e9062004cdf565b620326a3565b505050565b50505060ff1990613f73600383825416179055600052613f766020526009604060002001908154169055565b613f785490600090828252613f769160209280845260039060409082828520015495620327728762002c61565b96620327818451988962002b94565b80885262032792601f199162002c61565b013682890137845b888652828252848487200154811015620327e35790620327d88262000faa620327c68897969562032929565b620327d2838d62004d46565b620052db565b90919293506203279a565b5050505090919350815b83518110156203285a5762032803818562004d46565b518281101562032846576001809114620328295750620328239062004cdf565b620327ed565b613f73805460ff191690911790555050613f71819055613f725550565b634e487b7160e01b84526021600452602484fd5b50909150613f7280544210600014620328815750613f739060ff19825416179055613f7155565b9050613f73600160ff1982541617905581613f715555565b15620328a157565b60405162461bcd60e51b815260206004820152601e60248201527f766f74696e672072756c6520696e646578206f7574206f662072616e676500006044820152606490fd5b15620328ee57565b60405162461bcd60e51b815260206004820152601360248201527263757272656e74596573206f766572666c6f7760681b6044820152606490fd5b613f785490600091808352613f76806020528260408520600301906203294f9162004f5e565b90549060031b1c62032961816202f17f565b50600101549383865282602052806040872060040190620329829162004f5e565b90549060031b1c9284875280602052816040882060050190620329a59162004f5e565b90549060031b1c9487526020526040862060060190620329c59162004f5e565b90549060031b1c90620329d8906202f17f565b506006015460ff1662032a24575062032a149262005e4362022e1f938362032a0462032a0c9562005e7a565b9690620328e6565b9290620328e6565b111562032a1e5790565b50600190565b6200fab9925062032a149362032a3e62032a0c9362005e7a565b9490620328e6565b9092919262032a56825162004e62565b60009162032a65815162004e62565b8390845b865181101562032b00576001600160a01b0362032a8c816202e43c848b62004d46565b158062032acb575b62032aac575b5062032aa69062004cdf565b62032a69565b819662032ac391620081f062032aa6948b62004d46565b959062032a9a565b506103e88a101562004cfd578062032ae4838a62004d46565b511660005260038a811b01602052604060002054151562032a94565b509295919694509260005b875181101562032b81576103e886101562004cfd576001600160a01b038062032b35838b62004d46565b5116600052600387811b016020526040600020541562032b62575b5062032b5c9062004cdf565b62032b0b565b819562032b79916200e72462032b5c948c62004d46565b949062032b50565b5092509450926103e8831015938462004cfd5760049586600395861b019687549462032bb262008068828862006200565b9460009689889a5b62032d2657818b101562032c5b57506000998b62032bf562032bdd838362004f5e565b90546001600160a01b0392918e1b1c82168a62032dea565b1562032c18575b50509062032c0d8b94939262004cdf565b9a9091929362032bba565b91998c95949392909162032c2e908c9062004f5e565b9054908d1b1c1662032c41828b62004d46565b5262032c4d9062004cdf565b9890919293508b3862032bfc565b9697949a98505091975092506000915b83831062032d01575050505062032cec578051926001600160401b03841162032cd7575062032c9b83836200509a565b602080910191600052806000209060005b84811062032cbb575050505050565b83516001600160a01b0316838201559281019260010162032cac565b604190634e487b7160e01b6000525260246000fd5b603283634e487b7160e01b6000525260246000fd5b62032d1f90620081fe906001600160a01b036200a36b868662004d46565b9162032c6b565b603285634e487b7160e01b6000525260246000fd5b9060005b6103e883101562004cfd576003600484821b01805483101562016f9a578262032d689162004f5e565b9054911b1c6001600160a01b0390811690831614620065b45762032d8c9062004cdf565b62032d3f565b9060005b6103e883101562004cfd576003611fbc84821b01805483101562016f9a578262032dc09162004f5e565b9054911b1c6001600160a01b0390811690831614620065b45762032de49062004cdf565b62032d96565b9060005b8251811015620065c7576001600160a01b038062032e0d838662004d46565b511690831614620065b45762032e239062004cdf565b62032dee565b801562001e07576000190190565b9081519060005b60001983810184811162001e075782101562032f05576001820180831162001e07575b84811062032e7c57505062032e769062004cdf565b62032e3e565b6001600160a01b038062032e91858962004d46565b51168162032ea0848a62004d46565b51161462032ebb575b5062032eb59062004cdf565b62032e61565b828692960182811162001e075762032eb59262032efe9262032ee262032ef7938b62004d46565b511662032ef0898b62004d46565b5262032e29565b9562032e29565b9062032ea9565b50509062032f138162004e62565b9060005b81811062032f26575090925050565b62032f4d906001600160a01b0362032f3f828862004d46565b511662001ac7828662004d46565b62032f17565b80519160005b60001984810185811162001e07578210156203300b576001820180831162001e07575b85811062032f9757505062032f919062004cdf565b62032f59565b62032fa3838662004d46565b5162032fb0828762004d46565b511462032fc9575b62032fc39062004cdf565b62032f7c565b948181019080821162001e075762032ffc620330039162032fef62032fc3948962004d46565b5162032ef08a8a62004d46565b9662032e29565b905062032fb8565b505090916203301a8162004e62565b9060005b8181106203302d575090925050565b806202b4c76203303e928762004d46565b6203301e565b604051620330528162002a7f565b604481527f496e76616c6964206469766964656e64207065726d797269616420706572207460208201527f72616e73616374696f6e2e2053686f756c64206265206c657373207468616e206040820152630313030360e41b606082015290565b604051620330c08162002b06565b603281527f4e6f20656e6f756768206e756d626572206f66207472616e73616374696f6e7360208201527108199bdc88191a5d9a59195b991cc81e595d60721b604082015290565b604051620331168162002b78565b601c81527b6469766964656e6473206f7065726174696f6e206f766572666c6f7760201b602082015290565b604051620331508162002b78565b600d81526c2ab735b737bbb71022b93937b960991b602082015290565b6040516203317b8162002b06565b602681527f4572726f7220696e20776974686472617761626c6520636173682063616c63756020820152653630ba34b7b760d11b604082015290565b604051620331c58162002b78565b6012815271496e76616c696420506172616d657465727360701b602082015290565b604051620331f58162002b78565b601581527413595b58995c88191bd95cc81b9bdd08195e1a5cdd605a1b602082015290565b604051620332288162002b78565b601781527613595b58995c881a5cc81b9bdd081cdd5cdc195b991959604a1b602082015290565b6040516203325d8162002b78565b601b81527a13595b58995c881a5cc8185b1c9958591e481cdd5cdc195b991959602a1b602082015290565b604051620332968162002b78565b60158152744d656d62657220616c72656164792065786973747360581b602082015290565b604051620332c98162002b78565b60118152704e6f20656e6f7567682062616c616e636560781b602082015290565b604051620332f88162002b78565b6018815277125b9d985b1a59081c185c985b595d195c881d1bc81cd95d60421b602082015290565b6040516203332e8162002b78565b6015815274546f6b656e20616d6f756e74206f766572666c6f7760581b602082015290565b602681101562002a23578015620074b2576001811462032a1e57600281146203358657600381146203358057600481146203357a57600581146203357457600681146203356e57600781146203356857600881146203356257600981146203355c57600a81146203355657600b81146203355057600c81146203354a57600d81146203354457600e81146203353e57600f81146203353857601081146203353257601181146203352c57601281146203352657601381146203352057601481146203351a57601581146203351457601681146203350e5760178114620335085760188114620335025760198114620334fc57601a8114620334f657601b8114620334f057601c8114620334ea57601d8114620334e457601e8114620334de57601f8114620334d85760208114620334d25760218114620334cc5760228114620334c65760238114620334c05760248114620334ba57602514620334b557600090565b602590565b50602490565b50602390565b50602290565b50602190565b50602090565b50601f90565b50601e90565b50601d90565b50601c90565b50601b90565b50601a90565b50601990565b50601890565b50601790565b50601690565b50601590565b50601490565b50601390565b50601290565b50601190565b50601090565b50600f90565b50600e90565b50600d90565b50600c90565b50600b90565b50600a90565b50600990565b50600890565b50600790565b50600690565b50600590565b50600490565b50600390565b50600290565b908151815103620065cf57600090815b835181101562017689576001600160f81b031980620335bc838762006506565b511690620335cb838562006506565b5116036201768257620335de9062004cdf565b6203359c565b60405190620335f38262002b06565b60288252604036602084013760005b601481106203361057505090565b60139080820391821162001e0757600382901b916001600160fd1b0381160362001e075760ff80831162001e0757600192620336599084901b6001600160a01b038616620050d4565b60f081168282160391821162001e07576203367d9060f41b600f60f81b16620336e6565b82841b916001600160ff1b038416840362001e0757620336ba9160001a620336a6848962006506565b5360f81b6001600160f81b031916620336e6565b92810180911162001e0757620336d9620336e09360001a918662006506565b5362004cdf565b62033602565b60f81c600a8110156203370f5760300160ff811162001e075760f81b6001600160f81b03191690565b60570160ff811162001e075760f81b6001600160f81b0319169056fe546865206c656e677468206f662061646472657373657320616e6420746f6b65305d206c656e677468206973206e6f742032000000000000000000000000000034dd862f2dd4c33543972cb453e26b9cc23a6eb518176c0de5db12d08007dc6d617665203120656c656d656e7400000000000000000000000000000000000000dd388e0eb473c306304080e96aea031c0fb4686a37f7b1a3c8a2301cd0627f0b7420686176652074776f20656c656d656e747300000000000000000000000000546865206c656e677468206f6620746f6b656e496e666f20616e6420746f6b656e20746865206c656e677468206f6620746f6b656e4c697374000000000000006c656e677468206973206e6f7420657175616c20746f207072696365206c69735d206c656e677468206973206e6f742031000000000000000000000000000000742068617665206f6e6520656c656d656e74000000000000000000000000000020706c7567696e207769746820696e6465782000000000000000000000000000656e677468206973206e6f7420310000000000000000000000000000000000005468652063616c6c20746f2074686520636f6e7472616374206973206e6f74202e55494e543235365f324441525241595b305d5b305d29206973206f7574206f2e55494e543235365f324441525241595b305d5b695d29206973206f7574206f742068617665203220656c656d656e7473000000000000000000000000000000546865206265666f7265206f7065726174696f6e20706c7567696e20737973748b3bb33683ac4daad017d30a0e9972b15e6854cd1f296e14295598f57ce03d506470626d4cb7d88e800a628455fe3f45216f254e8294f25d17ea4ac7e2f4f0a35d206c656e677468206973206e6f7420320000000000000000000000000000005265736572766564206f70636f6465206964203233206973206e6f7420696d70546865206c656e677468206f6620746f6b656e436c617373417272617920616e6c656e677468206973206e6f74203100000000000000000000000000000000005d206c656e677468206973206e6f742067726561746572207468616e20310000617665206f6e6520656c656d656e740000000000000000000000000000000000742068617665203120656c656d656e7400000000000000000000000000000000746f6b656e206c6576656c205829206d757374206265206c657373207468616e28746f6b656e206c6576656c205829206d757374206265206c657373207468615265736572766564206f70636f6465206964203238206973206e6f7420696d70546865206c656e677468206f662061646472657373657320616e6420616d6f75a26469706673582212200b7dff630712f4e35e13cd6b52bb4915fdb7f860f9ed94b9e17edff45824d9ad64736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/darc-js/src/darcjs.ts b/darc-js/src/darcjs.ts index 8666ccda..0370eb71 100644 --- a/darc-js/src/darcjs.ts +++ b/darc-js/src/darcjs.ts @@ -22,6 +22,25 @@ import { OperationStruct, OperationStructOutput, ProgramStruct, VotingRuleStruct import {ethers} from "ethers"; import * as DARC from "./DARC/DARC"; +/** + * Below are return types + */ +export const UNDEFINED = 0; +export const SANDBOX_NEEDED = 1; +export const NO = 2; +export const VOTING_NEEDED = 3; +export const YES_AND_SKIP_SANDBOX = 4; +export const YES = 5; + +export enum EnumReturnType { + UNDEFINED = 0, + SANDBOX_NEEDED = 1, + NO = 2, + VOTING_NEEDED = 3, + YES_AND_SKIP_SANDBOX = 4, + YES = 5 +} + import { OPCODE_ID_1_BATCH_MINT_TOKENS, OPCODE_ID_2_BATCH_CREATE_TOKEN_CLASSES, diff --git a/darc-js/src/types/basicTypes.ts b/darc-js/src/types/basicTypes.ts index f2724fe6..9d8af417 100644 --- a/darc-js/src/types/basicTypes.ts +++ b/darc-js/src/types/basicTypes.ts @@ -97,7 +97,6 @@ export type PluginStruct = { votingRuleIndex: PromiseOrValue; notes: PromiseOrValue; bIsEnabled: PromiseOrValue; - bIsInitialized: PromiseOrValue; bIsBeforeOperation: PromiseOrValue; }; @@ -108,7 +107,6 @@ export type PluginStructWithNode = { votingRuleIndex: PromiseOrValue; notes: PromiseOrValue; bIsEnabled: PromiseOrValue; - bIsInitialized: PromiseOrValue; bIsBeforeOperation: PromiseOrValue; }; @@ -128,7 +126,6 @@ export type PluginStructOutput = [ votingRuleIndex: BigNumber; notes: string; bIsEnabled: boolean; - bIsInitialized: boolean; bIsBeforeOperation: boolean; }; diff --git a/darc-js/tests/runtime-test/transpileAndRun.ts b/darc-js/tests/runtime-test/transpileAndRun.ts index c76bcfb1..579f4f33 100644 --- a/darc-js/tests/runtime-test/transpileAndRun.ts +++ b/darc-js/tests/runtime-test/transpileAndRun.ts @@ -67,7 +67,6 @@ describe('transpile and execution test', () => { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: new TRUE() // always true }, @@ -77,7 +76,6 @@ describe('transpile and execution test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: or( diff --git a/darc-js/tests/sdk-test/sdk-node-generation-test.ts b/darc-js/tests/sdk-test/sdk-node-generation-test.ts index 727964f5..5716baca 100644 --- a/darc-js/tests/sdk-test/sdk-node-generation-test.ts +++ b/darc-js/tests/sdk-test/sdk-node-generation-test.ts @@ -67,7 +67,6 @@ describe('SDK node generation test', () => { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -89,7 +88,6 @@ describe('SDK node generation test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: or( @@ -221,7 +219,6 @@ describe('SDK node generation test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: or( diff --git a/darc-js/tests/sdk-test/sdk-test.ts b/darc-js/tests/sdk-test/sdk-test.ts index 87439a2a..9bf6a1a4 100644 --- a/darc-js/tests/sdk-test/sdk-test.ts +++ b/darc-js/tests/sdk-test/sdk-test.ts @@ -119,7 +119,6 @@ describe('SDK execution test', () => { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -141,7 +140,6 @@ describe('SDK execution test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[ // node 0: boolean operator OR diff --git a/darc-protocol/contracts/protocol/MachineStateManager.sol b/darc-protocol/contracts/protocol/MachineStateManager.sol index 8493026a..58c68d32 100644 --- a/darc-protocol/contracts/protocol/MachineStateManager.sol +++ b/darc-protocol/contracts/protocol/MachineStateManager.sol @@ -124,7 +124,6 @@ contract MachineStateManager { 0, "", true, - true, true )); @@ -154,7 +153,6 @@ contract MachineStateManager { 0, "", true, - true, false )); diff --git a/darc-protocol/contracts/protocol/Plugin.sol b/darc-protocol/contracts/protocol/Plugin.sol index 75d7c43f..7494ecae 100644 --- a/darc-protocol/contracts/protocol/Plugin.sol +++ b/darc-protocol/contracts/protocol/Plugin.sol @@ -257,11 +257,6 @@ struct Plugin { */ bool bIsEnabled; - /** - * the boolean that indicates whether the plugin is deleted or not - */ - bool bIsInitialized; - /** * the boolean that indicates whether the plugin is a before operation * plugin or after operation plugin diff --git a/darc-protocol/contracts/protocol/Plugin/PluginFactory.sol b/darc-protocol/contracts/protocol/Plugin/PluginFactory.sol index c7fbccb2..f61151e0 100644 --- a/darc-protocol/contracts/protocol/Plugin/PluginFactory.sol +++ b/darc-protocol/contracts/protocol/Plugin/PluginFactory.sol @@ -35,15 +35,9 @@ contract PluginFactory is ConditionExpressionFactory{ if (bIsBeforeOperation) { require(pluginIndex < currentMachineState.beforeOpPlugins.length, "PluginFactory: plugin index out of range"); - if (currentMachineState.beforeOpPlugins[pluginIndex].bIsInitialized == false) { - return (returnLevel, returnType, returnVotingRuleIndex); - } } else { require(pluginIndex < currentMachineState.afterOpPlugins.length, "PluginFactory: plugin index out of range"); - if (currentMachineState.afterOpPlugins[pluginIndex].bIsInitialized == false) { - return (returnLevel, returnType, returnVotingRuleIndex); - } } // start from expression condition root node idx = 0, recursively check the condition expression tree diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol index ecc36170..9605b293 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol @@ -104,24 +104,20 @@ contract PluginInstructions is MachineStateManager{ if (bIsSandbox) { // if running in sandbox if (operation.param.PLUGIN_ARRAY[i].bIsBeforeOperation) { // if it is a before operation plugin sandboxMachineState.beforeOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - sandboxMachineState.beforeOpPlugins[sandboxMachineState.beforeOpPlugins.length-1].bIsInitialized = true; sandboxMachineState.beforeOpPlugins[sandboxMachineState.beforeOpPlugins.length-1].bIsEnabled = false; } else { // if it is an after operation plugin sandboxMachineState.afterOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - sandboxMachineState.afterOpPlugins[sandboxMachineState.afterOpPlugins.length-1].bIsInitialized = true; sandboxMachineState.afterOpPlugins[sandboxMachineState.afterOpPlugins.length-1].bIsEnabled = false; } } else { if (operation.param.PLUGIN_ARRAY[i].bIsBeforeOperation) { // if it is a before operation plugin currentMachineState.beforeOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - currentMachineState.beforeOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsInitialized = true; currentMachineState.beforeOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsEnabled = false; } else { // if it is an after operation plugin currentMachineState.afterOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - currentMachineState.afterOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsInitialized = true; currentMachineState.afterOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsEnabled = false; } } @@ -143,24 +139,20 @@ contract PluginInstructions is MachineStateManager{ if (bIsSandbox) { // if running in sandbox if (operation.param.PLUGIN_ARRAY[i].bIsBeforeOperation) { // if it is a before operation plugin sandboxMachineState.beforeOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - sandboxMachineState.beforeOpPlugins[sandboxMachineState.beforeOpPlugins.length-1].bIsInitialized = true; sandboxMachineState.beforeOpPlugins[sandboxMachineState.beforeOpPlugins.length-1].bIsEnabled = true; } else { // if it is an after operation plugin sandboxMachineState.afterOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - sandboxMachineState.afterOpPlugins[sandboxMachineState.afterOpPlugins.length-1].bIsInitialized = true; sandboxMachineState.afterOpPlugins[sandboxMachineState.afterOpPlugins.length-1].bIsEnabled = true; } } else { if (operation.param.PLUGIN_ARRAY[i].bIsBeforeOperation) { // if it is a before operation plugin currentMachineState.beforeOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - currentMachineState.beforeOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsInitialized = true; currentMachineState.beforeOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsEnabled = true; } else { // if it is an after operation plugin currentMachineState.afterOpPlugins.push(operation.param.PLUGIN_ARRAY[i]); - currentMachineState.afterOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsInitialized = true; currentMachineState.afterOpPlugins[currentMachineState.beforeOpPlugins.length-1].bIsEnabled = true; } } @@ -183,13 +175,11 @@ contract PluginInstructions is MachineStateManager{ if (bIsSandbox) { // if running in sandbox if (bIsBeforeOpPlugins[i]) { // if it is a before operation plugin require(pluginIndexes[i] < sandboxMachineState.beforeOpPlugins.length, "Invalid plugin index to be enabled"); // require that the plugin index is less than the length of the before operation plugins array - require(sandboxMachineState.beforeOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be enabled is not initialized"); require(!sandboxMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be enabled is already enabled"); sandboxMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled = true; } else { // if it is an after operation plugin require(pluginIndexes[i] < sandboxMachineState.afterOpPlugins.length, "Invalid plugin index to be enabled"); // require that the plugin index is less than the length of the after operation plugins array - require(sandboxMachineState.afterOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be enabled is not initialized"); require(!sandboxMachineState.afterOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be enabled is already enabled"); sandboxMachineState.afterOpPlugins[pluginIndexes[i]].bIsEnabled = true; } @@ -198,13 +188,11 @@ contract PluginInstructions is MachineStateManager{ else { if (bIsBeforeOpPlugins[i]) { // if it is a before operation plugin require(pluginIndexes[i] < currentMachineState.beforeOpPlugins.length, "Invalid plugin index to be enabled"); // require that the plugin index is less than the length of the before operation plugins array - require(currentMachineState.beforeOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be enabled is not initialized"); require(!currentMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be enabled is already enabled"); currentMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled = true; } else { // if it is an after operation plugin require(pluginIndexes[i] < currentMachineState.afterOpPlugins.length, "Invalid plugin index to be enabled"); // require that the plugin index is less than the length of the after operation plugins array - require(currentMachineState.afterOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be enabled is not initialized"); require(!currentMachineState.afterOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be enabled is already enabled"); currentMachineState.afterOpPlugins[pluginIndexes[i]].bIsEnabled = true; } @@ -228,13 +216,11 @@ contract PluginInstructions is MachineStateManager{ if (bIsSandbox) { // if running in sandbox if (bIsBeforeOpPlugins[i]) { // if it is a before operation plugin require(pluginIndexes[i] < sandboxMachineState.beforeOpPlugins.length, "Invalid plugin index to be disabled"); // require that the plugin index is less than the length of the before operation plugins array - require(sandboxMachineState.beforeOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be disabled is not initialized"); require(sandboxMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be disabled is already disabled"); sandboxMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled = false; } else { // if it is an after operation plugin require(pluginIndexes[i] < sandboxMachineState.afterOpPlugins.length, "Invalid plugin index to be disabled"); // require that the plugin index is less than the length of the after operation plugins array - require(sandboxMachineState.afterOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be disabled is not initialized"); require(sandboxMachineState.afterOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be disabled is already disabled"); sandboxMachineState.afterOpPlugins[pluginIndexes[i]].bIsEnabled = false; } @@ -243,7 +229,6 @@ contract PluginInstructions is MachineStateManager{ else { if (bIsBeforeOpPlugins[i]) { // if it is a before operation plugin require(pluginIndexes[i] < currentMachineState.beforeOpPlugins.length, "Invalid plugin index to be disabled"); // require that the plugin index is less than the length of the before operation plugins array - require(currentMachineState.beforeOpPlugins[pluginIndexes[i]].bIsInitialized, "The plugin to be disabled is not initialized"); require(currentMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled, "The plugin to be disabled is already disabled"); currentMachineState.beforeOpPlugins[pluginIndexes[i]].bIsEnabled = false; } diff --git a/darc-protocol/contracts/test-contracts/test-voting/VotingTest.sol.old b/darc-protocol/contracts/test-contracts/test-voting/VotingTest.sol.old index 77121f1f..934d8114 100644 --- a/darc-protocol/contracts/test-contracts/test-voting/VotingTest.sol.old +++ b/darc-protocol/contracts/test-contracts/test-voting/VotingTest.sol.old @@ -61,7 +61,6 @@ contract VotingTest is Runtime { // votingRuleIndex: 0, // notes: "test", // bIsEnabled: true, - // bIsInitialized: true, // bIsBeforeOperation: true // }); @@ -86,7 +85,6 @@ contract VotingTest is Runtime { votingRuleIndex: 0, notes: "test", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true })); @@ -126,7 +124,6 @@ contract VotingTest is Runtime { votingRuleIndex: 0, notes: "test", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false })); diff --git a/darc-protocol/package.json b/darc-protocol/package.json index 4422a492..2d7e76c6 100644 --- a/darc-protocol/package.json +++ b/darc-protocol/package.json @@ -18,7 +18,7 @@ "@openzeppelin/contracts-upgradeable": "^4.8.0", "@openzeppelin/hardhat-upgrades": "^1.22.1", "ethers": "^5.7.2", - "hardhat": "^2.12.4", + "hardhat": "^2.20.0", "hardhat-gas-reporter": "^1.0.9" } } diff --git a/darc-protocol/pnpm-lock.yaml b/darc-protocol/pnpm-lock.yaml index 1a93a45c..e98ab8cf 100644 --- a/darc-protocol/pnpm-lock.yaml +++ b/darc-protocol/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@openzeppelin/contracts': specifier: ^4.8.0 @@ -8,25 +12,25 @@ dependencies: devDependencies: '@nomicfoundation/hardhat-toolbox': specifier: ^2.0.0 - version: 2.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.1.3)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.4)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.1.1)(typescript@5.0.4) + version: 2.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.1.3)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.20.0)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.1.1)(typescript@5.0.4) '@nomiclabs/hardhat-ethers': specifier: ^2.2.2 - version: 2.2.2(ethers@5.7.2)(hardhat@2.12.4) + version: 2.2.2(ethers@5.7.2)(hardhat@2.20.0) '@openzeppelin/contracts-upgradeable': specifier: ^4.8.0 version: 4.8.0 '@openzeppelin/hardhat-upgrades': specifier: ^1.22.1 - version: 1.22.1(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(ethers@5.7.2)(hardhat@2.12.4) + version: 1.22.1(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(ethers@5.7.2)(hardhat@2.20.0) ethers: specifier: ^5.7.2 version: 5.7.2 hardhat: - specifier: ^2.12.4 - version: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + specifier: ^2.20.0 + version: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) hardhat-gas-reporter: specifier: ^1.0.9 - version: 1.0.9(hardhat@2.12.4) + version: 1.0.9(hardhat@2.20.0) packages: @@ -425,146 +429,182 @@ packages: fastq: 1.15.0 dev: true - /@nomicfoundation/ethereumjs-block@4.2.2: - resolution: {integrity: sha512-atjpt4gc6ZGZUPHBAQaUJsm1l/VCo7FmyQ780tMGO8QStjLdhz09dXynmhwVTy5YbRr0FOh/uX3QaEM0yIB2Zg==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-block@5.0.4: + resolution: {integrity: sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==} + engines: {node: '>=18'} dependencies: - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-trie': 5.0.5 - '@nomicfoundation/ethereumjs-tx': 4.1.2 - '@nomicfoundation/ethereumjs-util': 8.0.6 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-trie': 6.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - c-kzg dev: true - /@nomicfoundation/ethereumjs-blockchain@6.2.2: - resolution: {integrity: sha512-6AIB2MoTEPZJLl6IRKcbd8mUmaBAQ/NMe3O7OsAOIiDjMNPPH5KaUQiLfbVlegT4wKIg/GOsFH7XlH2KDVoJNg==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-blockchain@7.0.4: + resolution: {integrity: sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==} + engines: {node: '>=18'} dependencies: - '@nomicfoundation/ethereumjs-block': 4.2.2 - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-ethash': 2.0.5 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-trie': 5.0.5 - '@nomicfoundation/ethereumjs-util': 8.0.6 - abstract-level: 1.0.3 + '@nomicfoundation/ethereumjs-block': 5.0.4 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-ethash': 3.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-trie': 6.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 - level: 8.0.0 - lru-cache: 5.1.1 - memory-level: 1.0.0 + lru-cache: 10.2.0 transitivePeerDependencies: + - c-kzg - supports-color dev: true - /@nomicfoundation/ethereumjs-common@3.1.2: - resolution: {integrity: sha512-JAEBpIua62dyObHM9KI2b4wHZcRQYYge9gxiygTWa3lNCr2zo+K0TbypDpgiNij5MCGNWP1eboNfNfx1a3vkvA==} + /@nomicfoundation/ethereumjs-common@4.0.4: + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} dependencies: - '@nomicfoundation/ethereumjs-util': 8.0.6 - crc-32: 1.2.2 + '@nomicfoundation/ethereumjs-util': 9.0.4 + transitivePeerDependencies: + - c-kzg dev: true - /@nomicfoundation/ethereumjs-ethash@2.0.5: - resolution: {integrity: sha512-xlLdcICGgAYyYmnI3r1t0R5fKGBJNDQSOQxXNjVO99JmxJIdXR5MgPo5CSJO1RpyzKOgzi3uIFn8agv564dZEQ==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-ethash@3.0.4: + resolution: {integrity: sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==} + engines: {node: '>=18'} dependencies: - '@nomicfoundation/ethereumjs-block': 4.2.2 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-util': 8.0.6 - abstract-level: 1.0.3 + '@nomicfoundation/ethereumjs-block': 5.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 bigint-crypto-utils: 3.2.2 ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - c-kzg dev: true - /@nomicfoundation/ethereumjs-evm@1.3.2: - resolution: {integrity: sha512-I00d4MwXuobyoqdPe/12dxUQxTYzX8OckSaWsMcWAfQhgVDvBx6ffPyP/w1aL0NW7MjyerySPcSVfDJAMHjilw==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-evm@2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2): + resolution: {integrity: sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==} + engines: {node: '>=18'} dependencies: - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-util': 8.0.6 - '@types/async-eventemitter': 0.2.1 - async-eventemitter: 0.2.4 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-statemanager': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@types/debug': 4.1.12 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 + rustbn-wasm: 0.2.0 transitivePeerDependencies: + - '@nomicfoundation/ethereumjs-verkle' + - c-kzg - supports-color dev: true - /@nomicfoundation/ethereumjs-rlp@4.0.3: - resolution: {integrity: sha512-DZMzB/lqPK78T6MluyXqtlRmOMcsZbTTbbEyAjo0ncaff2mqu/k8a79PBcyvpgAhWD/R59Fjq/x3ro5Lof0AtA==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-rlp@5.0.4: + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} hasBin: true dev: true - /@nomicfoundation/ethereumjs-statemanager@1.0.5: - resolution: {integrity: sha512-CAhzpzTR5toh/qOJIZUUOnWekUXuRqkkzaGAQrVcF457VhtCmr+ddZjjK50KNZ524c1XP8cISguEVNqJ6ij1sA==} + /@nomicfoundation/ethereumjs-statemanager@2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2): + resolution: {integrity: sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==} + peerDependencies: + '@nomicfoundation/ethereumjs-verkle': 0.0.2 + peerDependenciesMeta: + '@nomicfoundation/ethereumjs-verkle': + optional: true dependencies: - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-trie': 5.0.5 - '@nomicfoundation/ethereumjs-util': 8.0.6 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-trie': 6.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/ethereumjs-verkle': 0.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 - functional-red-black-tree: 1.0.1 + js-sdsl: 4.4.2 + lru-cache: 10.2.0 transitivePeerDependencies: + - c-kzg - supports-color dev: true - /@nomicfoundation/ethereumjs-trie@5.0.5: - resolution: {integrity: sha512-+8sNZrXkzvA1NH5F4kz5RSYl1I6iaRz7mAZRsyxOm0IVY4UaP43Ofvfp/TwOalFunurQrYB5pRO40+8FBcxFMA==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-trie@6.0.4: + resolution: {integrity: sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==} + engines: {node: '>=18'} dependencies: - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-util': 8.0.6 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@types/readable-stream': 2.3.15 ethereum-cryptography: 0.1.3 + lru-cache: 10.2.0 readable-stream: 3.6.2 + transitivePeerDependencies: + - c-kzg dev: true - /@nomicfoundation/ethereumjs-tx@4.1.2: - resolution: {integrity: sha512-emJBJZpmTdUa09cqxQqHaysbBI9Od353ZazeH7WgPb35miMgNY6mb7/3vBA98N5lUW/rgkiItjX0KZfIzihSoQ==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-tx@5.0.4: + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true dependencies: - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-util': 8.0.6 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-util@8.0.6: - resolution: {integrity: sha512-jOQfF44laa7xRfbfLXojdlcpkvxeHrE2Xu7tSeITsWFgoII163MzjOwFEzSNozHYieFysyoEMhCdP+NY5ikstw==} - engines: {node: '>=14'} + /@nomicfoundation/ethereumjs-util@9.0.4: + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true dependencies: - '@nomicfoundation/ethereumjs-rlp': 4.0.3 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-vm@6.4.2: - resolution: {integrity: sha512-PRTyxZMP6kx+OdAzBhuH1LD2Yw+hrSpaytftvaK//thDy2OI07S0nrTdbrdk7b8ZVPAc9H9oTwFBl3/wJ3w15g==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-block': 4.2.2 - '@nomicfoundation/ethereumjs-blockchain': 6.2.2 - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-evm': 1.3.2 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-statemanager': 1.0.5 - '@nomicfoundation/ethereumjs-trie': 5.0.5 - '@nomicfoundation/ethereumjs-tx': 4.1.2 - '@nomicfoundation/ethereumjs-util': 8.0.6 - '@types/async-eventemitter': 0.2.1 - async-eventemitter: 0.2.4 + /@nomicfoundation/ethereumjs-verkle@0.0.2: + resolution: {integrity: sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==} + engines: {node: '>=18'} + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + lru-cache: 10.2.0 + rust-verkle-wasm: 0.0.1 + transitivePeerDependencies: + - c-kzg + dev: true + + /@nomicfoundation/ethereumjs-vm@7.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2): + resolution: {integrity: sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==} + engines: {node: '>=18'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.4 + '@nomicfoundation/ethereumjs-blockchain': 7.0.4 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-evm': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-statemanager': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) + '@nomicfoundation/ethereumjs-trie': 6.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 - functional-red-black-tree: 1.0.1 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 transitivePeerDependencies: + - '@nomicfoundation/ethereumjs-verkle' + - c-kzg - supports-color dev: true - /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.2)(chai@4.3.7)(ethers@5.7.2)(hardhat@2.12.4): + /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.2)(chai@4.3.7)(ethers@5.7.2)(hardhat@2.20.0): resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} peerDependencies: '@nomiclabs/hardhat-ethers': ^2.0.0 @@ -573,26 +613,26 @@ packages: hardhat: ^2.9.4 dependencies: '@ethersproject/abi': 5.7.0 - '@nomiclabs/hardhat-ethers': 2.2.2(ethers@5.7.2)(hardhat@2.12.4) + '@nomiclabs/hardhat-ethers': 2.2.2(ethers@5.7.2)(hardhat@2.20.0) '@types/chai-as-promised': 7.1.5 chai: 4.3.7 chai-as-promised: 7.1.1(chai@4.3.7) deep-eql: 4.1.3 ethers: 5.7.2 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) ordinal: 1.0.3 dev: true - /@nomicfoundation/hardhat-network-helpers@1.0.8(hardhat@2.12.4): + /@nomicfoundation/hardhat-network-helpers@1.0.8(hardhat@2.20.0): resolution: {integrity: sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q==} peerDependencies: hardhat: ^2.9.5 dependencies: ethereumjs-util: 7.1.5 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) dev: true - /@nomicfoundation/hardhat-toolbox@2.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.1.3)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.4)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.1.1)(typescript@5.0.4): + /@nomicfoundation/hardhat-toolbox@2.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-chai-matchers@1.0.6)(@nomicfoundation/hardhat-network-helpers@1.0.8)(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(@typechain/ethers-v5@10.2.1)(@typechain/hardhat@6.1.6)(@types/chai@4.3.5)(@types/mocha@9.1.1)(@types/node@20.1.3)(chai@4.3.7)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.20.0)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.1.1)(typescript@5.0.4): resolution: {integrity: sha512-BoOPbzLQ1GArnBZd4Jz4IU8FY3RY4nUwpXlfymXwxlXNimngkPRJj7ivVNurD7igohEjf90v/Axn2M5WwAdCJQ==} peerDependencies: '@ethersproject/abi': ^5.4.7 @@ -617,20 +657,20 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2 - '@nomicfoundation/hardhat-chai-matchers': 1.0.6(@nomiclabs/hardhat-ethers@2.2.2)(chai@4.3.7)(ethers@5.7.2)(hardhat@2.12.4) - '@nomicfoundation/hardhat-network-helpers': 1.0.8(hardhat@2.12.4) - '@nomiclabs/hardhat-ethers': 2.2.2(ethers@5.7.2)(hardhat@2.12.4) - '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.12.4) + '@nomicfoundation/hardhat-chai-matchers': 1.0.6(@nomiclabs/hardhat-ethers@2.2.2)(chai@4.3.7)(ethers@5.7.2)(hardhat@2.20.0) + '@nomicfoundation/hardhat-network-helpers': 1.0.8(hardhat@2.20.0) + '@nomiclabs/hardhat-ethers': 2.2.2(ethers@5.7.2)(hardhat@2.20.0) + '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.20.0) '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.1.1)(typescript@5.0.4) - '@typechain/hardhat': 6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.12.4)(typechain@8.1.1) + '@typechain/hardhat': 6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.20.0)(typechain@8.1.1) '@types/chai': 4.3.5 '@types/mocha': 9.1.1 '@types/node': 20.1.3 chai: 4.3.7 ethers: 5.7.2 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) - hardhat-gas-reporter: 1.0.9(hardhat@2.12.4) - solidity-coverage: 0.8.2(hardhat@2.12.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) + hardhat-gas-reporter: 1.0.9(hardhat@2.20.0) + solidity-coverage: 0.8.2(hardhat@2.20.0) ts-node: 10.9.1(@types/node@20.1.3)(typescript@5.0.4) typechain: 8.1.1(typescript@5.0.4) typescript: 5.0.4 @@ -742,18 +782,19 @@ packages: '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 dev: true - /@nomiclabs/hardhat-ethers@2.2.2(ethers@5.7.2)(hardhat@2.12.4): + /@nomiclabs/hardhat-ethers@2.2.2(ethers@5.7.2)(hardhat@2.20.0): resolution: {integrity: sha512-NLDlDFL2us07C0jB/9wzvR0kuLivChJWCXTKcj3yqjZqMoYp7g7wwS157F70VHx/+9gHIBGzak5pKDwG8gEefA==} peerDependencies: ethers: ^5.0.0 hardhat: ^2.0.0 dependencies: ethers: 5.7.2 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) dev: true - /@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.4): + /@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.20.0): resolution: {integrity: sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==} + deprecated: The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead peerDependencies: hardhat: ^2.0.4 dependencies: @@ -763,7 +804,7 @@ packages: chalk: 2.4.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 7.0.1 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) lodash: 4.17.21 semver: 6.3.0 table: 6.8.1 @@ -780,7 +821,7 @@ packages: resolution: {integrity: sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw==} dev: false - /@openzeppelin/hardhat-upgrades@1.22.1(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(ethers@5.7.2)(hardhat@2.12.4): + /@openzeppelin/hardhat-upgrades@1.22.1(@nomiclabs/hardhat-ethers@2.2.2)(@nomiclabs/hardhat-etherscan@3.1.7)(ethers@5.7.2)(hardhat@2.20.0): resolution: {integrity: sha512-MdoitCTLl4zwMU8MeE/bCj+7JMWBEvd38XqJkw36PkJrXlbv6FedDVCPoumMAhpmtymm0nTwTYYklYG+L6WiiQ==} hasBin: true peerDependencies: @@ -793,13 +834,13 @@ packages: '@nomiclabs/harhdat-etherscan': optional: true dependencies: - '@nomiclabs/hardhat-ethers': 2.2.2(ethers@5.7.2)(hardhat@2.12.4) - '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.12.4) + '@nomiclabs/hardhat-ethers': 2.2.2(ethers@5.7.2)(hardhat@2.20.0) + '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.20.0) '@openzeppelin/upgrades-core': 1.26.2 chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) ethers: 5.7.2 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) proper-lockfile: 4.1.2 transitivePeerDependencies: - supports-color @@ -948,7 +989,7 @@ packages: typescript: 5.0.4 dev: true - /@typechain/hardhat@6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.12.4)(typechain@8.1.1): + /@typechain/hardhat@6.1.6(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(@typechain/ethers-v5@10.2.1)(ethers@5.7.2)(hardhat@2.20.0)(typechain@8.1.1): resolution: {integrity: sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==} peerDependencies: '@ethersproject/abi': ^5.4.7 @@ -963,14 +1004,10 @@ packages: '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.1.1)(typescript@5.0.4) ethers: 5.7.2 fs-extra: 9.1.0 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) typechain: 8.1.1(typescript@5.0.4) dev: true - /@types/async-eventemitter@0.2.1: - resolution: {integrity: sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==} - dev: true - /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: @@ -999,6 +1036,12 @@ packages: '@types/node': 8.10.66 dev: true + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: true + /@types/form-data@0.0.33: resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} dependencies: @@ -1024,6 +1067,10 @@ packages: resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} dev: true + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: true + /@types/node@10.17.60: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true @@ -1050,6 +1097,13 @@ packages: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true + /@types/readable-stream@2.3.15: + resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} + dependencies: + '@types/node': 20.1.3 + safe-buffer: 5.1.2 + dev: true + /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: @@ -1060,26 +1114,6 @@ packages: resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} dev: true - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: true - - /abstract-level@1.0.3: - resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} - engines: {node: '>=12'} - dependencies: - buffer: 6.0.3 - catering: 2.1.1 - is-buffer: 2.0.5 - level-supports: 4.0.1 - level-transcoder: 1.0.1 - module-error: 1.0.2 - queue-microtask: 1.2.3 - dev: true - /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -1143,9 +1177,16 @@ packages: /amdefine@1.0.1: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} + requiresBuild: true dev: true optional: true + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + /ansi-colors@3.2.3: resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==} engines: {node: '>=6'} @@ -1285,22 +1326,10 @@ packages: engines: {node: '>=8'} dev: true - /async-eventemitter@0.2.4: - resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==} - dependencies: - async: 2.6.4 - dev: true - /async@1.5.2: resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} dev: true - /async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: true - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true @@ -1333,10 +1362,6 @@ packages: safe-buffer: 5.2.1 dev: true - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: @@ -1373,6 +1398,20 @@ packages: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: true + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1397,15 +1436,6 @@ packages: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} dev: true - /browser-level@1.0.1: - resolution: {integrity: sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==} - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - run-parallel-limit: 1.1.0 - dev: true - /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: true @@ -1443,13 +1473,6 @@ packages: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} dev: true - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -1483,11 +1506,6 @@ packages: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true - /catering@2.1.1: - resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} - engines: {node: '>=6'} - dev: true - /cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} @@ -1583,23 +1601,16 @@ packages: safe-buffer: 5.2.1 dev: true - /classic-level@1.3.0: - resolution: {integrity: sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==} - engines: {node: '>=12'} - requiresBuild: true - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - napi-macros: 2.2.2 - node-gyp-build: 4.6.0 - dev: true - /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: true + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true + /cli-table3@0.5.1: resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} engines: {node: '>=6'} @@ -1718,12 +1729,6 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: true - /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -2181,11 +2186,6 @@ packages: strip-hex-prefix: 1.0.0 dev: true - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: true - /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: @@ -2400,10 +2400,6 @@ packages: functions-have-names: 1.2.3 dev: true - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true - /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true @@ -2592,22 +2588,21 @@ packages: har-schema: 2.0.0 dev: true - /hardhat-gas-reporter@1.0.9(hardhat@2.12.4): + /hardhat-gas-reporter@1.0.9(hardhat@2.20.0): resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} peerDependencies: hardhat: ^2.0.2 dependencies: array-uniq: 1.0.3 eth-gas-reporter: 0.2.25 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) sha1: 1.1.1 transitivePeerDependencies: - '@codechecks/client' dev: true - /hardhat@2.12.4(ts-node@10.9.1)(typescript@5.0.4): - resolution: {integrity: sha512-rc9S2U/4M+77LxW1Kg7oqMMmjl81tzn5rNFARhbXKUA1am/nhfMJEujOjuKvt+ZGMiZ11PYSe8gyIpB/aRNDgw==} - engines: {node: ^14.0.0 || ^16.0.0 || ^18.0.0} + /hardhat@2.20.0(ts-node@10.9.1)(typescript@5.0.4): + resolution: {integrity: sha512-TtWZ4mKOH5YA+PCDAGAjG7Gub2NA+egAX7RIHq5XnGrEALNXAbyP3S0I9vOE1MWCgZhn+XOFUNfDuHgkBOPoRw==} hasBin: true peerDependencies: ts-node: '*' @@ -2620,24 +2615,25 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/ethereumjs-block': 4.2.2 - '@nomicfoundation/ethereumjs-blockchain': 6.2.2 - '@nomicfoundation/ethereumjs-common': 3.1.2 - '@nomicfoundation/ethereumjs-evm': 1.3.2 - '@nomicfoundation/ethereumjs-rlp': 4.0.3 - '@nomicfoundation/ethereumjs-statemanager': 1.0.5 - '@nomicfoundation/ethereumjs-trie': 5.0.5 - '@nomicfoundation/ethereumjs-tx': 4.1.2 - '@nomicfoundation/ethereumjs-util': 8.0.6 - '@nomicfoundation/ethereumjs-vm': 6.4.2 + '@nomicfoundation/ethereumjs-block': 5.0.4 + '@nomicfoundation/ethereumjs-blockchain': 7.0.4 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-evm': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-statemanager': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) + '@nomicfoundation/ethereumjs-trie': 6.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/ethereumjs-verkle': 0.0.2 + '@nomicfoundation/ethereumjs-vm': 7.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) '@nomicfoundation/solidity-analyzer': 0.1.1 '@sentry/node': 5.30.0 '@types/bn.js': 5.1.1 '@types/lru-cache': 5.1.1 - abort-controller: 3.0.0 adm-zip: 0.4.16 aggregate-error: 3.1.0 ansi-escapes: 4.3.2 + boxen: 5.1.2 chalk: 2.4.2 chokidar: 3.5.3 ci-info: 2.0.0 @@ -2657,7 +2653,6 @@ packages: mnemonist: 0.38.5 mocha: 10.2.0 p-map: 4.0.0 - qs: 6.11.1 raw-body: 2.5.2 resolve: 1.17.0 semver: 6.3.0 @@ -2672,6 +2667,7 @@ packages: ws: 7.5.9 transitivePeerDependencies: - bufferutil + - c-kzg - supports-color - utf-8-validate dev: true @@ -2818,10 +2814,6 @@ packages: safer-buffer: 2.1.2 dev: true - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -3042,6 +3034,10 @@ packages: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true + /js-sdsl@4.4.2: + resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} + dev: true + /js-sha3@0.5.7: resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} dev: true @@ -3148,27 +3144,6 @@ packages: graceful-fs: 4.2.11 dev: true - /level-supports@4.0.1: - resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} - engines: {node: '>=12'} - dev: true - - /level-transcoder@1.0.1: - resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} - engines: {node: '>=12'} - dependencies: - buffer: 6.0.3 - module-error: 1.0.2 - dev: true - - /level@8.0.0: - resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} - engines: {node: '>=12'} - dependencies: - browser-level: 1.0.1 - classic-level: 1.3.0 - dev: true - /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} @@ -3229,14 +3204,14 @@ packages: /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 dependencies: get-func-name: 2.0.0 dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} dev: true /lru-cache@6.0.0: @@ -3258,11 +3233,6 @@ packages: resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} dev: true - /mcl-wasm@0.7.9: - resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==} - engines: {node: '>=8.9.0'} - dev: true - /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -3271,15 +3241,6 @@ packages: safe-buffer: 5.2.1 dev: true - /memory-level@1.0.0: - resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} - engines: {node: '>=12'} - dependencies: - abstract-level: 1.0.3 - functional-red-black-tree: 1.0.1 - module-error: 1.0.2 - dev: true - /memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -3457,11 +3418,6 @@ packages: yargs-unparser: 1.6.0 dev: true - /module-error@1.0.2: - resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} - engines: {node: '>=10'} - dev: true - /ms@2.1.1: resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} dev: true @@ -3480,10 +3436,6 @@ packages: hasBin: true dev: true - /napi-macros@2.2.2: - resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} - dev: true - /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true @@ -3980,7 +3932,7 @@ packages: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 dev: true /ripemd160@2.0.2: @@ -3997,20 +3949,20 @@ packages: bn.js: 5.2.1 dev: true - /run-parallel-limit@1.1.0: - resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} - dependencies: - queue-microtask: 1.2.3 - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /rustbn.js@0.2.0: - resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} + /rust-verkle-wasm@0.0.1: + resolution: {integrity: sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==} + dev: true + + /rustbn-wasm@0.2.0: + resolution: {integrity: sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==} + dependencies: + '@scure/base': 1.1.1 dev: true /safe-array-concat@1.0.0: @@ -4194,7 +4146,7 @@ packages: resolution: {integrity: sha512-Pr5sCAj1SFqzwFZw1HPKSq0PehlQNdM8GwKyAVYh2DOn7/cCK8LUKD1HeHnKtTgBW7hi9h4nnnan7hpAg5RhWQ==} dev: true - /solidity-coverage@0.8.2(hardhat@2.12.4): + /solidity-coverage@0.8.2(hardhat@2.20.0): resolution: {integrity: sha512-cv2bWb7lOXPE9/SSleDO6czkFiMHgP4NXPj+iW9W7iEKLBk7Cj0AGBiNmGX3V1totl9wjPrT0gHmABZKZt65rQ==} hasBin: true peerDependencies: @@ -4210,7 +4162,7 @@ packages: ghost-testrpc: 0.0.2 global-modules: 2.0.0 globby: 10.0.2 - hardhat: 2.12.4(ts-node@10.9.1)(typescript@5.0.4) + hardhat: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) jsonschema: 1.4.1 lodash: 4.17.21 mocha: 7.1.2 @@ -4605,6 +4557,11 @@ packages: engines: {node: '>=4'} dev: true + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -4805,6 +4762,13 @@ packages: string-width: 2.1.1 dev: true + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: true + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} @@ -4888,10 +4852,6 @@ packages: engines: {node: '>=10'} dev: true - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true diff --git a/darc-protocol/test/conditionTest/operationLogTest.ts b/darc-protocol/test/conditionTest/operationLogTest.ts index ff41b23e..48e37004 100644 --- a/darc-protocol/test/conditionTest/operationLogTest.ts +++ b/darc-protocol/test/conditionTest/operationLogTest.ts @@ -32,7 +32,6 @@ describe("operation log test", function () { notes: "disable OPERATION_BY_OPERATOR_SINCE_LAST_TIME_LESS_THAN(5 seconds)", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: [ { diff --git a/darc-protocol/test/operationUnitTest/batch_add_and_enable_plugin_test.ts b/darc-protocol/test/operationUnitTest/batch_add_and_enable_plugin_test.ts index 39d49330..2acab00c 100644 --- a/darc-protocol/test/operationUnitTest/batch_add_and_enable_plugin_test.ts +++ b/darc-protocol/test/operationUnitTest/batch_add_and_enable_plugin_test.ts @@ -99,7 +99,6 @@ describe("test for batch add and enable plugins", function () { votingRuleIndex: 0, notes: "0x7099 should not operate", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, } ], diff --git a/darc-protocol/test/pluginTest/operator_AND_test.ts b/darc-protocol/test/pluginTest/operator_AND_test.ts index 31456239..98cd4187 100644 --- a/darc-protocol/test/pluginTest/operator_AND_test.ts +++ b/darc-protocol/test/pluginTest/operator_AND_test.ts @@ -32,7 +32,6 @@ describe("operator AND test", function () { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -58,7 +57,6 @@ describe("operator AND test", function () { votingRuleIndex: BigNumber.from(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[ // node 0: boolean operator OR diff --git a/darc-protocol/test/pluginTest/operator_OR_test.ts b/darc-protocol/test/pluginTest/operator_OR_test.ts index 659bd2cc..f95b098d 100644 --- a/darc-protocol/test/pluginTest/operator_OR_test.ts +++ b/darc-protocol/test/pluginTest/operator_OR_test.ts @@ -30,7 +30,6 @@ describe("operator OR test", function () { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -56,7 +55,6 @@ describe("operator OR test", function () { votingRuleIndex: BigNumber.from(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[ // node 0: boolean operator OR diff --git a/darc-protocol/test/votingTest/multiAddressVotingTest.ts b/darc-protocol/test/votingTest/multiAddressVotingTest.ts index e9b90788..3645ab44 100644 --- a/darc-protocol/test/votingTest/multiAddressVotingTest.ts +++ b/darc-protocol/test/votingTest/multiAddressVotingTest.ts @@ -57,7 +57,6 @@ describe("multi address voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all sandbox_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -140,7 +139,6 @@ describe("multi address voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), diff --git a/darc-protocol/test/votingTest/multiClassTokenVotingTest.ts b/darc-protocol/test/votingTest/multiClassTokenVotingTest.ts index 20bb81bc..be1262e6 100644 --- a/darc-protocol/test/votingTest/multiClassTokenVotingTest.ts +++ b/darc-protocol/test/votingTest/multiClassTokenVotingTest.ts @@ -57,7 +57,6 @@ describe("multi class token voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all sandbox_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -144,7 +143,6 @@ describe("multi class token voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), diff --git a/darc-protocol/test/votingTest/multiItemVotingNegativeTest.ts b/darc-protocol/test/votingTest/multiItemVotingNegativeTest.ts index 28caa66e..50e4b086 100644 --- a/darc-protocol/test/votingTest/multiItemVotingNegativeTest.ts +++ b/darc-protocol/test/votingTest/multiItemVotingNegativeTest.ts @@ -55,7 +55,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all sandbox_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -173,7 +172,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), @@ -197,7 +195,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(1), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), @@ -221,7 +218,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(2), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), @@ -245,7 +241,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(1), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), diff --git a/darc-protocol/test/votingTest/multiItemVotingTest.ts b/darc-protocol/test/votingTest/multiItemVotingTest.ts index bd9365a7..7bfa2dc9 100644 --- a/darc-protocol/test/votingTest/multiItemVotingTest.ts +++ b/darc-protocol/test/votingTest/multiItemVotingTest.ts @@ -55,7 +55,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all sandbox_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -173,7 +172,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), @@ -197,7 +195,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(1), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), @@ -221,7 +218,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(2), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), @@ -245,7 +241,6 @@ describe("multi item voting test", function () { votingRuleIndex: BigNumber.from(1), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), diff --git a/darc-protocol/test/votingTest/singleVoteNegativeTest.ts b/darc-protocol/test/votingTest/singleVoteNegativeTest.ts index e84494d4..cb095593 100644 --- a/darc-protocol/test/votingTest/singleVoteNegativeTest.ts +++ b/darc-protocol/test/votingTest/singleVoteNegativeTest.ts @@ -31,7 +31,6 @@ describe("single voting netative test", function () { votingRuleIndex: BigNumber.from(0), notes: "all sandbox_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -67,7 +66,6 @@ describe("single voting netative test", function () { votingRuleIndex: BigNumber.from(0), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), diff --git a/darc-protocol/test/votingTest/singleVotingTest.ts b/darc-protocol/test/votingTest/singleVotingTest.ts index 16a3e171..4884f04b 100644 --- a/darc-protocol/test/votingTest/singleVotingTest.ts +++ b/darc-protocol/test/votingTest/singleVotingTest.ts @@ -31,7 +31,6 @@ describe("single voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all sandbox_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -67,7 +66,6 @@ describe("single voting test", function () { votingRuleIndex: BigNumber.from(0), notes: "all voting_needed", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: false, conditionNodes:[{ id: BigNumber.from(0), From edac7e696cefa9ae8a714e119c73dfbf7bffb186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 14 Feb 2024 11:37:48 -0600 Subject: [PATCH 36/62] update --- darc-protocol/package.json | 2 +- darc-protocol/pnpm-lock.yaml | 2 +- .../test/MultiDARCTest/Multi_DARC_call_with_payment_test.ts | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/darc-protocol/package.json b/darc-protocol/package.json index 2d7e76c6..4422a492 100644 --- a/darc-protocol/package.json +++ b/darc-protocol/package.json @@ -18,7 +18,7 @@ "@openzeppelin/contracts-upgradeable": "^4.8.0", "@openzeppelin/hardhat-upgrades": "^1.22.1", "ethers": "^5.7.2", - "hardhat": "^2.20.0", + "hardhat": "^2.12.4", "hardhat-gas-reporter": "^1.0.9" } } diff --git a/darc-protocol/pnpm-lock.yaml b/darc-protocol/pnpm-lock.yaml index e98ab8cf..e7393c32 100644 --- a/darc-protocol/pnpm-lock.yaml +++ b/darc-protocol/pnpm-lock.yaml @@ -26,7 +26,7 @@ devDependencies: specifier: ^5.7.2 version: 5.7.2 hardhat: - specifier: ^2.20.0 + specifier: ^2.12.4 version: 2.20.0(ts-node@10.9.1)(typescript@5.0.4) hardhat-gas-reporter: specifier: ^1.0.9 diff --git a/darc-protocol/test/MultiDARCTest/Multi_DARC_call_with_payment_test.ts b/darc-protocol/test/MultiDARCTest/Multi_DARC_call_with_payment_test.ts index de05f170..50cacd8b 100644 --- a/darc-protocol/test/MultiDARCTest/Multi_DARC_call_with_payment_test.ts +++ b/darc-protocol/test/MultiDARCTest/Multi_DARC_call_with_payment_test.ts @@ -78,7 +78,6 @@ describe("test for multi DARC call test with payment", function () { votingRuleIndex: 0, notes: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8 should operate", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, } ], From f09c7125c4d98f97c706e6cdf1ee33f87cdfbc94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Wed, 14 Feb 2024 12:10:06 -0600 Subject: [PATCH 37/62] Update expression-test.ts --- darc-js/tests/expression-test/expression-test.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index ef794d38..d766e03c 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -67,7 +67,6 @@ describe('expression node basic test', () => { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes:[{ id: BigNumber.from(0), @@ -89,7 +88,6 @@ describe('expression node basic test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: or( @@ -211,7 +209,6 @@ describe('expression node basic test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: or( @@ -258,7 +255,6 @@ describe('expression node basic test', () => { votingRuleIndex: BigNumber.from(0), notes: "disable all program", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: new TRUE() // always true }, @@ -268,7 +264,6 @@ describe('expression node basic test', () => { votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, conditionNodes: operator_address_equals(target1) | operator_address_equals(target2) From d1b1ea503ce31d2a91510056273d42d1e006d2ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Thu, 15 Feb 2024 00:38:02 -0600 Subject: [PATCH 38/62] update --- .../docs/By-law Script/Getting Started.md | 93 +++++++++++-- .../conditionNodes/Condition_MachineState.ts | 63 ++++++++- darc-js/src/SDK/includes.ts | 8 +- darc-js/src/darcjs.ts | 8 +- .../Plugin/Condition_MachineState.sol | 128 ++++++++++++++++++ darc-specs/condition_expression.md | 12 +- 6 files changed, 295 insertions(+), 17 deletions(-) diff --git a/darc-docs/docs/By-law Script/Getting Started.md b/darc-docs/docs/By-law Script/Getting Started.md index 7f869167..952ed925 100644 --- a/darc-docs/docs/By-law Script/Getting Started.md +++ b/darc-docs/docs/By-law Script/Getting Started.md @@ -101,15 +101,92 @@ This script encapsulates all the operations into a single program, ensuring that Plugin is the core mechanism of DARC and serves as its legal framework. All rules within DARC are based on the plugin system. By-law Script supports operator overload to make the composition and design of plugins simpler and more convenient. In By-law Script, each plugin is an object body. Below is the simplest example: ```javascript -const plugin_0 ={ - returnType: NO, // return type: NO - level: 3, // level 3 +const plugin_0 = { + returnType: NO, // return type: NO + level: 3, // level 3 + votingRuleIndex: 0, // voting rule index, if voting is required + notes: "disable all operations", // the notes of the plugin + bIsEnabled: true, // the plugin is enabled. this is the default value + bIsBeforeOperation: true, // if the plugin is executed before the operation + conditionNodes: new TRUE() // condition: always true +}, +``` + +In the above plugin, we define conditionNodes with only one node, which is the object TRUE() we created. This plugin signifies that before any program or operation is executed, this plugin will be triggered. The returnType of this plugin is NO, indicating that whenever this plugin is triggered, it will be rejected. Therefore, when this plugin is successfully deployed in DARC, if no plugin of a higher level than level 3 is triggered to allow execution, then any operation will be rejected. + +Below is another example of a plugin: + +```javascript +const plugin_before_op_1 = { + returnType: SANDBOX_NEEDED, // return type: SANDBOX_NEEDED + level: 4, // level 3 + votingRuleIndex: 0, // voting rule index, if voting is required + notes: "minting tokens should be checked", // the notes of the plugin + bIsEnabled: true, // the plugin is enabled. this is the default value + bIsBeforeOperation: true, // if the plugin is executed before the operation + conditionNodes: + // if the operation is minting tokens or creating token classes + (operation_equals(EnumOpcode.BATCH_MINT_TOKENS) | + operation_equals(EnumOpcode.BATCH_PAY_TO_MINT_TOKENS)) + + // and the token index is in range [0, 3], which means the token index is 0, 1, 2, or 3 + & batch_op_any_token_class_in_range(0, 3) +} + +const plugin_after_op_1 = { + returnType: NO, + level: 6, votingRuleIndex: 0, - notes: "disable all program", + notes: "address_A must holds at least 20% of total voting and dividend weight", bIsEnabled: true, - bIsBeforeOperation: true, - conditionNodes: new TRUE() // always true -}, + bIsBeforeOperation: false, // after-operation plugin + conditionNodes: + + // if the address_A's voting weight percentage is less than 20% + // or the address_A's dividend weight percentage is less than 20% + address_voting_weight_percenrage_less_than(address_A, 20) + | address_dividend_weight_percenrage_less_than(address_A, 20) +} + +const plugin_before_op_2 = { + returnType: NO, + level: 6, + votingRuleIndex: 0, + notes: "no one can disable before-op plugin 1,2,3 or after-op plugin 1", + bIsEnabled: true, + bIsBeforeOperation: true, // before-operation plugin + conditionNodes: + + operation_equals(EnumOpcode.BATCH_DISABLE_PLUGINS) + & + ( disable_any_before_op_plugin_index_in_list([1,2,3]) + | disable_any_after_op_plugin_index_in_list([1]) + & not(operator_address_equals(address_A)) +} + +const plugin_before_op_3 = { + returnType: YES_AND_SKIP_SANDBOX, + level: 7, + votingRuleIndex: 0, + notes: "only address_A can disable before-op plugin 1,2,3 and after-op plugin 1", + bIsEnabled: true, + bIsBeforeOperation: true, // before-operation plugin + conditionNodes: + operation_equals(EnumOpcode.BATCH_DISABLE_PLUGINS) + & + ( disable_any_before_op_plugin_index_in_list([1,2,3]) + | disable_any_after_op_plugin_index_in_list([1]) + & operator_address_equals(address_A) +} ``` -In the plugin \ No newline at end of file + +In the example provided, we have defined four plugins: + +1. The first plugin marks any operation as SANDBOX_NEEDED if it is either batch_mint_tokens or batch_pay_to_mint_tokens, and the token level is 0, 1, 2, or 3. This plugin ensures that any addition to the supply of tokens at these levels must undergo sandbox checks. + +2. The second plugin marks any operation as NO if, after the execution of any program, the total voting or total dividend rights of address_A fall below 20% in the sandbox. This ensures that address_A retains anti-dilution ownership of 20% of the total shares, regardless of how other operators increase share issuance. + +3. The third plugin directly rejects any operation that is batch_disable_plugins, and the disabled plugin indexes are 1, 2, 3 in the before-operation plugin list, or 1 in the after-operation plugin list, and the operator address is not equal to address_A. This plugin ensures that no one other than address_A can disable this set of four plugins, thereby securing the 20% non-dilutable ownership of address_A. + +4. The fourth plugin allows any operation that is batch_disable_plugins, and the disabled plugin indexes are 1, 2, 3 in the before-operation plugin list, or 1 in the after-operation plugin list, and the operator address is equal to address_A. This plugin ensures that this set of four plugins can be disabled by anyone other than address_A, allowing address_A to waive the anti-dilution feature of its ownership by disabling these four plugins. \ No newline at end of file diff --git a/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts b/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts index 48c703b1..14180e51 100644 --- a/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts +++ b/darc-js/src/SDK/conditionNodes/Condition_MachineState.ts @@ -446,6 +446,61 @@ function token_in_list_amount_equals(tokenClassList: number[], amount: number) { }); } +function address_voting_weight_percenrage_greater_than(amount: number, address: string) { + return expression(95, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_voting_weight_percenrage_less_than(amount: number, address: string) { + return expression(96, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_voting_weight_percenrage_in_range(amount: number, address: string) { + return expression(97, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_dividend_weight_percenrage_greater_than(amount: number, address: string) { + return expression(98, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_dividend_weight_percenrage_less_than(amount: number, address: string) { + return expression(99, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + +function address_dividend_weight_percenrage_in_range(amount: number, address: string) { + return expression(100, { + STRING_ARRAY: [], + UINT256_2DARRAY: [[amount]], + ADDRESS_2DARRAY: [[address]], + BYTES: [] + }); +} + + export { timestamp_greater_than, timestamp_less_than, @@ -490,5 +545,11 @@ export { token_in_list_amount_greater_than, token_in_list_amount_less_than, token_in_list_amount_in_range, - token_in_list_amount_equals + token_in_list_amount_equals, + address_voting_weight_percenrage_greater_than, + address_voting_weight_percenrage_less_than, + address_voting_weight_percenrage_in_range, + address_dividend_weight_percenrage_greater_than, + address_dividend_weight_percenrage_less_than, + address_dividend_weight_percenrage_in_range }; \ No newline at end of file diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index 310d57a0..c64e661c 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -391,7 +391,13 @@ export { token_in_list_amount_greater_than, token_in_list_amount_less_than, token_in_list_amount_in_range, - token_in_list_amount_equals + token_in_list_amount_equals, + address_voting_weight_percenrage_greater_than, + address_voting_weight_percenrage_less_than, + address_voting_weight_percenrage_in_range, + address_dividend_weight_percenrage_greater_than, + address_dividend_weight_percenrage_less_than, + address_dividend_weight_percenrage_in_range } from "./conditionNodes/Condition_MachineState"; export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./conditionNodes/Condition_MembershipOp"; diff --git a/darc-js/src/darcjs.ts b/darc-js/src/darcjs.ts index 0370eb71..eddd5f33 100644 --- a/darc-js/src/darcjs.ts +++ b/darc-js/src/darcjs.ts @@ -426,7 +426,13 @@ export { token_in_list_amount_greater_than, token_in_list_amount_less_than, token_in_list_amount_in_range, - token_in_list_amount_equals + token_in_list_amount_equals, + address_voting_weight_percenrage_greater_than, + address_voting_weight_percenrage_less_than, + address_voting_weight_percenrage_in_range, + address_dividend_weight_percenrage_greater_than, + address_dividend_weight_percenrage_less_than, + address_dividend_weight_percenrage_in_range } from "./SDK/conditionNodes/Condition_MachineState"; export { change_member_role_to_any_role_equals, change_member_role_to_any_role_in_list, change_member_role_to_any_role_in_range, change_member_name_to_any_string_in_list, change_member_name_to_any_string_contains } from "./SDK/conditionNodes/Condition_MembershipOp"; diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol b/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol index 916e3853..1745b066 100644 --- a/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol +++ b/darc-protocol/contracts/protocol/Plugin/Condition_MachineState.sol @@ -12,6 +12,7 @@ import "../MachineStateManager.sol"; import "../Utilities/StringUtils.sol"; import "../Utilities/OpcodeMap.sol"; import "../Plugin.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; //import "./Conditions"; contract Condition_MachineState is MachineStateManager { @@ -69,6 +70,13 @@ contract Condition_MachineState is MachineStateManager { else if (id==92) return ID_92_TOKEN_IN_LIST_AMOUNT_LESS_THAN(bIsBeforeOperation, param); else if (id==93) return ID_93_TOKEN_IN_LIST_AMOUNT_IN_RANGE(bIsBeforeOperation, param); else if (id==94) return ID_94_TOKEN_IN_LIST_AMOUNT_EQUALS(bIsBeforeOperation, param); + + else if (id==95) return ID_95_ADDRESS_VOTING_WEIGHT_PERCENTAGE_GREATER_THAN(bIsBeforeOperation, param); + else if (id==96) return ID_96_ADDRESS_VOTING_WEIGHT_PERCENTAGE_LESS_THAN(bIsBeforeOperation, param); + else if (id==97) return ID_97_ADDRESS_VOTING_WEIGHT_PERCENTAGE_IN_RANGE(bIsBeforeOperation, param); + else if (id==98) return ID_98_ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_GREATER_THAN(bIsBeforeOperation, param); + else if (id==99) return ID_99_ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_LESS_THAN(bIsBeforeOperation, param); + else if (id==100) return ID_100_ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_IN_RANGE(bIsBeforeOperation, param); else return false; } @@ -543,6 +551,72 @@ contract Condition_MachineState is MachineStateManager { return totalAmount == param.UINT256_2DARRAY[1][0]; } + function ID_95_ADDRESS_VOTING_WEIGHT_PERCENTAGE_GREATER_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_95: ADDRESS_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_95: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_95: UINT256_2DARRAY[0] must have 1 element"); + if (bIsBeforeOp) { + return getAddressTotalVotingWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) > param.UINT256_2DARRAY[0][0]; + } else { + return getAddressTotalVotingWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) > param.UINT256_2DARRAY[0][0]; + } + } + + function ID_96_ADDRESS_VOTING_WEIGHT_PERCENTAGE_LESS_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_96: ADDRESS_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_96: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_96: UINT256_2DARRAY[0] must have 1 element"); + if (bIsBeforeOp) { + return getAddressTotalVotingWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) < param.UINT256_2DARRAY[0][0]; + } else { + return getAddressTotalVotingWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) < param.UINT256_2DARRAY[0][0]; + } + } + + function ID_97_ADDRESS_VOTING_WEIGHT_PERCENTAGE_IN_RANGE(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_97: ADDRESS_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_97: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_97: UINT256_2DARRAY[0] must have 2 elements"); + if (bIsBeforeOp) { + return getAddressTotalVotingWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) >= param.UINT256_2DARRAY[0][0] && getAddressTotalVotingWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) <= param.UINT256_2DARRAY[0][1]; + } else { + return getAddressTotalVotingWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) >= param.UINT256_2DARRAY[0][0] && getAddressTotalVotingWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) <= param.UINT256_2DARRAY[0][1]; + } + } + + function ID_98_ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_GREATER_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_98: ADDRESS_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_98: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_98: UINT256_2DARRAY[0] must have 1 element"); + if (bIsBeforeOp) { + return getAddressTotalDividendWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) > param.UINT256_2DARRAY[0][0]; + } else { + return getAddressTotalDividendWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) > param.UINT256_2DARRAY[0][0]; + } + } + + function ID_99_ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_LESS_THAN(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_99: ADDRESS_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_99: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 1, "CE ID_99: UINT256_2DARRAY[0] must have 1 element"); + if (bIsBeforeOp) { + return getAddressTotalDividendWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) < param.UINT256_2DARRAY[0][0]; + } else { + return getAddressTotalDividendWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) < param.UINT256_2DARRAY[0][0]; + } + } + + function ID_100_ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_IN_RANGE(bool bIsBeforeOp, NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_100: ADDRESS_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_100: UINT256_2DARRAY must have 1 element"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_100: UINT256_2DARRAY[0] must have 2 elements"); + if (bIsBeforeOp) { + return getAddressTotalDividendWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) >= param.UINT256_2DARRAY[0][0] && getAddressTotalDividendWeightPercentage(false, param.ADDRESS_2DARRAY[0][0]) <= param.UINT256_2DARRAY[0][1]; + } else { + return getAddressTotalDividendWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) >= param.UINT256_2DARRAY[0][0] && getAddressTotalDividendWeightPercentage(true, param.ADDRESS_2DARRAY[0][0]) <= param.UINT256_2DARRAY[0][1]; + } + } + //below are the helper functions function getDateTime(uint256 timestamp) public pure returns (uint256 year, uint256 month, uint256 day, uint256 hour, uint256 minute, uint256 second) { @@ -584,4 +658,58 @@ contract Condition_MachineState is MachineStateManager { return (_year, _month + 1, _day, _hour, _minute, _second); } + + /** + * @dev Get the total voting weight for a token class + */ + function getAddressTotalVotingWeightPercentage(bool bIsBeforeOp, address addr) private view returns (uint256) { + if (bIsBeforeOp) { + bool bIsValid = false; + uint256 result = 0; + + // multiply by 100 to get percentage + (bIsValid, result) = SafeMathUpgradeable.tryMul(addressTotalVotingWeight(false, addr), 100); + require(bIsValid, "CE getAddressTotalVotingWeightPercentage: SafeMathUpgradeable multiplication error"); + (bIsValid, result) = SafeMathUpgradeable.tryDiv(result, totalVotingWeights(false)); + require(bIsValid, "CE getAddressTotalVotingWeightPercentage: SafeMathUpgradeable division error"); + return result; + } else { + bool bIsValid = false; + uint256 result = 0; + + // multiply by 100 to get percentage + (bIsValid, result) = SafeMathUpgradeable.tryMul(addressTotalVotingWeight(true, addr), 100); + require(bIsValid, "CE getAddressTotalVotingWeightPercentage: SafeMathUpgradeable multiplication error"); + (bIsValid, result) = SafeMathUpgradeable.tryDiv(result, totalVotingWeights(true)); + require(bIsValid, "CE getAddressTotalVotingWeightPercentage: SafeMathUpgradeable division error"); + return result; + } + } + + /** + * @dev Get the total dividend weight for a token class + */ + function getAddressTotalDividendWeightPercentage(bool bIsBeforeOp, address addr) private view returns (uint256) { + if (bIsBeforeOp) { + bool bIsValid = false; + uint256 result = 0; + + // multiply by 100 to get percentage + (bIsValid, result) = SafeMathUpgradeable.tryMul(addressTotalDividendWeight(false, addr), 100); + require(bIsValid, "CE getAddressTotalDividendWeightPercentage: SafeMathUpgradeable multiplication error"); + (bIsValid, result) = SafeMathUpgradeable.tryDiv(result, totalDividendWeights(false)); + require(bIsValid, "CE getAddressTotalDividendWeightPercentage: SafeMathUpgradeable division error"); + return result; + } else { + bool bIsValid = false; + uint256 result = 0; + + // multiply by 100 to get percentage + (bIsValid, result) = SafeMathUpgradeable.tryMul(addressTotalDividendWeight(true, addr), 100); + require(bIsValid, "CE getAddressTotalDividendWeightPercentage: SafeMathUpgradeable multiplication error"); + (bIsValid, result) = SafeMathUpgradeable.tryDiv(result, totalDividendWeights(true)); + require(bIsValid, "CE getAddressTotalDividendWeightPercentage: SafeMathUpgradeable division error"); + return result; + } + } } \ No newline at end of file diff --git a/darc-specs/condition_expression.md b/darc-specs/condition_expression.md index 84daa24f..c2803a9b 100644 --- a/darc-specs/condition_expression.md +++ b/darc-specs/condition_expression.md @@ -129,12 +129,12 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] | 92 | TOKEN_IN_LIST_AMOUNT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || | 93 | TOKEN_IN_LIST_AMOUNT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || | 94 | TOKEN_IN_LIST_AMOUNT_EQUALS| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 95 | Placeholder95 | | | -| 96 | Placeholder96 | | | -| 97 | Placeholder97 | | | -| 98 | Placeholder98 | | | -| 99 | Placeholder99 | | | -| 100 | Placeholder100 | | | +| 95 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_GREATER_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 96 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 97 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 98 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 99 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_LESS_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 100 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || | 101 | Placeholder101 | | | | 102 | Placeholder102 | | | | 103 | Placeholder103 | | | From a08504a838f09f6ab3baf0f1d4f112159d97fc05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 16 Feb 2024 01:10:15 -0600 Subject: [PATCH 39/62] add --- .../docs/By-law Script/Getting Started.md | 212 +++++++++++++++++- darc-docs/docs/Overview/Overview.md | 12 +- darc-js/src/SDK/includes.ts | 3 +- 3 files changed, 214 insertions(+), 13 deletions(-) diff --git a/darc-docs/docs/By-law Script/Getting Started.md b/darc-docs/docs/By-law Script/Getting Started.md index 952ed925..4ea5a0f2 100644 --- a/darc-docs/docs/By-law Script/Getting Started.md +++ b/darc-docs/docs/By-law Script/Getting Started.md @@ -11,7 +11,68 @@ import TabItem from '@theme/TabItem'; By-law Script is the first programming language for describing the operations and rules for a DARC-based crypto company. It is a domain-specific language (DSL) that is designed to be easy to read and write, and to be used by non-programmers. It is based on JavaScript, and adds operator overloading to make it easier to write and read. -### Your First By-law Script Program +### Setup + +There are two ways to write and execute By-law Script programs. The first is to use the By-law Script IDE at [darc.app](darc.app), which is a web-based IDE that allows you to write, compile, and execute By-law Script programs. + +The second is to use the darcjs SDK, which is a command-line tool that allows you to write By-law Script programs in a text editor and then compile and execute them. + +To install darcjs, you can use npm: + + + + +```shell +npm install darcjs +``` + + + + +```shell +yarn add darcjs +``` + + + + +```shell +pnpm install darcjs +``` + + + + +Then you can import darcjs and use `transpileAndRun()` to compile and execute By-law Script programs. + +```javascript +import { transpileAndRun, ethers } from 'darcjs'; + +await transpileAndRun( + + // By-law Script code + ` + batch_transfer_tokens( + [Address_B], // the addresses of the recipients + [0], // the token index + [100]); // the amounts + `, + + // signer + new ethers.Wallet( + YOUR_PRIVATE_KEY, + new ethers.providers.JsonRpcProvider( YOUR_JSON_RPC_PROVIDER_URL ) + ), + + // DARC address + "0x123...", + + // DARC version + DARC_VERSION.Latest +); +``` + +### Your first By-law Script program Here is a simple By-law Script program that defines the common stock of a company. Each share of common stock has voting weight 1 and dividend weight 1. This token class is called `token_0`, and the token index is 0. @@ -59,7 +120,7 @@ Finally, Address_C wants to issue dividends to all token holders. The following offer_dividends(); ``` -### Package Operations into a Program +### Package operations into a program The above examples of code all execute single operations. For a program, it can contain multiple operations, and all operations will be executed sequentially, one after another. The advantage of doing this is that if an operator needs to execute a program and the program consists of multiple operations, it is necessary to ensure that all operations contained in this program are successfully approved for execution by voting, or the entire program is rejected as a whole. @@ -96,7 +157,41 @@ batch_mint_tokens( This script encapsulates all the operations into a single program, ensuring that they are either all approved and executed successfully or all rejected without any execution. If the program requires voting, it must undergo the voting process as a whole. If rejected, Address_E will not obtain shares, a board seat, nor pay the cash, which will be refunded to Address_E. -### Your First Plugin as a Law + +### Write By-law Script, just like writing JavaScript + +By-law Script is based on JavaScript, so most of the syntax and grammar are the same as JavaScript, including the use of variables, constants, and functions. + +Below is a batch script that paying cash to different addresses with different amounts. The amount is saved in a map, and the payment is executed in a loop. + +```javascript +const balance = new Map( + [ + [address_X1, 1000000], + [address_X2, 2000000], + [address_X3, 3000000], + [address_X4, 4000000] + ] +); + +for (const [address, amount] of balance) { + batch_add_withdrawable_balances( // if you don't want to package all operations into a batch operation + [address], // the addresses of the recipients + [amount]); // the amounts +} +``` + +### Remember to add notes to the program + +When you write a By-law Script program, it is important to add notes to the program to explain the purpose of the program. This is especially important when the program requires voting. The notes will be displayed to the voters during the voting process, and will help them to understand the purpose of the program and make a decision. + +By adding notes, you can just call the `setNote()` function in any place of the program. Below is an example of adding notes to the program. + +```javascript +setNote("Investment agreement for Address_E"); +``` + +### Your first Plugin-as-a-Law Plugin is the core mechanism of DARC and serves as its legal framework. All rules within DARC are based on the plugin system. By-law Script supports operator overload to make the composition and design of plugins simpler and more convenient. In By-law Script, each plugin is an object body. Below is the simplest example: @@ -108,13 +203,16 @@ const plugin_0 = { notes: "disable all operations", // the notes of the plugin bIsEnabled: true, // the plugin is enabled. this is the default value bIsBeforeOperation: true, // if the plugin is executed before the operation - conditionNodes: new TRUE() // condition: always true + conditionNodes: boolean_true() // condition: always true }, ``` In the above plugin, we define conditionNodes with only one node, which is the object TRUE() we created. This plugin signifies that before any program or operation is executed, this plugin will be triggered. The returnType of this plugin is NO, indicating that whenever this plugin is triggered, it will be rejected. Therefore, when this plugin is successfully deployed in DARC, if no plugin of a higher level than level 3 is triggered to allow execution, then any operation will be rejected. -Below is another example of a plugin: + +One of the most important features of By-law Script is its ability to use operator overloading to write condition nodes. Each condition node is an expression with parameters, and condition nodes are a series of expressions connected by logical operators such as AND, OR, and NOT. Therefore, by supporting operator overload at the transpiler level, developers can easily write condition nodes as triggering conditions for plugins. + +Below is an example of composing plugins with condition nodes using operator overloading. It contains four plugins, establishing a set of rules for address_A to maintain a 20% non-dilutable ownership of the company's shares. ```javascript const plugin_before_op_1 = { @@ -160,7 +258,7 @@ const plugin_before_op_2 = { operation_equals(EnumOpcode.BATCH_DISABLE_PLUGINS) & ( disable_any_before_op_plugin_index_in_list([1,2,3]) - | disable_any_after_op_plugin_index_in_list([1]) + | disable_any_after_op_plugin_index_in_list([1]) ) & not(operator_address_equals(address_A)) } @@ -175,12 +273,11 @@ const plugin_before_op_3 = { operation_equals(EnumOpcode.BATCH_DISABLE_PLUGINS) & ( disable_any_before_op_plugin_index_in_list([1,2,3]) - | disable_any_after_op_plugin_index_in_list([1]) + | disable_any_after_op_plugin_index_in_list([1]) ) & operator_address_equals(address_A) } ``` - In the example provided, we have defined four plugins: 1. The first plugin marks any operation as SANDBOX_NEEDED if it is either batch_mint_tokens or batch_pay_to_mint_tokens, and the token level is 0, 1, 2, or 3. This plugin ensures that any addition to the supply of tokens at these levels must undergo sandbox checks. @@ -189,4 +286,101 @@ In the example provided, we have defined four plugins: 3. The third plugin directly rejects any operation that is batch_disable_plugins, and the disabled plugin indexes are 1, 2, 3 in the before-operation plugin list, or 1 in the after-operation plugin list, and the operator address is not equal to address_A. This plugin ensures that no one other than address_A can disable this set of four plugins, thereby securing the 20% non-dilutable ownership of address_A. -4. The fourth plugin allows any operation that is batch_disable_plugins, and the disabled plugin indexes are 1, 2, 3 in the before-operation plugin list, or 1 in the after-operation plugin list, and the operator address is equal to address_A. This plugin ensures that this set of four plugins can be disabled by anyone other than address_A, allowing address_A to waive the anti-dilution feature of its ownership by disabling these four plugins. \ No newline at end of file +4. The fourth plugin allows any operation that is batch_disable_plugins, and the disabled plugin indexes are 1, 2, 3 in the before-operation plugin list, or 1 in the after-operation plugin list, and the operator address is equal to address_A. This plugin ensures that this set of four plugins can be disabled by anyone other than address_A, allowing address_A to waive the anti-dilution feature of its ownership by disabling these four plugins. + +After the plugin is defined, it can be added to the plugin list of the DARC. Below is an example of adding the above four plugins to the plugin list of the DARC. Make sure that the existing before-operation plugin list only contains 1 plugin, and the existing after-operation plugin list also only contains 1 plugin. + +```javascript +batch_add_and_enable_plugins( + [plugin_before_op_1, plugin_after_op_1, plugin_before_op_2, plugin_before_op_3]); +``` + +### How does operator overloading work in By-law Script? + +There are three types of condition nodes in the By-law Script, all of which are inherited from the base class `Node` + +1. Expression, a condition node that is a single expression with parameters, without any child nodes, such as `operator_address_equals(inputAddress)`. +2. Logical operators(`and`, `or`, `not`), a condition node that is a series of expressions connected by logical operators. +3. Boolean constants(`boolean_true`, `boolean_false`), a condition node that is a boolean constant. + +The transpiler of By-law Script supports operator overloading for the base `Node` type with bit-and `&` and bit-or `|`, and will be overloaded to the logical operators `and` and `or` respectively. + +For example, the following expression: + +```javascript +expression1() & (expression2() | expression3() ) & expression4() +``` + +will be transpiled and overloaded to: + +```javascript +and( + expression1(), + or(expression2(), expression3()), + expression4() +) +``` + +Since each lower-case function is actually the wrapper of the constructor of the corresponding object, the above code is equivalent to the following code: + +```javascript +new AND( + new Expression1(), + new OR(new Expression2(), new Expression3()), + new Expression4() +) +``` + +And when the condition nodes are set to plugin, the runtime will automatically serialize the tree-like structure of the condition nodes to the list of nodes(if the type of condition nodes value is `Node`), which is the actual format of the condition nodes in the plugin for DARC interface. The above example will be transpiled to (in pseudo-code): + +```javascript +[ + // node index 0: the root node, the AND node + { + nodeType: "LOGICAL_OPERATOR", + logialOperator: "AND", + childList: [1, 2, 5] + }, + + // node index 1: expression 1 + { + nodeType: "EXPRESSION", + expression: "expression1" + param: {} + childList: [] + }, + + // node index 2: OR node + { + nodeType: "LOGICAL_OPERATOR", + logialOperator: "OR", + childList: [3, 4] + }, + + // node index 3: expression 2 + { + nodeType: "EXPRESSION", + expression: "expression2" + param: {} + childList: [] + }, + + // node index 4: expression 3 + { + nodeType: "EXPRESSION", + expression: "expression3" + param: {} + childList: [] + }, + + // node index 5: expression 4 + { + nodeType: "EXPRESSION", + expression: "expression4" + param: {} + childList: [] + } +] +``` + +In this way, the transpiler of By-law Script supports operator overloading for the condition nodes, and runtime generate the actual format of the condition nodes in the plugin for DARC interface. diff --git a/darc-docs/docs/Overview/Overview.md b/darc-docs/docs/Overview/Overview.md index 1436f198..c7681199 100644 --- a/darc-docs/docs/Overview/Overview.md +++ b/darc-docs/docs/Overview/Overview.md @@ -1,5 +1,13 @@ # Overview -## What is DARC? +### What is DARC? -Decentralized Autonomous Regulated Corporation(DARC) is a protocol that \ No newline at end of file +Decentralized Autonomous Regulated Corporation(DARC) is a virtual machine that written in Solidity. It is a smart contract that can be deployed on Ethereum or EVM-compatible blockchain. It is fully open source and can be used by anyone under the license. + +The ultimate goal of the DARC project is to design a comprehensive, self-regulating corporate governance system that liberates itself from the textual contracts and external regulations imposed by government and legal registrations such as C-corp, LLC, and foundations. It aims to achieve a complete, internal, trustworthy, and programmable plugin system for self-regulation within DARC instances. Therefore, it possesses the following characteristics: + +1. Multi-level tokens: DARC can configure multiple levels of tokens, each with its own voting weight and dividend weight. Through various configurations and combinations, tokens at different levels can serve as common stock, class A/B stock, company bonds, board of directors positions, preferred stock, and various other company assets and ownership structures defined by complex rules. Similarly, multi-level tokens can be commodities and services sold by DARC, whether they are fungible or non-fungible tokens. + +2. Plugin-as-a-Law: Plugin is the central mechanism of the DARC protocol, governing and establishing all rules within DARC, including the addition, enabling, and disabling of plugins themselves. Plugins define the operations permitted or prohibited within DARC under specific conditions. In the DARC framework, users can set up and add a complete set of plugins to define the daily operations of DARC, including board operations, company bylaws, shareholder agreements, complex investment agreements with various conditions, dividend regulations, employment contracts, procurement contracts, and more. By designing comprehensive and diverse plugins, DARC can be perfected much like real-world company legal contracts, regulating all operations of DARC members such as shareholders, the board of directors, employees, customers, and suppliers. + +3. Operation and Program: In the context of the DARC protocol, all operations are abstracted into a series of operations, including opcodes and parameters. Users can design, compile, and run all daily management and operations of DARC, including equity operations, member operations, cash operations, plugin design and maintenance, voting operations, and more, using By-law Script. These scripts are deployed and executed on the DARC virtual machine instance deployed on the blockchain. \ No newline at end of file diff --git a/darc-js/src/SDK/includes.ts b/darc-js/src/SDK/includes.ts index c64e661c..403b77c2 100644 --- a/darc-js/src/SDK/includes.ts +++ b/darc-js/src/SDK/includes.ts @@ -1,6 +1,5 @@ // all the included instructions are here, mostly instructions for operations import { OperationStruct, PluginStruct, PluginStructWithNode, VotingRuleStruct } from "../types/basicTypes"; -import { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT } from "./Node"; import { BigNumber } from "ethers"; import { objectMethod } from "@babel/types"; @@ -78,7 +77,7 @@ export { BigNumber }; /** * The basic node for the program */ -export { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT }; +export { Node, expression, TRUE, FALSE, AND, OR, and, or, not, NOT, boolean_true, boolean_false } from "./Node"; /** * The setter for the program notes From 13bac46e00ab5a4fb5a766fe5582c419f00c4c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 16 Feb 2024 01:26:56 -0600 Subject: [PATCH 40/62] Update Overview.md --- darc-docs/docs/Overview/Overview.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/darc-docs/docs/Overview/Overview.md b/darc-docs/docs/Overview/Overview.md index c7681199..960d428a 100644 --- a/darc-docs/docs/Overview/Overview.md +++ b/darc-docs/docs/Overview/Overview.md @@ -4,10 +4,30 @@ Decentralized Autonomous Regulated Corporation(DARC) is a virtual machine that written in Solidity. It is a smart contract that can be deployed on Ethereum or EVM-compatible blockchain. It is fully open source and can be used by anyone under the license. +### DARC Project Goals and Features + The ultimate goal of the DARC project is to design a comprehensive, self-regulating corporate governance system that liberates itself from the textual contracts and external regulations imposed by government and legal registrations such as C-corp, LLC, and foundations. It aims to achieve a complete, internal, trustworthy, and programmable plugin system for self-regulation within DARC instances. Therefore, it possesses the following characteristics: 1. Multi-level tokens: DARC can configure multiple levels of tokens, each with its own voting weight and dividend weight. Through various configurations and combinations, tokens at different levels can serve as common stock, class A/B stock, company bonds, board of directors positions, preferred stock, and various other company assets and ownership structures defined by complex rules. Similarly, multi-level tokens can be commodities and services sold by DARC, whether they are fungible or non-fungible tokens. 2. Plugin-as-a-Law: Plugin is the central mechanism of the DARC protocol, governing and establishing all rules within DARC, including the addition, enabling, and disabling of plugins themselves. Plugins define the operations permitted or prohibited within DARC under specific conditions. In the DARC framework, users can set up and add a complete set of plugins to define the daily operations of DARC, including board operations, company bylaws, shareholder agreements, complex investment agreements with various conditions, dividend regulations, employment contracts, procurement contracts, and more. By designing comprehensive and diverse plugins, DARC can be perfected much like real-world company legal contracts, regulating all operations of DARC members such as shareholders, the board of directors, employees, customers, and suppliers. -3. Operation and Program: In the context of the DARC protocol, all operations are abstracted into a series of operations, including opcodes and parameters. Users can design, compile, and run all daily management and operations of DARC, including equity operations, member operations, cash operations, plugin design and maintenance, voting operations, and more, using By-law Script. These scripts are deployed and executed on the DARC virtual machine instance deployed on the blockchain. \ No newline at end of file +3. Operation and Program: In the context of the DARC protocol, all operations are abstracted into a series of operations, including opcodes and parameters. Users can design, compile, and run all daily management and operations of DARC, including equity operations, member operations, cash operations, plugin design and maintenance, voting operations, and more, using By-law Script. These scripts are deployed and executed on the DARC virtual machine instance deployed on the blockchain. + +### DARC Project Structure + +The entire DARC Project ([https://github.com/project-darc](https://github.com/project-darc)) is divided into four parts: + +1. DARC Protocol: This is the core component of DARC and serves as the virtual machine that interprets and executes all operations and programs. This part is written and completed in Solidity. Users can choose to deploy the prebuilt DARC binary or modify and compile their own DARC protocol for one-click deployment to an EVM-compatible blockchain. + +2. By-law Script: By-law Script is a programming language used to write DARC programs and plugins. The basic syntax of By-law Script is almost identical to JavaScript, and it uniquely supports operator overloading. Therefore, users can easily write complex boolean logic and comprehensive conditional statements. By-law Script is the first programming language designed to write executable and deployable legal code within legal entities. + +3. darcjs: darcjs: darcjs is a toolkit and SDK for developers and users to interact with the DARC protocol. With darcjs, users can easily compile and run By-law Script, deploy the DARC protocol on specified EVM-compatible blockchains, or embed core functionalities related to DARC in developer projects, such as payments, voting, asset transfers, legal updates, cash withdrawals, and more. + +4. DARC Studio: DARC Studio is a visual web frontend. With DARC Studio, users can easily write and run By-law Script in the browser without installing darcjs. It visualizes various information about deployed DARC instances, such as recent activities, assets, equity distributions, legal documents, and more. + +### Community + +Telegram: [https://t.me/projectdarc](https://t.me/projectdarc) +Github: [https://github.com/project-darc](https://github.com/project-darc) +Github Discussions: [https://github.com/orgs/Project-DARC/discussions](https://github.com/orgs/Project-DARC/discussions) \ No newline at end of file From 8b1ca88ca7378648113fd690eb92f310add16c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 16 Feb 2024 23:14:16 -0600 Subject: [PATCH 41/62] update --- darc-docs/docs/darc.js/Getting Started.md | 230 +++++++++++++++++- .../tests/expression-test/expression-test.ts | 10 +- 2 files changed, 228 insertions(+), 12 deletions(-) diff --git a/darc-docs/docs/darc.js/Getting Started.md b/darc-docs/docs/darc.js/Getting Started.md index cbc7d4c7..61f11a98 100644 --- a/darc-docs/docs/darc.js/Getting Started.md +++ b/darc-docs/docs/darc.js/Getting Started.md @@ -7,12 +7,12 @@ import TabItem from '@theme/TabItem'; # Getting Started -## What is darc.js? +### What is darc.js? **darc.js** is a TypeScript/JavaScript library for interacting with the DARC virtual machine for node.js and the browser environment. -## Installation +### Installation You need to install **ethers.js** with version 5.7.2 or 5.x.x toghether with **darc.js**. @@ -20,32 +20,32 @@ You need to install **ethers.js** with version 5.7.2 or 5.x.x toghether with **d ```shell -npm install darcjs ethers@5.7.2 +npm install darcjs ``` ```shell -yarn add darcjs ethers@5.7.2 +yarn add darcjs ``` ```shell -pnpm install darcjs ethers@5.7.2 +pnpm install darcjs ``` -## Usage +### Usage To use darc.js supports ESM, import it as follows: ```ts -import {darcjs} from 'darcjs'; +import * as darcjs from 'darcjs'; ``` Or if you are using CommonJS: @@ -54,3 +54,219 @@ Or if you are using CommonJS: const darcjs = require('darcjs'); ``` +### Deploy your DARC + +To deploy DARC on an EVM-compatible blockchain, you need to use the `deployDARC(DARC_VERSION, signer)` function, in which `DARC_VERSION` is the version of DARC you want to deploy and signer is the signer of the transaction. If you are using the browser environment and want to get the signer from the **MetaMask** wallet, you can use the `getSigner()` function from `ethers.js`, for example: + + +```ts +import { deployDARC, ethers } from 'darcjs'; + +// Get signer from MetaMask wallet +const signer = (new ethers.providers.Web3Provider(window.ethereum)).getSigner(); + +// deploy DARC +const darc_contract_address = await darcjs.deployDARC( + DARC_VERSION.Latest, signer +); +``` + +If you are using the node.js environment, you need to use `ethers.providers` to construct a provider, then use the `ethers.Wallet` class from `ethers.js` to create a signer with a private key, for example: + +```ts +import { deployDARC, ethers } from 'darcjs'; + +// Construct the provider via JsonRpcProvider on local devnet node +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// Construct the signer via Wallet class and private key +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + +// deploy DARC +const darc_contract_address = await deployDARC( + DARC_VERSION.Latest, signer +); + +// print the address of the deployed DARC +console.log("The deployed DARC address: " + darc_contract_address); +``` + +### Access to a deployed DARC(read only) + +To access a deployed DARC on an EVM-compatible blockchain, you need to constrcut a `DARC` object via the `DARC` class, in which the constructor takes the address of the deployed DARC and the signer or provider as parameters. +Also you need to specify the version of the DARC you want to access, and the provider for accessing the EVM-compatible blockchain. + +Since you do not need to write anyting to the blockchain or execute any DARC program, you can just use the `provider` to access the DARC, and it is not necessary to use the `signer` for the DARC constructor. + +For example: + +```ts +import { DARC, ethers } from 'darcjs'; + +// Construct a provider via JsonRpcProvider on local devnet node +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// Get the deployed DARC address +const darc_contract_address = '0x5FbDB2315678afecb367f032d93F642f64180aa3'; + +// Construct a DARC object +const myDARC_readOnly = new DARC({ + address: darc_contract_address, + provider: provider, + version: DARC_VERSION.Latest, +}); + +// Read the member address list of the DARC +const memberList = await myDARC_readOnly.getMemberList(); + +// Read the member name via member address +for (let i = 0; i < memberList.length; i++) { + const memberInfo = await myDARC_readOnly.getMemberInfo(memberList[i]); + console.log("The member name of " + memberList[i] + " is " + memberInfo.name); +} +``` + +### Access to a deployed DARC(with signer) + +If you want to access a deployed DARC on an EVM-compatible blockchain, and run the program or withdraw some cash from the DARC, you need to use the `signer` to construct the `DARC` object via the `DARC` class, in which the constructor takes the address of the deployed DARC, the signer and the version of the DARC you want to access as parameters. + +Since the signer contains the private key and provider information, it is not necessary to use the `provider` for the DARC constructor. + +Here is an example of how to access a deployed DARC with a signer: + +```ts +import { DARC, ethers } from 'darcjs'; + +// Construct a provider via JsonRpcProvider on local devnet node +const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); + +// Construct the signer via Wallet class and private key +const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + + +// Get the deployed DARC address +const darc_contract_address = '0x5FbDB2315678afecb367f032d93F642f64180aa3'; + +// Construct a DARC object +const myDARC = new DARC({ + address: darc_contract_address, + wallet: signer, // pass the signer to the DARC constructor + version: DARC_VERSION.Latest, +}); + +``` + +Then you can use the `darc` object to access the deployed DARC, not only read the data of the DARC, but also run the program on the DARC. For example: + +```ts +import {transpileAndRun} from 'darcjs'; +// Write a code snippet of DARC program +let byLawScript = +` +// define address 1 and 2 for minting tokens +const addr1 = '0x0000'; +const addr2 = '0x0001'; + +// mint tokens to address addr1 and addr2 +batch_mint_tokens( + [0,0,1,1], + [1000,1000,2000,2000], + [addr1, addr2, addr1, addr2] + ); + +// enable plugins 3, 4 before sandbox checking operation +// and disable plugins 5, 6 after sandbox checking operation +batch_enable_plugins( + [3,4,5,6], + [true, true, false, false] +); + +// finally, offer dividends to every token holder +offer_dividends(); +` + +// Transpile and run the By-law Script program on the DARC deployed on the chain +const result = await myDARC.transpileAndRun( + byLawScript, + signer, + dart_contract_address, + DARC_VERSION.Latest +); +``` + +### Execute a By-law Script program on the DARC + +The `transpileAndRun` function is used to execute a By-law Script program on the DARC. It takes the By-law Script program, the signer, the address of the deployed DARC and the version of the DARC as parameters. + +Here is an example of how to execute a By-law Script program on the DARC: + +```ts +import {transpileAndRun} from 'darcjs'; + +// Write a code snippet of DARC program +let byLawScript = +` +batch_transfer_tokens( + ["0x0123..."], // the addresses of the recipients + [0], // the token index + [100]); // the amounts +` + +// Execute the By-law Script program on the DARC deployed on the chain +const result = await transpileAndRun( + byLawScript, + signer, + dart_contract_address, + DARC_VERSION.Latest +); +``` + +The `transpileAndRun` function contains two parts: the first part is to transpile the By-law Script program into the operation list, do parsing for the By-law Script and replace the operator `|`, `&` with condition node constructor `or()`, `and()` respectively, and the second part is to execute the operation list on the DARC, pushing each operation with opcode and parameters into a list, and send the big chunk of object body with all operations to the DARC entrance. + +### Execute an operation list via SDK + +Also you can execute an operation list on the DARC via the SDK, without the By-law Script syntax. The `executeOperationList` function is used to execute an operation list on the DARC. It takes the operation list, the signer, the address of the deployed DARC and the version of the DARC as parameters. You can just import all the operations and plugins you need from the `darcjs` library, and then use the `executeOperationList` function to execute the operation list on the DARC. + +Here is an example in TypeScript about how to execute an operation list via SDK: + +```ts +import { + executeOperationList, + batch_transfer_tokens, + operator_address_equals, + batch_add_and_enable_plugins +} from 'darcjs'; + + +const result = executeOperationList( + [ + // first operation: batch transfer tokens + batch_transfer_tokens( + ["0x0123..."], // the addresses of the recipients + [0], // the token index + [100]), // the amounts + + batch_add_and_enable_plugins( + [ + { + returnType: EnumReturnType.YES_AND_SKIP_SANDBOX, // yes and skip sandbox + level: BigInt(103), + votingRuleIndex: BigInt(0), + notes: "allow operatorAddress == target1 | operatorAddress == target2", + bIsEnabled: true, + bIsBeforeOperation: true, + conditionNodes: + or( + operator_address_equals(target1), + operator_address_equals(target2) + ).generateConditionNodeList() + } + ] + ) + ], + signer, + dart_contract_address, + DARC_VERSION.Latest +); + +``` \ No newline at end of file diff --git a/darc-js/tests/expression-test/expression-test.ts b/darc-js/tests/expression-test/expression-test.ts index d766e03c..f46892ac 100644 --- a/darc-js/tests/expression-test/expression-test.ts +++ b/darc-js/tests/expression-test/expression-test.ts @@ -1,10 +1,10 @@ -import {executeOperationList, operator_address_equals} from "../../src/darcjs"; +import {EnumReturnType, executeOperationList, operator_address_equals} from "../../src/darcjs"; import { deployDARC, DARC_VERSION} from '../../src/darcjs'; import { ethers, BigNumber } from 'ethers'; import * as DARC from '../../src/DARC/DARC'; import 'mocha'; import { expect } from 'chai'; -import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes } from "../../src/darcjs"; +import { batch_add_and_enable_plugins, batch_mint_tokens, batch_create_token_classes, EnumOpcode } from "../../src/darcjs"; import {or, node, and, expression} from "../../src/SDK/Node"; import { transpileAndRun } from "../../src/SDK/runtime"; @@ -62,7 +62,7 @@ describe('expression node basic test', () => { [ // plugin 0: disable all operations { - returnType: BigNumber.from(2), // no + returnType: EnumReturnType.NO, // no level: BigNumber.from(3), // level 3 votingRuleIndex: BigNumber.from(0), notes: "disable all program", @@ -83,7 +83,7 @@ describe('expression node basic test', () => { }] }, { - returnType: BigInt(4), // yes and skip sandbox + returnType: EnumReturnType.YES_AND_SKIP_SANDBOX, // yes and skip sandbox level: BigInt(103), votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", @@ -204,7 +204,7 @@ describe('expression node basic test', () => { batch_add_and_enable_plugins( [ { - returnType: BigInt(4), // yes and skip sandbox + returnType: EnumReturnType.YES_AND_SKIP_SANDBOX, // yes and skip sandbox level: BigInt(103), votingRuleIndex: BigInt(0), notes: "allow operatorAddress == target1 | operatorAddress == target2", From 83c2c61def0c3b7c23c847432e5e3bf4cc8d1c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 16 Feb 2024 23:19:57 -0600 Subject: [PATCH 42/62] Update Getting Started.md --- darc-docs/docs/darc.js/Getting Started.md | 50 ++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/darc-docs/docs/darc.js/Getting Started.md b/darc-docs/docs/darc.js/Getting Started.md index 61f11a98..6bab99ce 100644 --- a/darc-docs/docs/darc.js/Getting Started.md +++ b/darc-docs/docs/darc.js/Getting Started.md @@ -269,4 +269,52 @@ const result = executeOperationList( DARC_VERSION.Latest ); -``` \ No newline at end of file +``` + +### Development Notes: + +To run the test for darcjs, you need to clone the darcjs repository from the GitHub, and then run the test with the following commands: + +```shell +git clone https://github.com/Project-DARC/DARC.git +``` + +Then first install the dependencies for `darc-protocol` project + +```shell +cd darc-protocol +npm install +``` + +And start a local devnet node with the following command: + +```shell +npx hardhat node +``` + +Then run the test for `darc-protocol` project + +```shell +npx hardhat test +``` + +Then switch to the `darcjs` project and install the dependencies for `darcjs` project + +```shell +cd ../darcjs +pnpm install +``` + +And run the test for `darcjs` project + +```shell +pnpm run test +``` + +Remember, you need to install `pnpm` before running the test for `darcjs` project, and you can install `pnpm` with the following command: + +```shell +npm install -g pnpm +``` + +Also do not forget to initialize the `darc-protocol` project and start a local devnet node before running the test for `darcjs` project. \ No newline at end of file From 2194a2fc46018345f60aa7065bfcfe8a849e9107 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 17 Feb 2024 05:56:03 -0600 Subject: [PATCH 43/62] update --- .../docs/DARC Protocol/Condition Nodes.md | 5 + darc-docs/docs/DARC Protocol/OpCodes.md | 82 ++++++++--------- .../docs/darc.js/Access to a deployed DARC.md | 92 ------------------- darc-docs/docs/darc.js/Deploy your DARC.md | 42 --------- darc-docs/docs/darc.js/Run program on DARC.md | 5 - 5 files changed, 45 insertions(+), 181 deletions(-) create mode 100644 darc-docs/docs/DARC Protocol/Condition Nodes.md delete mode 100644 darc-docs/docs/darc.js/Access to a deployed DARC.md delete mode 100644 darc-docs/docs/darc.js/Deploy your DARC.md delete mode 100644 darc-docs/docs/darc.js/Run program on DARC.md diff --git a/darc-docs/docs/DARC Protocol/Condition Nodes.md b/darc-docs/docs/DARC Protocol/Condition Nodes.md new file mode 100644 index 00000000..086028d9 --- /dev/null +++ b/darc-docs/docs/DARC Protocol/Condition Nodes.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 3 +--- + +# Condition Nodes diff --git a/darc-docs/docs/DARC Protocol/OpCodes.md b/darc-docs/docs/DARC Protocol/OpCodes.md index f9d19ebf..fc5f9d48 100644 --- a/darc-docs/docs/DARC Protocol/OpCodes.md +++ b/darc-docs/docs/DARC Protocol/OpCodes.md @@ -4,7 +4,7 @@ sidebar_position: 2 # OpCodes -## What is an OpCode? +### What is an OpCode? Decentralized Autonomous Regulated Corporation (DARC) is a protocol that enables the creation and management of autonomous entities with built-in governance and regulatory mechanisms. One of the key components of the DARC protocol is the opcode instruction set, which defines the basic operations for managing tokens, money, and law within the system. @@ -16,44 +16,42 @@ Furthermore, the opcode instruction set includes operations for handling monetar By defining these operations through opcodes, the DARC protocol ensures consistency, transparency, and security in managing tokens, money, and law within autonomous entities. These instructions form the foundation for the decentralized governance and regulation of corporations, providing a framework for transparent and auditable decision-making processes. -## Opcode List - -| Opcode | Opcode ID | Parameters | Description | -|------------------------|-----------|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------| -| UNDEFINED | 0 | N/A | Invalid Operation | -| BATCH_MINT_TOKENS | 1 | `toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Mint Token Operation | -| BATCH_CREATE_TOKEN_CLASSES | 2 | `nameArray`: string[]
`tokenIndexArray`: uint256[]
`votingWeightArray`: uint256[]
`dividendWeightArray`: uint256[] | Batch Create Token Class Operation | -| BATCH_TRANSFER_TOKENS | 3 | `toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Transfer Token Operation | -| BATCH_TRANSFER_TOKENS_FROM_TO | 4 | `fromAddressArray`: address[]
`toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Transfer Token From Addr A to Addr B Operation | -| BATCH_BURN_TOKENS | 5 | `tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Burn Token Operation | -| BATCH_BURN_TOKENS_FROM | 6 | `fromAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Burn Token From Addr A Operation | -| BATCH_ADD_MEMBERSHIPS | 7 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[]
`memberNameArray`: string[] | Batch Add Member Operation | -| BATCH_SUSPEND_MEMBERSHIPS | 8 | `memberAddressArray`: address[] | Batch Suspend Member Operation | -| BATCH_RESUME_MEMBERSHIPS | 9 | `memberAddressArray`: address[] | Batch Resume Member Operation | -| BATCH_CHANGE_MEMBER_ROLES | 10 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[] | Batch Change Member Role Operation | -| BATCH_CHANGE_MEMBER_NAMES | 11 | `memberAddressArray`: address[]
`memberNameArray`: string[] | Batch Change Member Name Operation | -| BATCH_ADD_PLUGINS | 12 | `pluginList`: Plugin[] | Batch Add Emergency Agent Operation | -| BATCH_ENABLE_PLUGINS | 13 | `pluginIndexArray`: uint256[]
`isBeforeOperationArray`: bool[] | Batch Enable Plugin Operation | -| BATCH_DISABLE_PLUGINS | 14 | `pluginIndexArray`: uint256[]
`isBeforeOperationArray`: bool[] | Batch Disable Plugin Operation | -| BATCH_ADD_AND_ENABLE_PLUGINS | 15 | `pluginList`: Plugin[] | Batch Add and Enable Plugin Operation | -| BATCH_SET_PARAMETERS | 16 | `parameterNameArray`: MachineParameter[]
`parameterValueArray`: uint256[] | Batch Set Parameter Operation | -| BATCH_ADD_WITHDRAWABLE_BALANCES | 17 | `addressArray`: address[]
`amountArray`: uint256[] | Batch Add Withdrawable Balance Operation | -| BATCH_REVOKE_WITHDRAWABLE_BALANCE | 18 | `addressArray`: address[] | Batch Revoke Withdrawable Balance Operation | -| BATCH_WITHDRAW_FROM_BALANCE | 19 | `addressArray`: address[]
`amountArray`: uint256[] | Batch Withdraw From Balance Operation | -| BATCH_PAY_TO_MINT_TOKENS | 20 | `addressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[]
`priceArray`: uint256[] | Batch Pay to Mint Tokens Operation | -| BATCH_PAY_TO_TRANSFER_TOKENS | 21 | `toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[]
`priceArray`: uint256[] | Pay Some Cash to Transfer Tokens Operation | -| ADD_EMERGENCY | 22 | `addressArray`: address[] | Add an Array of Addresses as Emergency Agents | -| RESERVED_ID_23 | 23 | `addressArray`: address[]
`amountArray`: uint256[] | Withdraw Cash from the Contract's Cash Balance | -| CALL_EMERGENCY | 24 | `addressArray`: address[] | Call Emergency Agents to Handle Emergency Situations | -| CALL_CONTRACT_ABI | 25 | `contractAddress`: address
`abi`: bytes | Call a Contract with the Given ABI | -| PAY_CASH | 26 | `amount`: uint256
`paymentType`: uint256
`dividendable`: uint256 | Pay Some Cash | -| OFFER_DIVIDENDS | 27 | N/A | Calculate Dividends and Offer to Token Holders | -| RESERVED_ID_28 | 28 | `addressArray`: address[]
`amountArray`: uint256[] | Withdraw Dividends from the Withdrawable Dividends Balance | -| SET_APPROVAL_FOR_ALL_OPERATIONS | 29 | `address`: address | Set Approval for All Transfer Operations by Address | -| BATCH_BURN_TOKENS_AND_REFUND | 30 | `tokenClassArray`: uint256[]
| Batch Burn Tokens and Refund | -| ADD_STORAGE_STRING | 31 | `address`: string[] | Add Storage IPFS Hash | -| VOTE | 32 | `voteArray`: bool[] | Vote for a Voting Pending Program | -| EXECUTE_PENDING_PROGRAM | 33 | N/A | Execute a Program that has been Voted and Approved | - - - +| Opcode ID | Opcode Name | Opcode Parameter | Opcode Notes | +|-----------|----------------------------------------------|----------------------------------------------------------|------------------------------------------------------------| +| 0 | UNDEFINED | | Invalid Operation | +| 1 | BATCH_MINT_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Mint Token Operation | +| 2 | BATCH_CREATE_TOKEN_CLASSES | STRING_ARRAY[] nameArray, UINT256_2DARRAY[0] tokenIndexArray, UINT256_2DARRAY[1] votingWeightArray, UINT256_2DARRAY[2] dividendWeightArray | Batch Create Token Class Operation | +| 3 | BATCH_TRANSFER_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Transfer Token Operation | +| 4 | BATCH_TRANSFER_TOKENS_FROM_TO | ADDRESS_2DARRAY[0] fromAddressArray, ADDRESS_2DARRAY[1] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Transfer Token From Addr A to Addr B Operation | +| 5 | BATCH_BURN_TOKENS | UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Burn Token Operation | +| 6 | BATCH_BURN_TOKENS_FROM | ADDRESS_2DARRAY[0] fromAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Burn Token From Addr A Operation | +| 7 | BATCH_ADD_MEMBERSHIPS | ADDRESS_2DARRAY[0] memberAddressArray, UINT256_2DARRAY[0] memberRoleArray, STRING_ARRAY memberNameArray | Batch Add Member Operation | +| 8 | BATCH_SUSPEND_MEMBERSHIPS | ADDRESS_2DARRAY[0] memberAddressArray | Batch Suspend Member Operation | +| 9 | BATCH_RESUME_MEMBERSHIPS | ADDRESS_2DARRAY[0] memberAddressArray | Batch Resume Member Operation | +| 10 | BATCH_CHANGE_MEMBER_ROLES | ADDRESS_2DARRAY[0] memberAddressArray, UINT256_2DARRAY[0] memberRoleArray | Batch Change Member Role Operation | +| 11 | BATCH_CHANGE_MEMBER_NAMES | ADDRESS_2DARRAY[0] memberAddressArray, STRING_ARRAY memberNameArray | Batch Change Member Name Operation | +| 12 | BATCH_ADD_PLUGINS | Plugin[] pluginList | Batch Add Emergency Agent Operation | +| 13 | BATCH_ENABLE_PLUGINS | UINT256_ARRAY[0] pluginIndexArray, BOOL_ARRAY isBeforeOperationArray | Batch Enable Plugin Operation | +| 14 | BATCH_DISABLE_PLUGINS | UINT256_ARRAY[0] pluginIndexArray, BOOL_ARRAY isBeforeOperationArray | Batch Disable Plugin Operation | +| 15 | BATCH_ADD_AND_ENABLE_PLUGINS | Plugin[] pluginList | Batch Add and Enable Plugin Operation | +| 16 | BATCH_SET_PARAMETERS | MachineParameter[] parameterNameArray, UINT256_2DARRAY[0] parameterValueArray | Batch Set Parameter Operation | +| 17 | BATCH_ADD_WITHDRAWABLE_BALANCES | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] amountArray | Batch Add Withdrawable Balance Operation | +| 18 | BATCH_REDUCE_WITHDRAWABLE_BALANCES | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] amountArray | Batch Reduce Withdrawable Balance Operation | +| 19 | BATCH_ADD_VOTING_RULES | VotingRule[] votingRuleList | Batch Add Voting Rules Operation | +| 20 | BATCH_PAY_TO_MINT_TOKENS | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray, UINT256_2DARRAY[2] priceArray, UINT256_2DARRAY[3] dividendableFlag | Batch Pay to Mint Tokens Operation | +| 21 | BATCH_PAY_TO_TRANSFER_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray, UINT256_2DARRAY[2] priceArray, UINT256_2DARRAY[3] dividendableFlag | Pay some cash to transfer tokens Operation (product coins) | +| 22 | ADD_EMERGENCY | ADDRESS_2DARRAY[0] addressArray | Add an array of address as emergency agents Operation | +| 23 | RESERVED_ID_23 | | Reserved ID 23 DO NOT USE | +| 24 | CALL_EMERGENCY | UINT256_2DARRAY[0][0] emergencyAgentIndex | Call emergency agents to handle emergency situations | +| 25 | CALL_CONTRACT_ABI | ADDRESS_2D[0][0] contractAddress, bytes abi, UINT256_2DARRAY[0][0] value | Call a contract with the given abi Operation | +| 26 | PAY_CASH | uint256 amount, uint256 paymentType, uint256 dividendable | Pay some cash Operation | +| 27 | OFFER_DIVIDENDS | | Calculate the dividends and offer to token holders Operation| +| 28 | RESERVED_ID_28 | | Reserved ID 28 DO NOT USE | +| 29 | SET_APPROVAL_FOR_ALL_OPERATIONS | ADDRESS_2DARRAY[0][0] targetAddress | Set the approval for all transfer operations by address Operation | +| 30 | BATCH_BURN_TOKENS_AND_REFUND | UINT256_2D[0] tokenClassArray, UINT256_2D[1] amountArray, UINT256_2D[2] priceArray | Batch Burn tokens and Refund Operation | +| 31 | ADD_STORAGE_STRING | STRING_ARRAY[0][0] IFPSHash | Add storage IPFS hash to the storage list permanently Operation | +| 32 | VOTE | bool[] voteArray | Vote for a voting pending program Operation | +| 33 | EXECUTE_PENDING_PROGRAM | | Execute a program that has been voted and approved Operation | +| 34 | END_EMERGENCY | | Emergency mode termination Operation | +| 35 | UPGRADE_TO_ADDRESS | ADDRESS_2DARRAY[0][0] targetAddress | Upgrade the contract to a new contract address Operation | +| 36 | CONFIRM_UPGRAED_FROM_ADDRESS | ADDRESS_2DARRAY[0][0] fromAddress | Accepting current DARCs to be upgraded from the old contract address Operation | diff --git a/darc-docs/docs/darc.js/Access to a deployed DARC.md b/darc-docs/docs/darc.js/Access to a deployed DARC.md deleted file mode 100644 index b2bfc9bc..00000000 --- a/darc-docs/docs/darc.js/Access to a deployed DARC.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Access to a deployed DARC - -To access a deployed DARC on an EVM-compatible blockchain, you need to constrcut a `DARC` object via the `DARC` class, in which the constructor takes the address of the deployed DARC and the signer or provider as parameters. For example: - -```ts -import { ethers } from 'ethers'; -import { darcjs } from 'darcjs'; - -// Construct a provider via JsonRpcProvider on local devnet node -const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); - -// Get the deployed DARC address -const darc_contract_address = '0x5FbDB2315678afecb367f032d93F642f64180aa3'; - -// Construct a DARC object -const myDARC = new darcjs.DARC({ - address: darc_contract_address, - wallet: signer, - version: DARC_VERSION.Test, -}); -``` - -Then you can use the `darc` object to access the deployed DARC, not only read the data of the DARC, but also run the program on the DARC. For example: - -```ts -// Write a code snippet of DARC program -let byLawScript = -` -// define address 1 and 2 for minting tokens -const addr1 = '0x0000'; -const addr2 = '0x0001'; - -// mint tokens to address addr1 and addr2 -batch_mint_tokens( - [0,0,1,1], - [1000,1000,2000,2000], - [addr1, addr2, addr1, addr2] - ); - -// enable plugins 3, 4 before sandbox checking operation -// and disable plugins 5, 6 after sandbox checking operation -BATCH_ENABLE_PLUGINSs( - [3,4,5,6], - [true, true, false, false] -); - -// finally, offer dividends to every token holder -offer_dividends(); -` - -// Compile the code snippet above -const program = darcjs.transpile(byLawScript); - -// Run the compiled program on the DARC deployed on the chain -const result = await myDARC.entrance(program); -``` - -You can also access to a deployed DARC without a signer, but only with a valid provider, and access to all the data of the DARC via functions marked as `pure` or `view` (which does not need a signer to access and read), but cannot run the program on the DARC. For example: - -```ts -import { ethers } from 'ethers'; -import { darcjs } from 'darcjs'; - -// Construct a provider via JsonRpcProvider on local devnet node -const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); - -// Construct a DARC object -const myDARC_readOnly = new darcjs.DARC({ - address: address, - provider: provider, - version: DARC_VERSION.Test, -}); - -// Read the member address list of the DARC -const memberList = await myDARC_readOnly.getMemberList(); - -// Output the member name via member address -for (let i = 0; i < memberList.length; i++) { - const memberInfo = await myDARC_readOnly.getMemberInfo(memberList[i]); - console.log("The member name of " + memberList[i] + " is " + memberInfo.name); -} -``` - -And below operation will fail because it needs a signer to run the program on the DARC: - -```ts -myDARC_readOnly.run(program); // This will throw an error -``` \ No newline at end of file diff --git a/darc-docs/docs/darc.js/Deploy your DARC.md b/darc-docs/docs/darc.js/Deploy your DARC.md deleted file mode 100644 index c50ca4cc..00000000 --- a/darc-docs/docs/darc.js/Deploy your DARC.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Deploy your DARC - -To deploy DARC on an EVM-compatible blockchain, you need to use the `deployDARC(DARC_VERSION, signer)` function, in which `DARC_VERSION` is the version of DARC you want to deploy and signer is the signer of the transaction. If you are using the browser environment and want to get the signer from the **MetaMask** wallet, you can use the `getSigner()` function from `ethers.js`, for example: - - -```ts -import { darcjs } from 'darcjs'; -import { ethers } from 'ethers'; - -// Get signer from MetaMask wallet -const signer = (new ethers.providers.Web3Provider(window.ethereum)).getSigner(); - -// deploy DARC -const darc_contract_address = await darcjs.deployDARC( - DARC_VERSION.Test, signer -); -``` - -If you are using the node.js environment, you need to use `ethers.providers` to construct a provider, then use the `ethers.Wallet` class from `ethers.js` to create a signer with a private key, for example: - -```ts -import { ethers } from 'ethers'; -import { darcjs } from 'darcjs'; - -// Construct the provider via JsonRpcProvider on local devnet node -const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545/'); - -// Construct the signer via Wallet class and private key -const signer = new ethers.Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); - -// deploy DARC -const darc_contract_address = await darcjs.deployDARC( - DARC_VERSION.Latest, signer -); - -// print the address of the deployed DARC -console.log("The deployed DARC address: " + darc_contract_address); -``` \ No newline at end of file diff --git a/darc-docs/docs/darc.js/Run program on DARC.md b/darc-docs/docs/darc.js/Run program on DARC.md deleted file mode 100644 index c0da4c33..00000000 --- a/darc-docs/docs/darc.js/Run program on DARC.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Run program on DARC \ No newline at end of file From 1aad6959abb968f365f63bafd9e52777a9753da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 17 Feb 2024 06:40:18 -0600 Subject: [PATCH 44/62] update --- .../docs/DARC Protocol/Condition Nodes.md | 1111 +++++++++++++++++ darc-docs/docs/DARC Protocol/OpCodes.md | 4 + darc-specs/condition_expression.md | 6 +- 3 files changed, 1119 insertions(+), 2 deletions(-) diff --git a/darc-docs/docs/DARC Protocol/Condition Nodes.md b/darc-docs/docs/DARC Protocol/Condition Nodes.md index 086028d9..a14d9584 100644 --- a/darc-docs/docs/DARC Protocol/Condition Nodes.md +++ b/darc-docs/docs/DARC Protocol/Condition Nodes.md @@ -3,3 +3,1114 @@ sidebar_position: 3 --- # Condition Nodes + +### What is a Condition Node? + +Plugins are the laws of the DARC protocol. Each plugin contains an array of condition nodes and a return type. Each condition node can be a condition expression, a logical operator, or a boolean value. The condition array can be reconstructed into a logical tree, representing the trigger conditions of the plugin. + +Each expression node is composed with a opcode(condition node ID) and one or a few parameters. The struct of the node parameter is defined as follows: + +``` +struct NodeParam { + string[] STRING_ARRAY; + uint256[][] UINT256_2DARRAY; + address[][] ADDRESS_2DARRAY; + bytes BYTES; +} +``` + +### Logical Operators + +There are three logical operators in the DARC protocol: `AND`, `OR`, and `NOT`. The `AND` operator returns true if all of its children are true. The `OR` operator returns true if any of its children are true. The `NOT` operator returns true if its child is false. There must be at least one child for the `AND` and `OR` operators, and only one child for the `NOT` operator. + +In both By-law Script and darc.js SDK, you can use the `and()`, `or()`, and `not()` functions to create the logical operators, for example: + +In darc.js SDK: + +```ts +import {and, or, not} from 'darcjs'; + +const conditionTree = and( + or( + expression1(), + expression2() + ), + + expression3(), + + not( + expression4() + ) +); +``` + +In By-law Script: + +```ts +const conditionTree = and( + or( + expression1(), + expression2() + ), + + expression3(), + + not( + expression4() + ) +); +``` + +Also you can use `|` for `OR`, `&` for `AND`, and `!` for `NOT` in By-law Script, and these operators will be parsed into the corresponding condition nodes. For example, the above By-law Script can be written as: + +```ts +const conditionTree = + expression1() & + ( expression2() | expression3() ) & + ( ! expression4() ); +``` + +### Condition Expression + +1. There are multiple batch-operations, including: + - Batch Mint Tokens + - Batch Create Token Classes + - Batch Transfer Tokens + - Batch Transfer Tokens From To + - Batch Burn Tokens + - Batch Burn Tokens From + - Batch Add Membership + - Batch Suspend Membership + - Batch Resume Membership + - Batch Change Member Roles + - Batch Change Member Names + - Batch Add Plugins + - Batch Enable Plugins + - Batch Disable Plugins + - Batch Add and Enable Plugins + - Batch Set Parameters + - Batch Add Withdrawable Balances + - Batch Reduce Withdrawable Balances + - Batch Add Voting Rules + - Batch Pay to Mint Tokens + - Batch Pay to Transfer Tokens + - Batch Burn Tokens and Refund + +For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)](OpCodes.md) + +2. Placeholders are reserved for future use. + +3. The range [staringValue, endingValue] is inclusive. For example, if the range is [1, 3], then the value 1, 2, 3 are all included. + +4. In the DARC protocol, all expressions are named with upper case, and in darc.js SDK and By-law Script, all expressions are named with lower case. For example, `OPERATOR_NAME_EQUALS` in the DARC protocol is `operator_name_equals` in darc.js SDK and By-law Script. + +| ID | Expression Name | Parameter| Notes| Ready | +|------------|------|------|-------| ---- | +| 0 | UNDEFINED | | Invalid Operation | +| 1 | OPERATOR_NAME_EQUALS| STRING_ARRAY[0] operatorName | The operator name is exactly the same as the given string | +| 2 | OPERATOR_ROLE_EQUALS| UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is exactly the same as operatorRoleIndex | +| 3 | OPERATOR_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] operatorAddress | The operator address equals operatorAddress| +| 4 | OPERATOR_ROLE_GREATER_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is greater than operatorRoleIndex| +| 5 | OPERATOR_ROLE_LESS_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is less than operatorRoleIndex| +| 6 | OPERATOR_ROLE_IN_RANGE| UINT256_2DARRAY[0][0] startingOperatorRoleIndex, UINT256_2DARRAY[0][1] endingOperatorRoleIndex | The operator role index is in the range of [startingOperatorRoleIndex, endingOperatorRoleIndex]| +| 7 | OPERATOR_ROLE_IN_LIST | UINT256_2DARRAY[0] operatorRoleIndexArray| The operator role index is in the list of operatorRoleIndexArray| +| 8 | OPERATOR_TOKEN_X_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | The operator has more than amount of token at tokenClass| +| 9 | OPERATOR_TOKEN_X_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || +| 10 | OPERATOR_TOKEN_X_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startingAmount, UINT256_2DARRAY[0][2] endingAmount | The operator has token amount in the range of [startingAmount, endingAmount] at tokenClass| +| 11 | OPERATOR_TOKEN_X_AMOUNT_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | The operator has exactly amount of token at tokenClass| +| 12 | OPERATOR_TOKEN_X_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has more than percentage of token at tokenClass| +| 13 | OPERATOR_TOKEN_X_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has less than percentage of token at tokenClass| +| 14 | OPERATOR_TOKEN_X_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentageStartingValue, UINT256_2DARRAY[0][2] percentageEndingValue | The operator has token percentage in the range of [percentageStartingValue, percentageEndingValue] at tokenClass| +| 15 | OPERATOR_TOKEN_X_PERCENTAGE_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has exactly percentage of token at tokenClass| +| 16 | OPERATOR_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount | The operator has more than amount of voting weight| +| 17 | OPERATOR_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of voting weight| +| 18 | OPERATOR_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has voting weight in the range of [startingAmount, endingAmount]| +| 19 | OPERATOR_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount | The operator has more than amount of dividend weight| +| 20 | OPERATOR_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount | The operator has less than amount of dividend weight| +| 21 | OPERATOR_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has dividend weight in the range of [startingAmount, endingAmount]| +| 22 | Placeholder22 | | | +| 23 | Placeholder23 | | | +| 24 | Placeholder24 | | | +| 25 | OPERATOR_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount | The operator has more than amount of withdrawable cash| +| 26 | OPERATOR_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of withdrawable cash| +| 27 | OPERATOR_WITHDRAWABLE_CASH_IN_RANGE| UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has withdrawable cash in the range of [startingAmount, endingAmount]| +| 28 | OPERATOR_WITHDRAWABLE_DIVIDENDS_GREATER_THAN| UINT256_2DARRAY[0][0] amount | The operator has more than amount of withdrawable dividends| +| 29 | OPERATOR_WITHDRAWABLE_DIVIDENDS_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of withdrawable dividends| +| 30 | OPERATOR_WITHDRAWABLE_DIVIDENDS_IN_RANGE | UINT256_2DARRAY[0][0] amount | The operator has withdrawable dividends in the range of [startingAmount, endingAmount]| +| 31 | OPERATOR_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] addressArray | The operator address is in the list of addressArray| +| 32 | Placeholder32 | | | +| 33 | Placeholder33 | | | +| 34 | Placeholder34 | | | +| 35 | Placeholder35 | | | +| 36 | Placeholder36 | | | +| 37 | Placeholder37 | | | +| 38 | Placeholder38 | | | +| 39 | Placeholder39 | | | +| 40 | Placeholder40 | | | +| 41 | Placeholder41 | | | +| 42 | Placeholder42 | | | +| 43 | Placeholder43 | | | +| 44 | Placeholder44 | | | +| 45 | Placeholder45 | | | +| 46 | Placeholder46 | | | +| 47 | Placeholder47 | | | +| 48 | Placeholder48 | | | +| 49 | Placeholder49 | | | +| 50 | Placeholder50 | | | +| 51 | TIMESTAMP_GREATER_THAN | UINT256_2DARRAY[0][0] timestamp | The current timestamp is greater than timestamp| +| 52 | TIMESTAMP_LESS_THAN | UINT256_2DARRAY[0][0] timestamp | The current timestamp is less than timestamp| +| 53 | TIMESTAMP_IN_RANGE | UINT256_2DARRAY[0][0] startTimestamp, UINT256_2DARRAY[0][0] endTimestamp | The current timestamp is in the range of [startTimestamp, endTimestamp]| +| 54 | DATE_YEAR_GREATER_THAN | UINT256_2DARRAY[0][0] year | The current year is greater than year| +| 55 | DATE_YEAR_LESS_THAN | UINT256_2DARRAY[0][0] year | The current year is less than year| +| 56 | DATE_YEAR_IN_RANGE | UINT256_2DARRAY[0][0] startYear, UINT256_2DARRAY[0][0] endYear | The current year is in the range of [startYear, endYear]| +| 57 | DATE_MONTH_GREATER_THAN | UINT256_2DARRAY[0][0] month | The current month is greater than month| +| 58 | DATE_MONTH_LESS_THAN | UINT256_2DARRAY[0][0] month | The current month is less than month| +| 59 | DATE_MONTH_IN_RANGE | UINT256_2DARRAY[0][0] startMonth, UINT256_2DARRAY[0][0] endMonth | The current month is in the range of [startMonth, endMonth]| +| 60 | DATE_DAY_GREATER_THAN | UINT256[0][0] day | The current day is greater than day| +| 61 | DATE_DAY_LESS_THAN | UINT256[0][0] day | The current day is less than day| +| 62 | DATE_DAY_IN_RANGE | UINT256[0][0] startDay, UINT256[0][0] endDay | The current day is in the range of [startDay, endDay]| +| 63 | DATE_HOUR_GREATER_THAN | uint256 hour | The current hour is greater than hour| +| 64 | DATE_HOUR_LESS_THAN | uint256 hour | The current hour is less than hour| +| 65 | DATE_HOUR_IN_RANGE | uint256 startHour, uint256 endHour | The current hour is in the range of [startHour, endHour]| +| 66 | ADDRESS_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has more than amount of voting weight| +| 67 | ADDRESS_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has less than amount of voting weight| +| 68 | ADDRESS_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has voting weight in the range of [startingAmount, endingAmount]| +| 69 | ADDRESS_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has more than amount of dividend weight| +| 70 | ADDRESS_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has less than amount of dividend weight| +| 71 | ADDRESS_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount , ADDRESS_2DARRAY[0][0] address || +| 72 | ADDRESS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || +| 73 | ADDRESS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || +| 74 | ADDRESS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || +| 75 | TOTAL_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 76 | TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 77 | TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 78 | TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 79 | TOTAL_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 80 | TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 81 | TOTAL_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 82 | TOTAL_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 83 | TOTAL_CASH_IN_RANGE| UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 84 | TOTAL_CASH_EQUALS| UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE +| 85 | TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 86 | TOKEN_IN_LIST_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 87 | TOKEN_IN_LIST_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] startAmount, UINT256_2DARRAY[1][1] endAmount || +| 88 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 89 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 90 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 91 | TOKEN_IN_LIST_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 92 | TOKEN_IN_LIST_AMOUNT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 93 | TOKEN_IN_LIST_AMOUNT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 94 | TOKEN_IN_LIST_AMOUNT_EQUALS| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || +| 95 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_GREATER_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 96 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 97 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 98 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 99 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_LESS_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 100 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || +| 101 | Placeholder101 | | | +| 102 | Placeholder102 | | | +| 103 | Placeholder103 | | | +| 104 | Placeholder104 | | | +| 105 | Placeholder105 | | | +| 106 | Placeholder106 | | | +| 107 | Placeholder107 | | | +| 108 | Placeholder108 | | | +| 109 | Placeholder109 | | | +| 110 | Placeholder110 | | | +| 111 | Placeholder111 | | | +| 112 | Placeholder112 | | | +| 113 | Placeholder113 | | | +| 114 | Placeholder114 | | | +| 115 | Placeholder115 | | | +| 116 | Placeholder116 | | | +| 117 | Placeholder117 | | | +| 118 | Placeholder118 | | | +| 119 | Placeholder119 | | | +| 120 | Placeholder120 | | | +| 121 | Placeholder121 | | | +| 122 | Placeholder122 | | | +| 123 | Placeholder123 | | | +| 124 | Placeholder124 | | | +| 125 | Placeholder125 | | | +| 126 | Placeholder126 | | | +| 127 | Placeholder127 | | | +| 128 | Placeholder128 | | | +| 129 | Placeholder129 | | | +| 130 | Placeholder130 | | | +| 131 | Placeholder131 | | | +| 132 | Placeholder132 | | | +| 133 | Placeholder133 | | | +| 134 | Placeholder134 | | | +| 135 | Placeholder135 | | | +| 136 | Placeholder136 | | | +| 137 | Placeholder137 | | | +| 138 | Placeholder138 | | | +| 139 | Placeholder139 | | | +| 140 | Placeholder140 | | | +| 141 | Placeholder141 | | | +| 142 | Placeholder142 | | | +| 143 | Placeholder143 | | | +| 144 | Placeholder144 | | | +| 145 | Placeholder145 | | | +| 146 | Placeholder146 | | | +| 147 | Placeholder147 | | | +| 148 | Placeholder148 | | | +| 149 | Placeholder149 | | | +| 150 | Placeholder150 | | | +| 151 | OPERATION_EQUALS | uint256 value || +| 152 | OPERATION_IN_LIST | uint256[] values || +| 153 | Placeholder153 | | | +| 154 | Placeholder154 | | | +| 155 | Placeholder155 | | | +| 156 | Placeholder156 | | | +| 157 | Placeholder157 | | | +| 158 | Placeholder158 | | | +| 159 | Placeholder159 | | | +| 160 | Placeholder160 | | | +| 161 | Placeholder161 | | | +| 162 | Placeholder162 | | | +| 163 | Placeholder163 | | | +| 164 | Placeholder164 | | | +| 166 | Placeholder166 | | | +| 167 | Placeholder167 | | | +| 168 | Placeholder168 | | | +| 169 | Placeholder169 | | | +| 170 | Placeholder170 | | | +| 171 | Placeholder171 | | | +| 172 | Placeholder172 | | | +| 173 | Placeholder173 | | | +| 174 | Placeholder174 | | | +| 175 | Placeholder175 | | | +| 176 | Placeholder176 | | | +| 177 | Placeholder177 | | | +| 178 | Placeholder178 | | | +| 179 | Placeholder179 | | | +| 180 | Placeholder180 | | | +| 181 | ORACLE_CALL_UINT256_RESULT_EQUALS | string oracle, string method, uint256[] args, uint256 expectedValue || NOT READY, DO NOT USE +| 182 | ORACLE_CALL_UINT256_RESULT_GREATER_THAN | string oracle, string method, uint256[] args, uint256 minValue || NOT READY, DO NOT USE +| 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || NOT READY, DO NOT USE +| 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || NOT READY, DO NOT USE +| 185 | ORACLE_CALL_UINT256_1_LESS_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE +| 186 | ORACLE_CALL_UINT256_1_GREATER_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE +| 187 | ORACLE_CALL_UINT256_1_EQUALS_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE +| 188 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || NOT READY, DO NOT USE +| 189 | ORACLE_CALL_STRING_1_EQUALS_2 | string oracle, string method, string[] args || NOT READY, DO NOT USE +| 190 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || NOT READY, DO NOT USE +| 191 | Placeholder191 | | | +| 192 | Placeholder192 | | | +| 193 | Placeholder193 | | | +| 194 | Placeholder194 | | | +| 195 | Placeholder195 | | | +| 196 | Placeholder196 | | | +| 197 | Placeholder197 | | | +| 198 | Placeholder198 | | | +| 199 | Placeholder199 | | | +| 200 | Placeholder200 | | | +| 201 | Placeholder201 | | | +| 202 | Placeholder202 | | | +| 203 | Placeholder203 | | | +| 204 | Placeholder204 | | | +| 205 | Placeholder205 | | | +| 206 | Placeholder206 | | | +| 207 | Placeholder207 | | | +| 208 | Placeholder208 | | | +| 209 | Placeholder209 | | | +| 210 | Placeholder210 | | | +| 211 | BATCH_OP_SIZE_GREATER_THAN | UINT256_2DARRAY[0][0] batchSize || +| 212 | BATCH_OP_SIZE_LESS_THAN | UINT256_2DARRAY[0][0] batchSize || +| 213 | BATCH_OP_SIZE_IN_RANGE | UINT256_2DARRAY[0][0] startBatchSize, UINT256_2DARRAY[0][0] endBatchSize || +| 214 | BATCH_OP_SIZE_EQUALS | UINT256_2DARRAY[0][0] batchSize || +| 215 | BATCH_OP_EACH_TARGET_ADDRESSES_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || +| 216 | BATCH_OP_EACH_TARGET_ADDRESSES_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || +| 217 | BATCH_OP_EACH_TARGET_ADDRESSES_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 218 | BATCH_OP_ANY_TARGET_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || +| 219 | BATCH_OP_ANY_TARGET_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || +| 220 | BATCH_OP_ANY_TARGET_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 221 | BATCH_OP_EACH_TARGET_ADDRESS_TO_ITSELF | || +| 222 | BATCH_OP_ANY_TARGET_ADDRESS_TO_ITSELF | || +| 223 | BATCH_OP_EACH_SOURCE_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] sourceAddress || +| 224 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] sourceAddressArray || +| 225 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 226 | BATCH_OP_ANY_SOURCE_ADDRESS_EQUAL | ADDRESS_2DARRAY[0][0] sourceAddress || +| 227 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] sourceAddressArray || +| 228 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || +| 229 | BATCH_OP_EACH_SOURCE_ADDRESS_FROM_ITSELF | || +| 230 | BATCH_OP_ANY_SOURCE_ADDRESS_FROM_ITSELF | | +| 231 | BATCH_OP_EACH_TOKEN_CLASS_EQUALS | UINT256_2DARRAY[0][0] tokenClass || +| 232 | BATCH_OP_EACH_TOKEN_CLASS_IN_LIST | UINT256_2DARRAY[0] tokenClassArray || +| 233 | BATCH_OP_EACH_TOKEN_CLASS_IN_RANGE | UINT256_2DARRAY[0][0] startTokenClass, UINT256_2DARRAY[0][0] endTokenClass || +| 234 | BATCH_OP_EACH_TOKEN_CLASS_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 235 | BATCH_OP_EACH_TOKEN_CLASS_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 236 | BATCH_OP_TOTAL_TOKEN_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 237 | BATCH_OP_TOTAL_TOKEN_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 238 | BATCH_OP_TOTAL_TOKEN_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 239 | BATCH_OP_TOTAL_TOKEN_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 240 | BATCH_OP_ANY_TOKEN_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 241 | BATCH_OP_ANY_TOKEN_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 242 | BATCH_OP_ANY_TOKEN_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 243 | BATCH_OP_ANY_TOKEN_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 244 | BATCH_OP_ANY_TOKEN_CLASS_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 245 | BATCH_OP_ANY_TOKEN_CLASS_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass || +| 246 | BATCH_OP_ANY_TOKEN_CLASS_IN_RANGE | UINT256_2DARRAY[0][0] startTokenClass, UINT256_2DARRAY[0][0] endTokenClass || +| 247 | BATCH_OP_ANY_TOKEN_CLASS_EQUALS | UINT256_2DARRAY[0][0] tokenClass || +| 248 | BATCH_OP_ANY_TOKEN_CLASS_IN_LIST | UINT256_2DARRAY[0] tokenClassArray || +| 249 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 250 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 251 | BATCH_OP_EACH_TARGET_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 252 | BATCH_OP_ANY_TARGET_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || +| 253 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 254 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 255 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 256 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_EQUALS | UINT256_2DARRAY[0][0] amount || +| 257 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 258 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 259 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 260 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 261 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 262 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 263 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 264 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 265 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 266 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || +| 267 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 268 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 269 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || +| 270 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 271 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 272 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || +| 273 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || +| 274 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || +| 275 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startAmount, UINT256_2DARRAY[0][2] endAmount || +| 276 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | +| 277 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | +| 278 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startAmount, UINT256_2DARRAY[0][2] endAmount | +| 279 | Placeholder279 | | | +| 280 | Placeholder280 | | | +| 281 | Placeholder281 | | | +| 282 | Placeholder282 | | | +| 283 | Placeholder283 | | | +| 284 | Placeholder284 | | | +| 285 | Placeholder285 | | | +| 286 | Placeholder286 | | | +| 287 | Placeholder287 | | | +| 288 | Placeholder288 | | | +| 289 | Placeholder289 | | | +| 290 | Placeholder290 | | | +| 291 | Placeholder291 | | | +| 292 | Placeholder292 | | | +| 293 | Placeholder293 | | | +| 294 | Placeholder294 | | | +| 295 | Placeholder295 | | | +| 296 | Placeholder296 | | | +| 297 | Placeholder297 | | | +| 298 | Placeholder298 | | | +| 299 | Placeholder299 | | | +| 300 | Placeholder300 | | | +| 301 | ENABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 302 | ENABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 303 | ENABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0][0] startPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 304 | ENABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 305 | DISABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 306 | DISABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 307 | DISABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 308 | DISABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 309 | ENABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 310 | ENABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 311 | ENABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 312 | ENABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. +| 313 | DISABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 314 | DISABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 315 | DISABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 316 | DISABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. +| 317 | ARE_ALL_PLUGINS_BEFORE_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 318 | ARE_ALL_PLUGINS_AFTER_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 319 | IS_ANY_PLUGIN_BEFORE_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 320 | IS_ANY_PLUGIN_AFTER_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. +| 321 | ADD_PLUGIN_ANY_LEVEL_EQUALS | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || +| 322 | ADD_PLUGIN_ANY_LEVEL_IN_LIST | UINT256_2DARRAY[0] pluginIndexList || +| 323 | ADD_PLUGIN_ANY_LEVEL_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][0] endPluginIndex, UINT256_2DARRAY[0][0] level || +| 324 | ADD_PLUGIN_ANY_LEVEL_GREATER_THAN | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || +| 325 | ADD_PLUGIN_ANY_LEVEL_LESS_THAN | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || +| 326 | ADD_PLUGIN_ANY_RETURN_TYPE_EQUALS | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] returnType || +| 327 | ADD_PLUGIN_ANY_VOTING_RULE_INDEX_IN_LIST | UINT256_2DARRAY[0] votingRuleIndexList || +| 328 | Placeholder320 | | | +| 321 | Placeholder321 | | | +| 322 | Placeholder322 | | | +| 323 | Placeholder323 | | | +| 324 | Placeholder324 | | | +| 325 | Placeholder325 | | | +| 326 | Placeholder326 | | | +| 327 | Placeholder327 | | | +| 328 | Placeholder328 | | | +| 329 | Placeholder329 | | | +| 330 | Placeholder330 | | | +| 331 | Placeholder331 | | | +| 332 | Placeholder332 | | | +| 333 | Placeholder333 | | | +| 334 | Placeholder334 | | | +| 335 | Placeholder335 | | | +| 336 | Placeholder336 | | | +| 337 | Placeholder337 | | | +| 338 | Placeholder338 | | | +| 339 | Placeholder339 | | | +| 340 | Placeholder340 | | | +| 341 | Placeholder341 | | | +| 342 | Placeholder342 | | | +| 343 | Placeholder343 | | | +| 344 | Placeholder344 | | | +| 345 | Placeholder345 | | | +| 346 | Placeholder346 | | | +| 347 | Placeholder347 | | | +| 348 | Placeholder348 | | | +| 349 | Placeholder349 | | | +| 350 | Placeholder350 | | | +| 351 | Placeholder351 | | | +| 352 | Placeholder352 | | | +| 353 | Placeholder353 | | | +| 354 | Placeholder354 | | | +| 355 | Placeholder355 | | | +| 356 | Placeholder356 | | | +| 357 | Placeholder357 | | | +| 358 | Placeholder358 | | | +| 359 | Placeholder359 | | | +| 360 | Placeholder360 | | | +| 361 | Placeholder361 | | | +| 362 | Placeholder362 | | | +| 363 | Placeholder363 | | | +| 364 | Placeholder364 | | | +| 365 | Placeholder365 | | | +| 366 | Placeholder366 | | | +| 367 | Placeholder367 | | | +| 368 | Placeholder368 | | | +| 369 | Placeholder369 | | | +| 370 | Placeholder370 | | | +| 371 | ADD_ANY_VOTING_RULE_IS_ABSOLUTE_MAJORITY | || +| 372 | ADD_ANY_VOTING_RULE_APPROVAL_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] startPercentage, UINT256_2DARRAY[0][1] endPercentage || +| 373 | ADD_ANY_VOTING_RULE_TOKEN_CLASS_CONTAINS | UINT256_2DARRAY[0][0] tokenClass || +| 374 | Placeholder374 | | | +| 375 | Placeholder375 | | | +| 376 | Placeholder376 | | | +| 377 | Placeholder377 | | | +| 378 | Placeholder378 | | | +| 379 | Placeholder379 | | | +| 380 | Placeholder380 | | | +| 381 | Placeholder381 | | | +| 382 | Placeholder382 | | | +| 383 | Placeholder383 | | | +| 384 | Placeholder384 | | | +| 385 | Placeholder385 | | | +| 386 | Placeholder386 | | | +| 387 | Placeholder387 | | | +| 388 | Placeholder388 | | | +| 389 | Placeholder389 | | | +| 390 | Placeholder390 | | | +| 391 | Placeholder391 | | | +| 392 | Placeholder392 | | | +| 393 | Placeholder393 | | | +| 394 | Placeholder394 | | | +| 395 | Placeholder395 | | | +| 396 | Placeholder396 | | | +| 397 | Placeholder397 | | | +| 398 | Placeholder398 | | | +| 399 | Placeholder399 | | | +| 400 | Placeholder400 | | | +| 401 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || +| 402 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || +| 403 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_IN_RANGE | ADDRESS_2DARRAY[0][0] startTargetAddress, ADDRESS_2DARRAY[0][1] endTargetAddress || +| 404 | Placeholder404 | | | +| 405 | Placeholder405 | | | +| 406 | CHANGE_MEMBER_NAME_TO_ANY_STRING_IN_LIST | STRING_ARRAY nameList || +| 407 | CHANGE_MEMBER_NAME_TO_ANY_STRING_CONTAINS | STRING_ARRAY[0] subString || +| 408 | Placeholder408 | | | +| 409 | Placeholder409 | | | +| 410 | Placeholder410 | | | +| 411 | Placeholder411 | | | +| 412 | Placeholder412 | | | +| 413 | Placeholder413 | | | +| 414 | Placeholder414 | | | +| 415 | Placeholder415 | | | +| 416 | Placeholder416 | | | +| 417 | Placeholder417 | | | +| 418 | Placeholder418 | | | +| 419 | Placeholder419 | | | +| 420 | Placeholder420 | | | +| 421 | Placeholder421 | | | +| 422 | Placeholder422 | | | +| 423 | Placeholder423 | | | +| 424 | Placeholder424 | | | +| 425 | Placeholder425 | | | +| 426 | Placeholder426 | | | +| 427 | Placeholder427 | | | +| 428 | Placeholder428 | | | +| 429 | Placeholder429 | | | +| 430 | Placeholder430 | | | +| 431 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 432 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 433 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 434 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 435 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 436 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 437 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || +| 438 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || +| 439 | Placeholder439 | | | +| 440 | Placeholder440 | | | +| 441 | Placeholder441 | | | +| 442 | Placeholder442 | | | +| 443 | Placeholder443 | | | +| 444 | Placeholder444 | | | +| 445 | Placeholder445 | | | +| 446 | Placeholder446 | | | +| 447 | Placeholder447 | | | +| 448 | Placeholder448 | | | +| 449 | Placeholder449 | | | +| 450 | Placeholder450 | | | +| 451 | Placeholder451 | | | +| 452 | Placeholder452 | | | +| 453 | Placeholder453 | | | +| 454 | Placeholder454 | | | +| 455 | Placeholder455 | | | +| 456 | Placeholder456 | | | +| 457 | Placeholder457 | | | +| 458 | Placeholder458 | | | +| 459 | Placeholder459 | | | +| 460 | Placeholder460 | | | +| 461 | TOKEN_X_OP_ANY_PRICE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 462 | TOKEN_X_OP_ANY_PRICE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 463 | TOKEN_X_OP_ANY_PRICE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startPrice, UINT256_2DARRAY[0][2] endPrice | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 464 | TOKEN_X_OP_ANY_PRICE_EQUALS | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 465 | Placeholder465 | | | +| 466 | Placeholder466 | | | +| 467 | Placeholder467 | | | +| 468 | Placeholder468 | | | +| 469 | Placeholder469 | | | +| 470 | Placeholder470 | | | +| 471 | Placeholder471 | | | +| 472 | Placeholder472 | | | +| 473 | Placeholder473 | | | +| 474 | Placeholder474 | | | +| 475 | Placeholder475 | | | +| 476 | Placeholder476 | | | +| 477 | Placeholder477 | | | +| 478 | Placeholder478 | | | +| 479 | Placeholder479 | | | +| 480 | Placeholder480 | | | +| 481 | Placeholder481 | | | +| 482 | Placeholder482 | | | +| 483 | Placeholder483 | | | +| 484 | Placeholder484 | | | +| 485 | Placeholder485 | | | +| 486 | Placeholder486 | | | +| 487 | Placeholder487 | | | +| 488 | Placeholder488 | | | +| 489 | Placeholder489 | | | +| 490 | Placeholder490 | | | +| 491 | Placeholder491 | | | +| 492 | Placeholder492 | | | +| 493 | Placeholder493 | | | +| 494 | Placeholder494 | | | +| 495 | Placeholder495 | | | +| 496 | Placeholder496 | | | +| 497 | Placeholder497 | | | +| 498 | Placeholder498 | | | +| 499 | Placeholder499 | | | +| 500 | Placeholder500 | | | +| 501 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 502 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 503 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0]startWeight, UINT256_2DARRAY[0][1] endWeight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 504 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 505 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 506 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 507 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startWeight, UINT256_2DARRAY[0][1] endWeight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 508 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. +| 509 | Placeholder509 | | | +| 510 | Placeholder510 | | | +| 511 | Placeholder511 | | | +| 512 | Placeholder512 | | | +| 513 | Placeholder513 | | | +| 514 | Placeholder514 | | | +| 515 | Placeholder515 | | | +| 516 | Placeholder516 | | | +| 517 | Placeholder517 | | | +| 518 | Placeholder518 | | | +| 519 | Placeholder519 | | | +| 520 | Placeholder520 | | | +| 521 | Placeholder521 | | | +| 522 | Placeholder522 | | | +| 523 | Placeholder523 | | | +| 524 | Placeholder524 | | | +| 525 | Placeholder525 | | | +| 526 | Placeholder526 | | | +| 527 | Placeholder527 | | | +| 528 | Placeholder528 | | | +| 529 | Placeholder529 | | | +| 530 | Placeholder530 | | | +| 531 | Placeholder531 | | | +| 532 | Placeholder532 | | | +| 533 | Placeholder533 | | | +| 534 | Placeholder534 | | | +| 535 | Placeholder535 | | | +| 536 | Placeholder536 | | | +| 537 | Placeholder537 | | | +| 538 | Placeholder538 | | | +| 539 | Placeholder539 | | | +| 540 | Placeholder540 | | | +| 541 | Placeholder541 | | | +| 542 | Placeholder542 | | | +| 543 | Placeholder543 | | | +| 544 | Placeholder544 | | | +| 545 | Placeholder545 | | | +| 546 | Placeholder546 | | | +| 547 | Placeholder547 | | | +| 548 | Placeholder548 | | | +| 549 | Placeholder549 | | | +| 550 | Placeholder550 | | | +| 551 | Placeholder551 | | | +| 552 | Placeholder552 | | | +| 553 | Placeholder553 | | | +| 554 | Placeholder554 | | | +| 555 | Placeholder555 | | | +| 556 | Placeholder556 | | | +| 557 | Placeholder557 | | | +| 558 | Placeholder558 | | | +| 559 | Placeholder559 | | | +| 560 | Placeholder560 | | | +| 561 | Placeholder561 | | | +| 562 | Placeholder562 | | | +| 563 | Placeholder563 | | | +| 564 | Placeholder564 | | | +| 565 | Placeholder565 | | | +| 566 | Placeholder566 | | | +| 567 | Placeholder567 | | | +| 568 | Placeholder568 | | | +| 569 | Placeholder569 | | | +| 570 | Placeholder570 | | | +| 571 | Placeholder571 | | | +| 572 | Placeholder572 | | | +| 573 | Placeholder573 | | | +| 574 | Placeholder574 | | | +| 575 | Placeholder575 | | | +| 576 | Placeholder576 | | | +| 577 | Placeholder577 | | | +| 578 | Placeholder578 | | | +| 579 | Placeholder579 | | | +| 580 | Placeholder580 | | | +| 581 | Placeholder581 | | | +| 582 | Placeholder582 | | | +| 583 | Placeholder583 | | | +| 584 | Placeholder584 | | | +| 585 | Placeholder585 | | | +| 586 | Placeholder586 | | | +| 587 | Placeholder587 | | | +| 588 | Placeholder588 | | | +| 589 | Placeholder589 | | | +| 590 | Placeholder590 | | | +| 591 | Placeholder591 | | | +| 592 | Placeholder592 | | | +| 593 | Placeholder593 | | | +| 594 | Placeholder594 | | | +| 595 | Placeholder595 | | | +| 596 | Placeholder596 | | | +| 597 | Placeholder597 | | | +| 598 | Placeholder598 | | | +| 599 | Placeholder599 | | | +| 600 | Placeholder600 | | | +| 601 | PROGRAM_OP_LENGTH_GREATER_THAN | UINT256_2DARRAY[0][0] length || +| 602 | PROGRAM_OP_LENGTH_LESS_THAN | UINT256_2DARRAY[0][0] length || +| 603 | PROGRAM_OP_LENGTH_IN_RANGE | UINT256_2DARRAY[0][0] startLength, UINT256_2DARRAY[0][1] endLength || +| 604 | PROGRAM_OP_LENGTH_EQUALS | UINT256_2DARRAY[0][0] length || +| 605 | PROGRAM_CONTAINS_OP | UINT256_2DARRAY[0][0] opCode || +| 606 | PROGRAM_CONTAINS_OP_IN_LIST | UINT256_2DARRAY[0] opCodeList || +| 607 | PROGRAM_EVERY_OP_EQUALS | UINT256_2DARRAY[0][0] opCode || +| 608 | PROGRAM_EVERY_OP_IN_LIST | UINT256_2DARRAY[0] opCodeList || +| 609 | Placeholder609 | | | +| 610 | Placeholder610 | | | +| 611 | Placeholder611 | | | +| 612 | Placeholder612 | | | +| 613 | Placeholder613 | | | +| 614 | Placeholder614 | | | +| 615 | Placeholder615 | | | +| 616 | Placeholder616 | | | +| 617 | Placeholder617 | | | +| 618 | Placeholder618 | | | +| 619 | Placeholder619 | | | +| 620 | Placeholder620 | | | +| 621 | Placeholder621 | | | +| 622 | Placeholder622 | | | +| 623 | Placeholder623 | | | +| 624 | Placeholder624 | | | +| 625 | Placeholder625 | | | +| 626 | Placeholder626 | | | +| 627 | Placeholder627 | | | +| 628 | Placeholder628 | | | +| 629 | Placeholder629 | | | +| 630 | Placeholder630 | | | +| 631 | Placeholder631 | | | +| 632 | Placeholder632 | | | +| 633 | Placeholder633 | | | +| 634 | Placeholder634 | | | +| 635 | Placeholder635 | | | +| 636 | Placeholder636 | | | +| 637 | Placeholder637 | | | +| 638 | Placeholder638 | | | +| 639 | Placeholder639 | | | +| 640 | Placeholder640 | | | +| 641 | Placeholder641 | | | +| 642 | Placeholder642 | | | +| 643 | Placeholder643 | | | +| 644 | Placeholder644 | | | +| 645 | Placeholder645 | | | +| 646 | Placeholder646 | | | +| 647 | Placeholder647 | | | +| 648 | Placeholder648 | | | +| 649 | Placeholder649 | | | +| 650 | Placeholder650 | | | +| 651 | Placeholder651 | | | +| 652 | Placeholder652 | | | +| 653 | Placeholder653 | | | +| 654 | Placeholder654 | | | +| 655 | Placeholder655 | | | +| 656 | Placeholder656 | | | +| 657 | Placeholder657 | | | +| 658 | Placeholder658 | | | +| 659 | Placeholder659 | | | +| 660 | Placeholder660 | | | +| 661 | Placeholder661 | | | +| 662 | Placeholder662 | | | +| 663 | Placeholder663 | | | +| 664 | Placeholder664 | | | +| 665 | Placeholder665 | | | +| 666 | Placeholder666 | | | +| 667 | Placeholder667 | | | +| 668 | Placeholder668 | | | +| 669 | Placeholder669 | | | +| 670 | Placeholder670 | | | +| 671 | Placeholder671 | | | +| 672 | Placeholder672 | | | +| 673 | Placeholder673 | | | +| 674 | Placeholder674 | | | +| 675 | Placeholder675 | | | +| 676 | Placeholder676 | | | +| 677 | Placeholder677 | | | +| 678 | Placeholder678 | | | +| 679 | Placeholder679 | | | +| 680 | Placeholder680 | | | +| 681 | Placeholder681 | | | +| 682 | Placeholder682 | | | +| 683 | Placeholder683 | | | +| 684 | Placeholder684 | | | +| 685 | Placeholder685 | | | +| 686 | Placeholder686 | | | +| 687 | Placeholder687 | | | +| 688 | Placeholder688 | | | +| 689 | Placeholder689 | | | +| 690 | Placeholder690 | | | +| 691 | Placeholder691 | | | +| 692 | Placeholder692 | | | +| 693 | Placeholder693 | | | +| 694 | Placeholder694 | | | +| 695 | Placeholder695 | | | +| 696 | Placeholder696 | | | +| 697 | Placeholder697 | | | +| 698 | Placeholder698 | | | +| 699 | Placeholder699 | | | +| 700 | Placeholder700 | | | +| 701 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_GREATER_THAN | uint256 timestamp || +| 702 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_LESS_THAN | uint256 timestamp || +| 703 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_IN_RANGE | uint256 startTimestamp, uint256 endTimestamp || +| 704 | OPERATION_GLOBAL_SINCE_LAST_TIME_GREATER_THAN | uint256 timestamp || +| 705 | OPERATION_GLOBAL_SINCE_LAST_TIME_LESS_THAN | uint256 timestamp || +| 706 | OPERATION_GLOBAL_SINCE_LAST_TIME_IN_RANGE | uint256 startTimestamp, uint256 endTimestamp || +| 707 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_GREATER_THAN | address[] addressList, uint256 timestamp || +| 708 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_LESS_THAN | address[] addressList, uint256 timestamp || +| 709 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_IN_RANGE | address[] addressList, uint256 startTimestamp, uint256 endTimestamp || +| 710 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_GREATER_THAN | address[] addressList, uint256 timestamp || +| 711 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_LESS_THAN | address[] addressList, uint256 timestamp || +| 712 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_IN_RANGE | address[] addressList, uint256 startTimestamp, uint256 endTimestamp || +| 713 | Placeholder713 | | | +| 714 | Placeholder714 | | | +| 715 | Placeholder715 | | | +| 716 | Placeholder716 | | | +| 717 | Placeholder717 | | | +| 718 | Placeholder718 | | | +| 719 | Placeholder719 | | | +| 720 | Placeholder720 | | | +| 721 | Placeholder721 | | | +| 722 | Placeholder722 | | | +| 723 | Placeholder723 | | | +| 724 | Placeholder724 | | | +| 725 | Placeholder725 | | | +| 726 | Placeholder726 | | | +| 727 | Placeholder727 | | | +| 728 | Placeholder728 | | | +| 729 | Placeholder729 | | | +| 730 | Placeholder730 | | | +| 731 | Placeholder731 | | | +| 732 | Placeholder732 | | | +| 733 | Placeholder733 | | | +| 734 | Placeholder734 | | | +| 735 | Placeholder735 | | | +| 736 | Placeholder736 | | | +| 737 | Placeholder737 | | | +| 738 | Placeholder738 | | | +| 739 | Placeholder739 | | | +| 740 | Placeholder740 | | | +| 741 | Placeholder741 | | | +| 742 | Placeholder742 | | | +| 743 | Placeholder743 | | | +| 744 | Placeholder744 | | | +| 745 | Placeholder745 | | | +| 746 | Placeholder746 | | | +| 747 | Placeholder747 | | | +| 748 | Placeholder748 | | | +| 749 | Placeholder749 | | | +| 750 | Placeholder750 | | | +| 751 | Placeholder751 | | | +| 752 | Placeholder752 | | | +| 753 | Placeholder753 | | | +| 754 | Placeholder754 | | | +| 755 | Placeholder755 | | | +| 756 | Placeholder756 | | | +| 757 | Placeholder757 | | | +| 758 | Placeholder758 | | | +| 759 | Placeholder759 | | | +| 760 | Placeholder760 | | | +| 761 | Placeholder761 | | | +| 762 | Placeholder762 | | | +| 763 | Placeholder763 | | | +| 764 | Placeholder764 | | | +| 765 | Placeholder765 | | | +| 766 | Placeholder766 | | | +| 767 | Placeholder767 | | | +| 768 | Placeholder768 | | | +| 769 | Placeholder769 | | | +| 770 | Placeholder770 | | | +| 771 | Placeholder771 | | | +| 772 | Placeholder772 | | | +| 773 | Placeholder773 | | | +| 774 | Placeholder774 | | | +| 775 | Placeholder775 | | | +| 776 | Placeholder776 | | | +| 777 | Placeholder777 | | | +| 778 | Placeholder778 | | | +| 779 | Placeholder779 | | | +| 780 | Placeholder780 | | | +| 781 | Placeholder781 | | | +| 782 | Placeholder782 | | | +| 783 | Placeholder783 | | | +| 784 | Placeholder784 | | | +| 785 | Placeholder785 | | | +| 786 | Placeholder786 | | | +| 787 | Placeholder787 | | | +| 788 | Placeholder788 | | | +| 789 | Placeholder789 | | | +| 790 | Placeholder790 | | | +| 791 | Placeholder791 | | | +| 792 | Placeholder792 | | | +| 793 | Placeholder793 | | | +| 794 | Placeholder794 | | | +| 795 | Placeholder795 | | | +| 796 | Placeholder796 | | | +| 797 | Placeholder797 | | | +| 798 | Placeholder798 | | | +| 799 | Placeholder799 | | | +| 800 | Placeholder800 | | | +| 801 | Placeholder801 | | | +| 802 | Placeholder802 | | | +| 803 | Placeholder803 | | | +| 804 | Placeholder804 | | | +| 805 | Placeholder805 | | | +| 806 | Placeholder806 | | | +| 807 | Placeholder807 | | | +| 808 | Placeholder808 | | | +| 809 | Placeholder809 | | | +| 810 | Placeholder810 | | | +| 811 | Placeholder811 | | | +| 812 | Placeholder812 | | | +| 813 | Placeholder813 | | | +| 814 | Placeholder814 | | | +| 815 | Placeholder815 | | | +| 816 | Placeholder816 | | | +| 817 | Placeholder817 | | | +| 818 | Placeholder818 | | | +| 819 | Placeholder819 | | | +| 820 | Placeholder820 | | | +| 821 | Placeholder821 | | | +| 822 | Placeholder822 | | | +| 823 | Placeholder823 | | | +| 824 | Placeholder824 | | | +| 825 | Placeholder825 | | | +| 826 | Placeholder826 | | | +| 827 | Placeholder827 | | | +| 828 | Placeholder828 | | | +| 829 | Placeholder829 | | | +| 830 | Placeholder830 | | | +| 831 | Placeholder831 | | | +| 832 | Placeholder832 | | | +| 833 | Placeholder833 | | | +| 834 | Placeholder834 | | | +| 835 | Placeholder835 | | | +| 836 | Placeholder836 | | | +| 837 | Placeholder837 | | | +| 838 | Placeholder838 | | | +| 839 | Placeholder839 | | | +| 840 | Placeholder840 | | | +| 841 | Placeholder841 | | | +| 842 | Placeholder842 | | | +| 843 | Placeholder843 | | | +| 844 | Placeholder844 | | | +| 845 | Placeholder845 | | | +| 846 | Placeholder846 | | | +| 847 | Placeholder847 | | | +| 848 | Placeholder848 | | | +| 849 | Placeholder849 | | | +| 850 | Placeholder850 | | | +| 851 | Placeholder851 | | | +| 852 | Placeholder852 | | | +| 853 | Placeholder853 | | | +| 854 | Placeholder854 | | | +| 855 | Placeholder855 | | | +| 856 | Placeholder856 | | | +| 857 | Placeholder857 | | | +| 858 | Placeholder858 | | | +| 859 | Placeholder859 | | | +| 860 | Placeholder860 | | | +| 861 | Placeholder861 | | | +| 862 | Placeholder862 | | | +| 863 | Placeholder863 | | | +| 864 | Placeholder864 | | | +| 865 | Placeholder865 | | | +| 866 | Placeholder866 | | | +| 867 | Placeholder867 | | | +| 868 | Placeholder868 | | | +| 869 | Placeholder869 | | | +| 870 | Placeholder870 | | | +| 871 | Placeholder871 | | | +| 872 | Placeholder872 | | | +| 873 | Placeholder873 | | | +| 874 | Placeholder874 | | | +| 875 | Placeholder875 | | | +| 876 | Placeholder876 | | | +| 877 | Placeholder877 | | | +| 878 | Placeholder878 | | | +| 879 | Placeholder879 | | | +| 880 | Placeholder880 | | | +| 881 | Placeholder881 | | | +| 882 | Placeholder882 | | | +| 883 | Placeholder883 | | | +| 884 | Placeholder884 | | | +| 885 | Placeholder885 | | | +| 886 | Placeholder886 | | | +| 887 | Placeholder887 | | | +| 888 | Placeholder888 | | | +| 889 | Placeholder889 | | | +| 890 | Placeholder890 | | | +| 891 | Placeholder891 | | | +| 892 | Placeholder892 | | | +| 893 | Placeholder893 | | | +| 894 | Placeholder894 | | | +| 895 | Placeholder895 | | | +| 896 | Placeholder896 | | | +| 897 | Placeholder897 | | | +| 898 | Placeholder898 | | | +| 899 | Placeholder899 | | | +| 900 | Placeholder900 | | | +| 901 | Placeholder901 | | | +| 902 | Placeholder902 | | | +| 903 | Placeholder903 | | | +| 904 | Placeholder904 | | | +| 905 | Placeholder905 | | | +| 906 | Placeholder906 | | | +| 907 | Placeholder907 | | | +| 908 | Placeholder908 | | | +| 909 | Placeholder909 | | | +| 910 | Placeholder910 | | | +| 911 | Placeholder911 | | | +| 912 | Placeholder912 | | | +| 913 | Placeholder913 | | | +| 914 | Placeholder914 | | | +| 915 | Placeholder915 | | | +| 916 | Placeholder916 | | | +| 917 | Placeholder917 | | | +| 918 | Placeholder918 | | | +| 919 | Placeholder919 | | | +| 920 | Placeholder920 | | | +| 921 | Placeholder921 | | | +| 922 | Placeholder922 | | | +| 923 | Placeholder923 | | | +| 924 | Placeholder924 | | | +| 925 | Placeholder925 | | | +| 926 | Placeholder926 | | | +| 927 | Placeholder927 | | | +| 928 | Placeholder928 | | | +| 929 | Placeholder929 | | | +| 930 | Placeholder930 | | | +| 931 | Placeholder931 | | | +| 932 | Placeholder932 | | | +| 933 | Placeholder933 | | | +| 934 | Placeholder934 | | | +| 935 | Placeholder935 | | | +| 936 | Placeholder936 | | | +| 937 | Placeholder937 | | | +| 938 | Placeholder938 | | | +| 939 | Placeholder939 | | | +| 940 | Placeholder940 | | | +| 941 | Placeholder941 | | | +| 942 | Placeholder942 | | | +| 943 | Placeholder943 | | | +| 944 | Placeholder944 | | | +| 945 | Placeholder945 | | | +| 946 | Placeholder946 | | | +| 947 | Placeholder947 | | | +| 948 | Placeholder948 | | | +| 949 | Placeholder949 | | | +| 950 | Placeholder950 | | | +| 951 | Placeholder951 | | | +| 952 | Placeholder952 | | | +| 953 | Placeholder953 | | | +| 954 | Placeholder954 | | | +| 955 | Placeholder955 | | | +| 956 | Placeholder956 | | | +| 957 | Placeholder957 | | | +| 958 | Placeholder958 | | | +| 959 | Placeholder959 | | | +| 960 | Placeholder960 | | | +| 961 | Placeholder961 | | | +| 962 | Placeholder962 | | | +| 963 | Placeholder963 | | | +| 964 | Placeholder964 | | | +| 965 | Placeholder965 | | | +| 966 | Placeholder966 | | | +| 967 | Placeholder967 | | | +| 968 | Placeholder968 | | | +| 969 | Placeholder969 | | | +| 970 | Placeholder970 | | | +| 971 | Placeholder971 | | | +| 972 | Placeholder972 | | | +| 973 | Placeholder973 | | | +| 974 | Placeholder974 | | | +| 975 | Placeholder975 | | | +| 976 | Placeholder976 | | | +| 977 | Placeholder977 | | | +| 978 | Placeholder978 | | | +| 979 | Placeholder979 | | | +| 980 | Placeholder980 | | | +| 981 | Placeholder981 | | | +| 982 | Placeholder982 | | | +| 983 | Placeholder983 | | | +| 984 | Placeholder984 | | | +| 985 | Placeholder985 | | | +| 986 | Placeholder986 | | | +| 987 | Placeholder987 | | | +| 988 | Placeholder988 | | | +| 989 | Placeholder989 | | | +| 990 | Placeholder990 | | | +| 991 | Placeholder991 | | | +| 992 | Placeholder992 | | | +| 993 | Placeholder993 | | | +| 994 | Placeholder994 | | | +| 995 | Placeholder995 | | | +| 996 | Placeholder996 | | | +| 997 | Placeholder997 | | | +| 998 | Placeholder998 | | | +| 999 | Placeholder999 | | | +| 1000 | Placeholder1000 | | | diff --git a/darc-docs/docs/DARC Protocol/OpCodes.md b/darc-docs/docs/DARC Protocol/OpCodes.md index fc5f9d48..27bad235 100644 --- a/darc-docs/docs/DARC Protocol/OpCodes.md +++ b/darc-docs/docs/DARC Protocol/OpCodes.md @@ -16,6 +16,10 @@ Furthermore, the opcode instruction set includes operations for handling monetar By defining these operations through opcodes, the DARC protocol ensures consistency, transparency, and security in managing tokens, money, and law within autonomous entities. These instructions form the foundation for the decentralized governance and regulation of corporations, providing a framework for transparent and auditable decision-making processes. +### Notes + +In DARC protocol, the operations are named with uppercase letters, and in By-law Script and darcjs SDK, the operations are named with lowercase letters. For example, the operation `BATCH_MINT_TOKENS` in DARC protocol are named `batch_mint_tokens` in both By-law Script and darcjs SDK. + | Opcode ID | Opcode Name | Opcode Parameter | Opcode Notes | |-----------|----------------------------------------------|----------------------------------------------------------|------------------------------------------------------------| | 0 | UNDEFINED | | Invalid Operation | diff --git a/darc-specs/condition_expression.md b/darc-specs/condition_expression.md index c2803a9b..b3846242 100644 --- a/darc-specs/condition_expression.md +++ b/darc-specs/condition_expression.md @@ -1,6 +1,6 @@ # Condition Expression Table -## Notes +### Notes 1. There are multiple batch-operations, including: - Batch Mint Tokens @@ -30,7 +30,9 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] 2. Placeholders are reserved for future use. -3. the range [staringValue, endingValue] is inclusive. For example, if the range is [1, 3], then the value 1, 2, 3 are all included. +3. The range [staringValue, endingValue] is inclusive. For example, if the range is [1, 3], then the value 1, 2, 3 are all included. + +4. In the DARC protocol, all expressions are named with upper case, and in darc.js SDK and By-law Script, all expressions are named with lower case. For example, `OPERATOR_NAME_EQUALS` in the DARC protocol is `operator_name_equals` in darc.js SDK and By-law Script. | ID | Expression Name | Parameter| Notes| Ready | |------------|------|------|-------| ---- | From c396fd1687817b220e24114e9fab548df7045939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 17 Feb 2024 07:00:03 -0600 Subject: [PATCH 45/62] Update Getting Started.md --- darc-docs/docs/DARC Protocol/Getting Started.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/darc-docs/docs/DARC Protocol/Getting Started.md b/darc-docs/docs/DARC Protocol/Getting Started.md index 64622fff..370d6614 100644 --- a/darc-docs/docs/DARC Protocol/Getting Started.md +++ b/darc-docs/docs/DARC Protocol/Getting Started.md @@ -28,10 +28,10 @@ Since Hardhat and OpenZeppelin are used, the project can be built using the foll npx hardhat compile ``` -3. Run the Darc test network +3. Host a local devnet node with hardhat configuration: ```shell - npm run node + npx hardhat node ``` 4. Test contracts @@ -45,4 +45,4 @@ Since Hardhat and OpenZeppelin are used, the project can be built using the foll ```shell npm run deploy - ``` \ No newline at end of file + ``` From 99bbc0d84fab05b5345aa847a0bc036ca926bd96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 17 Feb 2024 07:39:14 -0600 Subject: [PATCH 46/62] Update ReleaseAWSS3.yml --- .github/workflows/ReleaseAWSS3.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ReleaseAWSS3.yml b/.github/workflows/ReleaseAWSS3.yml index 937a0240..db4da875 100644 --- a/.github/workflows/ReleaseAWSS3.yml +++ b/.github/workflows/ReleaseAWSS3.yml @@ -14,10 +14,10 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Use Node.js 18.x + - name: Use Node.js 20.x uses: actions/setup-node@v3 with: - node-version: '18.x' + node-version: '20.x' - name: Install Dependencies working-directory: ./darc-docs From 6e737c579a931025a65e80560dc72f88c1575a3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 17 Feb 2024 07:43:33 -0600 Subject: [PATCH 47/62] Update Getting Started.md --- darc-docs/docs/By-law Script/Getting Started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darc-docs/docs/By-law Script/Getting Started.md b/darc-docs/docs/By-law Script/Getting Started.md index 4ea5a0f2..f4189b50 100644 --- a/darc-docs/docs/By-law Script/Getting Started.md +++ b/darc-docs/docs/By-law Script/Getting Started.md @@ -13,7 +13,7 @@ By-law Script is the first programming language for describing the operations an ### Setup -There are two ways to write and execute By-law Script programs. The first is to use the By-law Script IDE at [darc.app](darc.app), which is a web-based IDE that allows you to write, compile, and execute By-law Script programs. +There are two ways to write and execute By-law Script programs. The first is to use the By-law Script IDE at [https://darc.app](https://darc.app), which is a web-based IDE that allows you to write, compile, and execute By-law Script programs. The second is to use the darcjs SDK, which is a command-line tool that allows you to write By-law Script programs in a text editor and then compile and execute them. From f41b9b1a9163e2fe5cb564df4c8fefd1c7f67231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Sat, 17 Feb 2024 21:13:52 -0600 Subject: [PATCH 48/62] update --- .../docs/DARC Protocol/Getting Started.md | 32 ++++++++++++++----- darc-docs/docs/Overview/Overview.md | 2 ++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/darc-docs/docs/DARC Protocol/Getting Started.md b/darc-docs/docs/DARC Protocol/Getting Started.md index 370d6614..f68dfb22 100644 --- a/darc-docs/docs/DARC Protocol/Getting Started.md +++ b/darc-docs/docs/DARC Protocol/Getting Started.md @@ -4,9 +4,9 @@ sidebar_position: 1 # Getting Started -## What is the DARC Protocol? +### What is the DARC Protocol? -## Building the source +### Building the source Since Hardhat and OpenZeppelin are used, the project can be built using the following commands: @@ -37,12 +37,28 @@ Since Hardhat and OpenZeppelin are used, the project can be built using the foll 4. Test contracts ```shell - npx hardhat test - REPORT_GAS=true npm run test + REPORT_GAS=true npx hardhat test --network localhost ``` -5. Deploy contracts +### Deploy - ```shell - npm run deploy - ``` +To deploy the DARC protocol, you can use the following commands: + +```shell +npx hardhat run scripts/deploy.js --network +``` + +If you want to deploy the DARC protocol to the local devnet, you can use the following command: + + +```shell +npx hardhat run scripts/deploy.js --network localhost +``` + +Make sure you have a local devnet node running before deploying the DARC protocol. + +If you want to deploy the DARC protocol to the Ethereum mainnet, you can use the following command: + +```shell +npx hardhat run scripts/deploy.js --network mainnet +``` diff --git a/darc-docs/docs/Overview/Overview.md b/darc-docs/docs/Overview/Overview.md index 960d428a..19523b3c 100644 --- a/darc-docs/docs/Overview/Overview.md +++ b/darc-docs/docs/Overview/Overview.md @@ -29,5 +29,7 @@ The entire DARC Project ([https://github.com/project-darc](https://github.com/pr ### Community Telegram: [https://t.me/projectdarc](https://t.me/projectdarc) + Github: [https://github.com/project-darc](https://github.com/project-darc) + Github Discussions: [https://github.com/orgs/Project-DARC/discussions](https://github.com/orgs/Project-DARC/discussions) \ No newline at end of file From a5682adb02dcd13941b9daba7794113b933eda44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 19 Feb 2024 02:30:37 -0600 Subject: [PATCH 49/62] update --- .../docs/DARC Protocol/Condition Nodes.md | 18 +- .../Plugin/Condition_TokenAndCash.sol | 59 + .../Utilities/ExternalValueReader.sol | 61 + darc-specs/condition_expression.md | 1046 ----------------- darc-specs/opcode.md | 41 - 5 files changed, 129 insertions(+), 1096 deletions(-) create mode 100644 darc-protocol/contracts/protocol/Utilities/ExternalValueReader.sol delete mode 100644 darc-specs/condition_expression.md delete mode 100644 darc-specs/opcode.md diff --git a/darc-docs/docs/DARC Protocol/Condition Nodes.md b/darc-docs/docs/DARC Protocol/Condition Nodes.md index a14d9584..10998e85 100644 --- a/darc-docs/docs/DARC Protocol/Condition Nodes.md +++ b/darc-docs/docs/DARC Protocol/Condition Nodes.md @@ -290,12 +290,12 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] | 182 | ORACLE_CALL_UINT256_RESULT_GREATER_THAN | string oracle, string method, uint256[] args, uint256 minValue || NOT READY, DO NOT USE | 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || NOT READY, DO NOT USE | 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || NOT READY, DO NOT USE -| 185 | ORACLE_CALL_UINT256_1_LESS_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE -| 186 | ORACLE_CALL_UINT256_1_GREATER_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE -| 187 | ORACLE_CALL_UINT256_1_EQUALS_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE -| 188 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || NOT READY, DO NOT USE -| 189 | ORACLE_CALL_STRING_1_EQUALS_2 | string oracle, string method, string[] args || NOT READY, DO NOT USE -| 190 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || NOT READY, DO NOT USE +| 185 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || NOT READY, DO NOT USE +| 186 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || NOT READY, DO NOT USE +| 187 | Placeholder187 | | | +| 188 | Placeholder188 | | | +| 189 | Placeholder189 | | | +| 190 | Placeholder190 | | | | 191 | Placeholder191 | | | | 192 | Placeholder192 | | | | 193 | Placeholder193 | | | @@ -578,9 +578,9 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] | 462 | TOKEN_X_OP_ANY_PRICE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". | 463 | TOKEN_X_OP_ANY_PRICE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startPrice, UINT256_2DARRAY[0][2] endPrice | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". | 464 | TOKEN_X_OP_ANY_PRICE_EQUALS | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 465 | Placeholder465 | | | -| 466 | Placeholder466 | | | -| 467 | Placeholder467 | | | +| 465 | TOKEN_X_OP_ANY_PRICE_GREATER_THAN_ORACLE_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] oracleContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 466 | TOKEN_X_OP_ANY_PRICE_LESS_THAN_ORACLE_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] oracleContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 467 | TOKEN_X_OP_ANY_PRICE_EQUALS_ORACLE_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] oracleContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". | 468 | Placeholder468 | | | | 469 | Placeholder469 | | | | 470 | Placeholder470 | | | diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol b/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol index 4b3b745f..bb846f56 100644 --- a/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol +++ b/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol @@ -12,6 +12,7 @@ import "../MachineStateManager.sol"; import "../Utilities/StringUtils.sol"; import "../Utilities/OpcodeMap.sol"; import "../Plugin.sol"; +import "../Utilities/ExternalValueReader.sol"; contract Condition_TokenAndCash is MachineStateManager { /** @@ -76,6 +77,64 @@ contract Condition_TokenAndCash is MachineStateManager { return false; } + function ID_465_TOKEN_X_OP_ANY_PRICE_GREATER_THAN_ORACLE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_465: The UINT256_2DARRAY length is not 1"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_465: The UINT256_2DARRAY[0] length is not 1"); + if (bIsTokenOperationWithCash(op) == false) return false; + + + (uint256[] memory tokenClassList, , uint256[] memory priceList) = getTokenClassAmountPriceList(op); + require(tokenClassList.length == priceList.length, "CE ID_465: The token class list length is not equal to price list length"); + + // try to get oracle value + (bool success, uint256 oracleValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); + + if (success == false) return false; + + for (uint256 i = 0; i < tokenClassList.length; i++) { + if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] > oracleValue) { return true; } + } + return false; + } + + function ID_466_TOKEN_X_OP_ANY_PRICE_LESS_THAN_ORACLE_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_466: The UINT256_2DARRAY length is not 1"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_466: The UINT256_2DARRAY[0] length is not 1"); + if (bIsTokenOperationWithCash(op) == false) return false; + + (uint256[] memory tokenClassList, , uint256[] memory priceList) = getTokenClassAmountPriceList(op); + require(tokenClassList.length == priceList.length, "CE ID_466: The token class list length is not equal to price list length"); + + // try to get oracle value + (bool success, uint256 oracleValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); + + if (success == false) return false; + + for (uint256 i = 0; i < tokenClassList.length; i++) { + if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] < oracleValue) { return true; } + } + return false; + } + + function ID_467_TOKEN_X_OP_ANY_PRICE_EQUALS_ORACLE_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { + require(param.UINT256_2DARRAY.length == 1, "CE ID_467: The UINT256_2DARRAY length is not 1"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_467: The UINT256_2DARRAY[0] length is not 1"); + if (bIsTokenOperationWithCash(op) == false) return false; + + (uint256[] memory tokenClassList, , uint256[] memory priceList) = getTokenClassAmountPriceList(op); + require(tokenClassList.length == priceList.length, "CE ID_467: The token class list length is not equal to price list length"); + + // try to get oracle value + (bool success, uint256 oracleValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); + + if (success == false) return false; + + for (uint256 i = 0; i < tokenClassList.length; i++) { + if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] == oracleValue) { return true; } + } + return false; + } + // -------------------------------- below are helper functions ---------------------------- diff --git a/darc-protocol/contracts/protocol/Utilities/ExternalValueReader.sol b/darc-protocol/contracts/protocol/Utilities/ExternalValueReader.sol new file mode 100644 index 00000000..25f2195b --- /dev/null +++ b/darc-protocol/contracts/protocol/Utilities/ExternalValueReader.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.19; + +library ExternalValueReader { + + function tryReadUINT256(address _contract, bytes memory _data) internal view returns (bool, uint256) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, 0); + } + return (true, abi.decode(returnData, (uint256))); + } + + function tryReadAddress(address _contract, bytes memory _data) internal view returns (bool, address) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, address(0)); + } + return (true, abi.decode(returnData, (address))); + } + + function tryReadBytes32(address _contract, bytes memory _data) internal view returns (bool, bytes32) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, bytes32(0)); + } + return (true, abi.decode(returnData, (bytes32))); + } + + function tryReadBytes(address _contract, bytes memory _data) internal view returns (bool, bytes memory) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, new bytes(0)); + } + return (true, returnData); + } + + function tryReadString(address _contract, bytes memory _data) internal view returns (bool, string memory) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, ""); + } + return (true, abi.decode(returnData, (string))); + } + + function tryReadBool(address _contract, bytes memory _data) internal view returns (bool, bool) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, false); + } + return (true, abi.decode(returnData, (bool))); + } + + function tryReadInt(address _contract, bytes memory _data) internal view returns (bool, int) { + (bool success, bytes memory returnData) = _contract.staticcall(_data); + if (!success) { + return (false, 0); + } + return (true, abi.decode(returnData, (int))); + } +} \ No newline at end of file diff --git a/darc-specs/condition_expression.md b/darc-specs/condition_expression.md deleted file mode 100644 index b3846242..00000000 --- a/darc-specs/condition_expression.md +++ /dev/null @@ -1,1046 +0,0 @@ -# Condition Expression Table - -### Notes - -1. There are multiple batch-operations, including: - - Batch Mint Tokens - - Batch Create Token Classes - - Batch Transfer Tokens - - Batch Transfer Tokens From To - - Batch Burn Tokens - - Batch Burn Tokens From - - Batch Add Membership - - Batch Suspend Membership - - Batch Resume Membership - - Batch Change Member Roles - - Batch Change Member Names - - Batch Add Plugins - - Batch Enable Plugins - - Batch Disable Plugins - - Batch Add and Enable Plugins - - Batch Set Parameters - - Batch Add Withdrawable Balances - - Batch Reduce Withdrawable Balances - - Batch Add Voting Rules - - Batch Pay to Mint Tokens - - Batch Pay to Transfer Tokens - - Batch Burn Tokens and Refund - -For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)](opcode.md) - -2. Placeholders are reserved for future use. - -3. The range [staringValue, endingValue] is inclusive. For example, if the range is [1, 3], then the value 1, 2, 3 are all included. - -4. In the DARC protocol, all expressions are named with upper case, and in darc.js SDK and By-law Script, all expressions are named with lower case. For example, `OPERATOR_NAME_EQUALS` in the DARC protocol is `operator_name_equals` in darc.js SDK and By-law Script. - -| ID | Expression Name | Parameter| Notes| Ready | -|------------|------|------|-------| ---- | -| 0 | UNDEFINED | | Invalid Operation | -| 1 | OPERATOR_NAME_EQUALS| STRING_ARRAY[0] operatorName | The operator name is exactly the same as the given string | -| 2 | OPERATOR_ROLE_EQUALS| UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is exactly the same as operatorRoleIndex | -| 3 | OPERATOR_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] operatorAddress | The operator address equals operatorAddress| -| 4 | OPERATOR_ROLE_GREATER_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is greater than operatorRoleIndex| -| 5 | OPERATOR_ROLE_LESS_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is less than operatorRoleIndex| -| 6 | OPERATOR_ROLE_IN_RANGE| UINT256_2DARRAY[0][0] startingOperatorRoleIndex, UINT256_2DARRAY[0][1] endingOperatorRoleIndex | The operator role index is in the range of [startingOperatorRoleIndex, endingOperatorRoleIndex]| -| 7 | OPERATOR_ROLE_IN_LIST | UINT256_2DARRAY[0] operatorRoleIndexArray| The operator role index is in the list of operatorRoleIndexArray| -| 8 | OPERATOR_TOKEN_X_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | The operator has more than amount of token at tokenClass| -| 9 | OPERATOR_TOKEN_X_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || -| 10 | OPERATOR_TOKEN_X_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startingAmount, UINT256_2DARRAY[0][2] endingAmount | The operator has token amount in the range of [startingAmount, endingAmount] at tokenClass| -| 11 | OPERATOR_TOKEN_X_AMOUNT_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | The operator has exactly amount of token at tokenClass| -| 12 | OPERATOR_TOKEN_X_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has more than percentage of token at tokenClass| -| 13 | OPERATOR_TOKEN_X_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has less than percentage of token at tokenClass| -| 14 | OPERATOR_TOKEN_X_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentageStartingValue, UINT256_2DARRAY[0][2] percentageEndingValue | The operator has token percentage in the range of [percentageStartingValue, percentageEndingValue] at tokenClass| -| 15 | OPERATOR_TOKEN_X_PERCENTAGE_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] percentage | The operator has exactly percentage of token at tokenClass| -| 16 | OPERATOR_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount | The operator has more than amount of voting weight| -| 17 | OPERATOR_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of voting weight| -| 18 | OPERATOR_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has voting weight in the range of [startingAmount, endingAmount]| -| 19 | OPERATOR_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount | The operator has more than amount of dividend weight| -| 20 | OPERATOR_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount | The operator has less than amount of dividend weight| -| 21 | OPERATOR_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has dividend weight in the range of [startingAmount, endingAmount]| -| 22 | Placeholder22 | | | -| 23 | Placeholder23 | | | -| 24 | Placeholder24 | | | -| 25 | OPERATOR_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount | The operator has more than amount of withdrawable cash| -| 26 | OPERATOR_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of withdrawable cash| -| 27 | OPERATOR_WITHDRAWABLE_CASH_IN_RANGE| UINT256_2DARRAY[0][0] startingAmount, UINT256_2DARRAY[0][1] endingAmount | The operator has withdrawable cash in the range of [startingAmount, endingAmount]| -| 28 | OPERATOR_WITHDRAWABLE_DIVIDENDS_GREATER_THAN| UINT256_2DARRAY[0][0] amount | The operator has more than amount of withdrawable dividends| -| 29 | OPERATOR_WITHDRAWABLE_DIVIDENDS_LESS_THAN | UINT256_2DARRAY[0][0] amount | The operator has less than amount of withdrawable dividends| -| 30 | OPERATOR_WITHDRAWABLE_DIVIDENDS_IN_RANGE | UINT256_2DARRAY[0][0] amount | The operator has withdrawable dividends in the range of [startingAmount, endingAmount]| -| 31 | OPERATOR_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] addressArray | The operator address is in the list of addressArray| -| 32 | Placeholder32 | | | -| 33 | Placeholder33 | | | -| 34 | Placeholder34 | | | -| 35 | Placeholder35 | | | -| 36 | Placeholder36 | | | -| 37 | Placeholder37 | | | -| 38 | Placeholder38 | | | -| 39 | Placeholder39 | | | -| 40 | Placeholder40 | | | -| 41 | Placeholder41 | | | -| 42 | Placeholder42 | | | -| 43 | Placeholder43 | | | -| 44 | Placeholder44 | | | -| 45 | Placeholder45 | | | -| 46 | Placeholder46 | | | -| 47 | Placeholder47 | | | -| 48 | Placeholder48 | | | -| 49 | Placeholder49 | | | -| 50 | Placeholder50 | | | -| 51 | TIMESTAMP_GREATER_THAN | UINT256_2DARRAY[0][0] timestamp | The current timestamp is greater than timestamp| -| 52 | TIMESTAMP_LESS_THAN | UINT256_2DARRAY[0][0] timestamp | The current timestamp is less than timestamp| -| 53 | TIMESTAMP_IN_RANGE | UINT256_2DARRAY[0][0] startTimestamp, UINT256_2DARRAY[0][0] endTimestamp | The current timestamp is in the range of [startTimestamp, endTimestamp]| -| 54 | DATE_YEAR_GREATER_THAN | UINT256_2DARRAY[0][0] year | The current year is greater than year| -| 55 | DATE_YEAR_LESS_THAN | UINT256_2DARRAY[0][0] year | The current year is less than year| -| 56 | DATE_YEAR_IN_RANGE | UINT256_2DARRAY[0][0] startYear, UINT256_2DARRAY[0][0] endYear | The current year is in the range of [startYear, endYear]| -| 57 | DATE_MONTH_GREATER_THAN | UINT256_2DARRAY[0][0] month | The current month is greater than month| -| 58 | DATE_MONTH_LESS_THAN | UINT256_2DARRAY[0][0] month | The current month is less than month| -| 59 | DATE_MONTH_IN_RANGE | UINT256_2DARRAY[0][0] startMonth, UINT256_2DARRAY[0][0] endMonth | The current month is in the range of [startMonth, endMonth]| -| 60 | DATE_DAY_GREATER_THAN | UINT256[0][0] day | The current day is greater than day| -| 61 | DATE_DAY_LESS_THAN | UINT256[0][0] day | The current day is less than day| -| 62 | DATE_DAY_IN_RANGE | UINT256[0][0] startDay, UINT256[0][0] endDay | The current day is in the range of [startDay, endDay]| -| 63 | DATE_HOUR_GREATER_THAN | uint256 hour | The current hour is greater than hour| -| 64 | DATE_HOUR_LESS_THAN | uint256 hour | The current hour is less than hour| -| 65 | DATE_HOUR_IN_RANGE | uint256 startHour, uint256 endHour | The current hour is in the range of [startHour, endHour]| -| 66 | ADDRESS_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has more than amount of voting weight| -| 67 | ADDRESS_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has less than amount of voting weight| -| 68 | ADDRESS_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has voting weight in the range of [startingAmount, endingAmount]| -| 69 | ADDRESS_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has more than amount of dividend weight| -| 70 | ADDRESS_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address | The address has less than amount of dividend weight| -| 71 | ADDRESS_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount , ADDRESS_2DARRAY[0][0] address || -| 72 | ADDRESS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || -| 73 | ADDRESS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || -| 74 | ADDRESS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount, ADDRESS_2DARRAY[0][0] address || -| 75 | TOTAL_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || -| 76 | TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 77 | TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || -| 78 | TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 79 | TOTAL_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || -| 80 | TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || -| 81 | TOTAL_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE -| 82 | TOTAL_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE -| 83 | TOTAL_CASH_IN_RANGE| UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE -| 84 | TOTAL_CASH_EQUALS| UINT256_2DARRAY[0][0] amount || NOT READY, DO NOT USE -| 85 | TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 86 | TOKEN_IN_LIST_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 87 | TOKEN_IN_LIST_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] startAmount, UINT256_2DARRAY[1][1] endAmount || -| 88 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 89 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 90 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 91 | TOKEN_IN_LIST_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 92 | TOKEN_IN_LIST_AMOUNT_LESS_THAN | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 93 | TOKEN_IN_LIST_AMOUNT_IN_RANGE | UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 94 | TOKEN_IN_LIST_AMOUNT_EQUALS| UINT256_2DARRAY[0] tokenClassList, UINT256_2DARRAY[1][0] amount || -| 95 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_GREATER_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || -| 96 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || -| 97 | ADDRESS_VOTING_WEIGHT_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || -| 98 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || -| 99 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_LESS_THAN| UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || -| 100 | ADDRESS_DIVIDEND_WEIGHT_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] amount, ADDRESS_2DARRAY[0][0] address || -| 101 | Placeholder101 | | | -| 102 | Placeholder102 | | | -| 103 | Placeholder103 | | | -| 104 | Placeholder104 | | | -| 105 | Placeholder105 | | | -| 106 | Placeholder106 | | | -| 107 | Placeholder107 | | | -| 108 | Placeholder108 | | | -| 109 | Placeholder109 | | | -| 110 | Placeholder110 | | | -| 111 | Placeholder111 | | | -| 112 | Placeholder112 | | | -| 113 | Placeholder113 | | | -| 114 | Placeholder114 | | | -| 115 | Placeholder115 | | | -| 116 | Placeholder116 | | | -| 117 | Placeholder117 | | | -| 118 | Placeholder118 | | | -| 119 | Placeholder119 | | | -| 120 | Placeholder120 | | | -| 121 | Placeholder121 | | | -| 122 | Placeholder122 | | | -| 123 | Placeholder123 | | | -| 124 | Placeholder124 | | | -| 125 | Placeholder125 | | | -| 126 | Placeholder126 | | | -| 127 | Placeholder127 | | | -| 128 | Placeholder128 | | | -| 129 | Placeholder129 | | | -| 130 | Placeholder130 | | | -| 131 | Placeholder131 | | | -| 132 | Placeholder132 | | | -| 133 | Placeholder133 | | | -| 134 | Placeholder134 | | | -| 135 | Placeholder135 | | | -| 136 | Placeholder136 | | | -| 137 | Placeholder137 | | | -| 138 | Placeholder138 | | | -| 139 | Placeholder139 | | | -| 140 | Placeholder140 | | | -| 141 | Placeholder141 | | | -| 142 | Placeholder142 | | | -| 143 | Placeholder143 | | | -| 144 | Placeholder144 | | | -| 145 | Placeholder145 | | | -| 146 | Placeholder146 | | | -| 147 | Placeholder147 | | | -| 148 | Placeholder148 | | | -| 149 | Placeholder149 | | | -| 150 | Placeholder150 | | | -| 151 | OPERATION_EQUALS | uint256 value || -| 152 | OPERATION_IN_LIST | uint256[] values || -| 153 | Placeholder153 | | | -| 154 | Placeholder154 | | | -| 155 | Placeholder155 | | | -| 156 | Placeholder156 | | | -| 157 | Placeholder157 | | | -| 158 | Placeholder158 | | | -| 159 | Placeholder159 | | | -| 160 | Placeholder160 | | | -| 161 | Placeholder161 | | | -| 162 | Placeholder162 | | | -| 163 | Placeholder163 | | | -| 164 | Placeholder164 | | | -| 166 | Placeholder166 | | | -| 167 | Placeholder167 | | | -| 168 | Placeholder168 | | | -| 169 | Placeholder169 | | | -| 170 | Placeholder170 | | | -| 171 | Placeholder171 | | | -| 172 | Placeholder172 | | | -| 173 | Placeholder173 | | | -| 174 | Placeholder174 | | | -| 175 | Placeholder175 | | | -| 176 | Placeholder176 | | | -| 177 | Placeholder177 | | | -| 178 | Placeholder178 | | | -| 179 | Placeholder179 | | | -| 180 | Placeholder180 | | | -| 181 | ORACLE_CALL_UINT256_RESULT_EQUALS | string oracle, string method, uint256[] args, uint256 expectedValue || NOT READY, DO NOT USE -| 182 | ORACLE_CALL_UINT256_RESULT_GREATER_THAN | string oracle, string method, uint256[] args, uint256 minValue || NOT READY, DO NOT USE -| 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || NOT READY, DO NOT USE -| 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || NOT READY, DO NOT USE -| 185 | ORACLE_CALL_UINT256_1_LESS_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE -| 186 | ORACLE_CALL_UINT256_1_GREATER_THAN_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE -| 187 | ORACLE_CALL_UINT256_1_EQUALS_2 | string oracle, string method, uint256[] args || NOT READY, DO NOT USE -| 188 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || NOT READY, DO NOT USE -| 189 | ORACLE_CALL_STRING_1_EQUALS_2 | string oracle, string method, string[] args || NOT READY, DO NOT USE -| 190 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || NOT READY, DO NOT USE -| 191 | Placeholder191 | | | -| 192 | Placeholder192 | | | -| 193 | Placeholder193 | | | -| 194 | Placeholder194 | | | -| 195 | Placeholder195 | | | -| 196 | Placeholder196 | | | -| 197 | Placeholder197 | | | -| 198 | Placeholder198 | | | -| 199 | Placeholder199 | | | -| 200 | Placeholder200 | | | -| 201 | Placeholder201 | | | -| 202 | Placeholder202 | | | -| 203 | Placeholder203 | | | -| 204 | Placeholder204 | | | -| 205 | Placeholder205 | | | -| 206 | Placeholder206 | | | -| 207 | Placeholder207 | | | -| 208 | Placeholder208 | | | -| 209 | Placeholder209 | | | -| 210 | Placeholder210 | | | -| 211 | BATCH_OP_SIZE_GREATER_THAN | UINT256_2DARRAY[0][0] batchSize || -| 212 | BATCH_OP_SIZE_LESS_THAN | UINT256_2DARRAY[0][0] batchSize || -| 213 | BATCH_OP_SIZE_IN_RANGE | UINT256_2DARRAY[0][0] startBatchSize, UINT256_2DARRAY[0][0] endBatchSize || -| 214 | BATCH_OP_SIZE_EQUALS | UINT256_2DARRAY[0][0] batchSize || -| 215 | BATCH_OP_EACH_TARGET_ADDRESSES_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || -| 216 | BATCH_OP_EACH_TARGET_ADDRESSES_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || -| 217 | BATCH_OP_EACH_TARGET_ADDRESSES_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || -| 218 | BATCH_OP_ANY_TARGET_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || -| 219 | BATCH_OP_ANY_TARGET_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || -| 220 | BATCH_OP_ANY_TARGET_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || -| 221 | BATCH_OP_EACH_TARGET_ADDRESS_TO_ITSELF | || -| 222 | BATCH_OP_ANY_TARGET_ADDRESS_TO_ITSELF | || -| 223 | BATCH_OP_EACH_SOURCE_ADDRESS_EQUALS | ADDRESS_2DARRAY[0][0] sourceAddress || -| 224 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] sourceAddressArray || -| 225 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || -| 226 | BATCH_OP_ANY_SOURCE_ADDRESS_EQUAL | ADDRESS_2DARRAY[0][0] sourceAddress || -| 227 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_LIST | ADDRESS_2DARRAY[0] sourceAddressArray || -| 228 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_MEMBER_ROLE | UINT256_2DARRAY[0][0] memberRole || -| 229 | BATCH_OP_EACH_SOURCE_ADDRESS_FROM_ITSELF | || -| 230 | BATCH_OP_ANY_SOURCE_ADDRESS_FROM_ITSELF | | -| 231 | BATCH_OP_EACH_TOKEN_CLASS_EQUALS | UINT256_2DARRAY[0][0] tokenClass || -| 232 | BATCH_OP_EACH_TOKEN_CLASS_IN_LIST | UINT256_2DARRAY[0] tokenClassArray || -| 233 | BATCH_OP_EACH_TOKEN_CLASS_IN_RANGE | UINT256_2DARRAY[0][0] startTokenClass, UINT256_2DARRAY[0][0] endTokenClass || -| 234 | BATCH_OP_EACH_TOKEN_CLASS_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass || -| 235 | BATCH_OP_EACH_TOKEN_CLASS_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass || -| 236 | BATCH_OP_TOTAL_TOKEN_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 237 | BATCH_OP_TOTAL_TOKEN_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 238 | BATCH_OP_TOTAL_TOKEN_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 239 | BATCH_OP_TOTAL_TOKEN_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || -| 240 | BATCH_OP_ANY_TOKEN_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 241 | BATCH_OP_ANY_TOKEN_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 242 | BATCH_OP_ANY_TOKEN_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 243 | BATCH_OP_ANY_TOKEN_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || -| 244 | BATCH_OP_ANY_TOKEN_CLASS_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass || -| 245 | BATCH_OP_ANY_TOKEN_CLASS_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass || -| 246 | BATCH_OP_ANY_TOKEN_CLASS_IN_RANGE | UINT256_2DARRAY[0][0] startTokenClass, UINT256_2DARRAY[0][0] endTokenClass || -| 247 | BATCH_OP_ANY_TOKEN_CLASS_EQUALS | UINT256_2DARRAY[0][0] tokenClass || -| 248 | BATCH_OP_ANY_TOKEN_CLASS_IN_LIST | UINT256_2DARRAY[0] tokenClassArray || -| 249 | BATCH_OP_EACH_SOURCE_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || -| 250 | BATCH_OP_ANY_SOURCE_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || -| 251 | BATCH_OP_EACH_TARGET_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || -| 252 | BATCH_OP_ANY_TARGET_ADDRESS_IN_MEMBER_ROLE_LIST | UINT256_2DARRAY[0] memberRoleArray || -| 253 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 254 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 255 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 256 | BATCH_OP_EACH_TARGET_ADDRESS_WITHDRAWABLE_CASH_EQUALS | UINT256_2DARRAY[0][0] amount || -| 257 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 258 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 259 | BATCH_OP_ANY_TARGET_ADDRESS_WITHDRAWABLE_CASH_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 260 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 261 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 262 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 263 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] amount || -| 264 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 265 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 266 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || -| 267 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 268 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 269 | BATCH_OP_EACH_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || -| 270 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 271 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 272 | BATCH_OP_ANY_TARGET_ADDRESS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][1] endAmount || -| 273 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || -| 274 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount || -| 275 | BATCH_OP_EACH_TARGET_ADDRESS_OWNS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startAmount, UINT256_2DARRAY[0][2] endAmount || -| 276 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | -| 277 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] amount | -| 278 | BATCH_OP_ANY_TARGET_ADDRESS_OWNS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startAmount, UINT256_2DARRAY[0][2] endAmount | -| 279 | Placeholder279 | | | -| 280 | Placeholder280 | | | -| 281 | Placeholder281 | | | -| 282 | Placeholder282 | | | -| 283 | Placeholder283 | | | -| 284 | Placeholder284 | | | -| 285 | Placeholder285 | | | -| 286 | Placeholder286 | | | -| 287 | Placeholder287 | | | -| 288 | Placeholder288 | | | -| 289 | Placeholder289 | | | -| 290 | Placeholder290 | | | -| 291 | Placeholder291 | | | -| 292 | Placeholder292 | | | -| 293 | Placeholder293 | | | -| 294 | Placeholder294 | | | -| 295 | Placeholder295 | | | -| 296 | Placeholder296 | | | -| 297 | Placeholder297 | | | -| 298 | Placeholder298 | | | -| 299 | Placeholder299 | | | -| 300 | Placeholder300 | | | -| 301 | ENABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 302 | ENABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 303 | ENABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0][0] startPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 304 | ENABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 305 | DISABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 306 | DISABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 307 | DISABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 308 | DISABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_LIST | UINT256_2DARRAY[0] pluginIndexList | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 309 | ENABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 310 | ENABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 311 | ENABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 312 | ENABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_ENABLE_PLUGINS" operation. -| 313 | DISABLE_ANY_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 314 | DISABLE_ANY_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 315 | DISABLE_EACH_BEFORE_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 316 | DISABLE_EACH_AFTER_OP_PLUGIN_INDEX_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][1] endPluginIndex | Only for checking "BATCH_DISABLE_PLUGINS" operation. -| 317 | ARE_ALL_PLUGINS_BEFORE_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. -| 318 | ARE_ALL_PLUGINS_AFTER_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. -| 319 | IS_ANY_PLUGIN_BEFORE_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. -| 320 | IS_ANY_PLUGIN_AFTER_OPERATION | | This can be used for checking "BATCH_ENABLE_PLUGINS", "BATCH_DISABLE_PLUGINS", "BATCH_ADD_PLUGINS" and "BATCH_ADD_AND_ENABLE_PLUGINS" operations. -| 321 | ADD_PLUGIN_ANY_LEVEL_EQUALS | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || -| 322 | ADD_PLUGIN_ANY_LEVEL_IN_LIST | UINT256_2DARRAY[0] pluginIndexList || -| 323 | ADD_PLUGIN_ANY_LEVEL_IN_RANGE | UINT256_2DARRAY[0][0] startPluginIndex, UINT256_2DARRAY[0][0] endPluginIndex, UINT256_2DARRAY[0][0] level || -| 324 | ADD_PLUGIN_ANY_LEVEL_GREATER_THAN | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || -| 325 | ADD_PLUGIN_ANY_LEVEL_LESS_THAN | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] level || -| 326 | ADD_PLUGIN_ANY_RETURN_TYPE_EQUALS | UINT256_2DARRAY[0][0] pluginIndex, UINT256_2DARRAY[0][0] returnType || -| 327 | ADD_PLUGIN_ANY_VOTING_RULE_INDEX_IN_LIST | UINT256_2DARRAY[0] votingRuleIndexList || -| 328 | Placeholder320 | | | -| 321 | Placeholder321 | | | -| 322 | Placeholder322 | | | -| 323 | Placeholder323 | | | -| 324 | Placeholder324 | | | -| 325 | Placeholder325 | | | -| 326 | Placeholder326 | | | -| 327 | Placeholder327 | | | -| 328 | Placeholder328 | | | -| 329 | Placeholder329 | | | -| 330 | Placeholder330 | | | -| 331 | Placeholder331 | | | -| 332 | Placeholder332 | | | -| 333 | Placeholder333 | | | -| 334 | Placeholder334 | | | -| 335 | Placeholder335 | | | -| 336 | Placeholder336 | | | -| 337 | Placeholder337 | | | -| 338 | Placeholder338 | | | -| 339 | Placeholder339 | | | -| 340 | Placeholder340 | | | -| 341 | Placeholder341 | | | -| 342 | Placeholder342 | | | -| 343 | Placeholder343 | | | -| 344 | Placeholder344 | | | -| 345 | Placeholder345 | | | -| 346 | Placeholder346 | | | -| 347 | Placeholder347 | | | -| 348 | Placeholder348 | | | -| 349 | Placeholder349 | | | -| 350 | Placeholder350 | | | -| 351 | Placeholder351 | | | -| 352 | Placeholder352 | | | -| 353 | Placeholder353 | | | -| 354 | Placeholder354 | | | -| 355 | Placeholder355 | | | -| 356 | Placeholder356 | | | -| 357 | Placeholder357 | | | -| 358 | Placeholder358 | | | -| 359 | Placeholder359 | | | -| 360 | Placeholder360 | | | -| 361 | Placeholder361 | | | -| 362 | Placeholder362 | | | -| 363 | Placeholder363 | | | -| 364 | Placeholder364 | | | -| 365 | Placeholder365 | | | -| 366 | Placeholder366 | | | -| 367 | Placeholder367 | | | -| 368 | Placeholder368 | | | -| 369 | Placeholder369 | | | -| 370 | Placeholder370 | | | -| 371 | ADD_ANY_VOTING_RULE_IS_ABSOLUTE_MAJORITY | || -| 372 | ADD_ANY_VOTING_RULE_APPROVAL_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] startPercentage, UINT256_2DARRAY[0][1] endPercentage || -| 373 | ADD_ANY_VOTING_RULE_TOKEN_CLASS_CONTAINS | UINT256_2DARRAY[0][0] tokenClass || -| 374 | Placeholder374 | | | -| 375 | Placeholder375 | | | -| 376 | Placeholder376 | | | -| 377 | Placeholder377 | | | -| 378 | Placeholder378 | | | -| 379 | Placeholder379 | | | -| 380 | Placeholder380 | | | -| 381 | Placeholder381 | | | -| 382 | Placeholder382 | | | -| 383 | Placeholder383 | | | -| 384 | Placeholder384 | | | -| 385 | Placeholder385 | | | -| 386 | Placeholder386 | | | -| 387 | Placeholder387 | | | -| 388 | Placeholder388 | | | -| 389 | Placeholder389 | | | -| 390 | Placeholder390 | | | -| 391 | Placeholder391 | | | -| 392 | Placeholder392 | | | -| 393 | Placeholder393 | | | -| 394 | Placeholder394 | | | -| 395 | Placeholder395 | | | -| 396 | Placeholder396 | | | -| 397 | Placeholder397 | | | -| 398 | Placeholder398 | | | -| 399 | Placeholder399 | | | -| 400 | Placeholder400 | | | -| 401 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_EQUALS | ADDRESS_2DARRAY[0][0] targetAddress || -| 402 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_IN_LIST | ADDRESS_2DARRAY[0] targetAddressArray || -| 403 | CHANGE_MEMBER_ROLE_TO_ANY_ROLE_IN_RANGE | ADDRESS_2DARRAY[0][0] startTargetAddress, ADDRESS_2DARRAY[0][1] endTargetAddress || -| 404 | Placeholder404 | | | -| 405 | Placeholder405 | | | -| 406 | CHANGE_MEMBER_NAME_TO_ANY_STRING_IN_LIST | STRING_ARRAY nameList || -| 407 | CHANGE_MEMBER_NAME_TO_ANY_STRING_CONTAINS | STRING_ARRAY[0] subString || -| 408 | Placeholder408 | | | -| 409 | Placeholder409 | | | -| 410 | Placeholder410 | | | -| 411 | Placeholder411 | | | -| 412 | Placeholder412 | | | -| 413 | Placeholder413 | | | -| 414 | Placeholder414 | | | -| 415 | Placeholder415 | | | -| 416 | Placeholder416 | | | -| 417 | Placeholder417 | | | -| 418 | Placeholder418 | | | -| 419 | Placeholder419 | | | -| 420 | Placeholder420 | | | -| 421 | Placeholder421 | | | -| 422 | Placeholder422 | | | -| 423 | Placeholder423 | | | -| 424 | Placeholder424 | | | -| 425 | Placeholder425 | | | -| 426 | Placeholder426 | | | -| 427 | Placeholder427 | | | -| 428 | Placeholder428 | | | -| 429 | Placeholder429 | | | -| 430 | Placeholder430 | | | -| 431 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 432 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 433 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 434 | ADD_WITHDRAWABLE_BALANCE_ANY_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || -| 435 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || -| 436 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || -| 437 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] startAmount, UINT256_2DARRAY[0][0] endAmount || -| 438 | REDUCE_WITHDRAWABLE_BALANCE_ANY_AMOUNT_EQUALS | UINT256_2DARRAY[0][0] amount || -| 439 | Placeholder439 | | | -| 440 | Placeholder440 | | | -| 441 | Placeholder441 | | | -| 442 | Placeholder442 | | | -| 443 | Placeholder443 | | | -| 444 | Placeholder444 | | | -| 445 | Placeholder445 | | | -| 446 | Placeholder446 | | | -| 447 | Placeholder447 | | | -| 448 | Placeholder448 | | | -| 449 | Placeholder449 | | | -| 450 | Placeholder450 | | | -| 451 | Placeholder451 | | | -| 452 | Placeholder452 | | | -| 453 | Placeholder453 | | | -| 454 | Placeholder454 | | | -| 455 | Placeholder455 | | | -| 456 | Placeholder456 | | | -| 457 | Placeholder457 | | | -| 458 | Placeholder458 | | | -| 459 | Placeholder459 | | | -| 460 | Placeholder460 | | | -| 461 | TOKEN_X_OP_ANY_PRICE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 462 | TOKEN_X_OP_ANY_PRICE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 463 | TOKEN_X_OP_ANY_PRICE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startPrice, UINT256_2DARRAY[0][2] endPrice | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 464 | TOKEN_X_OP_ANY_PRICE_EQUALS | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 465 | Placeholder465 | | | -| 466 | Placeholder466 | | | -| 467 | Placeholder467 | | | -| 468 | Placeholder468 | | | -| 469 | Placeholder469 | | | -| 470 | Placeholder470 | | | -| 471 | Placeholder471 | | | -| 472 | Placeholder472 | | | -| 473 | Placeholder473 | | | -| 474 | Placeholder474 | | | -| 475 | Placeholder475 | | | -| 476 | Placeholder476 | | | -| 477 | Placeholder477 | | | -| 478 | Placeholder478 | | | -| 479 | Placeholder479 | | | -| 480 | Placeholder480 | | | -| 481 | Placeholder481 | | | -| 482 | Placeholder482 | | | -| 483 | Placeholder483 | | | -| 484 | Placeholder484 | | | -| 485 | Placeholder485 | | | -| 486 | Placeholder486 | | | -| 487 | Placeholder487 | | | -| 488 | Placeholder488 | | | -| 489 | Placeholder489 | | | -| 490 | Placeholder490 | | | -| 491 | Placeholder491 | | | -| 492 | Placeholder492 | | | -| 493 | Placeholder493 | | | -| 494 | Placeholder494 | | | -| 495 | Placeholder495 | | | -| 496 | Placeholder496 | | | -| 497 | Placeholder497 | | | -| 498 | Placeholder498 | | | -| 499 | Placeholder499 | | | -| 500 | Placeholder500 | | | -| 501 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 502 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 503 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0]startWeight, UINT256_2DARRAY[0][1] endWeight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 504 | CREATE_TOKEN_CLASSES_ANY_TOKEN_DIVIDEND_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 505 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 506 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 507 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] startWeight, UINT256_2DARRAY[0][1] endWeight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 508 | CREATE_TOKEN_CLASSES_ANY_VOTING_WEIGHT_EQUALS | UINT256_2DARRAY[0][0] weight | For "BATCH_CREATE_TOKEN_CLASSES" operation. -| 509 | Placeholder509 | | | -| 510 | Placeholder510 | | | -| 511 | Placeholder511 | | | -| 512 | Placeholder512 | | | -| 513 | Placeholder513 | | | -| 514 | Placeholder514 | | | -| 515 | Placeholder515 | | | -| 516 | Placeholder516 | | | -| 517 | Placeholder517 | | | -| 518 | Placeholder518 | | | -| 519 | Placeholder519 | | | -| 520 | Placeholder520 | | | -| 521 | Placeholder521 | | | -| 522 | Placeholder522 | | | -| 523 | Placeholder523 | | | -| 524 | Placeholder524 | | | -| 525 | Placeholder525 | | | -| 526 | Placeholder526 | | | -| 527 | Placeholder527 | | | -| 528 | Placeholder528 | | | -| 529 | Placeholder529 | | | -| 530 | Placeholder530 | | | -| 531 | Placeholder531 | | | -| 532 | Placeholder532 | | | -| 533 | Placeholder533 | | | -| 534 | Placeholder534 | | | -| 535 | Placeholder535 | | | -| 536 | Placeholder536 | | | -| 537 | Placeholder537 | | | -| 538 | Placeholder538 | | | -| 539 | Placeholder539 | | | -| 540 | Placeholder540 | | | -| 541 | Placeholder541 | | | -| 542 | Placeholder542 | | | -| 543 | Placeholder543 | | | -| 544 | Placeholder544 | | | -| 545 | Placeholder545 | | | -| 546 | Placeholder546 | | | -| 547 | Placeholder547 | | | -| 548 | Placeholder548 | | | -| 549 | Placeholder549 | | | -| 550 | Placeholder550 | | | -| 551 | Placeholder551 | | | -| 552 | Placeholder552 | | | -| 553 | Placeholder553 | | | -| 554 | Placeholder554 | | | -| 555 | Placeholder555 | | | -| 556 | Placeholder556 | | | -| 557 | Placeholder557 | | | -| 558 | Placeholder558 | | | -| 559 | Placeholder559 | | | -| 560 | Placeholder560 | | | -| 561 | Placeholder561 | | | -| 562 | Placeholder562 | | | -| 563 | Placeholder563 | | | -| 564 | Placeholder564 | | | -| 565 | Placeholder565 | | | -| 566 | Placeholder566 | | | -| 567 | Placeholder567 | | | -| 568 | Placeholder568 | | | -| 569 | Placeholder569 | | | -| 570 | Placeholder570 | | | -| 571 | Placeholder571 | | | -| 572 | Placeholder572 | | | -| 573 | Placeholder573 | | | -| 574 | Placeholder574 | | | -| 575 | Placeholder575 | | | -| 576 | Placeholder576 | | | -| 577 | Placeholder577 | | | -| 578 | Placeholder578 | | | -| 579 | Placeholder579 | | | -| 580 | Placeholder580 | | | -| 581 | Placeholder581 | | | -| 582 | Placeholder582 | | | -| 583 | Placeholder583 | | | -| 584 | Placeholder584 | | | -| 585 | Placeholder585 | | | -| 586 | Placeholder586 | | | -| 587 | Placeholder587 | | | -| 588 | Placeholder588 | | | -| 589 | Placeholder589 | | | -| 590 | Placeholder590 | | | -| 591 | Placeholder591 | | | -| 592 | Placeholder592 | | | -| 593 | Placeholder593 | | | -| 594 | Placeholder594 | | | -| 595 | Placeholder595 | | | -| 596 | Placeholder596 | | | -| 597 | Placeholder597 | | | -| 598 | Placeholder598 | | | -| 599 | Placeholder599 | | | -| 600 | Placeholder600 | | | -| 601 | PROGRAM_OP_LENGTH_GREATER_THAN | UINT256_2DARRAY[0][0] length || -| 602 | PROGRAM_OP_LENGTH_LESS_THAN | UINT256_2DARRAY[0][0] length || -| 603 | PROGRAM_OP_LENGTH_IN_RANGE | UINT256_2DARRAY[0][0] startLength, UINT256_2DARRAY[0][1] endLength || -| 604 | PROGRAM_OP_LENGTH_EQUALS | UINT256_2DARRAY[0][0] length || -| 605 | PROGRAM_CONTAINS_OP | UINT256_2DARRAY[0][0] opCode || -| 606 | PROGRAM_CONTAINS_OP_IN_LIST | UINT256_2DARRAY[0] opCodeList || -| 607 | PROGRAM_EVERY_OP_EQUALS | UINT256_2DARRAY[0][0] opCode || -| 608 | PROGRAM_EVERY_OP_IN_LIST | UINT256_2DARRAY[0] opCodeList || -| 609 | Placeholder609 | | | -| 610 | Placeholder610 | | | -| 611 | Placeholder611 | | | -| 612 | Placeholder612 | | | -| 613 | Placeholder613 | | | -| 614 | Placeholder614 | | | -| 615 | Placeholder615 | | | -| 616 | Placeholder616 | | | -| 617 | Placeholder617 | | | -| 618 | Placeholder618 | | | -| 619 | Placeholder619 | | | -| 620 | Placeholder620 | | | -| 621 | Placeholder621 | | | -| 622 | Placeholder622 | | | -| 623 | Placeholder623 | | | -| 624 | Placeholder624 | | | -| 625 | Placeholder625 | | | -| 626 | Placeholder626 | | | -| 627 | Placeholder627 | | | -| 628 | Placeholder628 | | | -| 629 | Placeholder629 | | | -| 630 | Placeholder630 | | | -| 631 | Placeholder631 | | | -| 632 | Placeholder632 | | | -| 633 | Placeholder633 | | | -| 634 | Placeholder634 | | | -| 635 | Placeholder635 | | | -| 636 | Placeholder636 | | | -| 637 | Placeholder637 | | | -| 638 | Placeholder638 | | | -| 639 | Placeholder639 | | | -| 640 | Placeholder640 | | | -| 641 | Placeholder641 | | | -| 642 | Placeholder642 | | | -| 643 | Placeholder643 | | | -| 644 | Placeholder644 | | | -| 645 | Placeholder645 | | | -| 646 | Placeholder646 | | | -| 647 | Placeholder647 | | | -| 648 | Placeholder648 | | | -| 649 | Placeholder649 | | | -| 650 | Placeholder650 | | | -| 651 | Placeholder651 | | | -| 652 | Placeholder652 | | | -| 653 | Placeholder653 | | | -| 654 | Placeholder654 | | | -| 655 | Placeholder655 | | | -| 656 | Placeholder656 | | | -| 657 | Placeholder657 | | | -| 658 | Placeholder658 | | | -| 659 | Placeholder659 | | | -| 660 | Placeholder660 | | | -| 661 | Placeholder661 | | | -| 662 | Placeholder662 | | | -| 663 | Placeholder663 | | | -| 664 | Placeholder664 | | | -| 665 | Placeholder665 | | | -| 666 | Placeholder666 | | | -| 667 | Placeholder667 | | | -| 668 | Placeholder668 | | | -| 669 | Placeholder669 | | | -| 670 | Placeholder670 | | | -| 671 | Placeholder671 | | | -| 672 | Placeholder672 | | | -| 673 | Placeholder673 | | | -| 674 | Placeholder674 | | | -| 675 | Placeholder675 | | | -| 676 | Placeholder676 | | | -| 677 | Placeholder677 | | | -| 678 | Placeholder678 | | | -| 679 | Placeholder679 | | | -| 680 | Placeholder680 | | | -| 681 | Placeholder681 | | | -| 682 | Placeholder682 | | | -| 683 | Placeholder683 | | | -| 684 | Placeholder684 | | | -| 685 | Placeholder685 | | | -| 686 | Placeholder686 | | | -| 687 | Placeholder687 | | | -| 688 | Placeholder688 | | | -| 689 | Placeholder689 | | | -| 690 | Placeholder690 | | | -| 691 | Placeholder691 | | | -| 692 | Placeholder692 | | | -| 693 | Placeholder693 | | | -| 694 | Placeholder694 | | | -| 695 | Placeholder695 | | | -| 696 | Placeholder696 | | | -| 697 | Placeholder697 | | | -| 698 | Placeholder698 | | | -| 699 | Placeholder699 | | | -| 700 | Placeholder700 | | | -| 701 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_GREATER_THAN | uint256 timestamp || -| 702 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_LESS_THAN | uint256 timestamp || -| 703 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_IN_RANGE | uint256 startTimestamp, uint256 endTimestamp || -| 704 | OPERATION_GLOBAL_SINCE_LAST_TIME_GREATER_THAN | uint256 timestamp || -| 705 | OPERATION_GLOBAL_SINCE_LAST_TIME_LESS_THAN | uint256 timestamp || -| 706 | OPERATION_GLOBAL_SINCE_LAST_TIME_IN_RANGE | uint256 startTimestamp, uint256 endTimestamp || -| 707 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_GREATER_THAN | address[] addressList, uint256 timestamp || -| 708 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_LESS_THAN | address[] addressList, uint256 timestamp || -| 709 | OPERATION_BY_ANY_ADDRESS_IN_LIST_SINCE_LAST_TIME_IN_RANGE | address[] addressList, uint256 startTimestamp, uint256 endTimestamp || -| 710 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_GREATER_THAN | address[] addressList, uint256 timestamp || -| 711 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_LESS_THAN | address[] addressList, uint256 timestamp || -| 712 | OPERATION_BY_EACH_ADDRESS_IN_LIST_SINCE_LAST_TIME_IN_RANGE | address[] addressList, uint256 startTimestamp, uint256 endTimestamp || -| 713 | Placeholder713 | | | -| 714 | Placeholder714 | | | -| 715 | Placeholder715 | | | -| 716 | Placeholder716 | | | -| 717 | Placeholder717 | | | -| 718 | Placeholder718 | | | -| 719 | Placeholder719 | | | -| 720 | Placeholder720 | | | -| 721 | Placeholder721 | | | -| 722 | Placeholder722 | | | -| 723 | Placeholder723 | | | -| 724 | Placeholder724 | | | -| 725 | Placeholder725 | | | -| 726 | Placeholder726 | | | -| 727 | Placeholder727 | | | -| 728 | Placeholder728 | | | -| 729 | Placeholder729 | | | -| 730 | Placeholder730 | | | -| 731 | Placeholder731 | | | -| 732 | Placeholder732 | | | -| 733 | Placeholder733 | | | -| 734 | Placeholder734 | | | -| 735 | Placeholder735 | | | -| 736 | Placeholder736 | | | -| 737 | Placeholder737 | | | -| 738 | Placeholder738 | | | -| 739 | Placeholder739 | | | -| 740 | Placeholder740 | | | -| 741 | Placeholder741 | | | -| 742 | Placeholder742 | | | -| 743 | Placeholder743 | | | -| 744 | Placeholder744 | | | -| 745 | Placeholder745 | | | -| 746 | Placeholder746 | | | -| 747 | Placeholder747 | | | -| 748 | Placeholder748 | | | -| 749 | Placeholder749 | | | -| 750 | Placeholder750 | | | -| 751 | Placeholder751 | | | -| 752 | Placeholder752 | | | -| 753 | Placeholder753 | | | -| 754 | Placeholder754 | | | -| 755 | Placeholder755 | | | -| 756 | Placeholder756 | | | -| 757 | Placeholder757 | | | -| 758 | Placeholder758 | | | -| 759 | Placeholder759 | | | -| 760 | Placeholder760 | | | -| 761 | Placeholder761 | | | -| 762 | Placeholder762 | | | -| 763 | Placeholder763 | | | -| 764 | Placeholder764 | | | -| 765 | Placeholder765 | | | -| 766 | Placeholder766 | | | -| 767 | Placeholder767 | | | -| 768 | Placeholder768 | | | -| 769 | Placeholder769 | | | -| 770 | Placeholder770 | | | -| 771 | Placeholder771 | | | -| 772 | Placeholder772 | | | -| 773 | Placeholder773 | | | -| 774 | Placeholder774 | | | -| 775 | Placeholder775 | | | -| 776 | Placeholder776 | | | -| 777 | Placeholder777 | | | -| 778 | Placeholder778 | | | -| 779 | Placeholder779 | | | -| 780 | Placeholder780 | | | -| 781 | Placeholder781 | | | -| 782 | Placeholder782 | | | -| 783 | Placeholder783 | | | -| 784 | Placeholder784 | | | -| 785 | Placeholder785 | | | -| 786 | Placeholder786 | | | -| 787 | Placeholder787 | | | -| 788 | Placeholder788 | | | -| 789 | Placeholder789 | | | -| 790 | Placeholder790 | | | -| 791 | Placeholder791 | | | -| 792 | Placeholder792 | | | -| 793 | Placeholder793 | | | -| 794 | Placeholder794 | | | -| 795 | Placeholder795 | | | -| 796 | Placeholder796 | | | -| 797 | Placeholder797 | | | -| 798 | Placeholder798 | | | -| 799 | Placeholder799 | | | -| 800 | Placeholder800 | | | -| 801 | Placeholder801 | | | -| 802 | Placeholder802 | | | -| 803 | Placeholder803 | | | -| 804 | Placeholder804 | | | -| 805 | Placeholder805 | | | -| 806 | Placeholder806 | | | -| 807 | Placeholder807 | | | -| 808 | Placeholder808 | | | -| 809 | Placeholder809 | | | -| 810 | Placeholder810 | | | -| 811 | Placeholder811 | | | -| 812 | Placeholder812 | | | -| 813 | Placeholder813 | | | -| 814 | Placeholder814 | | | -| 815 | Placeholder815 | | | -| 816 | Placeholder816 | | | -| 817 | Placeholder817 | | | -| 818 | Placeholder818 | | | -| 819 | Placeholder819 | | | -| 820 | Placeholder820 | | | -| 821 | Placeholder821 | | | -| 822 | Placeholder822 | | | -| 823 | Placeholder823 | | | -| 824 | Placeholder824 | | | -| 825 | Placeholder825 | | | -| 826 | Placeholder826 | | | -| 827 | Placeholder827 | | | -| 828 | Placeholder828 | | | -| 829 | Placeholder829 | | | -| 830 | Placeholder830 | | | -| 831 | Placeholder831 | | | -| 832 | Placeholder832 | | | -| 833 | Placeholder833 | | | -| 834 | Placeholder834 | | | -| 835 | Placeholder835 | | | -| 836 | Placeholder836 | | | -| 837 | Placeholder837 | | | -| 838 | Placeholder838 | | | -| 839 | Placeholder839 | | | -| 840 | Placeholder840 | | | -| 841 | Placeholder841 | | | -| 842 | Placeholder842 | | | -| 843 | Placeholder843 | | | -| 844 | Placeholder844 | | | -| 845 | Placeholder845 | | | -| 846 | Placeholder846 | | | -| 847 | Placeholder847 | | | -| 848 | Placeholder848 | | | -| 849 | Placeholder849 | | | -| 850 | Placeholder850 | | | -| 851 | Placeholder851 | | | -| 852 | Placeholder852 | | | -| 853 | Placeholder853 | | | -| 854 | Placeholder854 | | | -| 855 | Placeholder855 | | | -| 856 | Placeholder856 | | | -| 857 | Placeholder857 | | | -| 858 | Placeholder858 | | | -| 859 | Placeholder859 | | | -| 860 | Placeholder860 | | | -| 861 | Placeholder861 | | | -| 862 | Placeholder862 | | | -| 863 | Placeholder863 | | | -| 864 | Placeholder864 | | | -| 865 | Placeholder865 | | | -| 866 | Placeholder866 | | | -| 867 | Placeholder867 | | | -| 868 | Placeholder868 | | | -| 869 | Placeholder869 | | | -| 870 | Placeholder870 | | | -| 871 | Placeholder871 | | | -| 872 | Placeholder872 | | | -| 873 | Placeholder873 | | | -| 874 | Placeholder874 | | | -| 875 | Placeholder875 | | | -| 876 | Placeholder876 | | | -| 877 | Placeholder877 | | | -| 878 | Placeholder878 | | | -| 879 | Placeholder879 | | | -| 880 | Placeholder880 | | | -| 881 | Placeholder881 | | | -| 882 | Placeholder882 | | | -| 883 | Placeholder883 | | | -| 884 | Placeholder884 | | | -| 885 | Placeholder885 | | | -| 886 | Placeholder886 | | | -| 887 | Placeholder887 | | | -| 888 | Placeholder888 | | | -| 889 | Placeholder889 | | | -| 890 | Placeholder890 | | | -| 891 | Placeholder891 | | | -| 892 | Placeholder892 | | | -| 893 | Placeholder893 | | | -| 894 | Placeholder894 | | | -| 895 | Placeholder895 | | | -| 896 | Placeholder896 | | | -| 897 | Placeholder897 | | | -| 898 | Placeholder898 | | | -| 899 | Placeholder899 | | | -| 900 | Placeholder900 | | | -| 901 | Placeholder901 | | | -| 902 | Placeholder902 | | | -| 903 | Placeholder903 | | | -| 904 | Placeholder904 | | | -| 905 | Placeholder905 | | | -| 906 | Placeholder906 | | | -| 907 | Placeholder907 | | | -| 908 | Placeholder908 | | | -| 909 | Placeholder909 | | | -| 910 | Placeholder910 | | | -| 911 | Placeholder911 | | | -| 912 | Placeholder912 | | | -| 913 | Placeholder913 | | | -| 914 | Placeholder914 | | | -| 915 | Placeholder915 | | | -| 916 | Placeholder916 | | | -| 917 | Placeholder917 | | | -| 918 | Placeholder918 | | | -| 919 | Placeholder919 | | | -| 920 | Placeholder920 | | | -| 921 | Placeholder921 | | | -| 922 | Placeholder922 | | | -| 923 | Placeholder923 | | | -| 924 | Placeholder924 | | | -| 925 | Placeholder925 | | | -| 926 | Placeholder926 | | | -| 927 | Placeholder927 | | | -| 928 | Placeholder928 | | | -| 929 | Placeholder929 | | | -| 930 | Placeholder930 | | | -| 931 | Placeholder931 | | | -| 932 | Placeholder932 | | | -| 933 | Placeholder933 | | | -| 934 | Placeholder934 | | | -| 935 | Placeholder935 | | | -| 936 | Placeholder936 | | | -| 937 | Placeholder937 | | | -| 938 | Placeholder938 | | | -| 939 | Placeholder939 | | | -| 940 | Placeholder940 | | | -| 941 | Placeholder941 | | | -| 942 | Placeholder942 | | | -| 943 | Placeholder943 | | | -| 944 | Placeholder944 | | | -| 945 | Placeholder945 | | | -| 946 | Placeholder946 | | | -| 947 | Placeholder947 | | | -| 948 | Placeholder948 | | | -| 949 | Placeholder949 | | | -| 950 | Placeholder950 | | | -| 951 | Placeholder951 | | | -| 952 | Placeholder952 | | | -| 953 | Placeholder953 | | | -| 954 | Placeholder954 | | | -| 955 | Placeholder955 | | | -| 956 | Placeholder956 | | | -| 957 | Placeholder957 | | | -| 958 | Placeholder958 | | | -| 959 | Placeholder959 | | | -| 960 | Placeholder960 | | | -| 961 | Placeholder961 | | | -| 962 | Placeholder962 | | | -| 963 | Placeholder963 | | | -| 964 | Placeholder964 | | | -| 965 | Placeholder965 | | | -| 966 | Placeholder966 | | | -| 967 | Placeholder967 | | | -| 968 | Placeholder968 | | | -| 969 | Placeholder969 | | | -| 970 | Placeholder970 | | | -| 971 | Placeholder971 | | | -| 972 | Placeholder972 | | | -| 973 | Placeholder973 | | | -| 974 | Placeholder974 | | | -| 975 | Placeholder975 | | | -| 976 | Placeholder976 | | | -| 977 | Placeholder977 | | | -| 978 | Placeholder978 | | | -| 979 | Placeholder979 | | | -| 980 | Placeholder980 | | | -| 981 | Placeholder981 | | | -| 982 | Placeholder982 | | | -| 983 | Placeholder983 | | | -| 984 | Placeholder984 | | | -| 985 | Placeholder985 | | | -| 986 | Placeholder986 | | | -| 987 | Placeholder987 | | | -| 988 | Placeholder988 | | | -| 989 | Placeholder989 | | | -| 990 | Placeholder990 | | | -| 991 | Placeholder991 | | | -| 992 | Placeholder992 | | | -| 993 | Placeholder993 | | | -| 994 | Placeholder994 | | | -| 995 | Placeholder995 | | | -| 996 | Placeholder996 | | | -| 997 | Placeholder997 | | | -| 998 | Placeholder998 | | | -| 999 | Placeholder999 | | | -| 1000 | Placeholder1000 | | | diff --git a/darc-specs/opcode.md b/darc-specs/opcode.md deleted file mode 100644 index fb97e909..00000000 --- a/darc-specs/opcode.md +++ /dev/null @@ -1,41 +0,0 @@ -# DARC Instruction Set Opcode Table - -| Opcode ID | Opcode Name | Opcode Parameter | Opcode Notes | -|-----------|----------------------------------------------|----------------------------------------------------------|------------------------------------------------------------| -| 0 | UNDEFINED | | Invalid Operation | -| 1 | BATCH_MINT_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Mint Token Operation | -| 2 | BATCH_CREATE_TOKEN_CLASSES | STRING_ARRAY[] nameArray, UINT256_2DARRAY[0] tokenIndexArray, UINT256_2DARRAY[1] votingWeightArray, UINT256_2DARRAY[2] dividendWeightArray | Batch Create Token Class Operation | -| 3 | BATCH_TRANSFER_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Transfer Token Operation | -| 4 | BATCH_TRANSFER_TOKENS_FROM_TO | ADDRESS_2DARRAY[0] fromAddressArray, ADDRESS_2DARRAY[1] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Transfer Token From Addr A to Addr B Operation | -| 5 | BATCH_BURN_TOKENS | UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Burn Token Operation | -| 6 | BATCH_BURN_TOKENS_FROM | ADDRESS_2DARRAY[0] fromAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Burn Token From Addr A Operation | -| 7 | BATCH_ADD_MEMBERSHIPS | ADDRESS_2DARRAY[0] memberAddressArray, UINT256_2DARRAY[0] memberRoleArray, STRING_ARRAY memberNameArray | Batch Add Member Operation | -| 8 | BATCH_SUSPEND_MEMBERSHIPS | ADDRESS_2DARRAY[0] memberAddressArray | Batch Suspend Member Operation | -| 9 | BATCH_RESUME_MEMBERSHIPS | ADDRESS_2DARRAY[0] memberAddressArray | Batch Resume Member Operation | -| 10 | BATCH_CHANGE_MEMBER_ROLES | ADDRESS_2DARRAY[0] memberAddressArray, UINT256_2DARRAY[0] memberRoleArray | Batch Change Member Role Operation | -| 11 | BATCH_CHANGE_MEMBER_NAMES | ADDRESS_2DARRAY[0] memberAddressArray, STRING_ARRAY memberNameArray | Batch Change Member Name Operation | -| 12 | BATCH_ADD_PLUGINS | Plugin[] pluginList | Batch Add Emergency Agent Operation | -| 13 | BATCH_ENABLE_PLUGINS | UINT256_ARRAY[0] pluginIndexArray, BOOL_ARRAY isBeforeOperationArray | Batch Enable Plugin Operation | -| 14 | BATCH_DISABLE_PLUGINS | UINT256_ARRAY[0] pluginIndexArray, BOOL_ARRAY isBeforeOperationArray | Batch Disable Plugin Operation | -| 15 | BATCH_ADD_AND_ENABLE_PLUGINS | Plugin[] pluginList | Batch Add and Enable Plugin Operation | -| 16 | BATCH_SET_PARAMETERS | MachineParameter[] parameterNameArray, UINT256_2DARRAY[0] parameterValueArray | Batch Set Parameter Operation | -| 17 | BATCH_ADD_WITHDRAWABLE_BALANCES | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] amountArray | Batch Add Withdrawable Balance Operation | -| 18 | BATCH_REDUCE_WITHDRAWABLE_BALANCES | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] amountArray | Batch Reduce Withdrawable Balance Operation | -| 19 | BATCH_ADD_VOTING_RULES | VotingRule[] votingRuleList | Batch Add Voting Rules Operation | -| 20 | BATCH_PAY_TO_MINT_TOKENS | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray, UINT256_2DARRAY[2] priceArray, UINT256_2DARRAY[3] dividendableFlag | Batch Pay to Mint Tokens Operation | -| 21 | BATCH_PAY_TO_TRANSFER_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray, UINT256_2DARRAY[2] priceArray, UINT256_2DARRAY[3] dividendableFlag | Pay some cash to transfer tokens Operation (product coins) | -| 22 | ADD_EMERGENCY | ADDRESS_2DARRAY[0] addressArray | Add an array of address as emergency agents Operation | -| 23 | RESERVED_ID_23 | | Reserved ID 23 DO NOT USE | -| 24 | CALL_EMERGENCY | UINT256_2DARRAY[0][0] emergencyAgentIndex | Call emergency agents to handle emergency situations | -| 25 | CALL_CONTRACT_ABI | ADDRESS_2D[0][0] contractAddress, bytes abi, UINT256_2DARRAY[0][0] value | Call a contract with the given abi Operation | -| 26 | PAY_CASH | uint256 amount, uint256 paymentType, uint256 dividendable | Pay some cash Operation | -| 27 | OFFER_DIVIDENDS | | Calculate the dividends and offer to token holders Operation| -| 28 | RESERVED_ID_28 | | Reserved ID 28 DO NOT USE | -| 29 | SET_APPROVAL_FOR_ALL_OPERATIONS | ADDRESS_2DARRAY[0][0] targetAddress | Set the approval for all transfer operations by address Operation | -| 30 | BATCH_BURN_TOKENS_AND_REFUND | UINT256_2D[0] tokenClassArray, UINT256_2D[1] amountArray, UINT256_2D[2] priceArray | Batch Burn tokens and Refund Operation | -| 31 | ADD_STORAGE_STRING | STRING_ARRAY[0][0] IFPSHash | Add storage IPFS hash to the storage list permanently Operation | -| 32 | VOTE | bool[] voteArray | Vote for a voting pending program Operation | -| 33 | EXECUTE_PENDING_PROGRAM | | Execute a program that has been voted and approved Operation | -| 34 | END_EMERGENCY | | Emergency mode termination Operation | -| 35 | UPGRADE_TO_ADDRESS | ADDRESS_2DARRAY[0][0] targetAddress | Upgrade the contract to a new contract address Operation | -| 36 | CONFIRM_UPGRAED_FROM_ADDRESS | ADDRESS_2DARRAY[0][0] fromAddress | Accepting current DARCs to be upgraded from the old contract address Operation | From acd063e1babdaf3b0635c5829958e0e38f15368e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 19 Feb 2024 04:08:39 -0600 Subject: [PATCH 50/62] update --- .../docs/DARC Protocol/Condition Nodes.md | 18 ++-- .../Plugin/ConditionExpressionFactory.sol | 6 +- .../protocol/Plugin/Condition_External.sol | 85 +++++++++++++++++++ .../Plugin/Condition_TokenAndCash.sol | 30 ++++--- 4 files changed, 116 insertions(+), 23 deletions(-) create mode 100644 darc-protocol/contracts/protocol/Plugin/Condition_External.sol diff --git a/darc-docs/docs/DARC Protocol/Condition Nodes.md b/darc-docs/docs/DARC Protocol/Condition Nodes.md index 10998e85..f9067d34 100644 --- a/darc-docs/docs/DARC Protocol/Condition Nodes.md +++ b/darc-docs/docs/DARC Protocol/Condition Nodes.md @@ -286,12 +286,12 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] | 178 | Placeholder178 | | | | 179 | Placeholder179 | | | | 180 | Placeholder180 | | | -| 181 | ORACLE_CALL_UINT256_RESULT_EQUALS | string oracle, string method, uint256[] args, uint256 expectedValue || NOT READY, DO NOT USE -| 182 | ORACLE_CALL_UINT256_RESULT_GREATER_THAN | string oracle, string method, uint256[] args, uint256 minValue || NOT READY, DO NOT USE -| 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || NOT READY, DO NOT USE -| 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || NOT READY, DO NOT USE -| 185 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || NOT READY, DO NOT USE -| 186 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || NOT READY, DO NOT USE +| 181 | EXTERNAL_CALL_UINT256_RESULT_EQUALS | ADDRESS_2DARRAY[0][0] externalAddress, BYTES encodedParameters, UINT256_2DARRAY[0][0] value || NOT READY, DO NOT USE +| 182 | EXTERNAL_CALL_UINT256_RESULT_GREATER_THAN | sADDRESS_2DARRAY[0][0] externalAddress, BYTES encodedParameters, UINT256_2DARRAY[0][0] value || NOT READY, DO NOT USE +| 183 | EXTERNAL_CALL_UINT256_RESULT_LESS_THAN | ADDRESS_2DARRAY[0][0] externalAddress, BYTES encodedParameters, UINT256_2DARRAY[0][0] value || NOT READY, DO NOT USE +| 184 | EXTERNAL_CALL_UINT256_RESULT_IN_RANGE | ADDRESS_2DARRAY[0][0] externalAddress, BYTES encodedParameters, UINT256_2DARRAY[0][0] minValue, UINT256_2DARRAY[0][1] maxValue || NOT READY, DO NOT USE +| 185 | EXTERNAL_CALL_STRING_RESULT_EQUALS | string external, string method, string[] args, string expectedValue || NOT READY, DO NOT USE +| 186 | Placeholder186 | | | | 187 | Placeholder187 | | | | 188 | Placeholder188 | | | | 189 | Placeholder189 | | | @@ -578,9 +578,9 @@ For more details, please refer to [DARC Instruction Set Opcode Table(opcode.md)] | 462 | TOKEN_X_OP_ANY_PRICE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". | 463 | TOKEN_X_OP_ANY_PRICE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] startPrice, UINT256_2DARRAY[0][2] endPrice | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". | 464 | TOKEN_X_OP_ANY_PRICE_EQUALS | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][1] price | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 465 | TOKEN_X_OP_ANY_PRICE_GREATER_THAN_ORACLE_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] oracleContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 466 | TOKEN_X_OP_ANY_PRICE_LESS_THAN_ORACLE_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] oracleContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". -| 467 | TOKEN_X_OP_ANY_PRICE_EQUALS_ORACLE_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] oracleContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 465 | TOKEN_X_OP_ANY_PRICE_GREATER_THAN_EXTERNAL_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] externalContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 466 | TOKEN_X_OP_ANY_PRICE_LESS_THAN_EXTERNAL_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] externalContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". +| 467 | TOKEN_X_OP_ANY_PRICE_EQUALS_EXTERNAL_VALUE_UINT256 | UINT256_2DARRAY[0][0] tokenClass, ADDRESS_2DARRAY[0][0] externalContractAddress, BYTES abiEncodedParameters | For three operations: "BATCH_PAY_TO_MINT_TOKENS", "BATCH_PAY_TO_TRANSFER_TOKENS" and "BATCH_BURN_TOKENS_AND_REFUND". | 468 | Placeholder468 | | | | 469 | Placeholder469 | | | | 470 | Placeholder470 | | | diff --git a/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol b/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol index 0e8547f3..e36eea2f 100644 --- a/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol +++ b/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol @@ -16,6 +16,7 @@ import "./Condition_TokenAndCash.sol"; import "./Condition_CreateTokenClass.sol"; import "./Condition_Program.sol"; import "./Condition_OperationLog.sol"; +import "./Condition_External.sol"; /** @@ -26,7 +27,8 @@ import "./Condition_OperationLog.sol"; contract ConditionExpressionFactory is Condition_Operator, Condition_MachineState, Condition_Operation, Condition_BatchOp, Condition_PluginAndVoting, Condition_MembershipOp, Condition_Withdrawable, Condition_TokenAndCash, - Condition_CreateTokenClass, Condition_Program, Condition_OperationLog + Condition_CreateTokenClass, Condition_Program, Condition_OperationLog, + Condition_External { /** @@ -55,6 +57,8 @@ contract ConditionExpressionFactory is if (exp >=151 && exp <= 180) { return operationExpressionCheck( operation, param, exp); } + if (exp >= 181 && exp <= 210) { return externalExpressionCheck(param, exp); } + if (exp >= 211 && exp <= 300) { return batchOpExpressionCheck(bIsBeforeOperation, operation, param, exp); } if (exp >= 301 && exp < 400 ) { return pluginAndVotingOpExpressionCheck(bIsBeforeOperation, operation, param, exp); } diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_External.sol b/darc-protocol/contracts/protocol/Plugin/Condition_External.sol new file mode 100644 index 00000000..e0576482 --- /dev/null +++ b/darc-protocol/contracts/protocol/Plugin/Condition_External.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.19; +/** + * @title Condition of Oracle values + * @author DARC Team + * @notice All the condition expression functions related to Operator + */ + + +import "../MachineState.sol"; +import "../MachineStateManager.sol"; +import "../Utilities/StringUtils.sol"; +import "../Utilities/OpcodeMap.sol"; +import "../Plugin.sol"; +import "../Utilities/ExternalValueReader.sol"; + +contract Condition_External is MachineStateManager { + /** + * The function to check the external(oracle) related condition expression + * @param param The parameter list of the condition expression + * @param id The id of the condition expression + */ + function externalExpressionCheck(NodeParam memory param, uint256 id) internal view returns (bool) { + if (id== 181) return ID_181_EXTERNAL_CALL_UINT256_RESULT_EQUALS(param); + if (id== 182) return ID_182_EXTERNAL_CALL_UINT256_RESULT_GREATER_THAN(param); + if (id== 183) return ID_183_EXTERNAL_CALL_UINT256_RESULT_LESS_THAN(param); + if (id== 184) return ID_184_EXTERNAL_CALL_UINT256_RESULT_IN_RANGE(param); + if (id== 185) return ID_185_EXTERNAL_CALL_STRING_RESULT_EQUALS(param); + return false; + } + + function ID_181_EXTERNAL_CALL_UINT256_RESULT_EQUALS(NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_181: The ADDRESS_2DARRAY length is not 1"); + require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_181: The ADDRESS_2DARRAY[0] length is not 1"); + require(param.UINT256_2DARRAY.length == 0, "CE ID_181: The BYTES length is not 0"); + require(param.UINT256_2DARRAY[0].length == 0, "CE ID_181: The BYTES length is not 0"); + (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); + if (!success) { return false; } + if (value == param.UINT256_2DARRAY[0][0]) { return true; } + return false; + } + + function ID_182_EXTERNAL_CALL_UINT256_RESULT_GREATER_THAN(NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_182: The ADDRESS_2DARRAY length is not 1"); + require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_182: The ADDRESS_2DARRAY[0] length is not 1"); + require(param.UINT256_2DARRAY.length == 0, "CE ID_182: The BYTES length is not 0"); + require(param.UINT256_2DARRAY[0].length == 0, "CE ID_182: The BYTES length is not 0"); + (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); + if (!success) { return false; } + if (value > param.UINT256_2DARRAY[0][0]) { return true; } + return false; + } + + function ID_183_EXTERNAL_CALL_UINT256_RESULT_LESS_THAN(NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_183: The ADDRESS_2DARRAY length is not 1"); + require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_183: The ADDRESS_2DARRAY[0] length is not 1"); + require(param.UINT256_2DARRAY.length == 0, "CE ID_183: The BYTES length is not 0"); + require(param.UINT256_2DARRAY[0].length == 0, "CE ID_183: The BYTES length is not 0"); + (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); + if (!success) { return false; } + if (value < param.UINT256_2DARRAY[0][0]) { return true; } + return false; + } + + function ID_184_EXTERNAL_CALL_UINT256_RESULT_IN_RANGE(NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_184: The ADDRESS_2DARRAY length is not 1"); + require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_184: The ADDRESS_2DARRAY[0] length is not 1"); + require(param.UINT256_2DARRAY.length == 1, "CE ID_184: The BYTES length is not 1"); + require(param.UINT256_2DARRAY[0].length == 2, "CE ID_184: The BYTES[0] length is not 2"); + (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); + if (!success) { return false; } + if (value >= param.UINT256_2DARRAY[0][0] && value <= param.UINT256_2DARRAY[0][1]) { return true; } + return false; + } + + function ID_185_EXTERNAL_CALL_STRING_RESULT_EQUALS(NodeParam memory param) private view returns (bool) { + require(param.ADDRESS_2DARRAY.length == 1, "CE ID_185: The ADDRESS_2DARRAY length is not 1"); + require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_185: The ADDRESS_2DARRAY[0] length is not 1"); + require(param.STRING_ARRAY.length == 1, "CE ID_185: The STRING_2DARRAY length is not 1"); + (bool success, string memory value) = ExternalValueReader.tryReadString(param.ADDRESS_2DARRAY[0][0], param.BYTES); + if (!success) { return false; } + if (keccak256(abi.encodePacked(value)) == keccak256(abi.encodePacked(param.STRING_ARRAY[0]))) { return true; } + return false; + } +} \ No newline at end of file diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol b/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol index bb846f56..73025d90 100644 --- a/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol +++ b/darc-protocol/contracts/protocol/Plugin/Condition_TokenAndCash.sol @@ -21,11 +21,15 @@ contract Condition_TokenAndCash is MachineStateManager { * @param param The parameter list of the condition expression * @param id The id of the condition expression */ - function tokenAndCashExpressionCheck(Operation memory op, NodeParam memory param, uint256 id) internal pure returns (bool) { + function tokenAndCashExpressionCheck(Operation memory op, NodeParam memory param, uint256 id) internal view returns (bool) { if (id== 461) return ID_461_TOKEN_X_OP_ANY_PRICE_GREATER_THAN(op, param); if (id== 462) return ID_462_TOKEN_X_OP_ANY_PRICE_LESS_THAN(op, param); if (id== 463) return ID_463_TOKEN_X_OP_ANY_PRICE_IN_RANGE(op, param); if (id== 464) return ID_464_TOKEN_X_OP_ANY_PRICE_EQUALS(op, param); + if (id== 465) return ID_465_TOKEN_X_OP_ANY_PRICE_GREATER_THAN_EXTERNAL_VALUE_UINT256(op, param); + if (id== 466) return ID_466_TOKEN_X_OP_ANY_PRICE_LESS_THAN_EXTERNAL_VALUE_UINT256(op, param); + if (id== 467) return ID_467_TOKEN_X_OP_ANY_PRICE_EQUALS_EXTERNAL_VALUE_UINT256(op, param); + return false; } @@ -77,7 +81,7 @@ contract Condition_TokenAndCash is MachineStateManager { return false; } - function ID_465_TOKEN_X_OP_ANY_PRICE_GREATER_THAN_ORACLE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { + function ID_465_TOKEN_X_OP_ANY_PRICE_GREATER_THAN_EXTERNAL_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { require(param.UINT256_2DARRAY.length == 1, "CE ID_465: The UINT256_2DARRAY length is not 1"); require(param.UINT256_2DARRAY[0].length == 2, "CE ID_465: The UINT256_2DARRAY[0] length is not 1"); if (bIsTokenOperationWithCash(op) == false) return false; @@ -86,18 +90,18 @@ contract Condition_TokenAndCash is MachineStateManager { (uint256[] memory tokenClassList, , uint256[] memory priceList) = getTokenClassAmountPriceList(op); require(tokenClassList.length == priceList.length, "CE ID_465: The token class list length is not equal to price list length"); - // try to get oracle value - (bool success, uint256 oracleValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); + // try to get external value + (bool success, uint256 externalValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); if (success == false) return false; for (uint256 i = 0; i < tokenClassList.length; i++) { - if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] > oracleValue) { return true; } + if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] > externalValue) { return true; } } return false; } - function ID_466_TOKEN_X_OP_ANY_PRICE_LESS_THAN_ORACLE_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { + function ID_466_TOKEN_X_OP_ANY_PRICE_LESS_THAN_EXTERNAL_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { require(param.UINT256_2DARRAY.length == 1, "CE ID_466: The UINT256_2DARRAY length is not 1"); require(param.UINT256_2DARRAY[0].length == 2, "CE ID_466: The UINT256_2DARRAY[0] length is not 1"); if (bIsTokenOperationWithCash(op) == false) return false; @@ -105,18 +109,18 @@ contract Condition_TokenAndCash is MachineStateManager { (uint256[] memory tokenClassList, , uint256[] memory priceList) = getTokenClassAmountPriceList(op); require(tokenClassList.length == priceList.length, "CE ID_466: The token class list length is not equal to price list length"); - // try to get oracle value - (bool success, uint256 oracleValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); + // try to get external value + (bool success, uint256 externalValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); if (success == false) return false; for (uint256 i = 0; i < tokenClassList.length; i++) { - if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] < oracleValue) { return true; } + if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] < externalValue) { return true; } } return false; } - function ID_467_TOKEN_X_OP_ANY_PRICE_EQUALS_ORACLE_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { + function ID_467_TOKEN_X_OP_ANY_PRICE_EQUALS_EXTERNAL_VALUE_UINT256(Operation memory op, NodeParam memory param) private view returns (bool) { require(param.UINT256_2DARRAY.length == 1, "CE ID_467: The UINT256_2DARRAY length is not 1"); require(param.UINT256_2DARRAY[0].length == 2, "CE ID_467: The UINT256_2DARRAY[0] length is not 1"); if (bIsTokenOperationWithCash(op) == false) return false; @@ -124,13 +128,13 @@ contract Condition_TokenAndCash is MachineStateManager { (uint256[] memory tokenClassList, , uint256[] memory priceList) = getTokenClassAmountPriceList(op); require(tokenClassList.length == priceList.length, "CE ID_467: The token class list length is not equal to price list length"); - // try to get oracle value - (bool success, uint256 oracleValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); + // try to get external value + (bool success, uint256 externalValue) = ExternalValueReader.tryReadUINT256(op.param.ADDRESS_2DARRAY[0][0], op.param.BYTES); if (success == false) return false; for (uint256 i = 0; i < tokenClassList.length; i++) { - if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] == oracleValue) { return true; } + if (tokenClassList[i] == param.UINT256_2DARRAY[0][0] && priceList[i] == externalValue) { return true; } } return false; } From 473b0be750ffd7687f92191d7e8060016b084f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Thu, 22 Feb 2024 01:22:28 -0600 Subject: [PATCH 51/62] update --- .../protocol/Plugin/Condition_External.sol | 10 +- .../test-contracts/TestOracleContract.sol | 28 +++ .../test-delegate-call/DelegateCallTest.sol | 47 ---- .../MultiDARCTest/Multi_DARC_call_test.ts | 1 - .../test/conditionTest/externalCallTest.ts | 227 ++++++++++++++++++ 5 files changed, 257 insertions(+), 56 deletions(-) create mode 100644 darc-protocol/contracts/test-contracts/TestOracleContract.sol delete mode 100644 darc-protocol/contracts/test-contracts/test-delegate-call/DelegateCallTest.sol create mode 100644 darc-protocol/test/conditionTest/externalCallTest.ts diff --git a/darc-protocol/contracts/protocol/Plugin/Condition_External.sol b/darc-protocol/contracts/protocol/Plugin/Condition_External.sol index e0576482..0d031739 100644 --- a/darc-protocol/contracts/protocol/Plugin/Condition_External.sol +++ b/darc-protocol/contracts/protocol/Plugin/Condition_External.sol @@ -32,8 +32,6 @@ contract Condition_External is MachineStateManager { function ID_181_EXTERNAL_CALL_UINT256_RESULT_EQUALS(NodeParam memory param) private view returns (bool) { require(param.ADDRESS_2DARRAY.length == 1, "CE ID_181: The ADDRESS_2DARRAY length is not 1"); require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_181: The ADDRESS_2DARRAY[0] length is not 1"); - require(param.UINT256_2DARRAY.length == 0, "CE ID_181: The BYTES length is not 0"); - require(param.UINT256_2DARRAY[0].length == 0, "CE ID_181: The BYTES length is not 0"); (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); if (!success) { return false; } if (value == param.UINT256_2DARRAY[0][0]) { return true; } @@ -43,8 +41,6 @@ contract Condition_External is MachineStateManager { function ID_182_EXTERNAL_CALL_UINT256_RESULT_GREATER_THAN(NodeParam memory param) private view returns (bool) { require(param.ADDRESS_2DARRAY.length == 1, "CE ID_182: The ADDRESS_2DARRAY length is not 1"); require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_182: The ADDRESS_2DARRAY[0] length is not 1"); - require(param.UINT256_2DARRAY.length == 0, "CE ID_182: The BYTES length is not 0"); - require(param.UINT256_2DARRAY[0].length == 0, "CE ID_182: The BYTES length is not 0"); (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); if (!success) { return false; } if (value > param.UINT256_2DARRAY[0][0]) { return true; } @@ -54,8 +50,7 @@ contract Condition_External is MachineStateManager { function ID_183_EXTERNAL_CALL_UINT256_RESULT_LESS_THAN(NodeParam memory param) private view returns (bool) { require(param.ADDRESS_2DARRAY.length == 1, "CE ID_183: The ADDRESS_2DARRAY length is not 1"); require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_183: The ADDRESS_2DARRAY[0] length is not 1"); - require(param.UINT256_2DARRAY.length == 0, "CE ID_183: The BYTES length is not 0"); - require(param.UINT256_2DARRAY[0].length == 0, "CE ID_183: The BYTES length is not 0"); + (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); if (!success) { return false; } if (value < param.UINT256_2DARRAY[0][0]) { return true; } @@ -65,8 +60,7 @@ contract Condition_External is MachineStateManager { function ID_184_EXTERNAL_CALL_UINT256_RESULT_IN_RANGE(NodeParam memory param) private view returns (bool) { require(param.ADDRESS_2DARRAY.length == 1, "CE ID_184: The ADDRESS_2DARRAY length is not 1"); require(param.ADDRESS_2DARRAY[0].length == 1, "CE ID_184: The ADDRESS_2DARRAY[0] length is not 1"); - require(param.UINT256_2DARRAY.length == 1, "CE ID_184: The BYTES length is not 1"); - require(param.UINT256_2DARRAY[0].length == 2, "CE ID_184: The BYTES[0] length is not 2"); + (bool success, uint256 value) = ExternalValueReader.tryReadUINT256(param.ADDRESS_2DARRAY[0][0], param.BYTES); if (!success) { return false; } if (value >= param.UINT256_2DARRAY[0][0] && value <= param.UINT256_2DARRAY[0][1]) { return true; } diff --git a/darc-protocol/contracts/test-contracts/TestOracleContract.sol b/darc-protocol/contracts/test-contracts/TestOracleContract.sol new file mode 100644 index 00000000..4d8be4fe --- /dev/null +++ b/darc-protocol/contracts/test-contracts/TestOracleContract.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.19; +contract TestOracleContract{ + uint256 x; + constructor() { + x = 0; + } + + function A_plus_B(uint256 a, uint256 b) public pure returns (uint256){ + return a + b; + } + + function StringA_concat_StringB(string memory a, string memory b) public pure returns (string memory){ + return string(abi.encodePacked(a, b)); + } + + function is_X_1() public view returns (bool){ + return x == 1; + } + + function set_X(uint256 a) public{ + x = a; + } + + function get_X_plus(uint256 a) public view returns (uint256){ + return x + a; + } +} \ No newline at end of file diff --git a/darc-protocol/contracts/test-contracts/test-delegate-call/DelegateCallTest.sol b/darc-protocol/contracts/test-contracts/test-delegate-call/DelegateCallTest.sol deleted file mode 100644 index f0254c01..00000000 --- a/darc-protocol/contracts/test-contracts/test-delegate-call/DelegateCallTest.sol +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.19; - -import "../../protocol/Program.sol"; - -contract DelegateCallTest { - constructor() { - } - - function testDelegateCall(address targetDARCAddress, Program memory program) public payable returns (string memory) { - - Program memory mintTokenProgram = Program({ - programOperatorAddress: address(this), - operations: new Operation[](2), - notes: "test program for delegate call" - }); - - mintTokenProgram.operations[0] = Operation({ - operatorAddress: address(this), - opcode: EnumOpcode.BATCH_CREATE_TOKEN_CLASSES, - param: Param({ - STRING_ARRAY: new string[](0), - BOOL_ARRAY: new bool[](0), - VOTING_RULE_ARRAY: new VotingRule[](0), - PLUGIN_ARRAY: new Plugin[](0), - PARAMETER_ARRAY: new MachineParameter[](0), - UINT256_2DARRAY: new uint256[][](0), - ADDRESS_2DARRAY: new address[][](0), - BYTES: bytes("") - }) - }); - - (bool success, bytes memory returnData) = address(targetDARCAddress).delegatecall(abi.encodeWithSignature("entrance(Program)", program)); - require(success, string(returnData)); - return string(returnData); - } - - function testDelegateCallWithBytes(address targetDARCAddress, bytes memory data) public payable returns (string memory) { - - // decode the data into a program - Program memory decodedProgram = abi.decode(data, (Program)); - - (bool success, bytes memory returnData) = address(targetDARCAddress).delegatecall(abi.encodeWithSignature("entrance(Program)", decodedProgram)); - require(success, string(returnData)); - return string(returnData); - } -} \ No newline at end of file diff --git a/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts b/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts index 37ee7dda..aa6aa4d7 100644 --- a/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts +++ b/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts @@ -80,7 +80,6 @@ describe("test for multi DARC call test", function () { votingRuleIndex: 0, notes: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8 should operate", bIsEnabled: true, - bIsInitialized: true, bIsBeforeOperation: true, } ], diff --git a/darc-protocol/test/conditionTest/externalCallTest.ts b/darc-protocol/test/conditionTest/externalCallTest.ts new file mode 100644 index 00000000..bbd41bbb --- /dev/null +++ b/darc-protocol/test/conditionTest/externalCallTest.ts @@ -0,0 +1,227 @@ +import { time, loadFixture } from "@nomicfoundation/hardhat-network-helpers"; +import { anyValue } from "@nomicfoundation/hardhat-chai-matchers/withArgs"; +import { expect } from "chai"; +import { ethers } from "hardhat"; +import { BigNumber } from "ethers"; +import { ConditionNodeStruct, PluginStruct } from "../../typechain-types/contracts/protocol/DARC"; + +const programOperatorAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; + +const target1 = "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC"; + +const target2 = "0x90F79bf6EB2c4f870365E785982E1f101E93b906"; + +const target3 = "0x870526b7973b56163a6997bb7c886f5e4ea53638"; + +describe.only("external oracle condition test", function () { + it("should pass external oracle condition test", async function () { + const TestOracleFactory = await ethers.getContractFactory( + "TestOracleContract" + ); + const testOracleContract = await TestOracleFactory.deploy(); + await testOracleContract.deployed(); + + const testOracleContractAddress = testOracleContract.address; + testOracleContract.set + + // deploy a darc with conditions + const DARCFactory = await ethers.getContractFactory("DARC"); + const darc = await DARCFactory.deploy(); + await darc.deployed(); + await darc.initialize(); + + // encoding testOracleContract function is_X_1() with signature + // const encodedBytes = ethers.utils.encodedWithSignature + const theABI = ["function get_X_plus(uint256 a)"]; + const abiInterface = new ethers.utils.Interface(theABI); + const resultBytes = abiInterface.encodeFunctionData("get_X_plus", [BigNumber.from(100)]); + + const pluginList: PluginStruct[] = [ + + // pluigin 1 + { + returnType: BigNumber.from(2), + level: 3, + conditionNodes:[ + { + id: BigNumber.from(0), + nodeType: BigNumber.from(3), // true, + conditionExpression: 0, + childList: [], + logicalOperator: 0, + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [], + } + } + ], + votingRuleIndex: 0, + notes: "plugin 1", + bIsBeforeOperation: true, + bIsEnabled: true, + }, + + + // plugin 2 + { + returnType: BigNumber.from(4), // yes and skip sandbox + level: 10, + conditionNodes:[ + { + id: 0, + nodeType: 1, + logicalOperator: 0, + conditionExpression: 181, + childList: [], + param: { + STRING_ARRAY: [], + UINT256_2DARRAY: [[200]], // if the value is 200, then the condition is true, then yes and skip sandbox + ADDRESS_2DARRAY: [[testOracleContractAddress]], + BYTES: resultBytes, + } + } + ], + votingRuleIndex: 0, + notes: "plugin 2", + bIsBeforeOperation: true, + bIsEnabled: true + } + ] + + // create a token class, then add and enable plugin + await darc.entrance( + { + programOperatorAddress: programOperatorAddress, + notes: "create token class", + operations: [ + { + operatorAddress: programOperatorAddress, + opcode: 2, // create token class + param: { + STRING_ARRAY: ["Class1", "Class2"], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + PARAMETER_ARRAY: [], + PLUGIN_ARRAY: [], + UINT256_2DARRAY: [ + [BigNumber.from(0), BigNumber.from(1)], + [BigNumber.from(10), BigNumber.from(1)], + [BigNumber.from(10), BigNumber.from(1)], + ], + ADDRESS_2DARRAY: [], + BYTES: [], + }, + }, + { + operatorAddress: programOperatorAddress, + opcode: 15, // add and enable plugin + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + PARAMETER_ARRAY: [], + PLUGIN_ARRAY: pluginList, + UINT256_2DARRAY: [], + ADDRESS_2DARRAY: [], + BYTES: [], + }, + } + ], + } + ); + + // now try to set the value of the oracle to 100 + //await testOracleContract.set_X(100); + // try to mint token + let bIsException = false; + try{ + const result = await darc.entrance( + { + programOperatorAddress: programOperatorAddress, + notes: "mint token", + operations: [ + { + operatorAddress: programOperatorAddress, + opcode: 1, // mint token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + PARAMETER_ARRAY: [], + PLUGIN_ARRAY: [], + UINT256_2DARRAY: [[0],[100]], + ADDRESS_2DARRAY: [[programOperatorAddress]], + BYTES: [], + }, + } + ], + } + ); + } + catch (err) { + bIsException = true; + } + expect(bIsException).to.equal(true); + + + //set value of the oracle to 100, so that this time the oracle will return 200, which will make the condition true + await testOracleContract.set_X(100); + // try to mint token again + const result = await darc.entrance( + { + programOperatorAddress: programOperatorAddress, + notes: "mint token", + operations: [ + { + operatorAddress: programOperatorAddress, + opcode: 1, // mint token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + PARAMETER_ARRAY: [], + PLUGIN_ARRAY: [], + UINT256_2DARRAY: [[0],[100]], + ADDRESS_2DARRAY: [[programOperatorAddress]], + BYTES: [], + }, + } + ], + } + ); + expect(true).equal(true); + + bIsException = false; + await testOracleContract.set_X(200); + try{ + const result = await darc.entrance( + { + programOperatorAddress: programOperatorAddress, + notes: "mint token", + operations: [ + { + operatorAddress: programOperatorAddress, + opcode: 1, // mint token + param: { + STRING_ARRAY: [], + BOOL_ARRAY: [], + VOTING_RULE_ARRAY: [], + PARAMETER_ARRAY: [], + PLUGIN_ARRAY: [], + UINT256_2DARRAY: [[0],[100]], + ADDRESS_2DARRAY: [[programOperatorAddress]], + BYTES: [], + }, + } + ], + } + ); + } + catch(err) { + bIsException = true; + } + expect(bIsException).to.equal(true); + }); +}); From d5ba17fa6832be4da26989fa152930d856b35bca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Thu, 22 Feb 2024 02:03:02 -0600 Subject: [PATCH 52/62] Update externalCallTest.ts --- darc-protocol/test/conditionTest/externalCallTest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darc-protocol/test/conditionTest/externalCallTest.ts b/darc-protocol/test/conditionTest/externalCallTest.ts index bbd41bbb..9d5cb88c 100644 --- a/darc-protocol/test/conditionTest/externalCallTest.ts +++ b/darc-protocol/test/conditionTest/externalCallTest.ts @@ -13,7 +13,7 @@ const target2 = "0x90F79bf6EB2c4f870365E785982E1f101E93b906"; const target3 = "0x870526b7973b56163a6997bb7c886f5e4ea53638"; -describe.only("external oracle condition test", function () { +describe("external oracle condition test", function () { it("should pass external oracle condition test", async function () { const TestOracleFactory = await ethers.getContractFactory( "TestOracleContract" From 64439ab8bd7b35782ebd64672e0b296442b350f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Thu, 22 Feb 2024 23:50:43 -0600 Subject: [PATCH 53/62] Update externalCallTest.ts --- darc-protocol/test/conditionTest/externalCallTest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darc-protocol/test/conditionTest/externalCallTest.ts b/darc-protocol/test/conditionTest/externalCallTest.ts index 9d5cb88c..891b2cf0 100644 --- a/darc-protocol/test/conditionTest/externalCallTest.ts +++ b/darc-protocol/test/conditionTest/externalCallTest.ts @@ -13,7 +13,7 @@ const target2 = "0x90F79bf6EB2c4f870365E785982E1f101E93b906"; const target3 = "0x870526b7973b56163a6997bb7c886f5e4ea53638"; -describe("external oracle condition test", function () { +describe("external oracle external call condition test", function () { it("should pass external oracle condition test", async function () { const TestOracleFactory = await ethers.getContractFactory( "TestOracleContract" From 3e44ec6cb9c3bcd3b8c91c5a7019fca320376e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 23 Feb 2024 23:51:17 -0600 Subject: [PATCH 54/62] Update DARC.ts --- darc-protocol/test/DARC.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/darc-protocol/test/DARC.ts b/darc-protocol/test/DARC.ts index 51156f6f..1bbe8b55 100644 --- a/darc-protocol/test/DARC.ts +++ b/darc-protocol/test/DARC.ts @@ -1,5 +1,4 @@ import { time, loadFixture } from "@nomicfoundation/hardhat-network-helpers"; import { anyValue } from "@nomicfoundation/hardhat-chai-matchers/withArgs"; import { expect } from "chai"; -import { ethers } from "hardhat"; From 4f5ec65fa8ef9aa6c4a68d8b30e9fb9c3783a72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Fri, 23 Feb 2024 23:54:17 -0600 Subject: [PATCH 55/62] Delete DARC.ts --- darc-protocol/test/DARC.ts | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 darc-protocol/test/DARC.ts diff --git a/darc-protocol/test/DARC.ts b/darc-protocol/test/DARC.ts deleted file mode 100644 index 1bbe8b55..00000000 --- a/darc-protocol/test/DARC.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { time, loadFixture } from "@nomicfoundation/hardhat-network-helpers"; -import { anyValue } from "@nomicfoundation/hardhat-chai-matchers/withArgs"; -import { expect } from "chai"; - From 35d0445641fd822a8f3704fe0520c3db568bb7a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Tue, 27 Feb 2024 23:37:21 -0600 Subject: [PATCH 56/62] Update Condition Nodes.md --- .../docs/DARC Protocol/Condition Nodes.md | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/darc-docs/docs/DARC Protocol/Condition Nodes.md b/darc-docs/docs/DARC Protocol/Condition Nodes.md index f9067d34..390f139b 100644 --- a/darc-docs/docs/DARC Protocol/Condition Nodes.md +++ b/darc-docs/docs/DARC Protocol/Condition Nodes.md @@ -23,12 +23,12 @@ struct NodeParam { There are three logical operators in the DARC protocol: `AND`, `OR`, and `NOT`. The `AND` operator returns true if all of its children are true. The `OR` operator returns true if any of its children are true. The `NOT` operator returns true if its child is false. There must be at least one child for the `AND` and `OR` operators, and only one child for the `NOT` operator. -In both By-law Script and darc.js SDK, you can use the `and()`, `or()`, and `not()` functions to create the logical operators, for example: +In both By-law Script and darc.js SDK, you can use the `and()`, `or()`, and `not()` wrapper functions to create the logical operators, for example: In darc.js SDK: ```ts -import {and, or, not} from 'darcjs'; +import {and, or, not, AND, OR, NOT} from 'darcjs'; const conditionTree = and( or( @@ -42,6 +42,20 @@ const conditionTree = and( expression4() ) ); + +// or using the class constructor +const conditionTree = new And( + new OR( + expression1(), + expression2() + ), + + expression3(), + + new NOT( + expression4() + ) +); ``` In By-law Script: @@ -59,6 +73,20 @@ const conditionTree = and( expression4() ) ); + +// or using the class constructor +const conditionTree = new AND( + new OR( + expression1(), + expression2() + ), + + expression3(), + + new NOT( + expression4() + ) +); ``` Also you can use `|` for `OR`, `&` for `AND`, and `!` for `NOT` in By-law Script, and these operators will be parsed into the corresponding condition nodes. For example, the above By-law Script can be written as: @@ -70,6 +98,10 @@ const conditionTree = ( ! expression4() ); ``` +### Boolean Values + +There are two boolean values in the DARC protocol: class `TRUE` and clss `FALSE`, or wrapper function `boolean_true()` and `boolean_false()`. They are used to represent a boolean node in the condition tree. + ### Condition Expression 1. There are multiple batch-operations, including: From b2a58e77ccad53a57d2566c51807b899747988a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= <6800565+lidangzzz@users.noreply.github.com> Date: Thu, 14 Mar 2024 15:46:05 -0500 Subject: [PATCH 57/62] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index c459905e..1bbcb5ef 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,11 @@ The project is currently in the early stages of development and is not yet ready English | [简体中文](./README_cn.md) | [日本語](./README_ja.md) +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=project-darc/darc&type=Date)](https://star-history.com/#project-darc/darc&Date) + + ## Join our community Telegram: [https://t.me/projectdarc](https://t.me/projectdarc) From 6d8db238f17fcaeadeb732590078ab5a19bc0dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= <6800565+lidangzzz@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:18:40 -0500 Subject: [PATCH 58/62] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 1bbcb5ef..60d3f396 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ English | [简体中文](./README_cn.md) | [日本語](./README_ja.md) Telegram: [https://t.me/projectdarc](https://t.me/projectdarc) +## Whitepaper + +English: [darc-whitepaper.pdf](https://github.com/Project-DARC/DARC-whitepaper/blob/release/darc-whitepaper.pdf) + +Chinese(中文版): [darc-whitepaper-cn.pdf](https://github.com/Project-DARC/DARC-whitepaper/blob/release/darc-whitepaper-cn.pdf) + ## What is DARC? Decentralized Autonomous Regulated Company (DARC) is a company virtual machine that can be compiled and deployed to From 128b2e6fc959e6f03c004d005d83ed6b67f2f0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= <6800565+lidangzzz@users.noreply.github.com> Date: Thu, 14 Mar 2024 21:30:10 -0500 Subject: [PATCH 59/62] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 60d3f396..694596d5 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ English | [简体中文](./README_cn.md) | [日本語](./README_ja.md) ## Join our community Telegram: [https://t.me/projectdarc](https://t.me/projectdarc) +Discord: [https://discord.gg/QzKbTHVgGG](https://discord.gg/QzKbTHVgGG) ## Whitepaper From 4f6176296b894af99bcae5026b634937bef38b40 Mon Sep 17 00:00:00 2001 From: snoppy Date: Fri, 15 Mar 2024 23:28:35 +0800 Subject: [PATCH 60/62] comment misspell --- darc-docs/docs/DARC Protocol/Condition Nodes.md | 2 +- darc-js/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/darc-docs/docs/DARC Protocol/Condition Nodes.md b/darc-docs/docs/DARC Protocol/Condition Nodes.md index 390f139b..307e0cac 100644 --- a/darc-docs/docs/DARC Protocol/Condition Nodes.md +++ b/darc-docs/docs/DARC Protocol/Condition Nodes.md @@ -100,7 +100,7 @@ const conditionTree = ### Boolean Values -There are two boolean values in the DARC protocol: class `TRUE` and clss `FALSE`, or wrapper function `boolean_true()` and `boolean_false()`. They are used to represent a boolean node in the condition tree. +There are two boolean values in the DARC protocol: class `TRUE` and class `FALSE`, or wrapper function `boolean_true()` and `boolean_false()`. They are used to represent a boolean node in the condition tree. ### Condition Expression diff --git a/darc-js/README.md b/darc-js/README.md index 97eb8718..586ed529 100644 --- a/darc-js/README.md +++ b/darc-js/README.md @@ -47,7 +47,7 @@ const darc_contract_address = await darcjs.deployDARC( DARC_VERSION.Test, signer ); -// acceess the deployed DARC via the DARC contract address +// access the deployed DARC via the DARC contract address const myDeployedDARC = new darcjs.DARC({ address: darc_contract_address, wallet: signer, From 9d60a312d1e4ea3e96edeb19f57b8f622c628b2a Mon Sep 17 00:00:00 2001 From: Ikko Eltociear Ashimine Date: Sun, 17 Mar 2024 01:01:52 +0900 Subject: [PATCH 61/62] Update README.md ownners -> owners --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 694596d5..2534fdcc 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ can add a new plugin and corresponding voting rule to the DARC VM contract: add_voting_rule( // add a voting rule (as index 5) [ { - voting_class: [1], // voting token class: 1, level-1 token ownners (board of directors) are required to vote + voting_class: [1], // voting token class: 1, level-1 token owners (board of directors) are required to vote approve_percentage: 99, // 99% voting power is required to approve voting_duration: 3600, // voting duration: 1 hour (3600 seconds) execute_duration: 3600, // pending duration for execution: 1 hour (3600 seconds) From a7ee2b4dc99554af05695d20d5994069e658b569 Mon Sep 17 00:00:00 2001 From: sellskin Date: Mon, 25 Mar 2024 10:45:15 +0800 Subject: [PATCH 62/62] chore: fix incorrect path in README.md Signed-off-by: sellskin --- README.md | 2 +- README_cn.md | 2 +- README_ja.md | 2 +- darc-docs/docs/DARC Protocol/Getting Started.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2534fdcc..fe82a4bb 100644 --- a/README.md +++ b/README.md @@ -509,7 +509,7 @@ Since Hardhat and OpenZeppelin are used, the project can be built using the foll friendly. ```shell - cd darc-protocal + cd darc-protocol npm install ``` diff --git a/README_cn.md b/README_cn.md index fe4f34d9..737e7c98 100644 --- a/README_cn.md +++ b/README_cn.md @@ -462,7 +462,7 @@ add_storage(['QmcpxHN3a5HYnPurtuDs3jDfDSg1LPDe2KVBUG4RifcSbC']); `pnpm` 是一个较新的包管理器,相较于 npm 具有一些优势。它更快、更高效,并且节省磁盘空间。 ```shell - cd darc-protocal + cd darc-protocol npm install ``` diff --git a/README_ja.md b/README_ja.md index d6cdfc28..9c02f062 100644 --- a/README_ja.md +++ b/README_ja.md @@ -466,7 +466,7 @@ Hardhat と OpenZeppelin を使用しているので、プロジェクトは以 `pnpm` は新しいパッケージマネージャーで、npm よりも優れている点がいくつかある。より速く、より効率的で、ディスクスペースに優しいです。 ```shell - cd darc-protocal + cd darc-protocol npm install ``` diff --git a/darc-docs/docs/DARC Protocol/Getting Started.md b/darc-docs/docs/DARC Protocol/Getting Started.md index f68dfb22..4a44b7a3 100644 --- a/darc-docs/docs/DARC Protocol/Getting Started.md +++ b/darc-docs/docs/DARC Protocol/Getting Started.md @@ -18,7 +18,7 @@ Since Hardhat and OpenZeppelin are used, the project can be built using the foll friendly. ```shell - cd darc-protocal + cd darc-protocol npm install ```