{
  "_format": "hh-sol-artifact-1",
  "contractName": "GuessHandler",
  "sourceName": "contracts/V3/handler/GuessHandler.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "AddLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "Input",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "Lose",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "Win",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "claimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "areaNameList",
          "type": "string[]"
        }
      ],
      "name": "getEngineAreaList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIOBranches",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8[]",
              "name": "inBranch",
              "type": "uint8[]"
            },
            {
              "internalType": "uint8[]",
              "name": "outBranch",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct IHandler.IOBranch[]",
          "name": "branches",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getInputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getOutputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        }
      ],
      "name": "getRuleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "cmd",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.StateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getTokenBranch",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct TokenHandler.TokenBranch",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFee",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "clusterArea",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lastHandler",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "valueTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "taskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "parentTaskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "clusterId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "erc",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint32",
                          "name": "attrId",
                          "type": "uint32"
                        },
                        {
                          "internalType": "int40",
                          "name": "attrAmount",
                          "type": "int40"
                        }
                      ],
                      "internalType": "struct Attribute.AttributeIn[]",
                      "name": "attrInList",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Token.Token[]",
                  "name": "inTokenList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Task.Task",
              "name": "task",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            }
          ],
          "internalType": "struct Handler.Process",
          "name": "param",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "preResult",
          "type": "tuple"
        }
      ],
      "name": "process",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "erc",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256[]",
                          "name": "valueList",
                          "type": "uint256[]"
                        }
                      ],
                      "internalType": "struct Token.TokenTemplate",
                      "name": "tokenTemplate",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rule",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address[]",
                      "name": "ioAddressList",
                      "type": "address[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "valueList",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct Rule.TokenSlot[]",
                  "name": "tokenSlotList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint8",
                  "name": "branch",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "argsList",
                  "type": "bytes[]"
                }
              ],
              "internalType": "struct Rule.GroupSlot[]",
              "name": "groupSlotList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "ruleSlotBound",
              "type": "uint8[]"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexInput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexOutput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "totalCount",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "durationType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "delayTimestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "delayBlockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "handlerCount",
                  "type": "uint64"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "handlerArgsList",
                  "type": "bytes[]"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                }
              ],
              "internalType": "struct Rule.Rule[]",
              "name": "ruleList",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "uri",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "level",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Attribute.Attribute[]",
              "name": "attrList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "attrStateList",
              "type": "uint8[]"
            },
            {
              "internalType": "address[]",
              "name": "deployerList",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "adminList",
              "type": "address[]"
            },
            {
              "internalType": "uint32",
              "name": "delayTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "delayBlockNumber",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "internalType": "struct Cluster.Cluster",
          "name": "cluster",
          "type": "tuple"
        }
      ],
      "name": "regRule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "regRuleGroupSlotArgs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "engineAreaList",
          "type": "address[]"
        }
      ],
      "name": "setEngineAreaList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexInput",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexOutput",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "cmd",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "updateArgs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50615574806100206000396000f3fe608060405234801561001057600080fd5b506004361061010c5760003560e01c80638129fc1c1161009d5780638129fc1c146101e85780638da5cb5b146101f057806395edcb0814610210578063a903620c14610230578063af84b51f14610243578063b41bd78914610263578063b4b7035214610276578063d0d35b5514610289578063f2fde38b146102ad578063f2fe4fa5146102c057600080fd5b80631cc4f041146101115780631eda6e4f1461013957806334c76b25146101595780634b2dbcb8146101765780634b2e9b411461017657806354fd4d50146101965780635790c294146101a557806362329cc5146101ba5780636dabaf04146101cd578063715018a6146101e0575b600080fd5b61012461011f366004613b31565b6102cf565b60405190151581526020015b60405180910390f35b61014c610147366004613c76565b6103ac565b6040516101309190613d27565b6040805160208101909152600081525b6040516101309190613dc7565b610189610184366004613dda565b61046e565b6040516101309190613e4e565b60405160008152602001610130565b6101b86101b3366004613e9b565b61049f565b005b6101896101c8366004613f2c565b610520565b6101246101db366004613fcf565b6105fd565b6101b861061f565b6101b861065a565b6101f86106cf565b6040516001600160a01b039091168152602001610130565b61022361021e36600461425c565b6106de565b6040516101309190614426565b6101b861023e366004614b7b565b610e58565b610256610251366004614d2e565b610ed5565b6040516101309190614e4b565b6101b8610271366004614ead565b611189565b610124610284366004613b31565b6111c1565b610169610297366004614ee1565b6040805160208101909152600081529392505050565b6101b86102bb366004614f24565b6113be565b60606040516101309190614f7d565b6000806102fd836000015184602001518560600151866040015187608001518860a001518960e0015161145b565b60008181526066602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561035c57602002820191906000526020600020905b815481526020019060010190808311610348575b5050509190925250505060c085015190915060009060ff16610390576101208501516103899083906114ca565b90506103a4565b6101208501516103a190839061155f565b90505b949350505050565b6040805160208101909152606081526103e36040518060600160405280602f81526020016154cc602f91398563ffffffff166115d6565b60006103f533898989898e600061145b565b60008181526066602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561045457602002820191906000526020600020905b815481526020019060010190808311610440575b5050509190925250919d9c50505050505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505b5098975050505050505050565b6040518060400160405280600f81526020016e436c757374657252756c654172656160881b8152506065816040516104d79190615002565b90815260405190819003602001902054336001600160a01b03909116146105195760405162461bcd60e51b81526004016105109061501e565b60405180910390fd5b5050505050565b6060600082516001600160401b0381111561053d5761053d6139a6565b604051908082528060200260200182016040528015610566578160200160208202803683370190505b50905060005b81518110156105f657606584828151811061058957610589615055565b602002602001015160405161059e9190615002565b9081526040519081900360200190205482516001600160a01b03909116908390839081106105ce576105ce615055565b6001600160a01b03909216602092830291909101909101526105ef81615081565b905061056c565b5092915050565b600060ff8316610613576106138686868561161f565b50600195945050505050565b336106286106cf565b6001600160a01b03161461064e5760405162461bcd60e51b81526004016105109061509a565b61065860006116d9565b565b6000610666600161172b565b9050801561067e576000805461ff0019166101001790555b6106866117b8565b80156106cc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b604080516080810182526000808252602082015260609181018290528181019190915260405180604001604052806006815260200165456e67696e6560d01b8152506065816040516107309190615002565b90815260405190819003602001902054336001600160a01b03909116146107695760405162461bcd60e51b81526004016105109061501e565b308352606084015160009061077d906117e7565b905060008560600151610100015161079887606001516117f3565b6107a58860600151611812565b6040516020016107b7939291906150cf565b60405160208183030381529060405280519060200120905060006107f36107ee8460008a606001516118379092919063ffffffff16565b611891565b6000838152606860209081526040822060608b015180830151610100820151938d015160e090920151959650919461085693339392909163ffffffff1615610843578d6060015160e0015161084d565b8d6060015160c001515b8e51600061145b565b905061086289846118de565b60021960ff84160161087c5761087789611a09565b610e26565b60001960ff841601610a21576000896060015161014001516000815181106108a6576108a6615055565b6020026020010151606001519050806127106108c58c60600151611b41565b6108cf9190615107565b63ffffffff166108df919061512a565b90508260010154600014610911578260020154818460010154610902919061512a565b61090c9190615141565b610913565b805b60008681526067602090815260408083208e516001600160a01b0316845290915281208054929350839290919061094b908490615155565b92505081905550808360010160008282546109669190615155565b909155505060608a01516101400151805160009061098657610986615055565b6020026020010151606001516127106109a28c60600151611b41565b6109ac9190615107565b63ffffffff166109bc919061512a565b8360020160008282546109cf9190615155565b90915550508951604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca91015b60405180910390a250610e26565b60031960ff841601610ca357815489516001600160a01b03918216911603610ab9576060890151600090610a5b906107ee90886001611837565b90508260030154811115610aa65760405162461bcd60e51b815260206004820152601260248201527131b630b4b69030b6b7bab73a1032b93937b960711b6044820152606401610510565b610ab28a838684611b7c565b5050610e26565b6000610ac48a611c97565b905080600003610b065760405162461bcd60e51b815260206004820152600d60248201526c72616e646f6d206572726f722160981b6044820152606401610510565b610b11600a82615168565b9050610b436040518060400160405280600e81526020016d03930b73237b6903932b9bab63a160951b815250826115d6565b60058110610bdf57610b65670de0b6b3a7640000671a5e27eef13e000061517c565b836002016000828254610b78919061517c565b90915550610b9290508a8386671a5e27eef13e0000611b7c565b5089600001516001600160a01b03167f6747c18256028de8cd2fa276e75d6b4193ac34c1b55fa8e71797ac132d32ad3942604051610bd291815260200190565b60405180910390a2610c9d565b612710610bf6670de0b6b3a764000061254e61512a565b610c009190615141565b836002016000828254610c139190615155565b909155506127109050610c30670de0b6b3a76400006101c261512a565b610c3a9190615141565b836003016000828254610c4d9190615155565b90915550610c5e90508a8386611df7565b89600001516001600160a01b03167f1fb03e9599c87c5cac72b645424ca64f6bc62677569866c317244e3d0109b37f42604051610a1391815260200190565b50610e26565b60011960ff841601610e26576060890151600090610cc7906107ee90886001611837565b60008681526067602090815260408083208e516001600160a01b03168452909152902054909150811115610d345760405162461bcd60e51b81526020600482015260146024820152730d8d2e2ead2c8d2e8f240dcdee840cadcdeeaced60631b6044820152606401610510565b60008360010154828560020154610d4b919061512a565b610d559190615141565b60008781526067602090815260408083208f516001600160a01b03168452909152812080549293508492909190610d8d90849061517c565b9250508190555081846001016000828254610da8919061517c565b9250508190555080846002016000828254610dc3919061517c565b90915550610dd590508b848784611b7c565b508a516040805184815260208101849052428183015290516001600160a01b03909216917f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9181900360600190a250505b60ff831660031480610e3b575060ff83166001145b15610e4b57610e4b898285611df7565b5095979650505050505050565b6040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b815250606581604051610e979190615002565b90815260405190819003602001902054336001600160a01b0390911614610ed05760405162461bcd60e51b81526004016105109061501e565b505050565b6060806000836040015184606001518560800151604051602001610efb939291906150cf565b604051602081830303815290604052805190602001209050600160ff1684610120015160ff16036105f65760408051600480825260a0820190925290816020015b6060815260200190600190039081610f3c579050509150610f7e6040518060400160405280600a8152602001696765745374617465203160b01b815250611e60565b610140840151600090610f919082611ea3565b9050610fbe6040518060400160405280600a81526020016933b2ba29ba30ba32901960b11b815250611e60565b604080518082018252600e81526d75736572206c697175696469747960901b6020808301919091526000858152606782528381206001600160a01b038616825290915291909120546110109190611ef3565b8360008151811061102357611023615055565b60200260200101819052506110596040518060400160405280600a8152602001696765745374617465203360b01b815250611e60565b6110a06040518060400160405280600f81526020016e746f74616c206c697175696469747960881b8152506068600085815260200190815260200160002060010154611ef3565b836001815181106110b3576110b3615055565b60200260200101819052506111026040518060400160405280600c81526020016b706f6f6c2062616c616e636560a01b8152506068600085815260200190815260200160002060020154611ef3565b8360028151811061111557611115615055565b60200260200101819052506111636040518060400160405280600b81526020016a6665652062616c616e636560a81b8152506068600085815260200190815260200160002060030154611ef3565b8360038151811061117657611176615055565b6020026020010181905250505092915050565b336111926106cf565b6001600160a01b0316146111b85760405162461bcd60e51b81526004016105109061509a565b6106cc81612013565b600060405180604001604052806006815260200165456e67696e6560d01b8152506065816040516111f29190615002565b90815260405190819003602001902054336001600160a01b039091161461122b5760405162461bcd60e51b81526004016105109061501e565b60006112543385602001518660600151876040015188608001518960a001518a60e0015161145b565b60008181526066602052604081208054929350919003611284578054600181018255600082815260208120909101555b60c085015160009060ff166113095761012086015160408051845460208181028301840184528201818152611302949387928492918491908401828280156112eb57602002820191906000526020600020905b8154815260200190600101908083116112d7575b5050505050815250506114ca90919063ffffffff16565b905061137b565b610120860151604080518454602081810283018401845282018181526113789493879284929184919084018282801561136157602002820191906000526020600020905b81548152602001906001019080831161134d575b50505050508152505061155f90919063ffffffff16565b90505b806113b35760c086015160ff166113a25761012086015161139d908390612135565b6113b3565b6101208601516113b39083906121e5565b935050505b50919050565b336113c76106cf565b6001600160a01b0316146113ed5760405162461bcd60e51b81526004016105109061509a565b6001600160a01b0381166114525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610510565b6106cc816116d9565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b600061155383600001516000815181106114e6576114e6615055565b6020026020010151600184600060086114ff919061518f565b61150a90600461518f565b61151590600861518f565b61152090600461518f565b61152b90601061518f565b61153690601861518f565b61154190602061518f565b61154b919061518f565b60ff1661225d565b60011490505b92915050565b6000611553836000015160008151811061157b5761157b615055565b602002602001015160018460006008611594919061518f565b61159f90600461518f565b6115aa90600861518f565b6115b590600461518f565b6115c090601061518f565b6115cb90601861518f565b61153690602061518f565b61161b82826040516024016115ec9291906151a8565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261227c565b5050565b61164e6040518060400160405280600e81526020016d5f7570646174652061726773203160901b815250611e60565b600061165982612285565b9050805160000361166a57506116d3565b6000858585604051602001611681939291906150cf565b60408051601f19818403018152918152815160209283012060008181526068909352908220909250906116b5908590611ea3565b81546001600160a01b0319166001600160a01b039190911617905550505b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611772578160ff16600114801561174e5750303b155b61176a5760405162461bcd60e51b8152600401610510906151ca565b506000919050565b60005460ff8084169116106117995760405162461bcd60e51b8152600401610510906151ca565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166117df5760405162461bcd60e51b815260040161051090615218565b610658612295565b606061155982306122c5565b60006115598260a0015160106000600861180d9190615155565b61225d565b60006115598260a0015160106000600861182c9190615155565b61180d906010615155565b61183f6138a3565b61186e8361184e84600161518f565b60ff168151811061186157611861615055565b602002602001015161236a565b60028151811061188057611880615055565b602002602001015190509392505050565b8051600090158015906118a657508151602110155b6118af57600080fd5b6000806118bb84612473565b8151919350915060208210156103a45760208290036101000a9004949350505050565b60006118ed83606001516124ba565b905060021960ff83160161194e5760ff8116600214610ed05760405162461bcd60e51b815260206004820152601c60248201527f5f636865636b434d4420696e707574206272616e6368206572726f72000000006044820152606401610510565b60001960ff8316016119b95760ff8116600314610ed05760405162461bcd60e51b8152602060048201526024808201527f5f636865636b434d4420616464206c6971756964697479206272616e63682065604482015263393937b960e11b6064820152608401610510565b60ff8116600114610ed05760405162461bcd60e51b815260206004820152601a6024820152792fb1b432b1b5a1a6a21033b0b990313930b731b41032b93937b960311b6044820152606401610510565b600060656040518060400160405280600f81526020016e2930b73237b6a3b2b732b930ba37b960891b815250604051611a429190615002565b90815260405160209181900382019020546060840151918201516101008301516001600160a01b039092169350839263063738cb9290611a81906117f3565b611a8e8760600151611812565b6020880151606089015160c00151895160405160e089901b6001600160e01b03191681526001600160a01b03978816600482015263ffffffff968716602482015261ffff958616604482015294909316606485015290851660848401529290921660a4820152911660c482015260e4016020604051808303816000875af1158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed09190615263565b60006115598260a00151602060006008611b5b9190615155565b611b66906010615155565b611b71906010615155565b61182c906008615155565b600080611b876124df565b9050611b9f6040518060200160405280606081525090565b600160608301819052808352604080518281528082019091529060208083019080368337505050610140830152604080516001808252818301909252906020808301908036833750505061016083018190528051859190600090611c0557611c05615055565b6020908102919091010152600161012083015260011960ff861601611c305760676040830152611c38565b606660408301525b611c428183612526565b6000868152606660209081526040909120825180518493611c679284929101906138bd565b50905050816101600151600081518110611c8357611c83615055565b602002602001015192505050949350505050565b60008060656040518060400160405280600f81526020016e2930b73237b6a3b2b732b930ba37b960891b815250604051611cd19190615002565b90815260405160209181900382019020546060850151918201516101008301516001600160a01b039092169350839263524562279290611d10906117f3565b611d1d8860600151611812565b602089015160608a015160e0908101518b516040519289901b6001600160e01b03191683526101006004840152600261010484015261060f60f31b6101248401526001600160a01b03978816602484015263ffffffff968716604484015261ffff958616606484015293909416608482015290851660a48201529290911660c48301529190911660e4820152610144016020604051808303816000875af1158015611dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df09190615285565b9392505050565b6000611e016124df565b9050611e196040518060200160405280606081525090565b6065604083015260016020830152611e318183612526565b6000848152606660209081526040909120825180518493611e569284929101906138bd565b5050505050505050565b6106cc81604051602401611e749190613dc7565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905261227c565b600080611eb7611eb285612b1e565b61236a565b90506103a4611ed4828560ff168151811061186157611861615055565b600281518110611ee657611ee6615055565b6020026020010151612b44565b60606000611f0084612b5e565b90506000611f0d84612b69565b9050611f506040518060400160405280600e81526020016d0b4b4b4b4b4b4b481d1bd55a5b9d60921b815250611f4b83611f469061529e565b612b7c565b612bc8565b60408051600380825260808201909252600091816020015b6060815260200190600190039081611f685790505090508281600081518110611f9357611f93615055565b6020026020010181905250611fc3604051806040016040528060048152602001631d5a5b9d60e21b815250612b5e565b81600181518110611fd657611fd6615055565b60200260200101819052508181600281518110611ff557611ff5615055565b602002602001018190525061200981612c0d565b9695505050505050565b3361201c6106cf565b6001600160a01b0316146120425760405162461bcd60e51b81526004016105109061509a565b60005b815181101561161b5781818151811061206057612060615055565b6020026020010151606583838151811061207c5761207c615055565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b8152600401600060405180830381865afa1580156120c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120e991908101906152c2565b6040516120f69190615002565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b031990921691909117905561212e81615081565b9050612045565b6121bf8260000160008154811061214e5761214e615055565b9060005260206000200154600180846000600861216b919061518f565b61217690600461518f565b61218190600861518f565b61218c90600461518f565b61219790601061518f565b6121a290601861518f565b6121ad90602061518f565b6121b7919061518f565b60ff16612c8b565b826000016000815481106121d5576121d5615055565b6000918252602090912001555050565b6121bf826000016000815481106121fe576121fe615055565b9060005260206000200154600180846000600861221b919061518f565b61222690600461518f565b61223190600861518f565b61223c90600461518f565b61224790601061518f565b61225290601861518f565b6121a290602061518f565b91821c91600080612271600180861b61517c565b909416949350505050565b6106cc81612cb0565b60606000611df0611eb284612b1e565b600054610100900460ff166122bc5760405162461bcd60e51b815260040161051090615218565b610658336116d9565b606060006122da611eb2856101600151612b1e565b905060005b815181101561235f57600061231461230284848151811061186157611861615055565b600081518110611ee657611ee6615055565b9050846001600160a01b0316816001600160a01b03160361234e5761234483838151811061186157611861615055565b9350505050611559565b5061235881615081565b90506122df565b506060949350505050565b606061237582612cd1565b61237e57600080fd5b600061238983612d0c565b90506000816001600160401b038111156123a5576123a56139a6565b6040519080825280602002602001820160405280156123de57816020015b6123cb6138a3565b8152602001906001900390816123c35790505b50905060006123f08560200151612d91565b85602001516123ff9190615155565b90506000805b848110156124685761241683612e0c565b915060405180604001604052808381526020018481525084828151811061243f5761243f615055565b60209081029190910101526124548284615155565b92508061246081615081565b915050612405565b509195945050505050565b60008060006124858460200151612d91565b905060008185602001516124999190615155565b905060008286600001516124ad919061517c565b9196919550909350505050565b60006115598260a001516008600060086124d49190615155565b61182c906010615155565b6124e7613908565b6124ef613908565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60c081015160019015612541578061253d81615081565b9150505b8160e001516127101461255c578061255881615081565b9150505b81610100015161271014612578578061257481615081565b9150505b6101408201515115158061259157506101608201515115155b806125a157506101a08201515115155b156126135760008261016001515183610140015151116125e657826101a001515183610160015151116125da57826101a00151516125ee565b826101600151516125ee565b826101400151515b90506125fb81600461512a565b6126059083615155565b60ff90911661012084015290505b61263d6040518060600160405280602e8152602001615479602e913983610120015160ff166115d6565b806001600160401b03811115612655576126556139a6565b60405190808252806020026020018201604052801561267e578160200160208202803683370190505b508352815161268e908490612eb0565b61269c838360200151612f08565b6126aa838360600151612f41565b6126b8838360400151612f90565b6126c783836101200151612fd4565b6126e86040518060600160405280602581526020016154a760259139611e60565b60008060019050836080015162ffffff166127101461271d5761270f858560800151613065565b61271a60018361532f565b91505b8360a0015163ffffffff166127101461274c5761273e858560a001516130cc565b61274960028361532f565b91505b60c0840151156127925760c084015185518261276781615081565b93508151811061277957612779615055565b602090810291909101015261278f60048361532f565b91505b8360e00151612710146127db5760e08401518551826127b081615081565b9350815181106127c2576127c2615055565b60209081029190910101526127d860088361532f565b91505b83610100015161271014612826576101008401518551826127fb81615081565b93508151811061280d5761280d615055565b602090810291909101015261282360108361532f565b91505b61012084015160ff1615612b145760005b84610120015160ff16811015612ae25760008561014001515111801561286257508461014001515181105b156128b957846101400151818151811061287e5761287e615055565b60200260200101518660000151838061289690615081565b9450815181106128a8576128a8615055565b6020026020010181815250506128e7565b8551600090836128c881615081565b9450815181106128da576128da615055565b6020026020010181815250505b60008561016001515111801561290257508461016001515181105b1561295957846101600151818151811061291e5761291e615055565b60200260200101518660000151838061293690615081565b94508151811061294857612948615055565b602002602001018181525050612987565b85516000908361296881615081565b94508151811061297a5761297a615055565b6020026020010181815250505b6000856101800151511180156129a257508461018001515181105b156129fc5784610180015181815181106129be576129be615055565b602002602001015160ff16866000015183806129d990615081565b9450815181106129eb576129eb615055565b602002602001018181525050612a29565b8551819083612a0a81615081565b945081518110612a1c57612a1c615055565b6020026020010181815250505b6000856101a0015151118015612a445750846101a001515181105b15612aa457846101a001518181518110612a6057612a60615055565b60200260200101516001600160a01b031686600001518380612a8190615081565b945081518110612a9357612a93615055565b602002602001018181525050612ad2565b855160009083612ab381615081565b945081518110612ac557612ac5615055565b6020026020010181815250505b612adb81615081565b9050612837565b50612aee60208361532f565b9150612b146040518060800160405280604481526020016154fb604491398651516115d6565b610519858361313f565b612b266138a3565b50604080518082019091528151815260209182019181019190915290565b8051600090601514612b5557600080fd5b61155982611891565b60606115598261318f565b6060611559612b77836131df565b61318f565b6060612b8782613319565b612b94608084901b613319565b60405161060f60f31b6020820152602281019290925260428201526062016040516020818303038152906040529050919050565b61161b8282604051602401612bde92919061534a565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b17905261227c565b6060612c3c6040518060400160405280600c81526020016b656e636f64654c697374203160a01b815250611e60565b6000612c47836134c3565b9050612c766040518060400160405280600c81526020016b32b731b7b232a634b9ba101960a11b815250611e60565b611df0612c85825160c06135f3565b826137a9565b600083821b8183612c9f600180881b61517c565b901b19969096161795945050505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b80516000908103612ce457506000919050565b6020820151805160001a9060c0821015612d02575060009392505050565b5060019392505050565b80516000908103612d1f57506000919050565b600080612d2f8460200151612d91565b8460200151612d3e9190615155565b9050600084600001518560200151612d569190615155565b90505b80821015612d8857612d6a82612e0c565b612d749083615155565b915082612d8081615081565b935050612d59565b50909392505050565b8051600090811a6080811015612daa5750600092915050565b60b8811080612dc5575060c08110801590612dc5575060f881105b15612dd35750600192915050565b60c0811015612e0057612de8600160b861536f565b612df59060ff168261517c565b611df0906001615155565b612de8600160f861536f565b80516000908190811a6080811015612e2757600191506105f6565b60b8811015612e4d57612e3b60808261517c565b612e46906001615155565b91506105f6565b60c0811015612e7a5760b78103600185019450806020036101000a855104600182018101935050506105f6565b60f8811015612e8e57612e3b60c08261517c565b60019390930151602084900360f7016101000a900490920160f5190192915050565b612ee58260000151600081518110612eca57612eca615055565b60200260200101518260ff16600860ff16600060ff16612c8b565b82518051600090612ef857612ef8615055565b6020026020010181815250505050565b612ee58260000151600081518110612f2257612f22615055565b60200260200101518260ff16600460ff16600060086121b7919061518f565b612ee58260000151600081518110612f5b57612f5b615055565b60200260200101518260ff16600460ff1660006008612f7a919061518f565b612f8590600461518f565b6121b790600861518f565b612ee58260000151600081518110612faa57612faa615055565b60200260200101518260ff16600860ff1660006008612fc9919061518f565b6121b790600461518f565b612ee58260000151600081518110612fee57612fee615055565b60200260200101518260ff16600860ff166000600861300d919061518f565b61301890600461518f565b61302390600861518f565b61302e90600461518f565b61303990601061518f565b61304490601861518f565b61304f90602061518f565b61305a90602061518f565b6121b790602061518f565b612ee5826000015160008151811061307f5761307f615055565b60200260200101518262ffffff16601860ff16600060086130a0919061518f565b6130ab90600461518f565b6130b690600861518f565b6130c190600461518f565b6121b790601061518f565b612ee582600001516000815181106130e6576130e6615055565b60200260200101518263ffffffff16602060ff1660006008613108919061518f565b61311390600461518f565b61311e90600861518f565b61312990600461518f565b61313490601061518f565b6121b790601861518f565b612ee5826000015160008151811061315957613159615055565b60200260200101518261ffff16601060ff1660006008613179919061518f565b61318490600461518f565b612fc990600861518f565b606080825160011480156131be57506080836000815181106131b3576131b3615055565b016020015160f81c11155b156131ca575081611559565b611df06131d9845160806135f3565b846137a9565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b60208110156132505781818151811061322857613228615055565b01602001516001600160f81b031916600003613250578061324881615081565b91505061320d565b600061325d82602061517c565b6001600160401b03811115613274576132746139a6565b6040519080825280601f01601f19166020018201604052801561329e576020820181803683370190505b50905060005b81518110156133105783836132b881615081565b9450815181106132ca576132ca615055565b602001015160f81c60f81b8282815181106132e7576132e7615055565b60200101906001600160f81b031916908160001a9053508061330881615081565b9150506132a4565b50949350505050565b7aff00000000000000ff00000000000000ff00000000000000ff000063ffffffff60401b604083901c90811663ffffffff60c01b84161760201c63ffffffff60601b919091166001600160e01b031984161717601081901c91821678ff00000000000000ff00000000000000ff00000000000000ff60301b821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c16179061345f827f0606060606060606060606060606060606060606060606060606060606060606615155565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16600761348f919061512a565b6134b9827f3030303030303030303030303030303030303030303030303030303030303030615155565b6115599190615155565b606081516000036134e45760408051600080825260208201909252906105f6565b6000805b835181101561352b5783818151811061350357613503615055565b602002602001015151826135179190615155565b91508061352381615081565b9150506134e8565b6000826001600160401b03811115613545576135456139a6565b6040519080825280601f01601f19166020018201604052801561356f576020820181803683370190505b50600092509050602081015b855183101561331057600086848151811061359857613598615055565b6020026020010151905060006020820190506135b683828451613826565b8785815181106135c8576135c8615055565b602002602001015151836135dc9190615155565b9250505082806135eb90615081565b93505061357b565b606080603884101561365d57604080516001808252818301909252906020820181803683370190505090506136288385615155565b601f1a60f81b8160008151811061364157613641615055565b60200101906001600160f81b031916908160001a905350611df0565b600060015b61366c8187615141565b15613692578161367b81615081565b925061368b90506101008261512a565b9050613662565b61369d826001615155565b6001600160401b038111156136b4576136b46139a6565b6040519080825280601f01601f1916602001820160405280156136de576020820181803683370190505b5092506136eb8583615155565b6136f6906037615155565b601f1a60f81b8360008151811061370f5761370f615055565b60200101906001600160f81b031916908160001a905350600190505b8181116137a05761010061373f828461517c565b61374b9061010061546c565b6137559088615141565b61375f9190615168565b601f1a60f81b83828151811061377757613777615055565b60200101906001600160f81b031916908160001a9053508061379881615081565b91505061372b565b50509392505050565b6060806040519050835180825260208201818101602087015b818310156137da5780518352602092830192016137c2565b50855184518101855292509050808201602086015b818310156138075780518352602092830192016137ef565b508651929092011591909101601f01601f191660405250905092915050565b8282825b602081106138625781518352613841602084615155565b925061384e602083615155565b915061385b60208261517c565b905061382a565b801561389b576000600161387783602061517c565b6138839061010061546c565b61388d919061517c565b835185518216911916178452505b505050505050565b604051806040016040528060008152602001600081525090565b8280548282559060005260206000209081019282156138f8579160200282015b828111156138f85782518255916020019190600101906138dd565b50613904929150613991565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b808211156139045760008155600101613992565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156139df576139df6139a6565b60405290565b60405160a081016001600160401b03811182821017156139df576139df6139a6565b604080519081016001600160401b03811182821017156139df576139df6139a6565b604051608081016001600160401b03811182821017156139df576139df6139a6565b60405161018081016001600160401b03811182821017156139df576139df6139a6565b604051606081016001600160401b03811182821017156139df576139df6139a6565b60405161016081016001600160401b03811182821017156139df576139df6139a6565b604051601f8201601f191681016001600160401b0381118282101715613adb57613adb6139a6565b604052919050565b80356001600160a01b03811681146117b357600080fd5b803563ffffffff811681146117b357600080fd5b803560ff811681146117b357600080fd5b803561ffff811681146117b357600080fd5b60006101408284031215613b4457600080fd5b613b4c6139bc565b613b5583613ae3565b8152613b6360208401613ae3565b6020820152613b7460408401613ae3565b6040820152613b8560608401613afa565b6060820152613b9660808401613afa565b6080820152613ba760a08401613ae3565b60a0820152613bb860c08401613b0e565b60c0820152613bc960e08401613b1f565b60e0820152610100613bdc818501613b0e565b90820152610120613bee848201613b0e565b908201529392505050565b60006001600160401b03821115613c1257613c126139a6565b50601f01601f191660200190565b600082601f830112613c3157600080fd5b8135613c44613c3f82613bf9565b613ab3565b818152846020838601011115613c5957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b031215613c9357600080fd5b613c9c89613ae3565b9750613caa60208a01613ae3565b9650613cb860408a01613ae3565b9550613cc660608a01613afa565b9450613cd460808a01613ae3565b9350613ce260a08a01613afa565b925060c08901356001600160401b03811115613cfd57600080fd5b613d098b828c01613c20565b925050613d1860e08a01613b1f565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015613d6c5783518252928401926001929092019190840190613d4c565b509695505050505050565b60005b83811015613d92578181015183820152602001613d7a565b50506000910152565b60008151808452613db3816020860160208601613d77565b601f01601f19169290920160200192915050565b602081526000611df06020830184613d9b565b60008060008060008060c08789031215613df357600080fd5b613dfc87613ae3565b9550613e0a60208801613ae3565b9450613e1860408801613afa565b9350613e2660608801613ae3565b9250613e3460808801613afa565b9150613e4260a08801613b1f565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015613e8f5783516001600160a01b031683529284019291840191600101613e6a565b50909695505050505050565b60008060008060808587031215613eb157600080fd5b613eba85613afa565b9350613ec860208601613b1f565b9250613ed660408601613b0e565b915060608501356001600160401b03811115613ef157600080fd5b613efd87828801613c20565b91505092959194509250565b60006001600160401b03821115613f2257613f226139a6565b5060051b60200190565b60006020808385031215613f3f57600080fd5b82356001600160401b0380821115613f5657600080fd5b818501915085601f830112613f6a57600080fd5b8135613f78613c3f82613f09565b81815260059190911b83018401908481019088831115613f9757600080fd5b8585015b8381101561049257803585811115613fb35760008081fd5b613fc18b89838a0101613c20565b845250918601918601613f9b565b600080600080600060a08688031215613fe757600080fd5b613ff086613afa565b9450613ffe60208701613b1f565b935061400c60408701613b1f565b925061401a60608701613b0e565b915060808601356001600160401b0381111561403557600080fd5b61404188828901613c20565b9150509295509295909350565b600082601f83011261405f57600080fd5b8135602061406f613c3f83613f09565b82815260059290921b8401810191818101908684111561408e57600080fd5b8286015b84811015613d6c5780356001600160401b03808211156140b157600080fd5b9088019060a0828b03601f190112156140c957600080fd5b6140d16139e5565b6140dc878401613b0e565b815260406140eb818501613ae3565b888301526060840135818301526080840135606083015260a0840135838111156141155760008081fd5b8085019450508b603f85011261412d57600092508283fd5b87840135925061413f613c3f84613f09565b83815260069390931b8401810192888101908d85111561415f5760008081fd5b948201945b848610156141b65782868f03121561417c5760008081fd5b614184613a07565b61418d87613afa565b81528a8701358060040b81146141a35760008081fd5b818c015282529482019490890190614164565b6080840152505085525050918301918301614092565b6000608082840312156141de57600080fd5b6141e6613a29565b90506141f182613ae3565b81526141ff60208301613b0e565b602082015260408201356001600160401b038082111561421e57600080fd5b61422a85838601613c20565b6040840152606084013591508082111561424357600080fd5b5061425084828501613c20565b60608301525092915050565b6000806040838503121561426f57600080fd5b82356001600160401b038082111561428657600080fd5b9084019060a0828703121561429a57600080fd5b6142a26139e5565b6142ab83613ae3565b81526142b960208401613ae3565b60208201526142ca60408401613ae3565b60408201526060830135828111156142e157600080fd5b830161018081890312156142f457600080fd5b6142fc613a4b565b61430582613ae3565b815261431360208301613ae3565b602082015261432460408301613ae3565b604082015261433560608301613ae3565b60608201526080820135608082015260a082013560a082015261435a60c08301613afa565b60c082015261436b60e08301613afa565b60e082015261010061437e818401613afa565b90820152610120614390838201613b0e565b9082015261014082810135858111156143a857600080fd5b6143b48b82860161404e565b82840152505061016080830135858111156143ce57600080fd5b6143da8b828601613c20565b82840152505080606084015250506143f460808401613b0e565b60808201529350602085013591508082111561440f57600080fd5b5061441c858286016141cc565b9150509250929050565b6020815260018060a01b03825116602082015260ff6020830151166040820152600060408301516080606084015261446160a0840182613d9b565b90506060840151601f1984830301608085015261447e8282613d9b565b95945050505050565b600082601f83011261449857600080fd5b813560206144a8613c3f83613f09565b82815260059290921b840181019181810190868411156144c757600080fd5b8286015b84811015613d6c57803583529183019183016144cb565b600082601f8301126144f357600080fd5b81356020614503613c3f83613f09565b82815260059290921b8401810191818101908684111561452257600080fd5b8286015b84811015613d6c5761453781613ae3565b8352918301918301614526565b600082601f83011261455557600080fd5b81356020614565613c3f83613f09565b82815260059290921b8401810191818101908684111561458457600080fd5b8286015b84811015613d6c5780356001600160401b03808211156145a757600080fd5b90880190601f196080838c03820112156145c057600080fd5b6145c8613a29565b87840135838111156145d957600080fd5b84016060818e03840112156145ed57600080fd5b6145f5613a6e565b9250614602898201613b0e565b83526040614611818301613ae3565b8a85015260608201358581111561462757600080fd5b6146358f8c83860101614487565b8286015250838352614648818701613b0e565b8a840152606086013593508484111561466057600080fd5b61466e8e8b868901016144e2565b9083015250608084013591508282111561468757600080fd5b6146958c8984870101614487565b60608201528652505050918301918301614588565b600082601f8301126146bb57600080fd5b813560206146cb613c3f83613f09565b82815260059290921b840181019181810190868411156146ea57600080fd5b8286015b84811015613d6c5780356001600160401b0381111561470d5760008081fd5b61471b8986838b0101613c20565b8452509183019183016146ee565b600082601f83011261473a57600080fd5b8135602061474a613c3f83613f09565b82815260059290921b8401810191818101908684111561476957600080fd5b8286015b84811015613d6c5780356001600160401b038082111561478d5760008081fd5b9088019060a0828b03601f19018113156147a75760008081fd5b6147af6139e5565b87840135838111156147c15760008081fd5b6147cf8d8a83880101614544565b82525060406147df818601613b0e565b8983015260606147f0818701613ae3565b8284015260809150818601358581111561480a5760008081fd5b6148188f8c838a01016144e2565b828501525050828501359250838311156148325760008081fd5b6148408d8a858801016146aa565b90820152865250505091830191830161476d565b600082601f83011261486557600080fd5b81356020614875613c3f83613f09565b82815260059290921b8401810191818101908684111561489457600080fd5b8286015b84811015613d6c576148a981613b0e565b8352918301918301614898565b80356001600160401b03811681146117b357600080fd5b600082601f8301126148de57600080fd5b813560206148ee613c3f83613f09565b82815260059290921b8401810191818101908684111561490d57600080fd5b8286015b84811015613d6c5780356001600160401b03808211156149315760008081fd5b90880190610160828b03601f190181131561494c5760008081fd5b614954613a90565b61495f888501613b1f565b8152604061496e818601613b1f565b89830152606061497f818701613b0e565b8284015260809150614992828701613afa565b9083015260a06149a3868201613b0e565b8284015260c091506149b6828701613afa565b9083015260e06149c7868201613afa565b8284015261010091506149db8287016148b6565b9083015261012085810135858111156149f45760008081fd5b614a028f8c838a01016144e2565b838501525061014091508186013585811115614a1e5760008081fd5b614a2c8f8c838a01016146aa565b828501525050614a3d838601613ae3565b908201528652505050918301918301614911565b600082601f830112614a6257600080fd5b81356020614a72613c3f83613f09565b82815260059290921b84018101918181019086841115614a9157600080fd5b8286015b84811015613d6c5780356001600160401b0380821115614ab55760008081fd5b9088019060a0828b03601f1901811315614acf5760008081fd5b614ad76139e5565b614ae2888501613afa565b815260408085013584811115614af85760008081fd5b614b068e8b83890101613c20565b8a8401525060608086013585811115614b1f5760008081fd5b614b2d8f8c838a0101613c20565b8385015250608091508186013585811115614b485760008081fd5b614b568f8c838a0101613c20565b828501525050614b67838601613b0e565b908201528652505050918301918301614a95565b60008060408385031215614b8e57600080fd5b614b9783613afa565b915060208301356001600160401b0380821115614bb357600080fd5b908401906101608287031215614bc857600080fd5b614bd0613a90565b823582811115614bdf57600080fd5b614beb88828601614729565b825250602083013582811115614c0057600080fd5b614c0c88828601614854565b602083015250604083013582811115614c2457600080fd5b614c30888286016148cd565b604083015250606083013582811115614c4857600080fd5b614c5488828601614a51565b606083015250608083013582811115614c6c57600080fd5b614c7888828601614854565b60808301525060a083013582811115614c9057600080fd5b614c9c888286016144e2565b60a08301525060c083013582811115614cb457600080fd5b614cc0888286016144e2565b60c083015250614cd260e08401613afa565b60e0820152610100614ce5818501613afa565b90820152610120614cf7848201613b0e565b908201526101408381013583811115614d0f57600080fd5b614d1b89828701613c20565b8284015250508093505050509250929050565b600060208284031215614d4057600080fd5b81356001600160401b0380821115614d5757600080fd5b908301906101608286031215614d6c57600080fd5b614d74613a90565b614d7d83613ae3565b8152614d8b60208401613ae3565b6020820152614d9c60408401613afa565b6040820152614dad60608401613b1f565b6060820152614dbe60808401613b1f565b6080820152614dcf60a08401613b0e565b60a0820152614de060c08401613ae3565b60c0820152614df160e08401613afa565b60e0820152610100614e04818501613ae3565b90820152610120614e16848201613b0e565b908201526101408381013583811115614e2e57600080fd5b614e3a88828701613c20565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614ea057603f19888603018452614e8e858351613d9b565b94509285019290850190600101614e72565b5092979650505050505050565b600060208284031215614ebf57600080fd5b81356001600160401b03811115614ed557600080fd5b6103a4848285016144e2565b600080600060608486031215614ef657600080fd5b614eff84613afa565b9250614f0d60208501613b1f565b9150614f1b60408501613b0e565b90509250925092565b600060208284031215614f3657600080fd5b611df082613ae3565b600081518084526020808501945080840160005b83811015614f7257815160ff1687529582019590820190600101614f53565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614ff457888303603f1901855281518051878552614fc888860182614f3f565b91890151858303868b0152919050614fe08183614f3f565b968901969450505090860190600101614fa4565b509098975050505050505050565b60008251615014818460208701613d77565b9190910192915050565b6020808252601d908201527f73656e646572206e6f74206d6174636820617265612061646472657373000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016150935761509361506b565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b63ffffffff93909316835261ffff918216602084015216604082015260600190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061511e5761511e6150f1565b92169190910492915050565b80820281158282048414176115595761155961506b565b600082615150576151506150f1565b500490565b808201808211156115595761155961506b565b600082615177576151776150f1565b500690565b818103818111156115595761155961506b565b60ff81811683821601908111156115595761155961506b565b6040815260006151bb6040830185613d9b565b90508260208301529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561527557600080fd5b81518015158114611df057600080fd5b60006020828403121561529757600080fd5b5051919050565b805160208083015191908110156113b85760001960209190910360031b1b16919050565b6000602082840312156152d457600080fd5b81516001600160401b038111156152ea57600080fd5b8201601f810184136152fb57600080fd5b8051615309613c3f82613bf9565b81815285602083850101111561531e57600080fd5b61447e826020830160208601613d77565b61ffff8181168382160190808211156105f6576105f661506b565b60408152600061535d6040830185613d9b565b828103602084015261447e8185613d9b565b60ff82811682821603908111156115595761155961506b565b600181815b808511156153c35781600019048211156153a9576153a961506b565b808516156153b657918102915b93841c939080029061538d565b509250929050565b6000826153da57506001611559565b816153e757506000611559565b81600181146153fd576002811461540757615423565b6001915050611559565b60ff8411156154185761541861506b565b50506001821b611559565b5060208310610133831016604e8410600b8410161715615446575081810a611559565b6154508383615388565b80600019048211156154645761546461506b565b029392505050565b6000611df083836153cb56fe2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320312d2d2d2d2d2d2d2d2d2d2d2d2d676574546f6b656e4272616e6368207461736b49642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e677468a2646970667358221220726a13607624c02634973b8b173b56ac0009d990b3fd97562eaca8f4a1d197b164736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010c5760003560e01c80638129fc1c1161009d5780638129fc1c146101e85780638da5cb5b146101f057806395edcb0814610210578063a903620c14610230578063af84b51f14610243578063b41bd78914610263578063b4b7035214610276578063d0d35b5514610289578063f2fde38b146102ad578063f2fe4fa5146102c057600080fd5b80631cc4f041146101115780631eda6e4f1461013957806334c76b25146101595780634b2dbcb8146101765780634b2e9b411461017657806354fd4d50146101965780635790c294146101a557806362329cc5146101ba5780636dabaf04146101cd578063715018a6146101e0575b600080fd5b61012461011f366004613b31565b6102cf565b60405190151581526020015b60405180910390f35b61014c610147366004613c76565b6103ac565b6040516101309190613d27565b6040805160208101909152600081525b6040516101309190613dc7565b610189610184366004613dda565b61046e565b6040516101309190613e4e565b60405160008152602001610130565b6101b86101b3366004613e9b565b61049f565b005b6101896101c8366004613f2c565b610520565b6101246101db366004613fcf565b6105fd565b6101b861061f565b6101b861065a565b6101f86106cf565b6040516001600160a01b039091168152602001610130565b61022361021e36600461425c565b6106de565b6040516101309190614426565b6101b861023e366004614b7b565b610e58565b610256610251366004614d2e565b610ed5565b6040516101309190614e4b565b6101b8610271366004614ead565b611189565b610124610284366004613b31565b6111c1565b610169610297366004614ee1565b6040805160208101909152600081529392505050565b6101b86102bb366004614f24565b6113be565b60606040516101309190614f7d565b6000806102fd836000015184602001518560600151866040015187608001518860a001518960e0015161145b565b60008181526066602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561035c57602002820191906000526020600020905b815481526020019060010190808311610348575b5050509190925250505060c085015190915060009060ff16610390576101208501516103899083906114ca565b90506103a4565b6101208501516103a190839061155f565b90505b949350505050565b6040805160208101909152606081526103e36040518060600160405280602f81526020016154cc602f91398563ffffffff166115d6565b60006103f533898989898e600061145b565b60008181526066602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561045457602002820191906000526020600020905b815481526020019060010190808311610440575b5050509190925250919d9c50505050505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505b5098975050505050505050565b6040518060400160405280600f81526020016e436c757374657252756c654172656160881b8152506065816040516104d79190615002565b90815260405190819003602001902054336001600160a01b03909116146105195760405162461bcd60e51b81526004016105109061501e565b60405180910390fd5b5050505050565b6060600082516001600160401b0381111561053d5761053d6139a6565b604051908082528060200260200182016040528015610566578160200160208202803683370190505b50905060005b81518110156105f657606584828151811061058957610589615055565b602002602001015160405161059e9190615002565b9081526040519081900360200190205482516001600160a01b03909116908390839081106105ce576105ce615055565b6001600160a01b03909216602092830291909101909101526105ef81615081565b905061056c565b5092915050565b600060ff8316610613576106138686868561161f565b50600195945050505050565b336106286106cf565b6001600160a01b03161461064e5760405162461bcd60e51b81526004016105109061509a565b61065860006116d9565b565b6000610666600161172b565b9050801561067e576000805461ff0019166101001790555b6106866117b8565b80156106cc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b604080516080810182526000808252602082015260609181018290528181019190915260405180604001604052806006815260200165456e67696e6560d01b8152506065816040516107309190615002565b90815260405190819003602001902054336001600160a01b03909116146107695760405162461bcd60e51b81526004016105109061501e565b308352606084015160009061077d906117e7565b905060008560600151610100015161079887606001516117f3565b6107a58860600151611812565b6040516020016107b7939291906150cf565b60405160208183030381529060405280519060200120905060006107f36107ee8460008a606001516118379092919063ffffffff16565b611891565b6000838152606860209081526040822060608b015180830151610100820151938d015160e090920151959650919461085693339392909163ffffffff1615610843578d6060015160e0015161084d565b8d6060015160c001515b8e51600061145b565b905061086289846118de565b60021960ff84160161087c5761087789611a09565b610e26565b60001960ff841601610a21576000896060015161014001516000815181106108a6576108a6615055565b6020026020010151606001519050806127106108c58c60600151611b41565b6108cf9190615107565b63ffffffff166108df919061512a565b90508260010154600014610911578260020154818460010154610902919061512a565b61090c9190615141565b610913565b805b60008681526067602090815260408083208e516001600160a01b0316845290915281208054929350839290919061094b908490615155565b92505081905550808360010160008282546109669190615155565b909155505060608a01516101400151805160009061098657610986615055565b6020026020010151606001516127106109a28c60600151611b41565b6109ac9190615107565b63ffffffff166109bc919061512a565b8360020160008282546109cf9190615155565b90915550508951604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca91015b60405180910390a250610e26565b60031960ff841601610ca357815489516001600160a01b03918216911603610ab9576060890151600090610a5b906107ee90886001611837565b90508260030154811115610aa65760405162461bcd60e51b815260206004820152601260248201527131b630b4b69030b6b7bab73a1032b93937b960711b6044820152606401610510565b610ab28a838684611b7c565b5050610e26565b6000610ac48a611c97565b905080600003610b065760405162461bcd60e51b815260206004820152600d60248201526c72616e646f6d206572726f722160981b6044820152606401610510565b610b11600a82615168565b9050610b436040518060400160405280600e81526020016d03930b73237b6903932b9bab63a160951b815250826115d6565b60058110610bdf57610b65670de0b6b3a7640000671a5e27eef13e000061517c565b836002016000828254610b78919061517c565b90915550610b9290508a8386671a5e27eef13e0000611b7c565b5089600001516001600160a01b03167f6747c18256028de8cd2fa276e75d6b4193ac34c1b55fa8e71797ac132d32ad3942604051610bd291815260200190565b60405180910390a2610c9d565b612710610bf6670de0b6b3a764000061254e61512a565b610c009190615141565b836002016000828254610c139190615155565b909155506127109050610c30670de0b6b3a76400006101c261512a565b610c3a9190615141565b836003016000828254610c4d9190615155565b90915550610c5e90508a8386611df7565b89600001516001600160a01b03167f1fb03e9599c87c5cac72b645424ca64f6bc62677569866c317244e3d0109b37f42604051610a1391815260200190565b50610e26565b60011960ff841601610e26576060890151600090610cc7906107ee90886001611837565b60008681526067602090815260408083208e516001600160a01b03168452909152902054909150811115610d345760405162461bcd60e51b81526020600482015260146024820152730d8d2e2ead2c8d2e8f240dcdee840cadcdeeaced60631b6044820152606401610510565b60008360010154828560020154610d4b919061512a565b610d559190615141565b60008781526067602090815260408083208f516001600160a01b03168452909152812080549293508492909190610d8d90849061517c565b9250508190555081846001016000828254610da8919061517c565b9250508190555080846002016000828254610dc3919061517c565b90915550610dd590508b848784611b7c565b508a516040805184815260208101849052428183015290516001600160a01b03909216917f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9181900360600190a250505b60ff831660031480610e3b575060ff83166001145b15610e4b57610e4b898285611df7565b5095979650505050505050565b6040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b815250606581604051610e979190615002565b90815260405190819003602001902054336001600160a01b0390911614610ed05760405162461bcd60e51b81526004016105109061501e565b505050565b6060806000836040015184606001518560800151604051602001610efb939291906150cf565b604051602081830303815290604052805190602001209050600160ff1684610120015160ff16036105f65760408051600480825260a0820190925290816020015b6060815260200190600190039081610f3c579050509150610f7e6040518060400160405280600a8152602001696765745374617465203160b01b815250611e60565b610140840151600090610f919082611ea3565b9050610fbe6040518060400160405280600a81526020016933b2ba29ba30ba32901960b11b815250611e60565b604080518082018252600e81526d75736572206c697175696469747960901b6020808301919091526000858152606782528381206001600160a01b038616825290915291909120546110109190611ef3565b8360008151811061102357611023615055565b60200260200101819052506110596040518060400160405280600a8152602001696765745374617465203360b01b815250611e60565b6110a06040518060400160405280600f81526020016e746f74616c206c697175696469747960881b8152506068600085815260200190815260200160002060010154611ef3565b836001815181106110b3576110b3615055565b60200260200101819052506111026040518060400160405280600c81526020016b706f6f6c2062616c616e636560a01b8152506068600085815260200190815260200160002060020154611ef3565b8360028151811061111557611115615055565b60200260200101819052506111636040518060400160405280600b81526020016a6665652062616c616e636560a81b8152506068600085815260200190815260200160002060030154611ef3565b8360038151811061117657611176615055565b6020026020010181905250505092915050565b336111926106cf565b6001600160a01b0316146111b85760405162461bcd60e51b81526004016105109061509a565b6106cc81612013565b600060405180604001604052806006815260200165456e67696e6560d01b8152506065816040516111f29190615002565b90815260405190819003602001902054336001600160a01b039091161461122b5760405162461bcd60e51b81526004016105109061501e565b60006112543385602001518660600151876040015188608001518960a001518a60e0015161145b565b60008181526066602052604081208054929350919003611284578054600181018255600082815260208120909101555b60c085015160009060ff166113095761012086015160408051845460208181028301840184528201818152611302949387928492918491908401828280156112eb57602002820191906000526020600020905b8154815260200190600101908083116112d7575b5050505050815250506114ca90919063ffffffff16565b905061137b565b610120860151604080518454602081810283018401845282018181526113789493879284929184919084018282801561136157602002820191906000526020600020905b81548152602001906001019080831161134d575b50505050508152505061155f90919063ffffffff16565b90505b806113b35760c086015160ff166113a25761012086015161139d908390612135565b6113b3565b6101208601516113b39083906121e5565b935050505b50919050565b336113c76106cf565b6001600160a01b0316146113ed5760405162461bcd60e51b81526004016105109061509a565b6001600160a01b0381166114525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610510565b6106cc816116d9565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b600061155383600001516000815181106114e6576114e6615055565b6020026020010151600184600060086114ff919061518f565b61150a90600461518f565b61151590600861518f565b61152090600461518f565b61152b90601061518f565b61153690601861518f565b61154190602061518f565b61154b919061518f565b60ff1661225d565b60011490505b92915050565b6000611553836000015160008151811061157b5761157b615055565b602002602001015160018460006008611594919061518f565b61159f90600461518f565b6115aa90600861518f565b6115b590600461518f565b6115c090601061518f565b6115cb90601861518f565b61153690602061518f565b61161b82826040516024016115ec9291906151a8565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261227c565b5050565b61164e6040518060400160405280600e81526020016d5f7570646174652061726773203160901b815250611e60565b600061165982612285565b9050805160000361166a57506116d3565b6000858585604051602001611681939291906150cf565b60408051601f19818403018152918152815160209283012060008181526068909352908220909250906116b5908590611ea3565b81546001600160a01b0319166001600160a01b039190911617905550505b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611772578160ff16600114801561174e5750303b155b61176a5760405162461bcd60e51b8152600401610510906151ca565b506000919050565b60005460ff8084169116106117995760405162461bcd60e51b8152600401610510906151ca565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166117df5760405162461bcd60e51b815260040161051090615218565b610658612295565b606061155982306122c5565b60006115598260a0015160106000600861180d9190615155565b61225d565b60006115598260a0015160106000600861182c9190615155565b61180d906010615155565b61183f6138a3565b61186e8361184e84600161518f565b60ff168151811061186157611861615055565b602002602001015161236a565b60028151811061188057611880615055565b602002602001015190509392505050565b8051600090158015906118a657508151602110155b6118af57600080fd5b6000806118bb84612473565b8151919350915060208210156103a45760208290036101000a9004949350505050565b60006118ed83606001516124ba565b905060021960ff83160161194e5760ff8116600214610ed05760405162461bcd60e51b815260206004820152601c60248201527f5f636865636b434d4420696e707574206272616e6368206572726f72000000006044820152606401610510565b60001960ff8316016119b95760ff8116600314610ed05760405162461bcd60e51b8152602060048201526024808201527f5f636865636b434d4420616464206c6971756964697479206272616e63682065604482015263393937b960e11b6064820152608401610510565b60ff8116600114610ed05760405162461bcd60e51b815260206004820152601a6024820152792fb1b432b1b5a1a6a21033b0b990313930b731b41032b93937b960311b6044820152606401610510565b600060656040518060400160405280600f81526020016e2930b73237b6a3b2b732b930ba37b960891b815250604051611a429190615002565b90815260405160209181900382019020546060840151918201516101008301516001600160a01b039092169350839263063738cb9290611a81906117f3565b611a8e8760600151611812565b6020880151606089015160c00151895160405160e089901b6001600160e01b03191681526001600160a01b03978816600482015263ffffffff968716602482015261ffff958616604482015294909316606485015290851660848401529290921660a4820152911660c482015260e4016020604051808303816000875af1158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed09190615263565b60006115598260a00151602060006008611b5b9190615155565b611b66906010615155565b611b71906010615155565b61182c906008615155565b600080611b876124df565b9050611b9f6040518060200160405280606081525090565b600160608301819052808352604080518281528082019091529060208083019080368337505050610140830152604080516001808252818301909252906020808301908036833750505061016083018190528051859190600090611c0557611c05615055565b6020908102919091010152600161012083015260011960ff861601611c305760676040830152611c38565b606660408301525b611c428183612526565b6000868152606660209081526040909120825180518493611c679284929101906138bd565b50905050816101600151600081518110611c8357611c83615055565b602002602001015192505050949350505050565b60008060656040518060400160405280600f81526020016e2930b73237b6a3b2b732b930ba37b960891b815250604051611cd19190615002565b90815260405160209181900382019020546060850151918201516101008301516001600160a01b039092169350839263524562279290611d10906117f3565b611d1d8860600151611812565b602089015160608a015160e0908101518b516040519289901b6001600160e01b03191683526101006004840152600261010484015261060f60f31b6101248401526001600160a01b03978816602484015263ffffffff968716604484015261ffff958616606484015293909416608482015290851660a48201529290911660c48301529190911660e4820152610144016020604051808303816000875af1158015611dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df09190615285565b9392505050565b6000611e016124df565b9050611e196040518060200160405280606081525090565b6065604083015260016020830152611e318183612526565b6000848152606660209081526040909120825180518493611e569284929101906138bd565b5050505050505050565b6106cc81604051602401611e749190613dc7565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905261227c565b600080611eb7611eb285612b1e565b61236a565b90506103a4611ed4828560ff168151811061186157611861615055565b600281518110611ee657611ee6615055565b6020026020010151612b44565b60606000611f0084612b5e565b90506000611f0d84612b69565b9050611f506040518060400160405280600e81526020016d0b4b4b4b4b4b4b481d1bd55a5b9d60921b815250611f4b83611f469061529e565b612b7c565b612bc8565b60408051600380825260808201909252600091816020015b6060815260200190600190039081611f685790505090508281600081518110611f9357611f93615055565b6020026020010181905250611fc3604051806040016040528060048152602001631d5a5b9d60e21b815250612b5e565b81600181518110611fd657611fd6615055565b60200260200101819052508181600281518110611ff557611ff5615055565b602002602001018190525061200981612c0d565b9695505050505050565b3361201c6106cf565b6001600160a01b0316146120425760405162461bcd60e51b81526004016105109061509a565b60005b815181101561161b5781818151811061206057612060615055565b6020026020010151606583838151811061207c5761207c615055565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b8152600401600060405180830381865afa1580156120c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120e991908101906152c2565b6040516120f69190615002565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b031990921691909117905561212e81615081565b9050612045565b6121bf8260000160008154811061214e5761214e615055565b9060005260206000200154600180846000600861216b919061518f565b61217690600461518f565b61218190600861518f565b61218c90600461518f565b61219790601061518f565b6121a290601861518f565b6121ad90602061518f565b6121b7919061518f565b60ff16612c8b565b826000016000815481106121d5576121d5615055565b6000918252602090912001555050565b6121bf826000016000815481106121fe576121fe615055565b9060005260206000200154600180846000600861221b919061518f565b61222690600461518f565b61223190600861518f565b61223c90600461518f565b61224790601061518f565b61225290601861518f565b6121a290602061518f565b91821c91600080612271600180861b61517c565b909416949350505050565b6106cc81612cb0565b60606000611df0611eb284612b1e565b600054610100900460ff166122bc5760405162461bcd60e51b815260040161051090615218565b610658336116d9565b606060006122da611eb2856101600151612b1e565b905060005b815181101561235f57600061231461230284848151811061186157611861615055565b600081518110611ee657611ee6615055565b9050846001600160a01b0316816001600160a01b03160361234e5761234483838151811061186157611861615055565b9350505050611559565b5061235881615081565b90506122df565b506060949350505050565b606061237582612cd1565b61237e57600080fd5b600061238983612d0c565b90506000816001600160401b038111156123a5576123a56139a6565b6040519080825280602002602001820160405280156123de57816020015b6123cb6138a3565b8152602001906001900390816123c35790505b50905060006123f08560200151612d91565b85602001516123ff9190615155565b90506000805b848110156124685761241683612e0c565b915060405180604001604052808381526020018481525084828151811061243f5761243f615055565b60209081029190910101526124548284615155565b92508061246081615081565b915050612405565b509195945050505050565b60008060006124858460200151612d91565b905060008185602001516124999190615155565b905060008286600001516124ad919061517c565b9196919550909350505050565b60006115598260a001516008600060086124d49190615155565b61182c906010615155565b6124e7613908565b6124ef613908565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60c081015160019015612541578061253d81615081565b9150505b8160e001516127101461255c578061255881615081565b9150505b81610100015161271014612578578061257481615081565b9150505b6101408201515115158061259157506101608201515115155b806125a157506101a08201515115155b156126135760008261016001515183610140015151116125e657826101a001515183610160015151116125da57826101a00151516125ee565b826101600151516125ee565b826101400151515b90506125fb81600461512a565b6126059083615155565b60ff90911661012084015290505b61263d6040518060600160405280602e8152602001615479602e913983610120015160ff166115d6565b806001600160401b03811115612655576126556139a6565b60405190808252806020026020018201604052801561267e578160200160208202803683370190505b508352815161268e908490612eb0565b61269c838360200151612f08565b6126aa838360600151612f41565b6126b8838360400151612f90565b6126c783836101200151612fd4565b6126e86040518060600160405280602581526020016154a760259139611e60565b60008060019050836080015162ffffff166127101461271d5761270f858560800151613065565b61271a60018361532f565b91505b8360a0015163ffffffff166127101461274c5761273e858560a001516130cc565b61274960028361532f565b91505b60c0840151156127925760c084015185518261276781615081565b93508151811061277957612779615055565b602090810291909101015261278f60048361532f565b91505b8360e00151612710146127db5760e08401518551826127b081615081565b9350815181106127c2576127c2615055565b60209081029190910101526127d860088361532f565b91505b83610100015161271014612826576101008401518551826127fb81615081565b93508151811061280d5761280d615055565b602090810291909101015261282360108361532f565b91505b61012084015160ff1615612b145760005b84610120015160ff16811015612ae25760008561014001515111801561286257508461014001515181105b156128b957846101400151818151811061287e5761287e615055565b60200260200101518660000151838061289690615081565b9450815181106128a8576128a8615055565b6020026020010181815250506128e7565b8551600090836128c881615081565b9450815181106128da576128da615055565b6020026020010181815250505b60008561016001515111801561290257508461016001515181105b1561295957846101600151818151811061291e5761291e615055565b60200260200101518660000151838061293690615081565b94508151811061294857612948615055565b602002602001018181525050612987565b85516000908361296881615081565b94508151811061297a5761297a615055565b6020026020010181815250505b6000856101800151511180156129a257508461018001515181105b156129fc5784610180015181815181106129be576129be615055565b602002602001015160ff16866000015183806129d990615081565b9450815181106129eb576129eb615055565b602002602001018181525050612a29565b8551819083612a0a81615081565b945081518110612a1c57612a1c615055565b6020026020010181815250505b6000856101a0015151118015612a445750846101a001515181105b15612aa457846101a001518181518110612a6057612a60615055565b60200260200101516001600160a01b031686600001518380612a8190615081565b945081518110612a9357612a93615055565b602002602001018181525050612ad2565b855160009083612ab381615081565b945081518110612ac557612ac5615055565b6020026020010181815250505b612adb81615081565b9050612837565b50612aee60208361532f565b9150612b146040518060800160405280604481526020016154fb604491398651516115d6565b610519858361313f565b612b266138a3565b50604080518082019091528151815260209182019181019190915290565b8051600090601514612b5557600080fd5b61155982611891565b60606115598261318f565b6060611559612b77836131df565b61318f565b6060612b8782613319565b612b94608084901b613319565b60405161060f60f31b6020820152602281019290925260428201526062016040516020818303038152906040529050919050565b61161b8282604051602401612bde92919061534a565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b17905261227c565b6060612c3c6040518060400160405280600c81526020016b656e636f64654c697374203160a01b815250611e60565b6000612c47836134c3565b9050612c766040518060400160405280600c81526020016b32b731b7b232a634b9ba101960a11b815250611e60565b611df0612c85825160c06135f3565b826137a9565b600083821b8183612c9f600180881b61517c565b901b19969096161795945050505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b80516000908103612ce457506000919050565b6020820151805160001a9060c0821015612d02575060009392505050565b5060019392505050565b80516000908103612d1f57506000919050565b600080612d2f8460200151612d91565b8460200151612d3e9190615155565b9050600084600001518560200151612d569190615155565b90505b80821015612d8857612d6a82612e0c565b612d749083615155565b915082612d8081615081565b935050612d59565b50909392505050565b8051600090811a6080811015612daa5750600092915050565b60b8811080612dc5575060c08110801590612dc5575060f881105b15612dd35750600192915050565b60c0811015612e0057612de8600160b861536f565b612df59060ff168261517c565b611df0906001615155565b612de8600160f861536f565b80516000908190811a6080811015612e2757600191506105f6565b60b8811015612e4d57612e3b60808261517c565b612e46906001615155565b91506105f6565b60c0811015612e7a5760b78103600185019450806020036101000a855104600182018101935050506105f6565b60f8811015612e8e57612e3b60c08261517c565b60019390930151602084900360f7016101000a900490920160f5190192915050565b612ee58260000151600081518110612eca57612eca615055565b60200260200101518260ff16600860ff16600060ff16612c8b565b82518051600090612ef857612ef8615055565b6020026020010181815250505050565b612ee58260000151600081518110612f2257612f22615055565b60200260200101518260ff16600460ff16600060086121b7919061518f565b612ee58260000151600081518110612f5b57612f5b615055565b60200260200101518260ff16600460ff1660006008612f7a919061518f565b612f8590600461518f565b6121b790600861518f565b612ee58260000151600081518110612faa57612faa615055565b60200260200101518260ff16600860ff1660006008612fc9919061518f565b6121b790600461518f565b612ee58260000151600081518110612fee57612fee615055565b60200260200101518260ff16600860ff166000600861300d919061518f565b61301890600461518f565b61302390600861518f565b61302e90600461518f565b61303990601061518f565b61304490601861518f565b61304f90602061518f565b61305a90602061518f565b6121b790602061518f565b612ee5826000015160008151811061307f5761307f615055565b60200260200101518262ffffff16601860ff16600060086130a0919061518f565b6130ab90600461518f565b6130b690600861518f565b6130c190600461518f565b6121b790601061518f565b612ee582600001516000815181106130e6576130e6615055565b60200260200101518263ffffffff16602060ff1660006008613108919061518f565b61311390600461518f565b61311e90600861518f565b61312990600461518f565b61313490601061518f565b6121b790601861518f565b612ee5826000015160008151811061315957613159615055565b60200260200101518261ffff16601060ff1660006008613179919061518f565b61318490600461518f565b612fc990600861518f565b606080825160011480156131be57506080836000815181106131b3576131b3615055565b016020015160f81c11155b156131ca575081611559565b611df06131d9845160806135f3565b846137a9565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b60208110156132505781818151811061322857613228615055565b01602001516001600160f81b031916600003613250578061324881615081565b91505061320d565b600061325d82602061517c565b6001600160401b03811115613274576132746139a6565b6040519080825280601f01601f19166020018201604052801561329e576020820181803683370190505b50905060005b81518110156133105783836132b881615081565b9450815181106132ca576132ca615055565b602001015160f81c60f81b8282815181106132e7576132e7615055565b60200101906001600160f81b031916908160001a9053508061330881615081565b9150506132a4565b50949350505050565b7aff00000000000000ff00000000000000ff00000000000000ff000063ffffffff60401b604083901c90811663ffffffff60c01b84161760201c63ffffffff60601b919091166001600160e01b031984161717601081901c91821678ff00000000000000ff00000000000000ff00000000000000ff60301b821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c16179061345f827f0606060606060606060606060606060606060606060606060606060606060606615155565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16600761348f919061512a565b6134b9827f3030303030303030303030303030303030303030303030303030303030303030615155565b6115599190615155565b606081516000036134e45760408051600080825260208201909252906105f6565b6000805b835181101561352b5783818151811061350357613503615055565b602002602001015151826135179190615155565b91508061352381615081565b9150506134e8565b6000826001600160401b03811115613545576135456139a6565b6040519080825280601f01601f19166020018201604052801561356f576020820181803683370190505b50600092509050602081015b855183101561331057600086848151811061359857613598615055565b6020026020010151905060006020820190506135b683828451613826565b8785815181106135c8576135c8615055565b602002602001015151836135dc9190615155565b9250505082806135eb90615081565b93505061357b565b606080603884101561365d57604080516001808252818301909252906020820181803683370190505090506136288385615155565b601f1a60f81b8160008151811061364157613641615055565b60200101906001600160f81b031916908160001a905350611df0565b600060015b61366c8187615141565b15613692578161367b81615081565b925061368b90506101008261512a565b9050613662565b61369d826001615155565b6001600160401b038111156136b4576136b46139a6565b6040519080825280601f01601f1916602001820160405280156136de576020820181803683370190505b5092506136eb8583615155565b6136f6906037615155565b601f1a60f81b8360008151811061370f5761370f615055565b60200101906001600160f81b031916908160001a905350600190505b8181116137a05761010061373f828461517c565b61374b9061010061546c565b6137559088615141565b61375f9190615168565b601f1a60f81b83828151811061377757613777615055565b60200101906001600160f81b031916908160001a9053508061379881615081565b91505061372b565b50509392505050565b6060806040519050835180825260208201818101602087015b818310156137da5780518352602092830192016137c2565b50855184518101855292509050808201602086015b818310156138075780518352602092830192016137ef565b508651929092011591909101601f01601f191660405250905092915050565b8282825b602081106138625781518352613841602084615155565b925061384e602083615155565b915061385b60208261517c565b905061382a565b801561389b576000600161387783602061517c565b6138839061010061546c565b61388d919061517c565b835185518216911916178452505b505050505050565b604051806040016040528060008152602001600081525090565b8280548282559060005260206000209081019282156138f8579160200282015b828111156138f85782518255916020019190600101906138dd565b50613904929150613991565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b808211156139045760008155600101613992565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156139df576139df6139a6565b60405290565b60405160a081016001600160401b03811182821017156139df576139df6139a6565b604080519081016001600160401b03811182821017156139df576139df6139a6565b604051608081016001600160401b03811182821017156139df576139df6139a6565b60405161018081016001600160401b03811182821017156139df576139df6139a6565b604051606081016001600160401b03811182821017156139df576139df6139a6565b60405161016081016001600160401b03811182821017156139df576139df6139a6565b604051601f8201601f191681016001600160401b0381118282101715613adb57613adb6139a6565b604052919050565b80356001600160a01b03811681146117b357600080fd5b803563ffffffff811681146117b357600080fd5b803560ff811681146117b357600080fd5b803561ffff811681146117b357600080fd5b60006101408284031215613b4457600080fd5b613b4c6139bc565b613b5583613ae3565b8152613b6360208401613ae3565b6020820152613b7460408401613ae3565b6040820152613b8560608401613afa565b6060820152613b9660808401613afa565b6080820152613ba760a08401613ae3565b60a0820152613bb860c08401613b0e565b60c0820152613bc960e08401613b1f565b60e0820152610100613bdc818501613b0e565b90820152610120613bee848201613b0e565b908201529392505050565b60006001600160401b03821115613c1257613c126139a6565b50601f01601f191660200190565b600082601f830112613c3157600080fd5b8135613c44613c3f82613bf9565b613ab3565b818152846020838601011115613c5957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b031215613c9357600080fd5b613c9c89613ae3565b9750613caa60208a01613ae3565b9650613cb860408a01613ae3565b9550613cc660608a01613afa565b9450613cd460808a01613ae3565b9350613ce260a08a01613afa565b925060c08901356001600160401b03811115613cfd57600080fd5b613d098b828c01613c20565b925050613d1860e08a01613b1f565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015613d6c5783518252928401926001929092019190840190613d4c565b509695505050505050565b60005b83811015613d92578181015183820152602001613d7a565b50506000910152565b60008151808452613db3816020860160208601613d77565b601f01601f19169290920160200192915050565b602081526000611df06020830184613d9b565b60008060008060008060c08789031215613df357600080fd5b613dfc87613ae3565b9550613e0a60208801613ae3565b9450613e1860408801613afa565b9350613e2660608801613ae3565b9250613e3460808801613afa565b9150613e4260a08801613b1f565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015613e8f5783516001600160a01b031683529284019291840191600101613e6a565b50909695505050505050565b60008060008060808587031215613eb157600080fd5b613eba85613afa565b9350613ec860208601613b1f565b9250613ed660408601613b0e565b915060608501356001600160401b03811115613ef157600080fd5b613efd87828801613c20565b91505092959194509250565b60006001600160401b03821115613f2257613f226139a6565b5060051b60200190565b60006020808385031215613f3f57600080fd5b82356001600160401b0380821115613f5657600080fd5b818501915085601f830112613f6a57600080fd5b8135613f78613c3f82613f09565b81815260059190911b83018401908481019088831115613f9757600080fd5b8585015b8381101561049257803585811115613fb35760008081fd5b613fc18b89838a0101613c20565b845250918601918601613f9b565b600080600080600060a08688031215613fe757600080fd5b613ff086613afa565b9450613ffe60208701613b1f565b935061400c60408701613b1f565b925061401a60608701613b0e565b915060808601356001600160401b0381111561403557600080fd5b61404188828901613c20565b9150509295509295909350565b600082601f83011261405f57600080fd5b8135602061406f613c3f83613f09565b82815260059290921b8401810191818101908684111561408e57600080fd5b8286015b84811015613d6c5780356001600160401b03808211156140b157600080fd5b9088019060a0828b03601f190112156140c957600080fd5b6140d16139e5565b6140dc878401613b0e565b815260406140eb818501613ae3565b888301526060840135818301526080840135606083015260a0840135838111156141155760008081fd5b8085019450508b603f85011261412d57600092508283fd5b87840135925061413f613c3f84613f09565b83815260069390931b8401810192888101908d85111561415f5760008081fd5b948201945b848610156141b65782868f03121561417c5760008081fd5b614184613a07565b61418d87613afa565b81528a8701358060040b81146141a35760008081fd5b818c015282529482019490890190614164565b6080840152505085525050918301918301614092565b6000608082840312156141de57600080fd5b6141e6613a29565b90506141f182613ae3565b81526141ff60208301613b0e565b602082015260408201356001600160401b038082111561421e57600080fd5b61422a85838601613c20565b6040840152606084013591508082111561424357600080fd5b5061425084828501613c20565b60608301525092915050565b6000806040838503121561426f57600080fd5b82356001600160401b038082111561428657600080fd5b9084019060a0828703121561429a57600080fd5b6142a26139e5565b6142ab83613ae3565b81526142b960208401613ae3565b60208201526142ca60408401613ae3565b60408201526060830135828111156142e157600080fd5b830161018081890312156142f457600080fd5b6142fc613a4b565b61430582613ae3565b815261431360208301613ae3565b602082015261432460408301613ae3565b604082015261433560608301613ae3565b60608201526080820135608082015260a082013560a082015261435a60c08301613afa565b60c082015261436b60e08301613afa565b60e082015261010061437e818401613afa565b90820152610120614390838201613b0e565b9082015261014082810135858111156143a857600080fd5b6143b48b82860161404e565b82840152505061016080830135858111156143ce57600080fd5b6143da8b828601613c20565b82840152505080606084015250506143f460808401613b0e565b60808201529350602085013591508082111561440f57600080fd5b5061441c858286016141cc565b9150509250929050565b6020815260018060a01b03825116602082015260ff6020830151166040820152600060408301516080606084015261446160a0840182613d9b565b90506060840151601f1984830301608085015261447e8282613d9b565b95945050505050565b600082601f83011261449857600080fd5b813560206144a8613c3f83613f09565b82815260059290921b840181019181810190868411156144c757600080fd5b8286015b84811015613d6c57803583529183019183016144cb565b600082601f8301126144f357600080fd5b81356020614503613c3f83613f09565b82815260059290921b8401810191818101908684111561452257600080fd5b8286015b84811015613d6c5761453781613ae3565b8352918301918301614526565b600082601f83011261455557600080fd5b81356020614565613c3f83613f09565b82815260059290921b8401810191818101908684111561458457600080fd5b8286015b84811015613d6c5780356001600160401b03808211156145a757600080fd5b90880190601f196080838c03820112156145c057600080fd5b6145c8613a29565b87840135838111156145d957600080fd5b84016060818e03840112156145ed57600080fd5b6145f5613a6e565b9250614602898201613b0e565b83526040614611818301613ae3565b8a85015260608201358581111561462757600080fd5b6146358f8c83860101614487565b8286015250838352614648818701613b0e565b8a840152606086013593508484111561466057600080fd5b61466e8e8b868901016144e2565b9083015250608084013591508282111561468757600080fd5b6146958c8984870101614487565b60608201528652505050918301918301614588565b600082601f8301126146bb57600080fd5b813560206146cb613c3f83613f09565b82815260059290921b840181019181810190868411156146ea57600080fd5b8286015b84811015613d6c5780356001600160401b0381111561470d5760008081fd5b61471b8986838b0101613c20565b8452509183019183016146ee565b600082601f83011261473a57600080fd5b8135602061474a613c3f83613f09565b82815260059290921b8401810191818101908684111561476957600080fd5b8286015b84811015613d6c5780356001600160401b038082111561478d5760008081fd5b9088019060a0828b03601f19018113156147a75760008081fd5b6147af6139e5565b87840135838111156147c15760008081fd5b6147cf8d8a83880101614544565b82525060406147df818601613b0e565b8983015260606147f0818701613ae3565b8284015260809150818601358581111561480a5760008081fd5b6148188f8c838a01016144e2565b828501525050828501359250838311156148325760008081fd5b6148408d8a858801016146aa565b90820152865250505091830191830161476d565b600082601f83011261486557600080fd5b81356020614875613c3f83613f09565b82815260059290921b8401810191818101908684111561489457600080fd5b8286015b84811015613d6c576148a981613b0e565b8352918301918301614898565b80356001600160401b03811681146117b357600080fd5b600082601f8301126148de57600080fd5b813560206148ee613c3f83613f09565b82815260059290921b8401810191818101908684111561490d57600080fd5b8286015b84811015613d6c5780356001600160401b03808211156149315760008081fd5b90880190610160828b03601f190181131561494c5760008081fd5b614954613a90565b61495f888501613b1f565b8152604061496e818601613b1f565b89830152606061497f818701613b0e565b8284015260809150614992828701613afa565b9083015260a06149a3868201613b0e565b8284015260c091506149b6828701613afa565b9083015260e06149c7868201613afa565b8284015261010091506149db8287016148b6565b9083015261012085810135858111156149f45760008081fd5b614a028f8c838a01016144e2565b838501525061014091508186013585811115614a1e5760008081fd5b614a2c8f8c838a01016146aa565b828501525050614a3d838601613ae3565b908201528652505050918301918301614911565b600082601f830112614a6257600080fd5b81356020614a72613c3f83613f09565b82815260059290921b84018101918181019086841115614a9157600080fd5b8286015b84811015613d6c5780356001600160401b0380821115614ab55760008081fd5b9088019060a0828b03601f1901811315614acf5760008081fd5b614ad76139e5565b614ae2888501613afa565b815260408085013584811115614af85760008081fd5b614b068e8b83890101613c20565b8a8401525060608086013585811115614b1f5760008081fd5b614b2d8f8c838a0101613c20565b8385015250608091508186013585811115614b485760008081fd5b614b568f8c838a0101613c20565b828501525050614b67838601613b0e565b908201528652505050918301918301614a95565b60008060408385031215614b8e57600080fd5b614b9783613afa565b915060208301356001600160401b0380821115614bb357600080fd5b908401906101608287031215614bc857600080fd5b614bd0613a90565b823582811115614bdf57600080fd5b614beb88828601614729565b825250602083013582811115614c0057600080fd5b614c0c88828601614854565b602083015250604083013582811115614c2457600080fd5b614c30888286016148cd565b604083015250606083013582811115614c4857600080fd5b614c5488828601614a51565b606083015250608083013582811115614c6c57600080fd5b614c7888828601614854565b60808301525060a083013582811115614c9057600080fd5b614c9c888286016144e2565b60a08301525060c083013582811115614cb457600080fd5b614cc0888286016144e2565b60c083015250614cd260e08401613afa565b60e0820152610100614ce5818501613afa565b90820152610120614cf7848201613b0e565b908201526101408381013583811115614d0f57600080fd5b614d1b89828701613c20565b8284015250508093505050509250929050565b600060208284031215614d4057600080fd5b81356001600160401b0380821115614d5757600080fd5b908301906101608286031215614d6c57600080fd5b614d74613a90565b614d7d83613ae3565b8152614d8b60208401613ae3565b6020820152614d9c60408401613afa565b6040820152614dad60608401613b1f565b6060820152614dbe60808401613b1f565b6080820152614dcf60a08401613b0e565b60a0820152614de060c08401613ae3565b60c0820152614df160e08401613afa565b60e0820152610100614e04818501613ae3565b90820152610120614e16848201613b0e565b908201526101408381013583811115614e2e57600080fd5b614e3a88828701613c20565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614ea057603f19888603018452614e8e858351613d9b565b94509285019290850190600101614e72565b5092979650505050505050565b600060208284031215614ebf57600080fd5b81356001600160401b03811115614ed557600080fd5b6103a4848285016144e2565b600080600060608486031215614ef657600080fd5b614eff84613afa565b9250614f0d60208501613b1f565b9150614f1b60408501613b0e565b90509250925092565b600060208284031215614f3657600080fd5b611df082613ae3565b600081518084526020808501945080840160005b83811015614f7257815160ff1687529582019590820190600101614f53565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614ff457888303603f1901855281518051878552614fc888860182614f3f565b91890151858303868b0152919050614fe08183614f3f565b968901969450505090860190600101614fa4565b509098975050505050505050565b60008251615014818460208701613d77565b9190910192915050565b6020808252601d908201527f73656e646572206e6f74206d6174636820617265612061646472657373000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016150935761509361506b565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b63ffffffff93909316835261ffff918216602084015216604082015260600190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061511e5761511e6150f1565b92169190910492915050565b80820281158282048414176115595761155961506b565b600082615150576151506150f1565b500490565b808201808211156115595761155961506b565b600082615177576151776150f1565b500690565b818103818111156115595761155961506b565b60ff81811683821601908111156115595761155961506b565b6040815260006151bb6040830185613d9b565b90508260208301529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561527557600080fd5b81518015158114611df057600080fd5b60006020828403121561529757600080fd5b5051919050565b805160208083015191908110156113b85760001960209190910360031b1b16919050565b6000602082840312156152d457600080fd5b81516001600160401b038111156152ea57600080fd5b8201601f810184136152fb57600080fd5b8051615309613c3f82613bf9565b81815285602083850101111561531e57600080fd5b61447e826020830160208601613d77565b61ffff8181168382160190808211156105f6576105f661506b565b60408152600061535d6040830185613d9b565b828103602084015261447e8185613d9b565b60ff82811682821603908111156115595761155961506b565b600181815b808511156153c35781600019048211156153a9576153a961506b565b808516156153b657918102915b93841c939080029061538d565b509250929050565b6000826153da57506001611559565b816153e757506000611559565b81600181146153fd576002811461540757615423565b6001915050611559565b60ff8411156154185761541861506b565b50506001821b611559565b5060208310610133831016604e8410600b8410161715615446575081810a611559565b6154508383615388565b80600019048211156154645761546461506b565b029392505050565b6000611df083836153cb56fe2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320312d2d2d2d2d2d2d2d2d2d2d2d2d676574546f6b656e4272616e6368207461736b49642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e677468a2646970667358221220726a13607624c02634973b8b173b56ac0009d990b3fd97562eaca8f4a1d197b164736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
