@aragon/apps-payroll
Version:
_**Code in Github:**_ [aragon-apps/apps/payroll](https://github.com/aragon/aragon-apps/tree/master/future-apps/payroll)
1,142 lines • 173 kB
JSON
{
"contractName": "PayrollMock",
"abi": [
{
"constant": true,
"inputs": [],
"name": "hasInitialized",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_employeeId",
"type": "uint256"
},
{
"name": "_denominationSalary",
"type": "uint256"
}
],
"name": "setEmployeeSalary",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newAccountAddress",
"type": "address"
}
],
"name": "changeAddressByEmployee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MANAGE_ALLOWED_TOKENS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "nextEmployee",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_employeeId",
"type": "uint256"
},
{
"name": "_endDate",
"type": "uint64"
}
],
"name": "terminateEmployee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_employeeId",
"type": "uint256"
},
{
"name": "_token",
"type": "address"
}
],
"name": "getAllocation",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"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": "MODIFY_RATE_EXPIRY_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "finance",
"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": "ADD_BONUS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "feed",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_finance",
"type": "address"
},
{
"name": "_denominationToken",
"type": "address"
},
{
"name": "_priceFeed",
"type": "address"
},
{
"name": "_rateExpiryTime",
"type": "uint64"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "SET_EMPLOYEE_SALARY_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_time",
"type": "uint64"
}
],
"name": "setRateExpiryTime",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MODIFY_PRICE_FEED_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_seconds",
"type": "uint256"
}
],
"name": "mockDecreaseTime",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_timestamp",
"type": "uint256"
}
],
"name": "mockSetTimestamp",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getBlockNumberPublic",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "TERMINATE_EMPLOYEE_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_feed",
"type": "address"
}
],
"name": "setPriceFeed",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_number",
"type": "uint256"
}
],
"name": "mockAdvanceBlocks",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getTimestampPublic",
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"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": "ADD_REIMBURSEMENT_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_allowed",
"type": "bool"
}
],
"name": "setAllowedToken",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getInitializationBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_seconds",
"type": "uint256"
}
],
"name": "mockIncreaseTime",
"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": "_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": "_employeeId",
"type": "uint256"
}
],
"name": "getTotalOwedSalary",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_employeeId",
"type": "uint256"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "addBonus",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_employeeId",
"type": "uint256"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "addReimbursement",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_employeeId",
"type": "uint256"
}
],
"name": "getEmployee",
"outputs": [
{
"name": "accountAddress",
"type": "address"
},
{
"name": "denominationSalary",
"type": "uint256"
},
{
"name": "accruedSalary",
"type": "uint256"
},
{
"name": "bonus",
"type": "uint256"
},
{
"name": "reimbursements",
"type": "uint256"
},
{
"name": "lastPayroll",
"type": "uint64"
},
{
"name": "endDate",
"type": "uint64"
},
{
"name": "allocationTokens",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rateExpiryTime",
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ADD_EMPLOYEE_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_sender",
"type": "address"
},
{
"name": "",
"type": "bytes"
}
],
"name": "canForward",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kernel",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_evmScript",
"type": "bytes"
}
],
"name": "forward",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_type",
"type": "uint8"
},
{
"name": "_requestedAmount",
"type": "uint256"
},
{
"name": "_minRates",
"type": "uint256[]"
}
],
"name": "payday",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isPetrified",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_accountAddress",
"type": "address"
},
{
"name": "_initialDenominationSalary",
"type": "uint256"
},
{
"name": "_startDate",
"type": "uint64"
},
{
"name": "_role",
"type": "string"
}
],
"name": "addEmployee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "denominationToken",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "isTokenAllowed",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isForwarder",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_tokens",
"type": "address[]"
},
{
"name": "_distribution",
"type": "uint256[]"
}
],
"name": "determineAllocation",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_accountAddress",
"type": "address"
}
],
"name": "getEmployeeIdByAddress",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": true,
"name": "accountAddress",
"type": "address"
},
{
"indexed": false,
"name": "initialDenominationSalary",
"type": "uint256"
},
{
"indexed": false,
"name": "startDate",
"type": "uint64"
},
{
"indexed": false,
"name": "role",
"type": "string"
}
],
"name": "AddEmployee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": false,
"name": "endDate",
"type": "uint64"
}
],
"name": "TerminateEmployee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": false,
"name": "denominationSalary",
"type": "uint256"
}
],
"name": "SetEmployeeSalary",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "AddEmployeeAccruedSalary",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "AddEmployeeBonus",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "AddEmployeeReimbursement",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": true,
"name": "newAccountAddress",
"type": "address"
},
{
"indexed": true,
"name": "oldAccountAddress",
"type": "address"
}
],
"name": "ChangeAddressByEmployee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
}
],
"name": "DetermineAllocation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "employeeId",
"type": "uint256"
},
{
"indexed": true,
"name": "accountAddress",
"type": "address"
},
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"name": "exchangeRate",
"type": "uint256"
},
{
"indexed": false,
"name": "paymentReference",
"type": "string"
}
],
"name": "SendPayment",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "allowed",
"type": "bool"
}
],
"name": "SetAllowedToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "feed",
"type": "address"
}
],
"name": "SetPriceFeed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "time",
"type": "uint64"
}
],
"name": "SetRateExpiryTime",
"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"
},
{
"constant": true,
"inputs": [],
"name": "getMaxAllowedTokens",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f600080516020620061b6833981519152640100000000620039266200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b5062000230600080516020620061b6833981519152826401000000006200392a6200023782021704565b50565b5490565b9055565b615f6b806200024b6000396000f3006080604052600436106102665763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461026b5780630a0c75aa146102945780631216906b146102b15780631bb440b1146102df5780631bfe5f61146103065780632350a84d1461031b57806327e02676146103405780632914b9bd146103715780632ee235ef146103f3578063313b7b191461040857806332f0a3b51461041d57806335285a0f1461043257806337a7b7d8146104475780633fe3f1cf1461045c578063456fbfea146104a35780634fd52f42146104b8578063595da729146104da57806360be675f146104ef5780636958839e146105075780636da1dfac1461051f5780637100650e14610534578063724e78da1461054957806375c8319d146105775780637750db141461058c5780637e365950146105a45780637e7db6e1146105d657806380afdea81461060457806388ea9247146106195780638aaa22841461062e5780638b3dd749146106615780638f49e12f146106765780639d4941d81461068e578063a1658fad146106bc578063a479e50814610730578063a52e605f14610745578063b02b69d61461075d578063b7cafcc814610778578063bca9a5c514610793578063bef80ce114610884578063bf510ff414610899578063c0774df3146108ae578063d4aae0c414610922578063d948d46814610937578063dcb33f3e14610990578063de4796ed146109bb578063ea199a83146109d0578063f6b9fdfb14610a1c578063f9eaee0d14610a31578063fd64eccb14610a5f578063fe2fdf0b14610a74578063ffd5acad14610aa0575b600080fd5b34801561027757600080fd5b50610280610ace565b604080519115158252519081900360200190f35b3480156102a057600080fd5b506102af600435602435610af8565b005b3480156102bd57600080fd5b506102af73ffffffffffffffffffffffffffffffffffffffff60043516610d7a565b3480156102eb57600080fd5b506102f4611011565b60408051918252519081900360200190f35b34801561031257600080fd5b506102f4611035565b34801561032757600080fd5b506102af60043567ffffffffffffffff6024351661103b565b34801561034c57600080fd5b506102f460043573ffffffffffffffffffffffffffffffffffffffff602435166111d2565b34801561037d57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103ca9436949293602493928401919081908401838280828437509497506112b99650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156103ff57600080fd5b506102f46113c7565b34801561041457600080fd5b506103ca6113eb565b34801561042957600080fd5b506103ca611407565b34801561043e57600080fd5b506102f46114a6565b34801561045357600080fd5b506103ca6114ca565b34801561046857600080fd5b506102af73ffffffffffffffffffffffffffffffffffffffff6004358116906024358116906044351667ffffffffffffffff606435166114e6565b3480156104af57600080fd5b506102f46116ac565b3480156104c457600080fd5b506102af67ffffffffffffffff600435166116d0565b3480156104e657600080fd5b506102f46117d6565b3480156104fb57600080fd5b506102af6004356117fa565b34801561051357600080fd5b506102af600435611834565b34801561052b57600080fd5b506102f4611839565b34801561054057600080fd5b506102f4611848565b34801561055557600080fd5b506102af73ffffffffffffffffffffffffffffffffffffffff6004351661186c565b34801561058357600080fd5b506102f4611964565b34801561059857600080fd5b506102af600435611969565b3480156105b057600080fd5b506105b96119a2565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156105e257600080fd5b5061028073ffffffffffffffffffffffffffffffffffffffff600435166119ac565b34801561061057600080fd5b506102f46119b2565b34801561062557600080fd5b506102f46119dd565b34801561063a57600080fd5b506102af73ffffffffffffffffffffffffffffffffffffffff600435166024351515611a01565b34801561066d57600080fd5b506102f4611c30565b34801561068257600080fd5b506102af600435611c5b565b34801561069a57600080fd5b506102af73ffffffffffffffffffffffffffffffffffffffff60043516611c86565b3480156106c857600080fd5b50604080516020600460443581810135838102808601850190965280855261028095833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750611fa89650505050505050565b34801561073c57600080fd5b506103ca612138565b34801561075157600080fd5b506102f460043561222c565b34801561076957600080fd5b506102af6004356024356122f6565b34801561078457600080fd5b506102af60043560243561247c565b34801561079f57600080fd5b506107ab600435612602565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018581526020018467ffffffffffffffff1667ffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610869578181015183820152602001610851565b50505050905001995050505050505050505060405180910390f35b34801561089057600080fd5b506105b96127c0565b3480156108a557600080fd5b506102f46127e8565b3480156108ba57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261028095833573ffffffffffffffffffffffffffffffffffffffff1695369560449491939091019190819084018382808284375094975061280c9650505050505050565b34801561092e57600080fd5b506103ca612842565b34801561094357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102af94369492936024939284019190819084018382808284375094975061286d9650505050505050565b34801561099c57600080fd5b506102af6004803560ff169060248035916044359182019101356129a1565b3480156109c757600080fd5b50610280612ebd565b3480156109dc57600080fd5b506102af6004803573ffffffffffffffffffffffffffffffffffffffff1690602480359160443567ffffffffffffffff1691606435908101910135612eee565b348015610a2857600080fd5b506103ca613012565b348015610a3d57600080fd5b5061028073ffffffffffffffffffffffffffffffffffffffff6004351661302e565b348015610a6b57600080fd5b50610280613102565b348015610a8057600080fd5b506102af6024600480358281019290820135918135918201910135613107565b348015610aac57600080fd5b506102f473ffffffffffffffffffffffffffffffffffffffff60043516613682565b600080610ad9611c30565b90508015801590610af1575080610aee613772565b10155b91505b5090565b60008281526004602052604081206001015481907fea9ac65018da2421cf419ee2152371440c08267a193a33ccc1e39545d197e44d90610b3b908690869061378e565b610b46338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610c1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610be4578181015183820152602001610bcc565b50505050905090810190601f168015610c115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5085610c2a81613807565b60408051808201909152601b81527f504159524f4c4c5f4e4f4e5f4143544956455f454d504c4f59454500000000006020820152901515610cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5060008781526004602052604081209550610ce3908690613824565b9350610cef87856138b1565b610cf7613914565b60058601805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911790556001850186905560408051878152905188917fec4f21c1230ce7d88517d17b1f8ae85725a029dc2066fe2ed6401f1b01024e05919081900360200190a250505050505050565b33600081815260056020908152604080832054835260048252808320548151808301909252601d82527f504159524f4c4c5f53454e4445525f444f45535f4e4f545f4d4154434800000092820192909252919283929173ffffffffffffffffffffffffffffffffffffffff1614610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50610e777fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613926565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c0000000000000060208201529015610f13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50610f457fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff61392a16565b50503360009081526005602090815260408083205480845260049092529091205473ffffffffffffffffffffffffffffffffffffffff16610f86828461392e565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526005602052604080822082905551919286169185917f5a3949ffa1f5851afea532ad9d4c7dfb51bf68f7d5964ff77f3bb4c0abedbbe491a461100c7fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600063ffffffff61392a16565b505050565b7f0be34987c45700ee3fae8c55e270418ba903337decc6bacb1879504be9331c0681565b60035481565b7f69c67f914d12b6440e7ddf01961214818d9158fbcb19211e0ff42800fdea92426110708367ffffffffffffffff8416613b06565b61107b338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b508361112381613807565b60408051808201909152601b81527f504159524f4c4c5f4e4f4e5f4143544956455f454d504c4f594545000000000060208201529015156111c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b506111cb8585613b61565b5050505050565b6000826111de81613ca4565b60408051808201909152601d81527f504159524f4c4c5f454d504c4f5945455f444f45534e545f4558495354000000602082015290151561127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50600084815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845260070190915290205491505b5092915050565b60006112c3612138565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134757818101518382015260200161132f565b50505050905090810190601f1680156113745780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561139357600080fd5b505af11580156113a7573d6000803e3d6000fd5b505050506040513d60208110156113bd57600080fd5b505190505b919050565b7f79fe989a8899060dfbdabb174ebb96616fa9f1d9dadd739f8d814cbab452404e81565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000611411612842565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561147457600080fd5b505af1158015611488573d6000803e3d6000fd5b505050506040513d602081101561149e57600080fd5b505190505b90565b7fceca7e2f5eb749a87aaf68f3f76d6b9251aa2f4600f13f93c5a4adf7a72df4ae81565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6114ee611c30565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901561158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50611593613cce565b61159c84613dad565b60408051808201909152601c81527f504159524f4c4c5f46494e414e43455f4e4f545f434f4e5452414354000000006020820152901515611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b506000805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600180549286169290911691909117905561169882613de0565b6116a181613efc565b505060016003555050565b7fea9ac65018da2421cf419ee2152371440c08267a193a33ccc1e39545d197e44d81565b6002547f79fe989a8899060dfbdabb174ebb96616fa9f1d9dadd739f8d814cbab452404e906117249067ffffffffffffffff8085169174010000000000000000000000000000000000000000900416613b06565b61172f338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156117cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5061100c83613efc565b7f74350efbcba8b85341c5bbf70cc34e2a585fc1463524773a12fa0a71d4eb930281565b6007541561181d57600754611815908263ffffffff61403516565b600755611831565b61182d428263ffffffff61403516565b6007555b50565b600755565b6000611843613772565b905090565b7f69c67f914d12b6440e7ddf01961214818d9158fbcb19211e0ff42800fdea924281565b6002547f74350efbcba8b85341c5bbf70cc34e2a585fc1463524773a12fa0a71d4eb9302906118b290839073ffffffffffffffffffffffffffffffffffffffff166140e0565b6118bd338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561195a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5061100c83613de0565b601490565b6008541561198c57600854611984908263ffffffff61411816565b600855611831565b61199c438263ffffffff61411816565b60085550565b6000611843613914565b50600190565b60006118437fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b613926565b7f90698b9d54427f1e41636025017309bdb1b55320da960c8845bab0a504b01a1681565b7f0be34987c45700ee3fae8c55e270418ba903337decc6bacb1879504be9331c06611a2b836141bd565b611a36338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5073ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604091829020548251808401909352601983527f504159524f4c4c5f544f4b454e5f414c52454144595f534554000000000000009183019190915260ff1615158415151415611ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5073ffffffffffffffffffffffffffffffffffffffff841660008181526006602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016871515908117909155825190815291517fe589eb036e62c07e307aa4d441bd39c81e8bd86f349eaacb0caa06b1477f7f9a9281900390910190a250505050565b60006118437febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e613926565b60075415611c7657600754611815908263ffffffff61411816565b61182d428263ffffffff61411816565b6000806000611c94846119ac565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50611d3a611407565b9250611d4583613dad565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5073ffffffffffffffffffffffffffffffffffffffff84161515611e4d576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015611e47573d6000803e3d6000fd5b50611f3d565b5082611e7573ffffffffffffffffffffffffffffffffffffffff82163063ffffffff6141e216565b9150611e9e73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61431b16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080611fb3610ace565b1515611fc25760009150612130565b611fca612842565b905073ffffffffffffffffffffffffffffffffffffffff81161515611ff25760009150612130565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761201a886143b3565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156120b257818101518382015260200161209a565b50505050905090810190601f1680156120df5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561210157600080fd5b505af1158015612115573d6000803e3d6000fd5b505050506040513d602081101561212b57600080fd5b505191505b509392505050565b600080612143612842565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156121fa57600080fd5b505af115801561220e573d6000803e3d6000fd5b505050506040513d602081101561222457600080fd5b505192915050565b60008161223881613ca4565b60408051808201909152601d81527f504159524f4c4c5f454d504c4f5945455f444f45534e545f455849535400000060208201529015156122d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5060008381526004602052604090206122ed906143bd565b91505b50919050565b7fceca7e2f5eb749a87aaf68f3f76d6b9251aa2f4600f13f93c5a4adf7a72df4ae6123218383613b06565b61232c338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156123c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50836123d481613807565b60408051808201909152601b81527f504159524f4c4c5f4e4f4e5f4143544956455f454d504c4f59454500000000006020820152901515612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b506111cb858561440e565b7f90698b9d54427f1e41636025017309bdb1b55320da960c8845bab0a504b01a166124a78383613b06565b6124b2338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561254f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b508361255a81613807565b60408051808201909152601b81527f504159524f4c4c5f4e4f4e5f4143544956455f454d504c4f594545000000000060208201529015156125f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b506111cb8585614471565b6000806000806000806000606060008961261b81613ca4565b60408051808201909152601d81527f504159524f4c4c5f454d504c4f5945455f444f45534e545f455849535400000060208201529015156126b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50600460008c815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169950816001015498508160020154975081600301549650816004015495508160050160009054906101000a900467ffffffffffffffff1694508160050160089054906101000a900467ffffffffffffffff169350816006018054806020026020016040519081016040528092919081815260200182805480156127ac57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612781575b505050505092505050919395975091939597565b60025474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b7f9ecdc3c63716b45d0756eece5fe1614cae1889ec5a1ce62b3127c1f1f1615d6e81565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604081205461283b90613807565b9392505050565b60006118437f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b613926565b60608061287a338461280c565b60408051808201909152601781527f504159524f4c4c5f43414e5f4e4f545f464f52574152440000000000000000006020820152901515612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50604080516000815260016020808301828152606084018552929550919290919085019080388339505060008054835193945073ffffffffffffffffffffffffffffffffffffffff1692849250811061296c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015261299b8383836144d6565b50505050565b33600081815260056020908152604080832054835260048252808320548151808301909252601d82527f504159524f4c4c5f53454e4445525f444f45535f4e4f545f4d4154434800000092820192909252919283928392839283928392909173ffffffffffffffffffffffffffffffffffffffff90911614612a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50612aa97fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613926565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c0000000000000060208201529015612b45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50612b777fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff61392a16565b3360009081526005602090815260408083205480845260049092529091209095509350612ba384614bac565b861580612bb35750600684015487145b60408051808201909152601a81527f504159524f4c4c5f4d494e5f52415445535f4d49534d415443480000000000006020820152901515612c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5060008a6002811115612c5f57fe5b1415612c8b57612c6e846143bd565b9250612c7a838a614e01565b9550612c868487614f4f565b612da0565b60018a6002811115612c9957fe5b1415612ccc5783600401549150612cb0828a614e01565b9550612cc2828763ffffffff61403516565b6004850155612da0565b60028a6002811115612cda57fe5b1415612d0c57506003830154612cf0818a614e01565b9550612d02818763ffffffff61403516565b6003850155612da0565b604080518082018252601c81527f504159524f4c4c5f494e56414c49445f5041594d454e545f5459504500000000602080830191825292517f08c379a000000000000000000000000000000000000000000000000000000000815260048101938452825160248201528251929392839260449092019190808383600083811015610be4578181015183820152602001610bcc565b612dd9858b888b8b80806020026020016040519081016040528093929190818152602001838360200280828437506150e6945050505050565b60408051808201909152601481527f504159524f4c4c5f4e4f5448494e475f504149440000000000000000000000006020820152901515612e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b50612e80856155d9565b612eb17fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600063ffffffff61392a16565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612ee8611c30565b14905090565b7f9ecdc3c63716b45d0756eece5fe1614cae1889ec5a1ce62b3127c1f1f1615d6e612f24868667ffffffffffffffff87166156e8565b612f2f338383611fa8565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5061300987878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843750615713945050505050565b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000613038610ace565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156130d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b505073ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205460ff1690565b600190565b33600081815260056020908152604080832054835260048252808320548151808301909252601d82527f504159524f4c4c5f53454e4445525f444f45535f4e4f545f4d415443480000009282019290925291928392606092849283929173ffffffffffffffffffffffffffffffffffffffff16146131e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b5061320b7fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613926565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c00000000000000602082015290156132a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610be4578181015183820152602001610bcc565b506132d97fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff61392a16565b60408051808201909152601a81527f504159524f4c4c5f4d41585f414c4c4f5745445f544f4b454e5300000000000060208201526014891115613378576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381