{
  "contractName": "ACL",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "createBurnedPermission",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "burnPermissionManager",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_entity",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "grantPermission",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_entity",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "getPermissionParamsLength",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        },
        {
          "name": "_how",
          "type": "uint256[]"
        }
      ],
      "name": "evalParams",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "NO_PERMISSION",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATE_PERMISSIONS_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_entity",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "grantPermissionP",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        }
      ],
      "name": "hasPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_entity",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "revokePermission",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_entity",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getPermissionParam",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        },
        {
          "name": "",
          "type": "uint8"
        },
        {
          "name": "",
          "type": "uint240"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ANY_ENTITY",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "removePermissionManager",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newManager",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "setPermissionManager",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        }
      ],
      "name": "getPermissionManager",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_entity",
          "type": "address"
        },
        {
          "name": "_app",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_manager",
          "type": "address"
        }
      ],
      "name": "createPermission",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_permissionsCreator",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EMPTY_PARAM_HASH",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "BURN_ENTITY",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        },
        {
          "name": "_how",
          "type": "uint256[]"
        }
      ],
      "name": "hasPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        },
        {
          "name": "_how",
          "type": "bytes"
        }
      ],
      "name": "hasPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "entity",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "app",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "SetPermission",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "entity",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "app",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "paramsHash",
          "type": "bytes32"
        }
      ],
      "name": "SetPermissionParams",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "app",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "manager",
          "type": "address"
        }
      ],
      "name": "ChangePermissionManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    }
  ],
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062003157833981519152640100000000620024fd6200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b5062000230600080516020620031578339815191528264010000000062002ea36200023782021704565b50565b5490565b9055565b612f0c806200024b6000396000f3006080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146101a55780630803fac0146101f35780630808343e1461020857806309699ff51461023b5780630a8ed3db1461026c57806315949ed7146102a35780631b5e75be146102ec5780631d63ff2b1461036e5780632914b9bd1461038357806332f0a3b5146104055780633d6ab68f1461041a5780636815c9921461042f5780636d6712d8146104b05780637e7db6e1146104e757806380afdea8146105155780638b3dd7491461052a5780639d0effdb1461053f5780639d4941d814610576578063a03c5832146105a4578063a1658fad14610622578063a479e50814610696578063a5ed8bf8146106ab578063a885508a146106c0578063afd925df146106f1578063b190572714610728578063be03847814610759578063c4d66de814610797578063c513f66e146107c5578063d4aae0c4146107da578063de4796ed146107ef578063f516bc0e14610804578063f520b58d14610819578063fdef91061461089a575b600080fd5b3480156101b157600080fd5b506101df7fffffffff0000000000000000000000000000000000000000000000000000000060043516610916565b604080519115158252519081900360200190f35b3480156101ff57600080fd5b506101df610973565b34801561021457600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff6004351660243561099c565b005b34801561024757600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516602435610b90565b34801561027857600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610c62565b3480156102af57600080fd5b506102da73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610c9e565b60408051918252519081900360200190f35b3480156102f857600080fd5b5060408051602060046084358181013583810280860185019096528085526101df958335956024803573ffffffffffffffffffffffffffffffffffffffff9081169760443590911696606435963696919560a495949091019282919085019084908082843750949750610ce09650505050505050565b34801561037a57600080fd5b506102da610d2d565b34801561038f57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103dc943694929360249392840191908190840183828082843750949750610d329650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561041157600080fd5b506103dc610e3e565b34801561042657600080fd5b506102da610edc565b34801561043b57600080fd5b5060408051606435600481810135602081810285810182019096528185526102399573ffffffffffffffffffffffffffffffffffffffff84358116966024803590921696604435963696909560849593949290920192909182919085019084908082843750949750610f009650505050505050565b3480156104bc57600080fd5b506101df73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611011565b3480156104f357600080fd5b506101df73ffffffffffffffffffffffffffffffffffffffff60043516611038565b34801561052157600080fd5b506102da61103e565b34801561053657600080fd5b506102da61106e565b34801561054b57600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611099565b34801561058257600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516611166565b3480156105b057600080fd5b506105de73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435606435611488565b6040805160ff94851681529290931660208301527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff168183015290519081900360600190f35b34801561062e57600080fd5b5060408051602060046044358181013583810280860185019096528085526101df95833573ffffffffffffffffffffffffffffffffffffffff1695602480359636969560649593949201929182918501908490808284375094975061151d9650505050505050565b3480156106a257600080fd5b506103dc6116ab565b3480156106b757600080fd5b506103dc61176d565b3480156106cc57600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516602435611773565b3480156106fd57600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff6004358116906024351660443561183f565b34801561073457600080fd5b506103dc73ffffffffffffffffffffffffffffffffffffffff6004351660243561190a565b34801561076557600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff6004358116906024358116906044359060643516611948565b3480156107a357600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516611af7565b3480156107d157600080fd5b506102da611c8f565b3480156107e657600080fd5b506103dc611cb3565b3480156107fb57600080fd5b506101df611cde565b34801561081057600080fd5b506103dc611cf1565b34801561082557600080fd5b5060408051606435600481810135602081810285810182019096528185526101df9573ffffffffffffffffffffffffffffffffffffffff84358116966024803590921696604435963696909560849593949290920192909182919085019084908082843750949750611cf69650505050505050565b3480156108a657600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526101df9473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750611d9a9650505050505050565b600061092182611db0565b8061096d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f54053e6c00000000000000000000000000000000000000000000000000000000145b92915050565b60008061097e61106e565b90508015801590610996575080610993611dfa565b10155b91505090565b604080516000808252602082019092527f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a916109de9133918491905b5061151d565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082826000610ac6838361190a565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601481526020017f41434c5f4558495354454e545f4d414e41474552000000000000000000000000815250901515610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610b8960018686611dfe565b5050505050565b8181610b9c828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610c5c60018585611dfe565b50505050565b610c998383836000604051908082528060200260200182016040528015610c93578160200160208202803883390190505b50610f00565b505050565b600060016000806000610cb2888888611e95565b81526020808201929092526040908101600090812054845291830193909352910190205490505b9392505050565b60007f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563861415610d1257506001610d24565b610d2186600087878787611f94565b90505b95945050505050565b600081565b6000610d3c6116ab565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dc0578181015183820152602001610da8565b50505050905090810190601f168015610ded5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d6020811015610e3657600080fd5b505192915050565b6000610e48611cb3565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d6020811015610ed557600080fd5b5051905090565b7f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a81565b60008383610f0e828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b506000845111610ff1577f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563610ffa565b610ffa846121dd565b9250611008878787866123ef565b50505050505050565b6040805160008082526020820190925261102d85858584611cf6565b91505b509392505050565b50600190565b60006110697fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6124fd565b905090565b60006110697febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6124fd565b81816110a5828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610b8985858560006123ef565b600080600061117484611038565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5061121a610e3e565b925061122583612505565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000060208201529015156112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5073ffffffffffffffffffffffffffffffffffffffff8416151561132d576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015611327573d6000803e3d6000fd5b5061141d565b508261135573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61253f16565b915061137e73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61267816565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080600080600160008060006114a08c8c8c611e95565b81526020808201929092526040908101600090812054845291830193909352910190208054869081106114cf57fe5b60009182526020909120015460ff8082169a61010083049091169950620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16975095505050505050565b600080611528610973565b15156115375760009150611030565b61153f611cb3565b905073ffffffffffffffffffffffffffffffffffffffff811615156115675760009150611030565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761158f88612707565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561162757818101518382015260200161160f565b50505050905090810190601f1680156116545780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561167657600080fd5b505af115801561168a573d6000803e3d6000fd5b505050506040513d60208110156116a057600080fd5b505195945050505050565b6000806116b6611cb3565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610e0c57600080fd5b60001981565b818161177f828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610c5c60008585611dfe565b818161184b828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146118fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610b89858585611dfe565b60006002600061191a8585612711565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff169392505050565b604080516000808252602082019092527f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a916119889133918491906109d8565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611a25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5083836000611a34838361190a565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601481526020017f41434c5f4558495354454e545f4d414e41474552000000000000000000000000815250901515611aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5061100887878787612805565b611aff61106e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611b9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50611ba461283c565b611bac611cb3565b60408051808201909152601481527f41434c5f415554485f494e49545f4b45524e454c00000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314611c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50611c8c81307f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a82612805565b50565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56381565b60006110697f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6124fd565b6000600019611ceb61106e565b14905090565b600181565b6000806000806000611d09898989611e95565b815260208101919091526040016000205491508115801590611d335750611d338288888888610ce0565b15611d415760019250611d90565b600080611d516000198989611e95565b815260208101919091526040016000205490508015801590611d7d5750611d7d81600019888888610ce0565b15611d8b5760019250611d90565b600092505b5050949350505050565b6000610d24858585611dab8661291b565b611cf6565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b4390565b8260026000611e0d8585612711565b815260208101919091526040908101600090812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559051858316928492908616917ff3addc8b8e25ee11528a61b0e65092cae0666ef0ec0c64cb303993c88d689b4d9190a4505050565b604080517f5045524d495353494f4e000000000000000000000000000000000000000000006020808301919091526c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8088168202602a850152861602603e8301526052808301859052835180840390910181526072909201928390528151600093918291908401908083835b60208310611f6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611f23565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b6000611f9e612ec0565b600088815260016020526040812054819063ffffffff8a1610611fc457600093506121d0565b60008a8152600160205260409020805463ffffffff8b16908110611fe457fe5b600091825260209182902060408051606081018252929091015460ff8082168085526101008304909116948401949094526201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690820152935060cc141561205e57612057838b8a8a8a8a6129dc565b93506121d0565b50604082015182517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091169060ff1660cb14156120c1576120a5836040015189898989612baf565b6120b05760006120b3565b60015b60ff1691506001905061217f565b825160ff1660c814156120dd576120d6611dfa565b915061217f565b825160ff1660c914156120f2576120d6612d18565b825160ff1660cd141561212b5782604001517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061217f565b8451835160ff161061214057600093506121d0565b82518551869160ff1690811061215257fe5b906020019060200201517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691505b6007836020015160ff16600c81111561219457fe5b600c81111561219f57fe5b14156121b0576000821193506121d0565b6121cd82846020015160ff16600c8111156121c757fe5b83612d1c565b93505b5050509695505050505050565b60008060008060006121ed612ec0565b8660405160200180828051906020019060200280838360005b8381101561221e578181015183820152602001612206565b505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831061228457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612247565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260019092529290208054929950975050151591506123e4905057600092505b86518310156123e45786838151811015156122e757fe5b90602001906020020151915060606040519081016040528061230884612dd9565b60ff16815260200161231984612dff565b60ff90811682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858116602093840152875460018082018a5560008a81528590208651920180549587015160408801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909716938616939093177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010093909516929092029390931761ffff1662010000949092169390930217909155939093019290506122d0565b509295945050505050565b60008082600080612401898989611e95565b8152602081019190915260400160002055821580159250829061244457507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5638314155b6040805184151581529051919250859173ffffffffffffffffffffffffffffffffffffffff80891692908a16917f759b9a74d5354b5801710a0c1b283cc9f0d32b607ac8ced10c83ac8e75c77d529181900360200190a480156124f557604080518481529051859173ffffffffffffffffffffffffffffffffffffffff80891692908a16917f8dfee25d92d73b8c9b868f9fa3e215cc1981033f426e53803e3da4f09a2cfc30919081900360200190a45b505050505050565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff8316151561252e5760009150612539565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806125cc8684612e24565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009061102d8582612e55565b8051602002815290565b604080517f524f4c45000000000000000000000000000000000000000000000000000000006020808301919091526c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff86160260248301526038808301859052835180840390910181526058909201928390528151600093918291908401908083835b602083106127d257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612795565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b6128318484847f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5636123ef565b610c5c818484611dfe565b61284461106e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156128e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b506129196128ec611dfa565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff612ea316565b565b606060006020835181151561292c57fe5b049050806020028351146040805190810160405280601a81526020017f434f4e56455253494f4e5f494d50524f5045525f4c454e4754480000000000008152509015156129d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5082525090565b60008080808080808080600c8f6020015160ff16600c8111156129fb57fe5b600c811115612a0657fe5b1415612a7157612a398f604001517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ea7565b91995097509550612a4e8e898f8f8f8f611f94565b9450612a6a8e86612a5f5787612a61565b885b8f8f8f8f611f94565b9850612b9d565b612a9e8f604001517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ea7565b509094509250612ab28e858f8f8f8f611f94565b915060088f6020015160ff16600c811115612ac957fe5b600c811115612ad457fe5b1415612ae35781159850612b9d565b818015612b0d5750600a8f6020015160ff16600c811115612b0057fe5b600c811115612b0b57fe5b145b15612b1b5760019850612b9d565b81158015612b46575060098f6020015160ff16600c811115612b3957fe5b600c811115612b4457fe5b145b15612b545760009850612b9d565b612b628e848f8f8f8f611f94565b9050600b8f6020015160ff16600c811115612b7957fe5b600c811115612b8457fe5b1415612b995780151582151514159850612b9d565b8098505b50505050505050509695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301908152908516604483015260648201849052608060848301908152835160a484015283516000937f2a151090000000000000000000000000000000000000000000000000000000009360609386938493849388938e938e938e938e939092909160c40190602080860191028083838d5b83811015612c56578181015183820152602001612c3e565b5050505090500195505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505093506000808551602087018e5afa9250821515612ce15760009550612d0a565b3d915060208214612cf55760009550612d0a565b604051826000823e8051915060008152508095505b505050505095945050505050565b4290565b6000600183600c811115612d2c57fe5b1415612d3b5750828114610cd9565b600283600c811115612d4957fe5b1415612d59575082811415610cd9565b600383600c811115612d6757fe5b1415612d765750808311610cd9565b600483600c811115612d8457fe5b1415612d935750808310610cd9565b600583600c811115612da157fe5b1415612db1575080831015610cd9565b600683600c811115612dbf57fe5b1415612dcf575080831115610cd9565b5060009392505050565b7f0100000000000000000000000000000000000000000000000000000000000000900490565b7e01000000000000000000000000000000000000000000000000000000000000900490565b6000806000806040516020818751602089018a5afa92506000831115612e4957805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115612e99573d8015612e865760208114612e8f57612e97565b60019350612e97565b600183511493505b505b5090949350505050565b9055565b9064010000000082049068010000000000000000830490565b6040805160608101825260008082526020820181905291810191909152905600a165627a7a72305820f2d56e5c71cd077f607942bb12c003e87c6df50521a077ea3a331e6f86681deb0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146101a55780630803fac0146101f35780630808343e1461020857806309699ff51461023b5780630a8ed3db1461026c57806315949ed7146102a35780631b5e75be146102ec5780631d63ff2b1461036e5780632914b9bd1461038357806332f0a3b5146104055780633d6ab68f1461041a5780636815c9921461042f5780636d6712d8146104b05780637e7db6e1146104e757806380afdea8146105155780638b3dd7491461052a5780639d0effdb1461053f5780639d4941d814610576578063a03c5832146105a4578063a1658fad14610622578063a479e50814610696578063a5ed8bf8146106ab578063a885508a146106c0578063afd925df146106f1578063b190572714610728578063be03847814610759578063c4d66de814610797578063c513f66e146107c5578063d4aae0c4146107da578063de4796ed146107ef578063f516bc0e14610804578063f520b58d14610819578063fdef91061461089a575b600080fd5b3480156101b157600080fd5b506101df7fffffffff0000000000000000000000000000000000000000000000000000000060043516610916565b604080519115158252519081900360200190f35b3480156101ff57600080fd5b506101df610973565b34801561021457600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff6004351660243561099c565b005b34801561024757600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516602435610b90565b34801561027857600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610c62565b3480156102af57600080fd5b506102da73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610c9e565b60408051918252519081900360200190f35b3480156102f857600080fd5b5060408051602060046084358181013583810280860185019096528085526101df958335956024803573ffffffffffffffffffffffffffffffffffffffff9081169760443590911696606435963696919560a495949091019282919085019084908082843750949750610ce09650505050505050565b34801561037a57600080fd5b506102da610d2d565b34801561038f57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103dc943694929360249392840191908190840183828082843750949750610d329650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561041157600080fd5b506103dc610e3e565b34801561042657600080fd5b506102da610edc565b34801561043b57600080fd5b5060408051606435600481810135602081810285810182019096528185526102399573ffffffffffffffffffffffffffffffffffffffff84358116966024803590921696604435963696909560849593949290920192909182919085019084908082843750949750610f009650505050505050565b3480156104bc57600080fd5b506101df73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611011565b3480156104f357600080fd5b506101df73ffffffffffffffffffffffffffffffffffffffff60043516611038565b34801561052157600080fd5b506102da61103e565b34801561053657600080fd5b506102da61106e565b34801561054b57600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611099565b34801561058257600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516611166565b3480156105b057600080fd5b506105de73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435606435611488565b6040805160ff94851681529290931660208301527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff168183015290519081900360600190f35b34801561062e57600080fd5b5060408051602060046044358181013583810280860185019096528085526101df95833573ffffffffffffffffffffffffffffffffffffffff1695602480359636969560649593949201929182918501908490808284375094975061151d9650505050505050565b3480156106a257600080fd5b506103dc6116ab565b3480156106b757600080fd5b506103dc61176d565b3480156106cc57600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516602435611773565b3480156106fd57600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff6004358116906024351660443561183f565b34801561073457600080fd5b506103dc73ffffffffffffffffffffffffffffffffffffffff6004351660243561190a565b34801561076557600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff6004358116906024358116906044359060643516611948565b3480156107a357600080fd5b5061023973ffffffffffffffffffffffffffffffffffffffff60043516611af7565b3480156107d157600080fd5b506102da611c8f565b3480156107e657600080fd5b506103dc611cb3565b3480156107fb57600080fd5b506101df611cde565b34801561081057600080fd5b506103dc611cf1565b34801561082557600080fd5b5060408051606435600481810135602081810285810182019096528185526101df9573ffffffffffffffffffffffffffffffffffffffff84358116966024803590921696604435963696909560849593949290920192909182919085019084908082843750949750611cf69650505050505050565b3480156108a657600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526101df9473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750611d9a9650505050505050565b600061092182611db0565b8061096d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f54053e6c00000000000000000000000000000000000000000000000000000000145b92915050565b60008061097e61106e565b90508015801590610996575080610993611dfa565b10155b91505090565b604080516000808252602082019092527f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a916109de9133918491905b5061151d565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610ab7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7c578181015183820152602001610a64565b50505050905090810190601f168015610aa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082826000610ac6838361190a565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601481526020017f41434c5f4558495354454e545f4d414e41474552000000000000000000000000815250901515610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610b8960018686611dfe565b5050505050565b8181610b9c828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610c5c60018585611dfe565b50505050565b610c998383836000604051908082528060200260200182016040528015610c93578160200160208202803883390190505b50610f00565b505050565b600060016000806000610cb2888888611e95565b81526020808201929092526040908101600090812054845291830193909352910190205490505b9392505050565b60007f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563861415610d1257506001610d24565b610d2186600087878787611f94565b90505b95945050505050565b600081565b6000610d3c6116ab565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dc0578181015183820152602001610da8565b50505050905090810190601f168015610ded5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d6020811015610e3657600080fd5b505192915050565b6000610e48611cb3565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d6020811015610ed557600080fd5b5051905090565b7f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a81565b60008383610f0e828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b506000845111610ff1577f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563610ffa565b610ffa846121dd565b9250611008878787866123ef565b50505050505050565b6040805160008082526020820190925261102d85858584611cf6565b91505b509392505050565b50600190565b60006110697fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6124fd565b905090565b60006110697febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6124fd565b81816110a5828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610b8985858560006123ef565b600080600061117484611038565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5061121a610e3e565b925061122583612505565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000060208201529015156112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5073ffffffffffffffffffffffffffffffffffffffff8416151561132d576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015611327573d6000803e3d6000fd5b5061141d565b508261135573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61253f16565b915061137e73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61267816565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080600080600160008060006114a08c8c8c611e95565b81526020808201929092526040908101600090812054845291830193909352910190208054869081106114cf57fe5b60009182526020909120015460ff8082169a61010083049091169950620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16975095505050505050565b600080611528610973565b15156115375760009150611030565b61153f611cb3565b905073ffffffffffffffffffffffffffffffffffffffff811615156115675760009150611030565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761158f88612707565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561162757818101518382015260200161160f565b50505050905090810190601f1680156116545780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561167657600080fd5b505af115801561168a573d6000803e3d6000fd5b505050506040513d60208110156116a057600080fd5b505195945050505050565b6000806116b6611cb3565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610e0c57600080fd5b60001981565b818161177f828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610c5c60008585611dfe565b818161184b828261190a565b60408051808201909152601381527f41434c5f415554485f4e4f5f4d414e414745520000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146118fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50610b89858585611dfe565b60006002600061191a8585612711565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff169392505050565b604080516000808252602082019092527f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a916119889133918491906109d8565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611a25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5083836000611a34838361190a565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601481526020017f41434c5f4558495354454e545f4d414e41474552000000000000000000000000815250901515611aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5061100887878787612805565b611aff61106e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611b9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50611ba461283c565b611bac611cb3565b60408051808201909152601481527f41434c5f415554485f494e49545f4b45524e454c00000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314611c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b50611c8c81307f0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a82612805565b50565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56381565b60006110697f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6124fd565b6000600019611ceb61106e565b14905090565b600181565b6000806000806000611d09898989611e95565b815260208101919091526040016000205491508115801590611d335750611d338288888888610ce0565b15611d415760019250611d90565b600080611d516000198989611e95565b815260208101919091526040016000205490508015801590611d7d5750611d7d81600019888888610ce0565b15611d8b5760019250611d90565b600092505b5050949350505050565b6000610d24858585611dab8661291b565b611cf6565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b4390565b8260026000611e0d8585612711565b815260208101919091526040908101600090812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559051858316928492908616917ff3addc8b8e25ee11528a61b0e65092cae0666ef0ec0c64cb303993c88d689b4d9190a4505050565b604080517f5045524d495353494f4e000000000000000000000000000000000000000000006020808301919091526c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8088168202602a850152861602603e8301526052808301859052835180840390910181526072909201928390528151600093918291908401908083835b60208310611f6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611f23565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b6000611f9e612ec0565b600088815260016020526040812054819063ffffffff8a1610611fc457600093506121d0565b60008a8152600160205260409020805463ffffffff8b16908110611fe457fe5b600091825260209182902060408051606081018252929091015460ff8082168085526101008304909116948401949094526201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690820152935060cc141561205e57612057838b8a8a8a8a6129dc565b93506121d0565b50604082015182517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091169060ff1660cb14156120c1576120a5836040015189898989612baf565b6120b05760006120b3565b60015b60ff1691506001905061217f565b825160ff1660c814156120dd576120d6611dfa565b915061217f565b825160ff1660c914156120f2576120d6612d18565b825160ff1660cd141561212b5782604001517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061217f565b8451835160ff161061214057600093506121d0565b82518551869160ff1690811061215257fe5b906020019060200201517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691505b6007836020015160ff16600c81111561219457fe5b600c81111561219f57fe5b14156121b0576000821193506121d0565b6121cd82846020015160ff16600c8111156121c757fe5b83612d1c565b93505b5050509695505050505050565b60008060008060006121ed612ec0565b8660405160200180828051906020019060200280838360005b8381101561221e578181015183820152602001612206565b505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831061228457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612247565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260019092529290208054929950975050151591506123e4905057600092505b86518310156123e45786838151811015156122e757fe5b90602001906020020151915060606040519081016040528061230884612dd9565b60ff16815260200161231984612dff565b60ff90811682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858116602093840152875460018082018a5560008a81528590208651920180549587015160408801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909716938616939093177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010093909516929092029390931761ffff1662010000949092169390930217909155939093019290506122d0565b509295945050505050565b60008082600080612401898989611e95565b8152602081019190915260400160002055821580159250829061244457507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5638314155b6040805184151581529051919250859173ffffffffffffffffffffffffffffffffffffffff80891692908a16917f759b9a74d5354b5801710a0c1b283cc9f0d32b607ac8ced10c83ac8e75c77d529181900360200190a480156124f557604080518481529051859173ffffffffffffffffffffffffffffffffffffffff80891692908a16917f8dfee25d92d73b8c9b868f9fa3e215cc1981033f426e53803e3da4f09a2cfc30919081900360200190a45b505050505050565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff8316151561252e5760009150612539565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806125cc8684612e24565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009061102d8582612e55565b8051602002815290565b604080517f524f4c45000000000000000000000000000000000000000000000000000000006020808301919091526c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff86160260248301526038808301859052835180840390910181526058909201928390528151600093918291908401908083835b602083106127d257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612795565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b6128318484847f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5636123ef565b610c5c818484611dfe565b61284461106e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156128e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b506129196128ec611dfa565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff612ea316565b565b606060006020835181151561292c57fe5b049050806020028351146040805190810160405280601a81526020017f434f4e56455253494f4e5f494d50524f5045525f4c454e4754480000000000008152509015156129d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a7c578181015183820152602001610a64565b5082525090565b60008080808080808080600c8f6020015160ff16600c8111156129fb57fe5b600c811115612a0657fe5b1415612a7157612a398f604001517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ea7565b91995097509550612a4e8e898f8f8f8f611f94565b9450612a6a8e86612a5f5787612a61565b885b8f8f8f8f611f94565b9850612b9d565b612a9e8f604001517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ea7565b509094509250612ab28e858f8f8f8f611f94565b915060088f6020015160ff16600c811115612ac957fe5b600c811115612ad457fe5b1415612ae35781159850612b9d565b818015612b0d5750600a8f6020015160ff16600c811115612b0057fe5b600c811115612b0b57fe5b145b15612b1b5760019850612b9d565b81158015612b46575060098f6020015160ff16600c811115612b3957fe5b600c811115612b4457fe5b145b15612b545760009850612b9d565b612b628e848f8f8f8f611f94565b9050600b8f6020015160ff16600c811115612b7957fe5b600c811115612b8457fe5b1415612b995780151582151514159850612b9d565b8098505b50505050505050509695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301908152908516604483015260648201849052608060848301908152835160a484015283516000937f2a151090000000000000000000000000000000000000000000000000000000009360609386938493849388938e938e938e938e939092909160c40190602080860191028083838d5b83811015612c56578181015183820152602001612c3e565b5050505090500195505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505093506000808551602087018e5afa9250821515612ce15760009550612d0a565b3d915060208214612cf55760009550612d0a565b604051826000823e8051915060008152508095505b505050505095945050505050565b4290565b6000600183600c811115612d2c57fe5b1415612d3b5750828114610cd9565b600283600c811115612d4957fe5b1415612d59575082811415610cd9565b600383600c811115612d6757fe5b1415612d765750808311610cd9565b600483600c811115612d8457fe5b1415612d935750808310610cd9565b600583600c811115612da157fe5b1415612db1575080831015610cd9565b600683600c811115612dbf57fe5b1415612dcf575080831115610cd9565b5060009392505050565b7f0100000000000000000000000000000000000000000000000000000000000000900490565b7e01000000000000000000000000000000000000000000000000000000000000900490565b6000806000806040516020818751602089018a5afa92506000831115612e4957805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115612e99573d8015612e865760208114612e8f57612e97565b60019350612e97565b600183511493505b505b5090949350505050565b9055565b9064010000000082049068010000000000000000830490565b6040805160608101825260008082526020820181905291810191909152905600a165627a7a72305820f2d56e5c71cd077f607942bb12c003e87c6df50521a077ea3a331e6f86681deb0029",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
