{
  "_format": "hh-sol-artifact-1",
  "contractName": "Fomo3dHandler",
  "sourceName": "contracts/V3/handler/Fomo3dHandler.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "time",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FomoClaim",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "time",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FomoDividend",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "time",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "multiple",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FomoInput",
      "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": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "canSync",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "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": "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": "getHelper",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "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": [
        {
          "internalType": "address",
          "name": "_relationTree",
          "type": "address"
        }
      ],
      "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": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "stepCount",
          "type": "uint256"
        }
      ],
      "name": "sync",
      "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": "0x608060405234801561001057600080fd5b5061622180620000216000396000f3fe608060405234801561001057600080fd5b506004361061012d5760003560e01c8063715018a6116100b3578063715018a61461023a5780638da5cb5b1461024257806395edcb081461024a578063a05a0fba1461026a578063a903620c1461028f578063af84b51f146102a1578063b41bd789146102c1578063b4b70352146102d4578063c4d66de8146102e7578063d0d35b55146102fa578063f2fde38b1461030d578063f2fe4fa51461032057600080fd5b806303cfa742146101325780631cc4f0411461015c5780631eda6e4f1461017f57806324eb1fa71461019f57806334c76b25146101b45780634b2dbcb8146101d15780634b2e9b41146101d157806354fd4d50146101f15780635790c2941461020057806362329cc5146102145780636dabaf0414610227575b600080fd5b6068546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61016f61016a366004613577565b61032f565b6040519015158152602001610153565b61019261018d3660046136bc565b6103a7565b6040516101539190613771565b6101b26101ad3660046137c1565b610446565b005b6040805160208101909152600081525b6040516101539190613833565b6101e46101df366004613846565b6108e4565b60405161015391906138be565b60405160008152602001610153565b6101b261020e36600461390b565b50505050565b6101e46102223660046139a0565b610915565b61016f610235366004613a43565b6109f2565b6101b2610a14565b61013f610a4f565b61025d610258366004613cdb565b610a5e565b6040516101539190613ea5565b61027d610278366004613f06565b6110b0565b60405160ff9091168152602001610153565b6101b261029d366004614617565b5050565b6102b46102af3660046147cc565b61118e565b60405161015391906148e9565b6101b26102cf36600461494b565b611790565b61016f6102e2366004613577565b61182a565b6101b26102f536600461497f565b61187c565b6101c461030836600461499a565b61190c565b6101b261031b36600461497f565b611923565b60606040516101539190614a21565b606854604051631cc4f04160e01b81526000916001600160a01b031690631cc4f04190610360908590600401614b6a565b602060405180830381865afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a19190614b89565b92915050565b604080516020810182526060815260685491516349af56c960e11b815290916001600160a01b03169063935ead92906103f4908c908c908c908c908c908c908c908c903390600401614ba4565b600060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104399190810190614c1b565b9998505050505050505050565b600082815260676020908152604080832060058101548251808501889052600160201b90910463ffffffff16818401528251808203840181526060909101835280519084012080855260669093529220805480156108155760058401546104c39063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff1642116106865760408051808201909152601a81527903130ba31b410383937b1b2b9b9903a34b6b2903932b6b0b4b7160351b602082015260058501546105419190429061052c9063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff1661053c9190614d12565b6119c3565b600584015461055f9063ffffffff600160c01b820481169116614cf5565b63ffffffff164210156105a85760405162461bcd60e51b815260206004820152600c60248201526b18d85b881b9bdd081b1bdbdd60a21b60448201526064015b60405180910390fd5b60088401546005850154600160b01b900461ffff1681116105d8576005850154600160b01b900461ffff166105da565b805b90508181106105e957816105eb565b805b6068549091506001600160a01b031663aff422378661061e8661060e8688614d12565b610619600189614d12565b611a08565b60028b896040518663ffffffff1660e01b81526004016106429594939291906154a9565b600060405180830381600087803b15801561065c57600080fd5b505af1158015610670573d6000803e3d6000fd5b5050505061067d85611b32565b50505050505050565b6005840154600160601b900463ffffffff16600060016106a6888461553d565b6106b09190614d12565b90506106bd600184614d12565b81106106d1576106ce600184614d12565b90505b6068546001600160a01b031663aff42237876106ee878686611a08565b60018c8a6040518663ffffffff1660e01b81526004016107129594939291906154a9565b600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b5084925050505b8181116107c257606485828154811061076257610762615550565b90600052602060002090600202016001015460636107809190615566565b61078a9190615593565b85828154811061079c5761079c615550565b6000918252602090912060016002909202010155806107ba816155a7565b915050610747565b506107cd878361553d565b60058701805463ffffffff92909216600160601b0263ffffffff60601b199092169190911790556107ff600184614d12565b810361080e5761080e86611b85565b50506108dc565b600584015461083a9063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff1642116108895760405162461bcd60e51b81526020600482015260186024820152771c1c9bd8d95cdcc81d1a5b59481b9bdd081c995858da195960421b604482015260640161059f565b60058401805463ffffffff600160801b8204811692916008916108b6918591600160401b90910416614cf5565b92506101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505b5098975050505050505050565b6060600082516001600160401b03811115610932576109326133b8565b60405190808252806020026020018201604052801561095b578160200160208202803683370190505b50905060005b81518110156109eb57606584828151811061097e5761097e615550565b602002602001015160405161099391906155c0565b9081526040519081900360200190205482516001600160a01b03909116908390839081106109c3576109c3615550565b6001600160a01b03909216602092830291909101909101526109e4816155a7565b9050610961565b5092915050565b600060ff8316610a0857610a0886868685611c67565b50600195945050505050565b33610a1d610a4f565b6001600160a01b031614610a435760405162461bcd60e51b815260040161059f906155dc565b610a4d60006123b4565b565b6033546001600160a01b031690565b60408051608081018252600080825260208201526060918101829052818101919091523082526060830151600090610a9590612406565b9050600084606001516101000151610ab08660600151612412565b610abd8760600151612431565b604051602001610acf93929190615611565b60408051808303601f1901815282825280516020918201206000818152606783528381206005810154938601839052600160201b90930463ffffffff16938501939093529350916060016040516020818303038152906040528051906020012090506000610b55610b508660008b606001516124569092919063ffffffff16565b6124b0565b90506000610c11338a60600151602001518b6060015161010001518c602001518d6060015160e0015163ffffffff16600014610b99578d6060015160e00151610ba3565b8d6060015160c001515b8e51604080516001600160a01b039788166020808301919091529688168183015263ffffffff958616606082015293871660808501529190931660a08301529390911660c0820152600060e08083019190915283518083039091018152610100909101909252815191012090565b9050610c1d89836124fd565b60ff821660808a01819052611043576005840154610c519063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff16421115610cb15760405162461bcd60e51b815260206004820152602260248201527f63616e206e6f7420696e707574206265666f7265206461696c792070726f6365604482015261737360f01b606482015260840161059f565b606854895160405163324cda7b60e21b81526000926001600160a01b03169163c93369ec91610ce4918891600401615633565b608060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d25919061564a565b600085815260666020526040902081519192509015610e5f57612710610d4e8c606001516125db565b63ffffffff168c606001516101400151600081518110610d7057610d70615550565b6020908102919091010151606001516005890154610d999190600160a01b900461ffff16615566565b610da39190615566565b610dad9190615593565b81836020015163ffffffff1681548110610dc957610dc9615550565b90600052602060002090600202016001016000828254610de9919061553d565b9091555050604080516060810182528c516001600160a01b0390811682526001602080840182815260009585018681528754808501895588885292909620945160029092029094018054945160ff16600160a01b026001600160a81b031990951691909316179290921781559151910155610fe8565b805463ffffffff1660208084019190915260408051606080820183528e516001600160a01b03168252600093820193909352918d015183929182019061271090610ea8906125db565b63ffffffff168f606001516101400151600081518110610eca57610eca615550565b60209081029190910101516060015160058c0154610ef39190600160a01b900461ffff16615566565b610efd9190615566565b610f079190615593565b90528154600180820184556000938452602093849020835160029093020180548486015160ff16600160a01b026001600160a81b03199091166001600160a01b03948516171781556040938401519082015585526068548e5183516302e3e56360e41b8152600481018b905290831660248201528651151560448201529386015163ffffffff16606485015291850151151560848401526060850151151560a48401521690632e3e56309060c401600060405180830381600087803b158015610fcf57600080fd5b505af1158015610fe3573d6000803e3d6000fd5b505050505b61103c612710610ffb8d606001516125db565b61100591906156c8565b63ffffffff16878d60600151610140015160008151811061102857611028615550565b6020026020010151606001518e8c8c612616565b5050611090565b60001960ff8316016110605761105a8982866128c0565b50611090565b60011960ff8316016110775761105a8982866128c0565b60021960ff8316016110905761108e8982866128c0565b505b60ff82166110a3576110a389828461295e565b5095979650505050505050565b600081815260676020908152604080832060058101548251938401869052600160201b900463ffffffff169183019190915290829060600160408051601f19818403018152828252805160209182012060008181526066909252919020635288727b60e11b835290925073__$32dd9d1375090e9229647b2f619d1a113f$__9163a510e4f69161114591869190600401615b41565b602060405180830381865af4158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615b66565b949350505050565b60608060008360400151846060015185608001516040516020016111b493929190615611565b60408051808303601f1901815291815281516020928301206000818152606790935291206101208601519192509060ff16600019016112705760405163d2e91a5160e01b815273__$32dd9d1375090e9229647b2f619d1a113f$__9063d2e91a5190611224908490600401615b83565b600060405180830381865af4158015611241573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112699190810190615bc6565b9250611787565b600260ff1685610120015160ff160361143d5761014085015160009061129690826129c0565b905060006112b360018861014001516129c090919063ffffffff16565b9050600084826040516020016112d792919091825261ffff16602082015260400190565b60408051601f1981840301815291815281516020928301206000818152606690935290822060685481549294509092916001600160a01b0390911690637481c01b908990859061ffff8a1690811061133157611331615550565b60009182526020909120600290910201546040516001600160e01b031960e085901b16815261136d92916001600160a01b031690600401615633565b606060405180830381865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae9190615c7e565b604051633bca677160e21b815290915073__$32dd9d1375090e9229647b2f619d1a113f$__9063ef299dc4906113ec90859085908a90600401615d14565b600060405180830381865af4158015611409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114319190810190615bc6565b97505050505050611787565b600460ff1685610120015160ff1603611649576101408501516000906114639082612a03565b9050600061148060018861014001516129c090919063ffffffff16565b9050600084826040516020016114a492919091825261ffff16602082015260400190565b60408051601f19818403018152828252805160209182012060008181526066909252918120606854637481c01b60e01b85529294509290916001600160a01b031690637481c01b906114fc908a908990600401615633565b606060405180830381865afa158015611519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153d9190615c7e565b60685460405163324cda7b60e21b81529192506000916001600160a01b039091169063c93369ec906115759087908a90600401615633565b608060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b6919061564a565b6020810151604051633bca677160e21b815291925073__$32dd9d1375090e9229647b2f619d1a113f$__9163ef299dc4916115f79187918791600401615d48565b600060405180830381865af4158015611614573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163c9190810190615bc6565b9850505050505050611787565b600360ff1685610120015160ff16036116935760405163554e23b560e11b815273__$32dd9d1375090e9229647b2f619d1a113f$__9063aa9c476a90611224908490600401615b83565b600560ff1685610120015160ff1603611787576101408501516000906116b990826129c0565b9050600083826040516020016116dd92919091825261ffff16602082015260400190565b60408051601f198184030181528282528051602091820120600081815260669092529190206366c122a960e11b83529092509073__$32dd9d1375090e9229647b2f619d1a113f$__9063cd8245529061173c9087908590600401615b41565b600060405180830381865af4158015611759573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117819190810190615bc6565b95505050505b50909392505050565b33611799610a4f565b6001600160a01b0316146117bf5760405162461bcd60e51b815260040161059f906155dc565b6117c881612a4e565b604080518082018252600c81526b2327a6a799a22422a62822a960a11b602082015290516065916117f8916155c0565b90815260405190819003602001902054606880546001600160a01b0319166001600160a01b0390921691909117905550565b606854604051631f464a1d60e11b81526000916001600160a01b031690633e8c943a9061185d9085903390600401615d7e565b6020604051808303816000875af115801561037d573d6000803e3d6000fd5b60006118886001612b70565b905080156118a0576000805461ff0019166101001790555b6118a8612bfd565b606980546001600160a01b0319166001600160a01b038416179055801561029d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6040805160208101909152600081525b9392505050565b3361192c610a4f565b6001600160a01b0316146119525760405162461bcd60e51b815260040161059f906155dc565b6001600160a01b0381166119b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059f565b6119c0816123b4565b50565b61029d82826040516024016119d9929190615da6565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052612c2c565b60606000611a168484614d12565b611a2190600161553d565b6001600160401b03811115611a3857611a386133b8565b604051908082528060200260200182016040528015611a8357816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611a565790505b50905060005b8151811015611b295785611a9d828761553d565b81548110611aad57611aad615550565b600091825260209182902060408051606081018252600290930290910180546001600160a01b038116845260ff600160a01b9091041693830193909352600190920154918101919091528251839083908110611b0b57611b0b615550565b60200260200101819052508080611b21906155a7565b915050611a89565b50949350505050565b600581018054600160201b900463ffffffff16906004611b5183615dc8565b825463ffffffff9182166101009390930a928302919092021990911617905550600080825560018201819055600490910155565b600060648260040154611b989190615593565b60058301805463ffffffff60601b191690556004830154909150611bbd908290614d12565b60048301558154611bcf908290614d12565b82556007820154606490611bed90600160a01b900460ff1682615deb565b611bfa9060ff1683615566565b611c049190615593565b8260010154611c13919061553d565b600183015560058201805463ffffffff600160801b820481169291600891611c45918591600160401b90910416614cf5565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000611c7282612c35565b90508051600003611c83575061020e565b6000858585604051602001611c9a93929190615611565b60408051808303601f190181529082905280516020909101206068546343e08ad160e01b8352600483018290529092506001600160a01b0316906343e08ad190602401600060405180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b50505060008281526067602052604081209150611d299085906129c0565b60058201805463ffffffff60401b1916600160401b63ffffffff93841681029190911791829055900416611d9f5760405162461bcd60e51b815260206004820152601c60248201527f70726f636573732074696d652063616e206e6f74206265207a65726f00000000604482015260640161059f565b611daa8460016129c0565b60058201805463ffffffff60801b1916600160801b63ffffffff93841681029190911791829055900416611e205760405162461bcd60e51b815260206004820181905260248201527f70726f6365737320696e74657276616c2063616e206e6f74206265207a65726f604482015260640161059f565b611e2b8460026129c0565b60058201805461ffff60a01b1916600160a01b61ffff93841681029190911791829055900416611e9b5760405162461bcd60e51b815260206004820152601b60248201527a636f656666696369656e742063616e206e6f74206265207a65726f60281b604482015260640161059f565b611ea68460036129c0565b8160050160166101000a81548161ffff021916908361ffff160217905550611ecf8460046129c0565b60058201805463ffffffff60c01b1916600160c01b63ffffffff93841681029190911791829055600160801b82048316910490911611611f4b5760405162461bcd60e51b815260206004820152601760248201527633b0b6b29036b0bc1034b73a32b93b30b61032b93937b960491b604482015260640161059f565b611f568460056129c0565b81600501601c6101000a81548160ff021916908360ff160217905550611f7d8460066129c0565b81600501601d6101000a81548160ff021916908360ff160217905550611fa48460076129c0565b81600501601e6101000a81548160ff021916908360ff160217905550611fcb8460086129c0565b81600501601f6101000a81548160ff021916908360ff160217905550611ff28460096129c0565b60078201805460ff60a01b1916600160a01b60ff938416810291909117918290556064910490911611156120615760405162461bcd60e51b815260206004820152601660248201527531b630b4b6903832b931b2b73a30b3b29032b93937b960511b604482015260640161059f565b600581015460ff600160f81b8204811691600160f01b810482169161209891600160e81b8104821691600160e01b90910416615e04565b6120a29190615e04565b6120ac9190615e04565b60ff166064146120f15760405162461bcd60e51b815260206004820152601060248201526f3832b931b2b73a30b3b29032b93937b960811b604482015260640161059f565b60006120fe85600a612c45565b60058301805467ffffffff000000001916600160201b17905590506000805b825181101561225857600061214a84838151811061213d5761213d615550565b60200260200101516124b0565b905060008160ff161161219c5760405162461bcd60e51b815260206004820152601a60248201527970657263656e746167652063616e206e6f74206265207a65726f60301b604482015260640161059f565b6121a960ff82168461553d565b925060648311156122085760405162461bcd60e51b815260206004820152602360248201527f70657263656e7461676520746f746f6c2063616e206e6f74206578636565642060448201526203130360ec1b606482015260840161059f565b6008850180546001810182556000918252602091829020918104909101805460ff938416601f9093166101000a928302939092021990911691909117905580612250816155a7565b91505061211d565b5061226486600b612a03565b6006840180546001600160a01b0319166001600160a01b039290921691909117905561229186600c612a03565b6007840180546001600160a01b0319166001600160a01b03928316179055600684015416156123a9576069546006840154604051637d92a04160e11b81526001600160a01b039283169263fb254082926122f392899290911690600401615633565b600060405180830381600087803b15801561230d57600080fd5b505af1158015612321573d6000803e3d6000fd5b5050606954600786015460405163074d08cb60e11b81526001600160a01b039283169450630e9a1196935061236492899260009291169082908190600401615e1d565b6020604051808303816000875af1158015612383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a79190615b66565b505b505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606103a18230612c84565b60006103a18260a0015160106000600861242c919061553d565b612d29565b60006103a18260a0015160106000600861244b919061553d565b61242c90601061553d565b61245e613391565b61248d8361246d846001615e04565b60ff168151811061248057612480615550565b6020026020010151612d48565b60028151811061249f5761249f615550565b602002602001015190509392505050565b8051600090158015906124c557508151602110155b6124ce57600080fd5b6000806124da84612e51565b8151919350915060208210156111865760208290036101000a9004949350505050565b60ff81161580612510575060ff81166001145b8061251e575060ff81166002145b8061252c575060ff81166003145b61256a5760405162461bcd60e51b815260206004820152600f60248201526e2fb1b432b1b5a1a6a21032b93937b960891b604482015260640161059f565b60006125798360600151612e98565b905060ff82166125d65760ff81166001146125d65760405162461bcd60e51b815260206004820152601c60248201527f5f636865636b434d4420696e707574206272616e6368206572726f7200000000604482015260640161059f565b505050565b60006103a18260a001516020600060086125f5919061553d565b61260090601061553d565b61260b90601061553d565b61244b90600861553d565b60068501546001600160a01b03161561278d5760608301516000906126469061264190856001612456565b612ebd565b90506001600160a01b0381166126975760405162461bcd60e51b8152602060048201526016602482015275706172656e742063616e206e6f74206265207a65726f60501b604482015260640161059f565b6005860154600090606490600160f81b900460ff166126b6888b615566565b6126c09190615566565b6126ca9190615593565b905061270d60405180604001604052806016815260200175185919081b9bd91948191e5b985b5a58c8185dd85c9960521b815250826001600160801b03166119c3565b606954855160405163074d08cb60e11b81526001600160a01b0390921691630e9a11969161274691879187916000908890600401615e1d565b6020604051808303816000875af1158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190615b66565b5050505b60058501805463ffffffff19164263ffffffff16179081905586906127be908690600160a01b900461ffff16615566565b6127c89190615566565b8560040160008282546127db919061553d565b90915550506005850154606490600160e01b900460ff166127fc8887615566565b6128069190615566565b6128109190615593565b856000016000828254612823919061553d565b90915550506005850154606490600160e81b900460ff166128448887615566565b61284e9190615566565b6128589190615593565b85600201600082825461286b919061553d565b90915550506005850154606490600160f01b900460ff1661288c8887615566565b6128969190615566565b6128a09190615593565b8560030160008282546128b3919061553d565b9091555050505050505050565b6000600160ff16846080015160ff16036128e7576128dd84612ed7565b6060850151608001525b606854604051634c64ddc560e11b81526001600160a01b03909116906398c9bb8a9061291b90879087908790600401616077565b6020604051808303816000875af115801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118691906160a2565b60685460405163a0ad622f60e01b81526001600160a01b039091169063a0ad622f90612992908690869086906004016160bb565b600060405180830381600087803b1580156129ac57600080fd5b505af115801561067d573d6000803e3d6000fd5b6000806129d46129cf85613144565b612d48565b90506111866129f1828560ff168151811061248057612480615550565b60028151811061213d5761213d615550565b600080612a126129cf85613144565b9050611186612a2f828560ff168151811061248057612480615550565b600281518110612a4157612a41615550565b6020026020010151612ebd565b33612a57610a4f565b6001600160a01b031614612a7d5760405162461bcd60e51b815260040161059f906155dc565b60005b815181101561029d57818181518110612a9b57612a9b615550565b60200260200101516065838381518110612ab757612ab7615550565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b8152600401600060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b2491908101906160e7565b604051612b3191906155c0565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055612b69816155a7565b9050612a80565b60008054610100900460ff1615612bb7578160ff166001148015612b935750303b155b612baf5760405162461bcd60e51b815260040161059f9061612f565b506000919050565b60005460ff808416911610612bde5760405162461bcd60e51b815260040161059f9061612f565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff16612c245760405162461bcd60e51b815260040161059f9061617d565b610a4d61316a565b6119c08161319a565b6060600061191c6129cf84613144565b60606000612c556129cf85613144565b9050611186612c72828560ff168151811061248057612480615550565b60028151811061248057612480615550565b60606000612c996129cf856101600151613144565b905060005b8151811015612d1e576000612cd3612cc184848151811061248057612480615550565b600081518110612a4157612a41615550565b9050846001600160a01b0316816001600160a01b031603612d0d57612d0383838151811061248057612480615550565b93505050506103a1565b50612d17816155a7565b9050612c9e565b506060949350505050565b91821c91600080612d3d600180861b614d12565b909416949350505050565b6060612d53826131bb565b612d5c57600080fd5b6000612d67836131f6565b90506000816001600160401b03811115612d8357612d836133b8565b604051908082528060200260200182016040528015612dbc57816020015b612da9613391565b815260200190600190039081612da15790505b5090506000612dce8560200151613272565b8560200151612ddd919061553d565b90506000805b84811015612e4657612df4836132ed565b9150604051806040016040528083815260200184815250848281518110612e1d57612e1d615550565b6020908102919091010152612e32828461553d565b925080612e3e816155a7565b915050612de3565b509195945050505050565b6000806000612e638460200151613272565b90506000818560200151612e77919061553d565b90506000828660000151612e8b9190614d12565b9196919550909350505050565b60006103a18260a00151600860006008612eb2919061553d565b61244b90601061553d565b8051600090601514612ece57600080fd5b6103a1826124b0565b60008082606001516101000151612ef18460600151612412565b612efe8560600151612431565b604051602001612f1093929190615611565b60408051601f198184030181529082905280516020909101206068548551637481c01b60e01b84529193506000926001600160a01b0390911691637481c01b91612f5e918691600401615633565b606060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9f9190615c7e565b90508060400151612fe75760405162461bcd60e51b815260206004820152601260248201527118d85b1b195c881a185cc818db185a5b595960721b604482015260640161059f565b60006040808301829052825191835260685486519151631535f75960e31b81526001600160a01b039091169163a9afbac89161302991879187906004016161c8565b600060405180830381600087803b15801561304357600080fd5b505af1158015613057573d6000803e3d6000fd5b5050506000848152606760205260409020600601546001600160a01b031615905061118657606954855160405163209eea8d60e01b8152600481018690526001600160a01b03918216602482015260006044820181905292919091169063209eea8d906064016020604051808303816000875af11580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906160a2565b90506131306040518060400160405280600c81526020016b1a5b9d9a5d1948185dd85c9960a21b815250826119c3565b61313a818361553d565b9695505050505050565b61314c613391565b50604080518082019091528151815260209182019181019190915290565b600054610100900460ff166131915760405162461bcd60e51b815260040161059f9061617d565b610a4d336123b4565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b805160009081036131ce57506000919050565b6020820151805160001a9060c08210156131ec575060009392505050565b5060019392505050565b8051600090810361320957506000919050565b6000806132198460200151613272565b8460200151613228919061553d565b9050600084600001518560200151613240919061553d565b90505b8082101561178757613254826132ed565b61325e908361553d565b91508261326a816155a7565b935050613243565b8051600090811a608081101561328b5750600092915050565b60b88110806132a6575060c081108015906132a6575060f881105b156132b45750600192915050565b60c08110156132e1576132c9600160b8615deb565b6132d69060ff1682614d12565b61191c90600161553d565b6132c9600160f8615deb565b80516000908190811a608081101561330857600191506109eb565b60b881101561332e5761331c608082614d12565b61332790600161553d565b91506109eb565b60c081101561335b5760b78103600185019450806020036101000a855104600182018101935050506109eb565b60f881101561336f5761331c60c082614d12565b60019390930151602084900360f7016101000a900490920160f5190192915050565b604051806040016040528060008152602001600081525090565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156133f1576133f16133b8565b60405290565b60405160a081016001600160401b03811182821017156133f1576133f16133b8565b604080519081016001600160401b03811182821017156133f1576133f16133b8565b604051608081016001600160401b03811182821017156133f1576133f16133b8565b60405161018081016001600160401b03811182821017156133f1576133f16133b8565b604051606081016001600160401b03811182821017156133f1576133f16133b8565b60405161016081016001600160401b03811182821017156133f1576133f16133b8565b604051602081016001600160401b03811182821017156133f1576133f16133b8565b604051601f8201601f191681016001600160401b038111828210171561350f5761350f6133b8565b604052919050565b80356001600160a01b0381168114612bf857600080fd5b63ffffffff811681146119c057600080fd5b8035612bf88161352e565b60ff811681146119c057600080fd5b8035612bf88161354b565b803561ffff81168114612bf857600080fd5b6000610140828403121561358a57600080fd5b6135926133ce565b61359b83613517565b81526135a960208401613517565b60208201526135ba60408401613517565b60408201526135cb60608401613540565b60608201526135dc60808401613540565b60808201526135ed60a08401613517565b60a08201526135fe60c0840161355a565b60c082015261360f60e08401613565565b60e082015261010061362281850161355a565b9082015261012061363484820161355a565b908201529392505050565b60006001600160401b03821115613658576136586133b8565b50601f01601f191660200190565b600082601f83011261367757600080fd5b813561368a6136858261363f565b6134e7565b81815284602083860101111561369f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b0312156136d957600080fd5b6136e289613517565b97506136f060208a01613517565b96506136fe60408a01613517565b9550606089013561370e8161352e565b945061371c60808a01613517565b935060a089013561372c8161352e565b925060c08901356001600160401b0381111561374757600080fd5b6137538b828c01613666565b92505061376260e08a01613565565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b808310156137b65783518252928401926001929092019190840190613796565b509695505050505050565b600080604083850312156137d457600080fd5b50508035926020909101359150565b60005b838110156137fe5781810151838201526020016137e6565b50506000910152565b6000815180845261381f8160208601602086016137e3565b601f01601f19169290920160200192915050565b60208152600061191c6020830184613807565b60008060008060008060c0878903121561385f57600080fd5b61386887613517565b955061387660208801613517565b945060408701356138868161352e565b935061389460608801613517565b925060808701356138a48161352e565b91506138b260a08801613565565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156138ff5783516001600160a01b0316835292840192918401916001016138da565b50909695505050505050565b6000806000806080858703121561392157600080fd5b843561392c8161352e565b935061393a60208601613565565b9250604085013561394a8161354b565b915060608501356001600160401b0381111561396557600080fd5b61397187828801613666565b91505092959194509250565b60006001600160401b03821115613996576139966133b8565b5060051b60200190565b600060208083850312156139b357600080fd5b82356001600160401b03808211156139ca57600080fd5b818501915085601f8301126139de57600080fd5b81356139ec6136858261397d565b81815260059190911b83018401908481019088831115613a0b57600080fd5b8585015b8381101561090857803585811115613a275760008081fd5b613a358b89838a0101613666565b845250918601918601613a0f565b600080600080600060a08688031215613a5b57600080fd5b8535613a668161352e565b9450613a7460208701613565565b9350613a8260408701613565565b92506060860135613a928161354b565b915060808601356001600160401b03811115613aad57600080fd5b613ab988828901613666565b9150509295509295909350565b600082601f830112613ad757600080fd5b81356020613ae76136858361397d565b82815260059290921b84018101918181019086841115613b0657600080fd5b8286015b848110156137b65780356001600160401b0380821115613b2957600080fd5b9088019060a0828b03601f19011215613b4157600080fd5b613b496133f7565b86830135613b568161354b565b81526040613b65848201613517565b888301526060840135818301526080840135606083015260a084013583811115613b8f5760008081fd5b8085019450508b603f850112613ba757600092508283fd5b878401359250613bb96136858461397d565b83815260069390931b8401810192888101908d851115613bd95760008081fd5b948201945b84861015613c335782868f031215613bf65760008081fd5b613bfe613419565b8635613c098161352e565b8152868b0135600481900b8114613c205760008081fd5b818c015282529482019490890190613bde565b6080840152505085525050918301918301613b0a565b600060808284031215613c5b57600080fd5b613c6361343b565b9050613c6e82613517565b81526020820135613c7e8161354b565b602082015260408201356001600160401b0380821115613c9d57600080fd5b613ca985838601613666565b60408401526060840135915080821115613cc257600080fd5b50613ccf84828501613666565b60608301525092915050565b60008060408385031215613cee57600080fd5b82356001600160401b0380821115613d0557600080fd5b9084019060a08287031215613d1957600080fd5b613d216133f7565b613d2a83613517565b8152613d3860208401613517565b6020820152613d4960408401613517565b6040820152606083013582811115613d6057600080fd5b83016101808189031215613d7357600080fd5b613d7b61345d565b613d8482613517565b8152613d9260208301613517565b6020820152613da360408301613517565b6040820152613db460608301613517565b60608201526080820135608082015260a082013560a0820152613dd960c08301613540565b60c0820152613dea60e08301613540565b60e0820152610100613dfd818401613540565b90820152610120613e0f83820161355a565b908201526101408281013585811115613e2757600080fd5b613e338b828601613ac6565b8284015250506101608083013585811115613e4d57600080fd5b613e598b828601613666565b8284015250508060608401525050613e736080840161355a565b608082015293506020850135915080821115613e8e57600080fd5b50613e9b85828601613c49565b9150509250929050565b6020815260018060a01b03825116602082015260ff60208301511660408201526000604083015160806060840152613ee060a0840182613807565b90506060840151601f19848303016080850152613efd8282613807565b95945050505050565b600060208284031215613f1857600080fd5b5035919050565b600082601f830112613f3057600080fd5b81356020613f406136858361397d565b82815260059290921b84018101918181019086841115613f5f57600080fd5b8286015b848110156137b65780358352918301918301613f63565b600082601f830112613f8b57600080fd5b81356020613f9b6136858361397d565b82815260059290921b84018101918181019086841115613fba57600080fd5b8286015b848110156137b657613fcf81613517565b8352918301918301613fbe565b600082601f830112613fed57600080fd5b81356020613ffd6136858361397d565b82815260059290921b8401810191818101908684111561401c57600080fd5b8286015b848110156137b65780356001600160401b038082111561403f57600080fd5b90880190601f196080838c038201121561405857600080fd5b61406061343b565b878401358381111561407157600080fd5b84016060818e038401121561408557600080fd5b61408d613480565b92508881013561409c8161354b565b835260406140ab828201613517565b8a8501526060820135858111156140c157600080fd5b6140cf8f8c83860101613f1f565b82860152508383526140e281870161355a565b8a84015260608601359350848411156140fa57600080fd5b6141088e8b86890101613f7a565b9083015250608084013591508282111561412157600080fd5b61412f8c8984870101613f1f565b60608201528652505050918301918301614020565b600082601f83011261415557600080fd5b813560206141656136858361397d565b82815260059290921b8401810191818101908684111561418457600080fd5b8286015b848110156137b65780356001600160401b038111156141a75760008081fd5b6141b58986838b0101613666565b845250918301918301614188565b600082601f8301126141d457600080fd5b813560206141e46136858361397d565b82815260059290921b8401810191818101908684111561420357600080fd5b8286015b848110156137b65780356001600160401b03808211156142275760008081fd5b9088019060a0828b03601f19018113156142415760008081fd5b6142496133f7565b878401358381111561425b5760008081fd5b6142698d8a83880101613fdc565b825250604061427981860161355a565b89830152606061428a818701613517565b828401526080915081860135858111156142a45760008081fd5b6142b28f8c838a0101613f7a565b828501525050828501359250838311156142cc5760008081fd5b6142da8d8a85880101614144565b908201528652505050918301918301614207565b600082601f8301126142ff57600080fd5b8135602061430f6136858361397d565b82815260059290921b8401810191818101908684111561432e57600080fd5b8286015b848110156137b65780356143458161354b565b8352918301918301614332565b80356001600160401b0381168114612bf857600080fd5b600082601f83011261437a57600080fd5b8135602061438a6136858361397d565b82815260059290921b840181019181810190868411156143a957600080fd5b8286015b848110156137b65780356001600160401b03808211156143cd5760008081fd5b90880190610160828b03601f19018113156143e85760008081fd5b6143f06134a2565b6143fb888501613565565b8152604061440a818601613565565b89830152606061441b81870161355a565b828401526080915061442e828701613540565b9083015260a061443f86820161355a565b8284015260c09150614452828701613540565b9083015260e0614463868201613540565b828401526101009150614477828701614352565b9083015261012085810135858111156144905760008081fd5b61449e8f8c838a0101613f7a565b8385015250610140915081860135858111156144ba5760008081fd5b6144c88f8c838a0101614144565b8285015250506144d9838601613517565b9082015286525050509183019183016143ad565b600082601f8301126144fe57600080fd5b8135602061450e6136858361397d565b82815260059290921b8401810191818101908684111561452d57600080fd5b8286015b848110156137b65780356001600160401b03808211156145515760008081fd5b9088019060a0828b03601f190181131561456b5760008081fd5b6145736133f7565b61457e888501613540565b8152604080850135848111156145945760008081fd5b6145a28e8b83890101613666565b8a84015250606080860135858111156145bb5760008081fd5b6145c98f8c838a0101613666565b83850152506080915081860135858111156145e45760008081fd5b6145f28f8c838a0101613666565b82850152505061460383860161355a565b908201528652505050918301918301614531565b6000806040838503121561462a57600080fd5b82356146358161352e565b915060208301356001600160401b038082111561465157600080fd5b90840190610160828703121561466657600080fd5b61466e6134a2565b82358281111561467d57600080fd5b614689888286016141c3565b82525060208301358281111561469e57600080fd5b6146aa888286016142ee565b6020830152506040830135828111156146c257600080fd5b6146ce88828601614369565b6040830152506060830135828111156146e657600080fd5b6146f2888286016144ed565b60608301525060808301358281111561470a57600080fd5b614716888286016142ee565b60808301525060a08301358281111561472e57600080fd5b61473a88828601613f7a565b60a08301525060c08301358281111561475257600080fd5b61475e88828601613f7a565b60c08301525061477060e08401613540565b60e0820152610100614783818501613540565b9082015261012061479584820161355a565b9082015261014083810135838111156147ad57600080fd5b6147b989828701613666565b8284015250508093505050509250929050565b6000602082840312156147de57600080fd5b81356001600160401b03808211156147f557600080fd5b90830190610160828603121561480a57600080fd5b6148126134a2565b61481b83613517565b815261482960208401613517565b602082015261483a60408401613540565b604082015261484b60608401613565565b606082015261485c60808401613565565b608082015261486d60a0840161355a565b60a082015261487e60c08401613517565b60c082015261488f60e08401613540565b60e08201526101006148a2818501613517565b908201526101206148b484820161355a565b9082015261014083810135838111156148cc57600080fd5b6148d888828701613666565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561493e57603f1988860301845261492c858351613807565b94509285019290850190600101614910565b5092979650505050505050565b60006020828403121561495d57600080fd5b81356001600160401b0381111561497357600080fd5b61118684828501613f7a565b60006020828403121561499157600080fd5b61191c82613517565b6000806000606084860312156149af57600080fd5b83356149ba8161352e565b92506149c860208501613565565b915060408401356149d88161354b565b809150509250925092565b600081518084526020808501945080840160005b83811015614a1657815160ff16875295820195908201906001016149f7565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614a9857888303603f1901855281518051878552614a6c888601826149e3565b91890151858303868b0152919050614a8481836149e3565b968901969450505090860190600101614a48565b509098975050505050505050565b614ab18282516133ab565b6020810151614ac360208401826133ab565b506040810151614ad660408401826133ab565b506060810151614aee606084018263ffffffff169052565b506080810151614b06608084018263ffffffff169052565b5060a0810151614b1960a08401826133ab565b5060c0810151614b2e60c084018260ff169052565b5060e0810151614b4460e084018261ffff169052565b506101008181015160ff81168483015250506101208181015160ff81168483015261020e565b61014081016103a18284614aa6565b80518015158114612bf857600080fd5b600060208284031215614b9b57600080fd5b61191c82614b79565b6001600160a01b038a811682528981166020830152888116604083015263ffffffff88811660608401528782166080840152861660a083015261012060c08301819052600091614bf684830188613807565b925061ffff861660e085015280851661010085015250509a9950505050505050505050565b60006020808385031215614c2e57600080fd5b82516001600160401b0380821115614c4557600080fd5b8185019150828287031215614c5957600080fd5b614c616134c5565b825182811115614c7057600080fd5b80840193505086601f840112614c8557600080fd5b82519150614c956136858361397d565b82815260059290921b83018401918481019088841115614cb457600080fd5b938501935b83851015614cd257845182529385019390850190614cb9565b8252509695505050505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156109eb576109eb614cdf565b818103818111156103a1576103a1614cdf565b805480835260008281526020808220940193909190825b82601f82011015614fc357815460ff80821688526020614d65818a01838560081c1660ff169052565b6040614d7a818b01848660101c1660ff169052565b6060614d8f818c01858760181c1660ff169052565b6080614da3818d018688871c1660ff169052565b60a09350614dba848d01868860281c1660ff169052565b60c0614dcf818e01878960301c1660ff169052565b60e0614de4818f01888a60381c1660ff169052565b60ff88861c8816166101008f0152614e076101208f01888a60481c1660ff169052565b614e1c6101408f01888a60501c1660ff169052565b614e316101608f01888a60581c1660ff169052565b60ff88851c8816166101808f0152614e546101a08f01888a60681c1660ff169052565b614e696101c08f01888a60701c1660ff169052565b614e7e6101e08f01888a60781c1660ff169052565b60ff88841c8816166102008f0152614ea16102208f01888a60881c1660ff169052565b614eb66102408f01888a60901c1660ff169052565b614ecb6102608f01888a60981c1660ff169052565b60ff88871c8816166102808f0152614eee6102a08f01888a60a81c1660ff169052565b614f036102c08f01888a60b01c1660ff169052565b614f186102e08f01888a60b81c1660ff169052565b60ff88831c8816166103008f0152614f3b6103208f01888a60c81c1660ff169052565b614f506103408f01888a60d01c1660ff169052565b614f656103608f01888a60d81c1660ff169052565b60ff88821c8816166103808f0152505050505050614f8e6103a08901828460e81c1660ff169052565b614fa36103c08901828460f01c1660ff169052565b5060f81c6103e08701526104009095019460019190910190602001614d3c565b90549082811015614fde5760ff821686526020909501946001015b82811015614ffa5760ff600883901c1686526020909501946001015b828110156150165760ff601083901c1686526020909501946001015b828110156150325760ff601883901c1686526020909501946001015b8281101561504f57602082901c60ff168652602095909501946001015b8281101561506b5760ff602883901c1686526020909501946001015b828110156150875760ff603083901c1686526020909501946001015b828110156150a35760ff603883901c1686526020909501946001015b828110156150bf5760ff604083901c1686526020909501946001015b828110156150db5760ff604883901c1686526020909501946001015b828110156150f75760ff605083901c1686526020909501946001015b828110156151135760ff605883901c1686526020909501946001015b8281101561512f5760ff606083901c1686526020909501946001015b8281101561514b5760ff606883901c1686526020909501946001015b828110156151675760ff607083901c1686526020909501946001015b828110156151835760ff607883901c1686526020909501946001015b8281101561519f5760ff608083901c1686526020909501946001015b828110156151bb5760ff608883901c1686526020909501946001015b828110156151d75760ff609083901c1686526020909501946001015b828110156151f35760ff609883901c1686526020909501946001015b8281101561520f5760ff60a083901c1686526020909501946001015b8281101561522b5760ff60a883901c1686526020909501946001015b828110156152475760ff60b083901c1686526020909501946001015b828110156152635760ff60b883901c1686526020909501946001015b8281101561527f5760ff60c083901c1686526020909501946001015b8281101561529b5760ff60c883901c1686526020909501946001015b828110156152b75760ff60d083901c1686526020909501946001015b828110156152d35760ff60d883901c1686526020909501946001015b828110156152ef5760ff60e083901c1686526020909501946001015b8281101561530b5760ff60e883901c1686526020909501946001015b828110156153275760ff60f083901c1686526020909501946001015b8281101561533d5760f882901c86526020860195505b5093949350505050565b8054825260018101546020830152600281015460408301526003810154606083015260048101546080830152600581015463ffffffff80821660a08501526000916102a0916153a360c08701828460201c1663ffffffff169052565b6153ba60e08701828460401c1663ffffffff169052565b6153d26101008701828460601c1663ffffffff169052565b6153ea6101208701828460801c1663ffffffff169052565b61ffff60a083901c811661014088015260b083901c1661016087015260c082901c811663ffffffff166101808701525060ff60e082901c81166101a087015260e882901c81166101c087015260f082901c166101e086015260f81c61020085015260068301546001600160a01b03166154676102208601826133ab565b50600783015461548461024086016001600160a01b0383166133ab565b60a081901c60ff16610260860152508061028085015261118681850160088501614d25565b60a0815260006154bc60a0830188615347565b82810360208481019190915287518083528882019282019060005b8181101561551557845180516001600160a01b031684528481015160ff168585015260409081015190840152938301936060909201916001016154d7565b505060ff88166040860152925061552a915050565b6060820193909352608001529392505050565b808201808211156103a1576103a1614cdf565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103a1576103a1614cdf565b634e487b7160e01b600052601260045260246000fd5b6000826155a2576155a261557d565b500490565b6000600182016155b9576155b9614cdf565b5060010190565b600082516155d28184602087016137e3565b9190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b63ffffffff93909316835261ffff918216602084015216604082015260600190565b9182526001600160a01b0316602082015260400190565b60006080828403121561565c57600080fd5b604051608081018181106001600160401b038211171561567e5761567e6133b8565b60405261568a83614b79565b8152602083015161569a8161352e565b60208201526156ab60408401614b79565b60408201526156bc60608401614b79565b60608201529392505050565b600063ffffffff808416806156df576156df61557d565b92169190910492915050565b805480835260008281526020808220940193909190825b82601f82011015614fc357815460ff8082168852602061572b818a01838560081c1660ff169052565b6040615740818b01848660101c1660ff169052565b6060615755818c01858760181c1660ff169052565b6080615769818d018688871c1660ff169052565b60a09350615780848d01868860281c1660ff169052565b60c0615795818e01878960301c1660ff169052565b60e06157aa818f01888a60381c1660ff169052565b60ff88861c8816166101008f01526157cd6101208f01888a60481c1660ff169052565b6157e26101408f01888a60501c1660ff169052565b6157f76101608f01888a60581c1660ff169052565b60ff88851c8816166101808f015261581a6101a08f01888a60681c1660ff169052565b61582f6101c08f01888a60701c1660ff169052565b6158446101e08f01888a60781c1660ff169052565b60ff88841c8816166102008f01526158676102208f01888a60881c1660ff169052565b61587c6102408f01888a60901c1660ff169052565b6158916102608f01888a60981c1660ff169052565b60ff88871c8816166102808f01526158b46102a08f01888a60a81c1660ff169052565b6158c96102c08f01888a60b01c1660ff169052565b6158de6102e08f01888a60b81c1660ff169052565b60ff88831c8816166103008f01526159016103208f01888a60c81c1660ff169052565b6159166103408f01888a60d01c1660ff169052565b61592b6103608f01888a60d81c1660ff169052565b60ff88821c8816166103808f01525050505050506159546103a08901828460e81c1660ff169052565b6159696103c08901828460f01c1660ff169052565b5060f81c6103e08701526104009095019460019190910190602001615702565b8054825260018101546020830152600281015460408301526003810154606083015260048101546080830152600581015463ffffffff80821660a08501526000916102a0916159e560c08701828460201c1663ffffffff169052565b6159fc60e08701828460401c1663ffffffff169052565b615a146101008701828460601c1663ffffffff169052565b615a2c6101208701828460801c1663ffffffff169052565b61ffff60a083901c811661014088015260b083901c1661016087015260c082901c811663ffffffff166101808701525060ff60e082901c81166101a087015260e882901c81166101c087015260f082901c166101e086015260f81c61020085015260068301546001600160a01b0316615aa96102208601826133ab565b506007830154615ac661024086016001600160a01b0383166133ab565b60a081901c60ff166102608601525080610280850152611186818501600885016156eb565b6000815480845260208085019450836000528060002060005b83811015614a165781546001600160a01b038116885260a01c60ff1683880152600180830154604089015260609097019660029092019101615b04565b604081526000615b546040830185615989565b8281036020840152613efd8185615aeb565b600060208284031215615b7857600080fd5b815161191c8161354b565b60208152600061191c6020830184615989565b6000615ba46136858461363f565b9050828152838383011115615bb857600080fd5b61191c8360208301846137e3565b60006020808385031215615bd957600080fd5b82516001600160401b0380821115615bf057600080fd5b818501915085601f830112615c0457600080fd5b8151615c126136858261397d565b81815260059190911b83018401908481019088831115615c3157600080fd5b8585015b8381101561090857805185811115615c4d5760008081fd5b8601603f81018b13615c5f5760008081fd5b615c708b8983015160408401615b96565b845250918601918601615c35565b600060608284031215615c9057600080fd5b604051606081018181106001600160401b0382111715615cb257615cb26133b8565b6040528251815260208301516001600160e81b0381168114615cd357600080fd5b6020820152615ce460408401614b79565b60408201529392505050565b805182526020808201516001600160e81b0316908301526040908101511515910152565b60a081526000615d2760a0830186615aeb565b9050615d366020830185615cf0565b61ffff83166080830152949350505050565b60a081526000615d5b60a0830186615aeb565b9050615d6a6020830185615cf0565b63ffffffff83166080830152949350505050565b6101608101615d8d8285614aa6565b6001600160a01b03929092166101409190910152919050565b604081526000615db96040830185613807565b90508260208301529392505050565b600063ffffffff808316818103615de157615de1614cdf565b6001019392505050565b60ff82811682821603908111156103a1576103a1614cdf565b60ff81811683821601908111156103a1576103a1614cdf565b9485526001600160a01b03938416602086015291909216604084015263ffffffff90911660608301526001600160801b0316608082015260a00190565b600081518084526020808501808196508360051b810191508286016000805b86811015615f1d578385038a528251805160ff168652868101516001600160a01b031687870152604080820151818801526060808301519088015260809182015160a0928801839052805192880183905288019160c088019185915b80831015615f07578451805163ffffffff1685528b015160040b8b850152938a01939281019260019290920191615ed5565b5050509a87019a95505091850191600101615e79565b509298975050505050505050565b600060018060a01b0380835116845280602084015116602085015280604084015116604085015250606082015160a06060850152615f6d60a0850182516133ab565b6020810151615f7f60c08601826133ab565b506040810151615f9260e08601826133ab565b506060810151610100615fa7818701836133ab565b60808301519150610120828188015260a08401519250610140838189015260c08501519350610160615fe0818a018663ffffffff169052565b60e08601519450610180615ffb818b018763ffffffff169052565b8487015163ffffffff166101a08b01528387015160ff166101c08b0152828701516101e08b019190915294506160356102208a0186615e5a565b950151888603609f19016102008a01529493506160589250839150849050613807565b915050608083015161606f608086018260ff169052565b509392505050565b60608152600061608a6060830186615f2b565b846020840152828103604084015261313a8185615347565b6000602082840312156160b457600080fd5b5051919050565b6060815260006160ce6060830186615f2b565b905083602083015260ff83166040830152949350505050565b6000602082840312156160f957600080fd5b81516001600160401b0381111561610f57600080fd5b8201601f8101841361612057600080fd5b61118684825160208401615b96565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8381526001600160a01b038316602082015260a081016111866040830184615cf056fea2646970667358221220c3dfea7cf276b89023e966059d017135f16c3b20d0db0c977870f834653a2b7c64736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012d5760003560e01c8063715018a6116100b3578063715018a61461023a5780638da5cb5b1461024257806395edcb081461024a578063a05a0fba1461026a578063a903620c1461028f578063af84b51f146102a1578063b41bd789146102c1578063b4b70352146102d4578063c4d66de8146102e7578063d0d35b55146102fa578063f2fde38b1461030d578063f2fe4fa51461032057600080fd5b806303cfa742146101325780631cc4f0411461015c5780631eda6e4f1461017f57806324eb1fa71461019f57806334c76b25146101b45780634b2dbcb8146101d15780634b2e9b41146101d157806354fd4d50146101f15780635790c2941461020057806362329cc5146102145780636dabaf0414610227575b600080fd5b6068546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61016f61016a366004613577565b61032f565b6040519015158152602001610153565b61019261018d3660046136bc565b6103a7565b6040516101539190613771565b6101b26101ad3660046137c1565b610446565b005b6040805160208101909152600081525b6040516101539190613833565b6101e46101df366004613846565b6108e4565b60405161015391906138be565b60405160008152602001610153565b6101b261020e36600461390b565b50505050565b6101e46102223660046139a0565b610915565b61016f610235366004613a43565b6109f2565b6101b2610a14565b61013f610a4f565b61025d610258366004613cdb565b610a5e565b6040516101539190613ea5565b61027d610278366004613f06565b6110b0565b60405160ff9091168152602001610153565b6101b261029d366004614617565b5050565b6102b46102af3660046147cc565b61118e565b60405161015391906148e9565b6101b26102cf36600461494b565b611790565b61016f6102e2366004613577565b61182a565b6101b26102f536600461497f565b61187c565b6101c461030836600461499a565b61190c565b6101b261031b36600461497f565b611923565b60606040516101539190614a21565b606854604051631cc4f04160e01b81526000916001600160a01b031690631cc4f04190610360908590600401614b6a565b602060405180830381865afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a19190614b89565b92915050565b604080516020810182526060815260685491516349af56c960e11b815290916001600160a01b03169063935ead92906103f4908c908c908c908c908c908c908c908c903390600401614ba4565b600060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104399190810190614c1b565b9998505050505050505050565b600082815260676020908152604080832060058101548251808501889052600160201b90910463ffffffff16818401528251808203840181526060909101835280519084012080855260669093529220805480156108155760058401546104c39063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff1642116106865760408051808201909152601a81527903130ba31b410383937b1b2b9b9903a34b6b2903932b6b0b4b7160351b602082015260058501546105419190429061052c9063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff1661053c9190614d12565b6119c3565b600584015461055f9063ffffffff600160c01b820481169116614cf5565b63ffffffff164210156105a85760405162461bcd60e51b815260206004820152600c60248201526b18d85b881b9bdd081b1bdbdd60a21b60448201526064015b60405180910390fd5b60088401546005850154600160b01b900461ffff1681116105d8576005850154600160b01b900461ffff166105da565b805b90508181106105e957816105eb565b805b6068549091506001600160a01b031663aff422378661061e8661060e8688614d12565b610619600189614d12565b611a08565b60028b896040518663ffffffff1660e01b81526004016106429594939291906154a9565b600060405180830381600087803b15801561065c57600080fd5b505af1158015610670573d6000803e3d6000fd5b5050505061067d85611b32565b50505050505050565b6005840154600160601b900463ffffffff16600060016106a6888461553d565b6106b09190614d12565b90506106bd600184614d12565b81106106d1576106ce600184614d12565b90505b6068546001600160a01b031663aff42237876106ee878686611a08565b60018c8a6040518663ffffffff1660e01b81526004016107129594939291906154a9565b600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b5084925050505b8181116107c257606485828154811061076257610762615550565b90600052602060002090600202016001015460636107809190615566565b61078a9190615593565b85828154811061079c5761079c615550565b6000918252602090912060016002909202010155806107ba816155a7565b915050610747565b506107cd878361553d565b60058701805463ffffffff92909216600160601b0263ffffffff60601b199092169190911790556107ff600184614d12565b810361080e5761080e86611b85565b50506108dc565b600584015461083a9063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff1642116108895760405162461bcd60e51b81526020600482015260186024820152771c1c9bd8d95cdcc81d1a5b59481b9bdd081c995858da195960421b604482015260640161059f565b60058401805463ffffffff600160801b8204811692916008916108b6918591600160401b90910416614cf5565b92506101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505b5098975050505050505050565b6060600082516001600160401b03811115610932576109326133b8565b60405190808252806020026020018201604052801561095b578160200160208202803683370190505b50905060005b81518110156109eb57606584828151811061097e5761097e615550565b602002602001015160405161099391906155c0565b9081526040519081900360200190205482516001600160a01b03909116908390839081106109c3576109c3615550565b6001600160a01b03909216602092830291909101909101526109e4816155a7565b9050610961565b5092915050565b600060ff8316610a0857610a0886868685611c67565b50600195945050505050565b33610a1d610a4f565b6001600160a01b031614610a435760405162461bcd60e51b815260040161059f906155dc565b610a4d60006123b4565b565b6033546001600160a01b031690565b60408051608081018252600080825260208201526060918101829052818101919091523082526060830151600090610a9590612406565b9050600084606001516101000151610ab08660600151612412565b610abd8760600151612431565b604051602001610acf93929190615611565b60408051808303601f1901815282825280516020918201206000818152606783528381206005810154938601839052600160201b90930463ffffffff16938501939093529350916060016040516020818303038152906040528051906020012090506000610b55610b508660008b606001516124569092919063ffffffff16565b6124b0565b90506000610c11338a60600151602001518b6060015161010001518c602001518d6060015160e0015163ffffffff16600014610b99578d6060015160e00151610ba3565b8d6060015160c001515b8e51604080516001600160a01b039788166020808301919091529688168183015263ffffffff958616606082015293871660808501529190931660a08301529390911660c0820152600060e08083019190915283518083039091018152610100909101909252815191012090565b9050610c1d89836124fd565b60ff821660808a01819052611043576005840154610c519063ffffffff600160801b8204811691600160401b900416614cf5565b63ffffffff16421115610cb15760405162461bcd60e51b815260206004820152602260248201527f63616e206e6f7420696e707574206265666f7265206461696c792070726f6365604482015261737360f01b606482015260840161059f565b606854895160405163324cda7b60e21b81526000926001600160a01b03169163c93369ec91610ce4918891600401615633565b608060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d25919061564a565b600085815260666020526040902081519192509015610e5f57612710610d4e8c606001516125db565b63ffffffff168c606001516101400151600081518110610d7057610d70615550565b6020908102919091010151606001516005890154610d999190600160a01b900461ffff16615566565b610da39190615566565b610dad9190615593565b81836020015163ffffffff1681548110610dc957610dc9615550565b90600052602060002090600202016001016000828254610de9919061553d565b9091555050604080516060810182528c516001600160a01b0390811682526001602080840182815260009585018681528754808501895588885292909620945160029092029094018054945160ff16600160a01b026001600160a81b031990951691909316179290921781559151910155610fe8565b805463ffffffff1660208084019190915260408051606080820183528e516001600160a01b03168252600093820193909352918d015183929182019061271090610ea8906125db565b63ffffffff168f606001516101400151600081518110610eca57610eca615550565b60209081029190910101516060015160058c0154610ef39190600160a01b900461ffff16615566565b610efd9190615566565b610f079190615593565b90528154600180820184556000938452602093849020835160029093020180548486015160ff16600160a01b026001600160a81b03199091166001600160a01b03948516171781556040938401519082015585526068548e5183516302e3e56360e41b8152600481018b905290831660248201528651151560448201529386015163ffffffff16606485015291850151151560848401526060850151151560a48401521690632e3e56309060c401600060405180830381600087803b158015610fcf57600080fd5b505af1158015610fe3573d6000803e3d6000fd5b505050505b61103c612710610ffb8d606001516125db565b61100591906156c8565b63ffffffff16878d60600151610140015160008151811061102857611028615550565b6020026020010151606001518e8c8c612616565b5050611090565b60001960ff8316016110605761105a8982866128c0565b50611090565b60011960ff8316016110775761105a8982866128c0565b60021960ff8316016110905761108e8982866128c0565b505b60ff82166110a3576110a389828461295e565b5095979650505050505050565b600081815260676020908152604080832060058101548251938401869052600160201b900463ffffffff169183019190915290829060600160408051601f19818403018152828252805160209182012060008181526066909252919020635288727b60e11b835290925073__$32dd9d1375090e9229647b2f619d1a113f$__9163a510e4f69161114591869190600401615b41565b602060405180830381865af4158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615b66565b949350505050565b60608060008360400151846060015185608001516040516020016111b493929190615611565b60408051808303601f1901815291815281516020928301206000818152606790935291206101208601519192509060ff16600019016112705760405163d2e91a5160e01b815273__$32dd9d1375090e9229647b2f619d1a113f$__9063d2e91a5190611224908490600401615b83565b600060405180830381865af4158015611241573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112699190810190615bc6565b9250611787565b600260ff1685610120015160ff160361143d5761014085015160009061129690826129c0565b905060006112b360018861014001516129c090919063ffffffff16565b9050600084826040516020016112d792919091825261ffff16602082015260400190565b60408051601f1981840301815291815281516020928301206000818152606690935290822060685481549294509092916001600160a01b0390911690637481c01b908990859061ffff8a1690811061133157611331615550565b60009182526020909120600290910201546040516001600160e01b031960e085901b16815261136d92916001600160a01b031690600401615633565b606060405180830381865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae9190615c7e565b604051633bca677160e21b815290915073__$32dd9d1375090e9229647b2f619d1a113f$__9063ef299dc4906113ec90859085908a90600401615d14565b600060405180830381865af4158015611409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114319190810190615bc6565b97505050505050611787565b600460ff1685610120015160ff1603611649576101408501516000906114639082612a03565b9050600061148060018861014001516129c090919063ffffffff16565b9050600084826040516020016114a492919091825261ffff16602082015260400190565b60408051601f19818403018152828252805160209182012060008181526066909252918120606854637481c01b60e01b85529294509290916001600160a01b031690637481c01b906114fc908a908990600401615633565b606060405180830381865afa158015611519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153d9190615c7e565b60685460405163324cda7b60e21b81529192506000916001600160a01b039091169063c93369ec906115759087908a90600401615633565b608060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b6919061564a565b6020810151604051633bca677160e21b815291925073__$32dd9d1375090e9229647b2f619d1a113f$__9163ef299dc4916115f79187918791600401615d48565b600060405180830381865af4158015611614573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163c9190810190615bc6565b9850505050505050611787565b600360ff1685610120015160ff16036116935760405163554e23b560e11b815273__$32dd9d1375090e9229647b2f619d1a113f$__9063aa9c476a90611224908490600401615b83565b600560ff1685610120015160ff1603611787576101408501516000906116b990826129c0565b9050600083826040516020016116dd92919091825261ffff16602082015260400190565b60408051601f198184030181528282528051602091820120600081815260669092529190206366c122a960e11b83529092509073__$32dd9d1375090e9229647b2f619d1a113f$__9063cd8245529061173c9087908590600401615b41565b600060405180830381865af4158015611759573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117819190810190615bc6565b95505050505b50909392505050565b33611799610a4f565b6001600160a01b0316146117bf5760405162461bcd60e51b815260040161059f906155dc565b6117c881612a4e565b604080518082018252600c81526b2327a6a799a22422a62822a960a11b602082015290516065916117f8916155c0565b90815260405190819003602001902054606880546001600160a01b0319166001600160a01b0390921691909117905550565b606854604051631f464a1d60e11b81526000916001600160a01b031690633e8c943a9061185d9085903390600401615d7e565b6020604051808303816000875af115801561037d573d6000803e3d6000fd5b60006118886001612b70565b905080156118a0576000805461ff0019166101001790555b6118a8612bfd565b606980546001600160a01b0319166001600160a01b038416179055801561029d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6040805160208101909152600081525b9392505050565b3361192c610a4f565b6001600160a01b0316146119525760405162461bcd60e51b815260040161059f906155dc565b6001600160a01b0381166119b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059f565b6119c0816123b4565b50565b61029d82826040516024016119d9929190615da6565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052612c2c565b60606000611a168484614d12565b611a2190600161553d565b6001600160401b03811115611a3857611a386133b8565b604051908082528060200260200182016040528015611a8357816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611a565790505b50905060005b8151811015611b295785611a9d828761553d565b81548110611aad57611aad615550565b600091825260209182902060408051606081018252600290930290910180546001600160a01b038116845260ff600160a01b9091041693830193909352600190920154918101919091528251839083908110611b0b57611b0b615550565b60200260200101819052508080611b21906155a7565b915050611a89565b50949350505050565b600581018054600160201b900463ffffffff16906004611b5183615dc8565b825463ffffffff9182166101009390930a928302919092021990911617905550600080825560018201819055600490910155565b600060648260040154611b989190615593565b60058301805463ffffffff60601b191690556004830154909150611bbd908290614d12565b60048301558154611bcf908290614d12565b82556007820154606490611bed90600160a01b900460ff1682615deb565b611bfa9060ff1683615566565b611c049190615593565b8260010154611c13919061553d565b600183015560058201805463ffffffff600160801b820481169291600891611c45918591600160401b90910416614cf5565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000611c7282612c35565b90508051600003611c83575061020e565b6000858585604051602001611c9a93929190615611565b60408051808303601f190181529082905280516020909101206068546343e08ad160e01b8352600483018290529092506001600160a01b0316906343e08ad190602401600060405180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b50505060008281526067602052604081209150611d299085906129c0565b60058201805463ffffffff60401b1916600160401b63ffffffff93841681029190911791829055900416611d9f5760405162461bcd60e51b815260206004820152601c60248201527f70726f636573732074696d652063616e206e6f74206265207a65726f00000000604482015260640161059f565b611daa8460016129c0565b60058201805463ffffffff60801b1916600160801b63ffffffff93841681029190911791829055900416611e205760405162461bcd60e51b815260206004820181905260248201527f70726f6365737320696e74657276616c2063616e206e6f74206265207a65726f604482015260640161059f565b611e2b8460026129c0565b60058201805461ffff60a01b1916600160a01b61ffff93841681029190911791829055900416611e9b5760405162461bcd60e51b815260206004820152601b60248201527a636f656666696369656e742063616e206e6f74206265207a65726f60281b604482015260640161059f565b611ea68460036129c0565b8160050160166101000a81548161ffff021916908361ffff160217905550611ecf8460046129c0565b60058201805463ffffffff60c01b1916600160c01b63ffffffff93841681029190911791829055600160801b82048316910490911611611f4b5760405162461bcd60e51b815260206004820152601760248201527633b0b6b29036b0bc1034b73a32b93b30b61032b93937b960491b604482015260640161059f565b611f568460056129c0565b81600501601c6101000a81548160ff021916908360ff160217905550611f7d8460066129c0565b81600501601d6101000a81548160ff021916908360ff160217905550611fa48460076129c0565b81600501601e6101000a81548160ff021916908360ff160217905550611fcb8460086129c0565b81600501601f6101000a81548160ff021916908360ff160217905550611ff28460096129c0565b60078201805460ff60a01b1916600160a01b60ff938416810291909117918290556064910490911611156120615760405162461bcd60e51b815260206004820152601660248201527531b630b4b6903832b931b2b73a30b3b29032b93937b960511b604482015260640161059f565b600581015460ff600160f81b8204811691600160f01b810482169161209891600160e81b8104821691600160e01b90910416615e04565b6120a29190615e04565b6120ac9190615e04565b60ff166064146120f15760405162461bcd60e51b815260206004820152601060248201526f3832b931b2b73a30b3b29032b93937b960811b604482015260640161059f565b60006120fe85600a612c45565b60058301805467ffffffff000000001916600160201b17905590506000805b825181101561225857600061214a84838151811061213d5761213d615550565b60200260200101516124b0565b905060008160ff161161219c5760405162461bcd60e51b815260206004820152601a60248201527970657263656e746167652063616e206e6f74206265207a65726f60301b604482015260640161059f565b6121a960ff82168461553d565b925060648311156122085760405162461bcd60e51b815260206004820152602360248201527f70657263656e7461676520746f746f6c2063616e206e6f74206578636565642060448201526203130360ec1b606482015260840161059f565b6008850180546001810182556000918252602091829020918104909101805460ff938416601f9093166101000a928302939092021990911691909117905580612250816155a7565b91505061211d565b5061226486600b612a03565b6006840180546001600160a01b0319166001600160a01b039290921691909117905561229186600c612a03565b6007840180546001600160a01b0319166001600160a01b03928316179055600684015416156123a9576069546006840154604051637d92a04160e11b81526001600160a01b039283169263fb254082926122f392899290911690600401615633565b600060405180830381600087803b15801561230d57600080fd5b505af1158015612321573d6000803e3d6000fd5b5050606954600786015460405163074d08cb60e11b81526001600160a01b039283169450630e9a1196935061236492899260009291169082908190600401615e1d565b6020604051808303816000875af1158015612383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a79190615b66565b505b505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606103a18230612c84565b60006103a18260a0015160106000600861242c919061553d565b612d29565b60006103a18260a0015160106000600861244b919061553d565b61242c90601061553d565b61245e613391565b61248d8361246d846001615e04565b60ff168151811061248057612480615550565b6020026020010151612d48565b60028151811061249f5761249f615550565b602002602001015190509392505050565b8051600090158015906124c557508151602110155b6124ce57600080fd5b6000806124da84612e51565b8151919350915060208210156111865760208290036101000a9004949350505050565b60ff81161580612510575060ff81166001145b8061251e575060ff81166002145b8061252c575060ff81166003145b61256a5760405162461bcd60e51b815260206004820152600f60248201526e2fb1b432b1b5a1a6a21032b93937b960891b604482015260640161059f565b60006125798360600151612e98565b905060ff82166125d65760ff81166001146125d65760405162461bcd60e51b815260206004820152601c60248201527f5f636865636b434d4420696e707574206272616e6368206572726f7200000000604482015260640161059f565b505050565b60006103a18260a001516020600060086125f5919061553d565b61260090601061553d565b61260b90601061553d565b61244b90600861553d565b60068501546001600160a01b03161561278d5760608301516000906126469061264190856001612456565b612ebd565b90506001600160a01b0381166126975760405162461bcd60e51b8152602060048201526016602482015275706172656e742063616e206e6f74206265207a65726f60501b604482015260640161059f565b6005860154600090606490600160f81b900460ff166126b6888b615566565b6126c09190615566565b6126ca9190615593565b905061270d60405180604001604052806016815260200175185919081b9bd91948191e5b985b5a58c8185dd85c9960521b815250826001600160801b03166119c3565b606954855160405163074d08cb60e11b81526001600160a01b0390921691630e9a11969161274691879187916000908890600401615e1d565b6020604051808303816000875af1158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190615b66565b5050505b60058501805463ffffffff19164263ffffffff16179081905586906127be908690600160a01b900461ffff16615566565b6127c89190615566565b8560040160008282546127db919061553d565b90915550506005850154606490600160e01b900460ff166127fc8887615566565b6128069190615566565b6128109190615593565b856000016000828254612823919061553d565b90915550506005850154606490600160e81b900460ff166128448887615566565b61284e9190615566565b6128589190615593565b85600201600082825461286b919061553d565b90915550506005850154606490600160f01b900460ff1661288c8887615566565b6128969190615566565b6128a09190615593565b8560030160008282546128b3919061553d565b9091555050505050505050565b6000600160ff16846080015160ff16036128e7576128dd84612ed7565b6060850151608001525b606854604051634c64ddc560e11b81526001600160a01b03909116906398c9bb8a9061291b90879087908790600401616077565b6020604051808303816000875af115801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118691906160a2565b60685460405163a0ad622f60e01b81526001600160a01b039091169063a0ad622f90612992908690869086906004016160bb565b600060405180830381600087803b1580156129ac57600080fd5b505af115801561067d573d6000803e3d6000fd5b6000806129d46129cf85613144565b612d48565b90506111866129f1828560ff168151811061248057612480615550565b60028151811061213d5761213d615550565b600080612a126129cf85613144565b9050611186612a2f828560ff168151811061248057612480615550565b600281518110612a4157612a41615550565b6020026020010151612ebd565b33612a57610a4f565b6001600160a01b031614612a7d5760405162461bcd60e51b815260040161059f906155dc565b60005b815181101561029d57818181518110612a9b57612a9b615550565b60200260200101516065838381518110612ab757612ab7615550565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b8152600401600060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b2491908101906160e7565b604051612b3191906155c0565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055612b69816155a7565b9050612a80565b60008054610100900460ff1615612bb7578160ff166001148015612b935750303b155b612baf5760405162461bcd60e51b815260040161059f9061612f565b506000919050565b60005460ff808416911610612bde5760405162461bcd60e51b815260040161059f9061612f565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff16612c245760405162461bcd60e51b815260040161059f9061617d565b610a4d61316a565b6119c08161319a565b6060600061191c6129cf84613144565b60606000612c556129cf85613144565b9050611186612c72828560ff168151811061248057612480615550565b60028151811061248057612480615550565b60606000612c996129cf856101600151613144565b905060005b8151811015612d1e576000612cd3612cc184848151811061248057612480615550565b600081518110612a4157612a41615550565b9050846001600160a01b0316816001600160a01b031603612d0d57612d0383838151811061248057612480615550565b93505050506103a1565b50612d17816155a7565b9050612c9e565b506060949350505050565b91821c91600080612d3d600180861b614d12565b909416949350505050565b6060612d53826131bb565b612d5c57600080fd5b6000612d67836131f6565b90506000816001600160401b03811115612d8357612d836133b8565b604051908082528060200260200182016040528015612dbc57816020015b612da9613391565b815260200190600190039081612da15790505b5090506000612dce8560200151613272565b8560200151612ddd919061553d565b90506000805b84811015612e4657612df4836132ed565b9150604051806040016040528083815260200184815250848281518110612e1d57612e1d615550565b6020908102919091010152612e32828461553d565b925080612e3e816155a7565b915050612de3565b509195945050505050565b6000806000612e638460200151613272565b90506000818560200151612e77919061553d565b90506000828660000151612e8b9190614d12565b9196919550909350505050565b60006103a18260a00151600860006008612eb2919061553d565b61244b90601061553d565b8051600090601514612ece57600080fd5b6103a1826124b0565b60008082606001516101000151612ef18460600151612412565b612efe8560600151612431565b604051602001612f1093929190615611565b60408051601f198184030181529082905280516020909101206068548551637481c01b60e01b84529193506000926001600160a01b0390911691637481c01b91612f5e918691600401615633565b606060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9f9190615c7e565b90508060400151612fe75760405162461bcd60e51b815260206004820152601260248201527118d85b1b195c881a185cc818db185a5b595960721b604482015260640161059f565b60006040808301829052825191835260685486519151631535f75960e31b81526001600160a01b039091169163a9afbac89161302991879187906004016161c8565b600060405180830381600087803b15801561304357600080fd5b505af1158015613057573d6000803e3d6000fd5b5050506000848152606760205260409020600601546001600160a01b031615905061118657606954855160405163209eea8d60e01b8152600481018690526001600160a01b03918216602482015260006044820181905292919091169063209eea8d906064016020604051808303816000875af11580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906160a2565b90506131306040518060400160405280600c81526020016b1a5b9d9a5d1948185dd85c9960a21b815250826119c3565b61313a818361553d565b9695505050505050565b61314c613391565b50604080518082019091528151815260209182019181019190915290565b600054610100900460ff166131915760405162461bcd60e51b815260040161059f9061617d565b610a4d336123b4565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b805160009081036131ce57506000919050565b6020820151805160001a9060c08210156131ec575060009392505050565b5060019392505050565b8051600090810361320957506000919050565b6000806132198460200151613272565b8460200151613228919061553d565b9050600084600001518560200151613240919061553d565b90505b8082101561178757613254826132ed565b61325e908361553d565b91508261326a816155a7565b935050613243565b8051600090811a608081101561328b5750600092915050565b60b88110806132a6575060c081108015906132a6575060f881105b156132b45750600192915050565b60c08110156132e1576132c9600160b8615deb565b6132d69060ff1682614d12565b61191c90600161553d565b6132c9600160f8615deb565b80516000908190811a608081101561330857600191506109eb565b60b881101561332e5761331c608082614d12565b61332790600161553d565b91506109eb565b60c081101561335b5760b78103600185019450806020036101000a855104600182018101935050506109eb565b60f881101561336f5761331c60c082614d12565b60019390930151602084900360f7016101000a900490920160f5190192915050565b604051806040016040528060008152602001600081525090565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156133f1576133f16133b8565b60405290565b60405160a081016001600160401b03811182821017156133f1576133f16133b8565b604080519081016001600160401b03811182821017156133f1576133f16133b8565b604051608081016001600160401b03811182821017156133f1576133f16133b8565b60405161018081016001600160401b03811182821017156133f1576133f16133b8565b604051606081016001600160401b03811182821017156133f1576133f16133b8565b60405161016081016001600160401b03811182821017156133f1576133f16133b8565b604051602081016001600160401b03811182821017156133f1576133f16133b8565b604051601f8201601f191681016001600160401b038111828210171561350f5761350f6133b8565b604052919050565b80356001600160a01b0381168114612bf857600080fd5b63ffffffff811681146119c057600080fd5b8035612bf88161352e565b60ff811681146119c057600080fd5b8035612bf88161354b565b803561ffff81168114612bf857600080fd5b6000610140828403121561358a57600080fd5b6135926133ce565b61359b83613517565b81526135a960208401613517565b60208201526135ba60408401613517565b60408201526135cb60608401613540565b60608201526135dc60808401613540565b60808201526135ed60a08401613517565b60a08201526135fe60c0840161355a565b60c082015261360f60e08401613565565b60e082015261010061362281850161355a565b9082015261012061363484820161355a565b908201529392505050565b60006001600160401b03821115613658576136586133b8565b50601f01601f191660200190565b600082601f83011261367757600080fd5b813561368a6136858261363f565b6134e7565b81815284602083860101111561369f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b0312156136d957600080fd5b6136e289613517565b97506136f060208a01613517565b96506136fe60408a01613517565b9550606089013561370e8161352e565b945061371c60808a01613517565b935060a089013561372c8161352e565b925060c08901356001600160401b0381111561374757600080fd5b6137538b828c01613666565b92505061376260e08a01613565565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b808310156137b65783518252928401926001929092019190840190613796565b509695505050505050565b600080604083850312156137d457600080fd5b50508035926020909101359150565b60005b838110156137fe5781810151838201526020016137e6565b50506000910152565b6000815180845261381f8160208601602086016137e3565b601f01601f19169290920160200192915050565b60208152600061191c6020830184613807565b60008060008060008060c0878903121561385f57600080fd5b61386887613517565b955061387660208801613517565b945060408701356138868161352e565b935061389460608801613517565b925060808701356138a48161352e565b91506138b260a08801613565565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156138ff5783516001600160a01b0316835292840192918401916001016138da565b50909695505050505050565b6000806000806080858703121561392157600080fd5b843561392c8161352e565b935061393a60208601613565565b9250604085013561394a8161354b565b915060608501356001600160401b0381111561396557600080fd5b61397187828801613666565b91505092959194509250565b60006001600160401b03821115613996576139966133b8565b5060051b60200190565b600060208083850312156139b357600080fd5b82356001600160401b03808211156139ca57600080fd5b818501915085601f8301126139de57600080fd5b81356139ec6136858261397d565b81815260059190911b83018401908481019088831115613a0b57600080fd5b8585015b8381101561090857803585811115613a275760008081fd5b613a358b89838a0101613666565b845250918601918601613a0f565b600080600080600060a08688031215613a5b57600080fd5b8535613a668161352e565b9450613a7460208701613565565b9350613a8260408701613565565b92506060860135613a928161354b565b915060808601356001600160401b03811115613aad57600080fd5b613ab988828901613666565b9150509295509295909350565b600082601f830112613ad757600080fd5b81356020613ae76136858361397d565b82815260059290921b84018101918181019086841115613b0657600080fd5b8286015b848110156137b65780356001600160401b0380821115613b2957600080fd5b9088019060a0828b03601f19011215613b4157600080fd5b613b496133f7565b86830135613b568161354b565b81526040613b65848201613517565b888301526060840135818301526080840135606083015260a084013583811115613b8f5760008081fd5b8085019450508b603f850112613ba757600092508283fd5b878401359250613bb96136858461397d565b83815260069390931b8401810192888101908d851115613bd95760008081fd5b948201945b84861015613c335782868f031215613bf65760008081fd5b613bfe613419565b8635613c098161352e565b8152868b0135600481900b8114613c205760008081fd5b818c015282529482019490890190613bde565b6080840152505085525050918301918301613b0a565b600060808284031215613c5b57600080fd5b613c6361343b565b9050613c6e82613517565b81526020820135613c7e8161354b565b602082015260408201356001600160401b0380821115613c9d57600080fd5b613ca985838601613666565b60408401526060840135915080821115613cc257600080fd5b50613ccf84828501613666565b60608301525092915050565b60008060408385031215613cee57600080fd5b82356001600160401b0380821115613d0557600080fd5b9084019060a08287031215613d1957600080fd5b613d216133f7565b613d2a83613517565b8152613d3860208401613517565b6020820152613d4960408401613517565b6040820152606083013582811115613d6057600080fd5b83016101808189031215613d7357600080fd5b613d7b61345d565b613d8482613517565b8152613d9260208301613517565b6020820152613da360408301613517565b6040820152613db460608301613517565b60608201526080820135608082015260a082013560a0820152613dd960c08301613540565b60c0820152613dea60e08301613540565b60e0820152610100613dfd818401613540565b90820152610120613e0f83820161355a565b908201526101408281013585811115613e2757600080fd5b613e338b828601613ac6565b8284015250506101608083013585811115613e4d57600080fd5b613e598b828601613666565b8284015250508060608401525050613e736080840161355a565b608082015293506020850135915080821115613e8e57600080fd5b50613e9b85828601613c49565b9150509250929050565b6020815260018060a01b03825116602082015260ff60208301511660408201526000604083015160806060840152613ee060a0840182613807565b90506060840151601f19848303016080850152613efd8282613807565b95945050505050565b600060208284031215613f1857600080fd5b5035919050565b600082601f830112613f3057600080fd5b81356020613f406136858361397d565b82815260059290921b84018101918181019086841115613f5f57600080fd5b8286015b848110156137b65780358352918301918301613f63565b600082601f830112613f8b57600080fd5b81356020613f9b6136858361397d565b82815260059290921b84018101918181019086841115613fba57600080fd5b8286015b848110156137b657613fcf81613517565b8352918301918301613fbe565b600082601f830112613fed57600080fd5b81356020613ffd6136858361397d565b82815260059290921b8401810191818101908684111561401c57600080fd5b8286015b848110156137b65780356001600160401b038082111561403f57600080fd5b90880190601f196080838c038201121561405857600080fd5b61406061343b565b878401358381111561407157600080fd5b84016060818e038401121561408557600080fd5b61408d613480565b92508881013561409c8161354b565b835260406140ab828201613517565b8a8501526060820135858111156140c157600080fd5b6140cf8f8c83860101613f1f565b82860152508383526140e281870161355a565b8a84015260608601359350848411156140fa57600080fd5b6141088e8b86890101613f7a565b9083015250608084013591508282111561412157600080fd5b61412f8c8984870101613f1f565b60608201528652505050918301918301614020565b600082601f83011261415557600080fd5b813560206141656136858361397d565b82815260059290921b8401810191818101908684111561418457600080fd5b8286015b848110156137b65780356001600160401b038111156141a75760008081fd5b6141b58986838b0101613666565b845250918301918301614188565b600082601f8301126141d457600080fd5b813560206141e46136858361397d565b82815260059290921b8401810191818101908684111561420357600080fd5b8286015b848110156137b65780356001600160401b03808211156142275760008081fd5b9088019060a0828b03601f19018113156142415760008081fd5b6142496133f7565b878401358381111561425b5760008081fd5b6142698d8a83880101613fdc565b825250604061427981860161355a565b89830152606061428a818701613517565b828401526080915081860135858111156142a45760008081fd5b6142b28f8c838a0101613f7a565b828501525050828501359250838311156142cc5760008081fd5b6142da8d8a85880101614144565b908201528652505050918301918301614207565b600082601f8301126142ff57600080fd5b8135602061430f6136858361397d565b82815260059290921b8401810191818101908684111561432e57600080fd5b8286015b848110156137b65780356143458161354b565b8352918301918301614332565b80356001600160401b0381168114612bf857600080fd5b600082601f83011261437a57600080fd5b8135602061438a6136858361397d565b82815260059290921b840181019181810190868411156143a957600080fd5b8286015b848110156137b65780356001600160401b03808211156143cd5760008081fd5b90880190610160828b03601f19018113156143e85760008081fd5b6143f06134a2565b6143fb888501613565565b8152604061440a818601613565565b89830152606061441b81870161355a565b828401526080915061442e828701613540565b9083015260a061443f86820161355a565b8284015260c09150614452828701613540565b9083015260e0614463868201613540565b828401526101009150614477828701614352565b9083015261012085810135858111156144905760008081fd5b61449e8f8c838a0101613f7a565b8385015250610140915081860135858111156144ba5760008081fd5b6144c88f8c838a0101614144565b8285015250506144d9838601613517565b9082015286525050509183019183016143ad565b600082601f8301126144fe57600080fd5b8135602061450e6136858361397d565b82815260059290921b8401810191818101908684111561452d57600080fd5b8286015b848110156137b65780356001600160401b03808211156145515760008081fd5b9088019060a0828b03601f190181131561456b5760008081fd5b6145736133f7565b61457e888501613540565b8152604080850135848111156145945760008081fd5b6145a28e8b83890101613666565b8a84015250606080860135858111156145bb5760008081fd5b6145c98f8c838a0101613666565b83850152506080915081860135858111156145e45760008081fd5b6145f28f8c838a0101613666565b82850152505061460383860161355a565b908201528652505050918301918301614531565b6000806040838503121561462a57600080fd5b82356146358161352e565b915060208301356001600160401b038082111561465157600080fd5b90840190610160828703121561466657600080fd5b61466e6134a2565b82358281111561467d57600080fd5b614689888286016141c3565b82525060208301358281111561469e57600080fd5b6146aa888286016142ee565b6020830152506040830135828111156146c257600080fd5b6146ce88828601614369565b6040830152506060830135828111156146e657600080fd5b6146f2888286016144ed565b60608301525060808301358281111561470a57600080fd5b614716888286016142ee565b60808301525060a08301358281111561472e57600080fd5b61473a88828601613f7a565b60a08301525060c08301358281111561475257600080fd5b61475e88828601613f7a565b60c08301525061477060e08401613540565b60e0820152610100614783818501613540565b9082015261012061479584820161355a565b9082015261014083810135838111156147ad57600080fd5b6147b989828701613666565b8284015250508093505050509250929050565b6000602082840312156147de57600080fd5b81356001600160401b03808211156147f557600080fd5b90830190610160828603121561480a57600080fd5b6148126134a2565b61481b83613517565b815261482960208401613517565b602082015261483a60408401613540565b604082015261484b60608401613565565b606082015261485c60808401613565565b608082015261486d60a0840161355a565b60a082015261487e60c08401613517565b60c082015261488f60e08401613540565b60e08201526101006148a2818501613517565b908201526101206148b484820161355a565b9082015261014083810135838111156148cc57600080fd5b6148d888828701613666565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561493e57603f1988860301845261492c858351613807565b94509285019290850190600101614910565b5092979650505050505050565b60006020828403121561495d57600080fd5b81356001600160401b0381111561497357600080fd5b61118684828501613f7a565b60006020828403121561499157600080fd5b61191c82613517565b6000806000606084860312156149af57600080fd5b83356149ba8161352e565b92506149c860208501613565565b915060408401356149d88161354b565b809150509250925092565b600081518084526020808501945080840160005b83811015614a1657815160ff16875295820195908201906001016149f7565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614a9857888303603f1901855281518051878552614a6c888601826149e3565b91890151858303868b0152919050614a8481836149e3565b968901969450505090860190600101614a48565b509098975050505050505050565b614ab18282516133ab565b6020810151614ac360208401826133ab565b506040810151614ad660408401826133ab565b506060810151614aee606084018263ffffffff169052565b506080810151614b06608084018263ffffffff169052565b5060a0810151614b1960a08401826133ab565b5060c0810151614b2e60c084018260ff169052565b5060e0810151614b4460e084018261ffff169052565b506101008181015160ff81168483015250506101208181015160ff81168483015261020e565b61014081016103a18284614aa6565b80518015158114612bf857600080fd5b600060208284031215614b9b57600080fd5b61191c82614b79565b6001600160a01b038a811682528981166020830152888116604083015263ffffffff88811660608401528782166080840152861660a083015261012060c08301819052600091614bf684830188613807565b925061ffff861660e085015280851661010085015250509a9950505050505050505050565b60006020808385031215614c2e57600080fd5b82516001600160401b0380821115614c4557600080fd5b8185019150828287031215614c5957600080fd5b614c616134c5565b825182811115614c7057600080fd5b80840193505086601f840112614c8557600080fd5b82519150614c956136858361397d565b82815260059290921b83018401918481019088841115614cb457600080fd5b938501935b83851015614cd257845182529385019390850190614cb9565b8252509695505050505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156109eb576109eb614cdf565b818103818111156103a1576103a1614cdf565b805480835260008281526020808220940193909190825b82601f82011015614fc357815460ff80821688526020614d65818a01838560081c1660ff169052565b6040614d7a818b01848660101c1660ff169052565b6060614d8f818c01858760181c1660ff169052565b6080614da3818d018688871c1660ff169052565b60a09350614dba848d01868860281c1660ff169052565b60c0614dcf818e01878960301c1660ff169052565b60e0614de4818f01888a60381c1660ff169052565b60ff88861c8816166101008f0152614e076101208f01888a60481c1660ff169052565b614e1c6101408f01888a60501c1660ff169052565b614e316101608f01888a60581c1660ff169052565b60ff88851c8816166101808f0152614e546101a08f01888a60681c1660ff169052565b614e696101c08f01888a60701c1660ff169052565b614e7e6101e08f01888a60781c1660ff169052565b60ff88841c8816166102008f0152614ea16102208f01888a60881c1660ff169052565b614eb66102408f01888a60901c1660ff169052565b614ecb6102608f01888a60981c1660ff169052565b60ff88871c8816166102808f0152614eee6102a08f01888a60a81c1660ff169052565b614f036102c08f01888a60b01c1660ff169052565b614f186102e08f01888a60b81c1660ff169052565b60ff88831c8816166103008f0152614f3b6103208f01888a60c81c1660ff169052565b614f506103408f01888a60d01c1660ff169052565b614f656103608f01888a60d81c1660ff169052565b60ff88821c8816166103808f0152505050505050614f8e6103a08901828460e81c1660ff169052565b614fa36103c08901828460f01c1660ff169052565b5060f81c6103e08701526104009095019460019190910190602001614d3c565b90549082811015614fde5760ff821686526020909501946001015b82811015614ffa5760ff600883901c1686526020909501946001015b828110156150165760ff601083901c1686526020909501946001015b828110156150325760ff601883901c1686526020909501946001015b8281101561504f57602082901c60ff168652602095909501946001015b8281101561506b5760ff602883901c1686526020909501946001015b828110156150875760ff603083901c1686526020909501946001015b828110156150a35760ff603883901c1686526020909501946001015b828110156150bf5760ff604083901c1686526020909501946001015b828110156150db5760ff604883901c1686526020909501946001015b828110156150f75760ff605083901c1686526020909501946001015b828110156151135760ff605883901c1686526020909501946001015b8281101561512f5760ff606083901c1686526020909501946001015b8281101561514b5760ff606883901c1686526020909501946001015b828110156151675760ff607083901c1686526020909501946001015b828110156151835760ff607883901c1686526020909501946001015b8281101561519f5760ff608083901c1686526020909501946001015b828110156151bb5760ff608883901c1686526020909501946001015b828110156151d75760ff609083901c1686526020909501946001015b828110156151f35760ff609883901c1686526020909501946001015b8281101561520f5760ff60a083901c1686526020909501946001015b8281101561522b5760ff60a883901c1686526020909501946001015b828110156152475760ff60b083901c1686526020909501946001015b828110156152635760ff60b883901c1686526020909501946001015b8281101561527f5760ff60c083901c1686526020909501946001015b8281101561529b5760ff60c883901c1686526020909501946001015b828110156152b75760ff60d083901c1686526020909501946001015b828110156152d35760ff60d883901c1686526020909501946001015b828110156152ef5760ff60e083901c1686526020909501946001015b8281101561530b5760ff60e883901c1686526020909501946001015b828110156153275760ff60f083901c1686526020909501946001015b8281101561533d5760f882901c86526020860195505b5093949350505050565b8054825260018101546020830152600281015460408301526003810154606083015260048101546080830152600581015463ffffffff80821660a08501526000916102a0916153a360c08701828460201c1663ffffffff169052565b6153ba60e08701828460401c1663ffffffff169052565b6153d26101008701828460601c1663ffffffff169052565b6153ea6101208701828460801c1663ffffffff169052565b61ffff60a083901c811661014088015260b083901c1661016087015260c082901c811663ffffffff166101808701525060ff60e082901c81166101a087015260e882901c81166101c087015260f082901c166101e086015260f81c61020085015260068301546001600160a01b03166154676102208601826133ab565b50600783015461548461024086016001600160a01b0383166133ab565b60a081901c60ff16610260860152508061028085015261118681850160088501614d25565b60a0815260006154bc60a0830188615347565b82810360208481019190915287518083528882019282019060005b8181101561551557845180516001600160a01b031684528481015160ff168585015260409081015190840152938301936060909201916001016154d7565b505060ff88166040860152925061552a915050565b6060820193909352608001529392505050565b808201808211156103a1576103a1614cdf565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103a1576103a1614cdf565b634e487b7160e01b600052601260045260246000fd5b6000826155a2576155a261557d565b500490565b6000600182016155b9576155b9614cdf565b5060010190565b600082516155d28184602087016137e3565b9190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b63ffffffff93909316835261ffff918216602084015216604082015260600190565b9182526001600160a01b0316602082015260400190565b60006080828403121561565c57600080fd5b604051608081018181106001600160401b038211171561567e5761567e6133b8565b60405261568a83614b79565b8152602083015161569a8161352e565b60208201526156ab60408401614b79565b60408201526156bc60608401614b79565b60608201529392505050565b600063ffffffff808416806156df576156df61557d565b92169190910492915050565b805480835260008281526020808220940193909190825b82601f82011015614fc357815460ff8082168852602061572b818a01838560081c1660ff169052565b6040615740818b01848660101c1660ff169052565b6060615755818c01858760181c1660ff169052565b6080615769818d018688871c1660ff169052565b60a09350615780848d01868860281c1660ff169052565b60c0615795818e01878960301c1660ff169052565b60e06157aa818f01888a60381c1660ff169052565b60ff88861c8816166101008f01526157cd6101208f01888a60481c1660ff169052565b6157e26101408f01888a60501c1660ff169052565b6157f76101608f01888a60581c1660ff169052565b60ff88851c8816166101808f015261581a6101a08f01888a60681c1660ff169052565b61582f6101c08f01888a60701c1660ff169052565b6158446101e08f01888a60781c1660ff169052565b60ff88841c8816166102008f01526158676102208f01888a60881c1660ff169052565b61587c6102408f01888a60901c1660ff169052565b6158916102608f01888a60981c1660ff169052565b60ff88871c8816166102808f01526158b46102a08f01888a60a81c1660ff169052565b6158c96102c08f01888a60b01c1660ff169052565b6158de6102e08f01888a60b81c1660ff169052565b60ff88831c8816166103008f01526159016103208f01888a60c81c1660ff169052565b6159166103408f01888a60d01c1660ff169052565b61592b6103608f01888a60d81c1660ff169052565b60ff88821c8816166103808f01525050505050506159546103a08901828460e81c1660ff169052565b6159696103c08901828460f01c1660ff169052565b5060f81c6103e08701526104009095019460019190910190602001615702565b8054825260018101546020830152600281015460408301526003810154606083015260048101546080830152600581015463ffffffff80821660a08501526000916102a0916159e560c08701828460201c1663ffffffff169052565b6159fc60e08701828460401c1663ffffffff169052565b615a146101008701828460601c1663ffffffff169052565b615a2c6101208701828460801c1663ffffffff169052565b61ffff60a083901c811661014088015260b083901c1661016087015260c082901c811663ffffffff166101808701525060ff60e082901c81166101a087015260e882901c81166101c087015260f082901c166101e086015260f81c61020085015260068301546001600160a01b0316615aa96102208601826133ab565b506007830154615ac661024086016001600160a01b0383166133ab565b60a081901c60ff166102608601525080610280850152611186818501600885016156eb565b6000815480845260208085019450836000528060002060005b83811015614a165781546001600160a01b038116885260a01c60ff1683880152600180830154604089015260609097019660029092019101615b04565b604081526000615b546040830185615989565b8281036020840152613efd8185615aeb565b600060208284031215615b7857600080fd5b815161191c8161354b565b60208152600061191c6020830184615989565b6000615ba46136858461363f565b9050828152838383011115615bb857600080fd5b61191c8360208301846137e3565b60006020808385031215615bd957600080fd5b82516001600160401b0380821115615bf057600080fd5b818501915085601f830112615c0457600080fd5b8151615c126136858261397d565b81815260059190911b83018401908481019088831115615c3157600080fd5b8585015b8381101561090857805185811115615c4d5760008081fd5b8601603f81018b13615c5f5760008081fd5b615c708b8983015160408401615b96565b845250918601918601615c35565b600060608284031215615c9057600080fd5b604051606081018181106001600160401b0382111715615cb257615cb26133b8565b6040528251815260208301516001600160e81b0381168114615cd357600080fd5b6020820152615ce460408401614b79565b60408201529392505050565b805182526020808201516001600160e81b0316908301526040908101511515910152565b60a081526000615d2760a0830186615aeb565b9050615d366020830185615cf0565b61ffff83166080830152949350505050565b60a081526000615d5b60a0830186615aeb565b9050615d6a6020830185615cf0565b63ffffffff83166080830152949350505050565b6101608101615d8d8285614aa6565b6001600160a01b03929092166101409190910152919050565b604081526000615db96040830185613807565b90508260208301529392505050565b600063ffffffff808316818103615de157615de1614cdf565b6001019392505050565b60ff82811682821603908111156103a1576103a1614cdf565b60ff81811683821601908111156103a1576103a1614cdf565b9485526001600160a01b03938416602086015291909216604084015263ffffffff90911660608301526001600160801b0316608082015260a00190565b600081518084526020808501808196508360051b810191508286016000805b86811015615f1d578385038a528251805160ff168652868101516001600160a01b031687870152604080820151818801526060808301519088015260809182015160a0928801839052805192880183905288019160c088019185915b80831015615f07578451805163ffffffff1685528b015160040b8b850152938a01939281019260019290920191615ed5565b5050509a87019a95505091850191600101615e79565b509298975050505050505050565b600060018060a01b0380835116845280602084015116602085015280604084015116604085015250606082015160a06060850152615f6d60a0850182516133ab565b6020810151615f7f60c08601826133ab565b506040810151615f9260e08601826133ab565b506060810151610100615fa7818701836133ab565b60808301519150610120828188015260a08401519250610140838189015260c08501519350610160615fe0818a018663ffffffff169052565b60e08601519450610180615ffb818b018763ffffffff169052565b8487015163ffffffff166101a08b01528387015160ff166101c08b0152828701516101e08b019190915294506160356102208a0186615e5a565b950151888603609f19016102008a01529493506160589250839150849050613807565b915050608083015161606f608086018260ff169052565b509392505050565b60608152600061608a6060830186615f2b565b846020840152828103604084015261313a8185615347565b6000602082840312156160b457600080fd5b5051919050565b6060815260006160ce6060830186615f2b565b905083602083015260ff83166040830152949350505050565b6000602082840312156160f957600080fd5b81516001600160401b0381111561610f57600080fd5b8201601f8101841361612057600080fd5b61118684825160208401615b96565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8381526001600160a01b038316602082015260a081016111866040830184615cf056fea2646970667358221220c3dfea7cf276b89023e966059d017135f16c3b20d0db0c977870f834653a2b7c64736f6c63430008110033",
  "linkReferences": {
    "contracts/V3/handler/Fomo3dHandlerLib.sol": {
      "Fomo3dHandlerLib": [
        {
          "length": 20,
          "start": 4413
        },
        {
          "length": 20,
          "start": 4637
        },
        {
          "length": 20,
          "start": 5089
        },
        {
          "length": 20,
          "start": 5614
        },
        {
          "length": 20,
          "start": 5772
        },
        {
          "length": 20,
          "start": 5939
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/V3/handler/Fomo3dHandlerLib.sol": {
      "Fomo3dHandlerLib": [
        {
          "length": 20,
          "start": 4380
        },
        {
          "length": 20,
          "start": 4604
        },
        {
          "length": 20,
          "start": 5056
        },
        {
          "length": 20,
          "start": 5581
        },
        {
          "length": 20,
          "start": 5739
        },
        {
          "length": 20,
          "start": 5906
        }
      ]
    }
  }
}
