60806040526000600a60006101000a81548160ff02191690831515021790555066e6ed27d6668000600b55611388600c553480156200003d57600080fd5b506040518060400160405280601581526020017f496e76697369626c65204769726c667269656e647300000000000000000000008152506040518060400160405280600881526020017f494e5653424c45470000000000000000000000000000000000000000000000008152508160029080519060200190620000c2929190620001f5565b508060039080519060200190620000db929190620001f5565b50620000ec6200012260201b60201c565b600081905550505062000114620001086200012760201b60201c565b6200012f60201b60201c565b600160098190555062000309565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200020390620002d4565b90600052602060002090601f01602090048101928262000227576000855562000273565b82601f106200024257805160ff191683800117855562000273565b8280016001018555821562000273579182015b828111156200027257825182559160200191906001019062000255565b5b50905062000282919062000286565b5090565b5b80821115620002a157600081600090555060010162000287565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ed57607f821691505b602082108103620003035762000302620002a5565b5b50919050565b61376280620003196000396000f3fe6080604052600436106101cd5760003560e01c806370a08231116100f7578063a475b5dd11610095578063c87b56dd11610064578063c87b56dd14610641578063e985e9c51461067e578063efef39a1146106bb578063f2fde38b146106d7576101cd565b8063a475b5dd1461059b578063af1c5211146105c6578063b88d4fde146105ef578063bd742dd814610618576101cd565b80638a938f2f116100d15780638a938f2f146104f35780638da5cb5b1461051c57806395d89b4114610547578063a22cb46514610572576101cd565b806370a0823114610474578063715018a6146104b15780638a333b50146104c8576101cd565b806318160ddd1161016f5780633ccfd60b1161013e5780633ccfd60b146103d957806342842e0e146103e35780636352211e1461040c5780636c0360eb14610449576101cd565b806318160ddd146103335780631e8d03111461035e57806323b872dd1461038757806333ff5e7c146103b0576101cd565b8063095ea7b3116101ab578063095ea7b3146102775780630c1ba199146102a057806313faede6146102dd578063160fba5614610308576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612952565b610700565b604051610206919061299a565b60405180910390f35b34801561021b57600080fd5b506102246107e2565b6040516102319190612a4e565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190612aa6565b610874565b60405161026e9190612b14565b60405180910390f35b34801561028357600080fd5b5061029e60048036038101906102999190612b5b565b6108f0565b005b3480156102ac57600080fd5b506102c760048036038101906102c29190612b9b565b6109fa565b6040516102d49190612bd7565b60405180910390f35b3480156102e957600080fd5b506102f2610a12565b6040516102ff9190612bd7565b60405180910390f35b34801561031457600080fd5b5061031d610a18565b60405161032a9190612a4e565b60405180910390f35b34801561033f57600080fd5b50610348610aa6565b6040516103559190612bd7565b60405180910390f35b34801561036a57600080fd5b5061038560048036038101906103809190612aa6565b610abd565b005b34801561039357600080fd5b506103ae60048036038101906103a99190612bf2565b610b43565b005b3480156103bc57600080fd5b506103d760048036038101906103d29190612c71565b610b53565b005b6103e1610bec565b005b3480156103ef57600080fd5b5061040a60048036038101906104059190612bf2565b610ccb565b005b34801561041857600080fd5b50610433600480360381019061042e9190612aa6565b610ceb565b6040516104409190612b14565b60405180910390f35b34801561045557600080fd5b5061045e610d01565b60405161046b9190612a4e565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190612b9b565b610d8f565b6040516104a89190612bd7565b60405180910390f35b3480156104bd57600080fd5b506104c6610e5e565b005b3480156104d457600080fd5b506104dd610ee6565b6040516104ea9190612bd7565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190612aa6565b610eec565b005b34801561052857600080fd5b50610531610f72565b60405161053e9190612b14565b60405180910390f35b34801561055357600080fd5b5061055c610f9c565b6040516105699190612a4e565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190612c9e565b61102e565b005b3480156105a757600080fd5b506105b06111a5565b6040516105bd919061299a565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190612e13565b6111b8565b005b3480156105fb57600080fd5b5061061660048036038101906106119190612efd565b61124e565b005b34801561062457600080fd5b5061063f600480360381019061063a9190612e13565b6112ca565b005b34801561064d57600080fd5b5061066860048036038101906106639190612aa6565b611360565b6040516106759190612a4e565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a09190612f80565b611484565b6040516106b2919061299a565b60405180910390f35b6106d560048036038101906106d09190612aa6565b611518565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190612b9b565b6116c0565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107cb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107db57506107da826117b7565b5b9050919050565b6060600280546107f190612fef565b80601f016020809104026020016040519081016040528092919081815260200182805461081d90612fef565b801561086a5780601f1061083f5761010080835404028352916020019161086a565b820191906000526020600020905b81548152906001019060200180831161084d57829003601f168201915b5050505050905090565b600061087f82611821565b6108b5576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108fb82610ceb565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610962576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661098161186f565b73ffffffffffffffffffffffffffffffffffffffff16141580156109b357506109b1816109ac61186f565b611484565b155b156109ea576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f5838383611877565b505050565b600f6020528060005260406000206000915090505481565b600b5481565b600e8054610a2590612fef565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5190612fef565b8015610a9e5780601f10610a7357610100808354040283529160200191610a9e565b820191906000526020600020905b815481529060010190602001808311610a8157829003601f168201915b505050505081565b6000610ab0611929565b6001546000540303905090565b610ac561186f565b73ffffffffffffffffffffffffffffffffffffffff16610ae3610f72565b73ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b309061306c565b60405180910390fd5b80600b8190555050565b610b4e83838361192e565b505050565b610b5b61186f565b73ffffffffffffffffffffffffffffffffffffffff16610b79610f72565b73ffffffffffffffffffffffffffffffffffffffff1614610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc69061306c565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b610bf461186f565b73ffffffffffffffffffffffffffffffffffffffff16610c12610f72565b73ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f9061306c565b60405180910390fd5b600047905073a9cd5bf11db920165fc0c5b9ff82dca9242873a673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cc7573d6000803e3d6000fd5b5050565b610ce68383836040518060200160405280600081525061124e565b505050565b6000610cf682611de2565b600001519050919050565b600d8054610d0e90612fef565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90612fef565b8015610d875780601f10610d5c57610100808354040283529160200191610d87565b820191906000526020600020905b815481529060010190602001808311610d6a57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610df6576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610e6661186f565b73ffffffffffffffffffffffffffffffffffffffff16610e84610f72565b73ffffffffffffffffffffffffffffffffffffffff1614610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed19061306c565b60405180910390fd5b610ee46000612071565b565b600c5481565b610ef461186f565b73ffffffffffffffffffffffffffffffffffffffff16610f12610f72565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f9061306c565b60405180910390fd5b80600c8190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610fab90612fef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd790612fef565b80156110245780601f10610ff957610100808354040283529160200191611024565b820191906000526020600020905b81548152906001019060200180831161100757829003601f168201915b5050505050905090565b61103661186f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006110a761186f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661115461186f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611199919061299a565b60405180910390a35050565b600a60009054906101000a900460ff1681565b6111c061186f565b73ffffffffffffffffffffffffffffffffffffffff166111de610f72565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b9061306c565b60405180910390fd5b80600d908051906020019061124a929190612800565b5050565b61125984848461192e565b6112788373ffffffffffffffffffffffffffffffffffffffff16612137565b801561128d575061128b8484848461214a565b155b156112c4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6112d261186f565b73ffffffffffffffffffffffffffffffffffffffff166112f0610f72565b73ffffffffffffffffffffffffffffffffffffffff1614611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d9061306c565b60405180910390fd5b80600e908051906020019061135c929190612800565b5050565b606061136b82611821565b6113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a1906130d8565b60405180910390fd5b600a60009054906101000a900460ff16156113f157600d6113ca8361229a565b6040516020016113db9291906131c8565b604051602081830303815290604052905061147f565b600e80546113fe90612fef565b80601f016020809104026020016040519081016040528092919081815260200182805461142a90612fef565b80156114775780601f1061144c57610100808354040283529160200191611477565b820191906000526020600020905b81548152906001019060200180831161145a57829003601f168201915b505050505090505b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60026009540361155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155490613238565b60405180910390fd5b600260098190555080600b546115739190613287565b3410156115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac9061332d565b60405180910390fd5b60006115bf610aa6565b905060008211611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90613399565b60405180910390fd5b600c54818361161391906133b9565b1115611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b9061345b565b60405180910390fd5b81600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116a391906133b9565b925050819055506116b433836123fa565b50600160098190555050565b6116c861186f565b73ffffffffffffffffffffffffffffffffffffffff166116e6610f72565b73ffffffffffffffffffffffffffffffffffffffff161461173c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117339061306c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a2906134ed565b60405180910390fd5b6117b481612071565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008161182c611929565b1115801561183b575060005482105b8015611868575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b600061193982611de2565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146119a4576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166119c561186f565b73ffffffffffffffffffffffffffffffffffffffff1614806119f457506119f3856119ee61186f565b611484565b5b80611a395750611a0261186f565b73ffffffffffffffffffffffffffffffffffffffff16611a2184610874565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611a72576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ad8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ae58585856001612418565b611af160008487611877565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611d70576000548214611d6f57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ddb858585600161241e565b5050505050565b611dea612886565b600082905080611df8611929565b11158015611e07575060005481105b1561203a576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161203857600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611f1c57809250505061206c565b5b60011561203757818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461203257809250505061206c565b611f1d565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080823b905060008111915050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261217061186f565b8786866040518563ffffffff1660e01b81526004016121929493929190613562565b6020604051808303816000875af19250505080156121ce57506040513d601f19601f820116820180604052508101906121cb91906135c3565b60015b612247573d80600081146121fe576040519150601f19603f3d011682016040523d82523d6000602084013e612203565b606091505b50600081510361223f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082036122e1576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506123f5565b600082905060005b600082146123135780806122fc906135f0565b915050600a8261230c9190613667565b91506122e9565b60008167ffffffffffffffff81111561232f5761232e612ce8565b5b6040519080825280601f01601f1916602001820160405280156123615781602001600182028036833780820191505090505b5090505b600085146123ee5760018261237a9190613698565b9150600a8561238991906136cc565b603061239591906133b9565b60f81b8183815181106123ab576123aa6136fd565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123e79190613667565b9450612365565b8093505050505b919050565b612414828260405180602001604052806000815250612424565b5050565b50505050565b50505050565b6124318383836001612436565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124a2576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084036124dc576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124e96000868387612418565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156126b357506126b28773ffffffffffffffffffffffffffffffffffffffff16612137565b5b15612778575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612728600088848060010195508861214a565b61275e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082036126b957826000541461277357600080fd5b6127e3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612779575b8160008190555050506127f9600086838761241e565b5050505050565b82805461280c90612fef565b90600052602060002090601f01602090048101928261282e5760008555612875565b82601f1061284757805160ff1916838001178555612875565b82800160010185558215612875579182015b82811115612874578251825591602001919060010190612859565b5b50905061288291906128c9565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b808211156128e25760008160009055506001016128ca565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61292f816128fa565b811461293a57600080fd5b50565b60008135905061294c81612926565b92915050565b600060208284031215612968576129676128f0565b5b60006129768482850161293d565b91505092915050565b60008115159050919050565b6129948161297f565b82525050565b60006020820190506129af600083018461298b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129ef5780820151818401526020810190506129d4565b838111156129fe576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a20826129b5565b612a2a81856129c0565b9350612a3a8185602086016129d1565b612a4381612a04565b840191505092915050565b60006020820190508181036000830152612a688184612a15565b905092915050565b6000819050919050565b612a8381612a70565b8114612a8e57600080fd5b50565b600081359050612aa081612a7a565b92915050565b600060208284031215612abc57612abb6128f0565b5b6000612aca84828501612a91565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612afe82612ad3565b9050919050565b612b0e81612af3565b82525050565b6000602082019050612b296000830184612b05565b92915050565b612b3881612af3565b8114612b4357600080fd5b50565b600081359050612b5581612b2f565b92915050565b60008060408385031215612b7257612b716128f0565b5b6000612b8085828601612b46565b9250506020612b9185828601612a91565b9150509250929050565b600060208284031215612bb157612bb06128f0565b5b6000612bbf84828501612b46565b91505092915050565b612bd181612a70565b82525050565b6000602082019050612bec6000830184612bc8565b92915050565b600080600060608486031215612c0b57612c0a6128f0565b5b6000612c1986828701612b46565b9350506020612c2a86828701612b46565b9250506040612c3b86828701612a91565b9150509250925092565b612c4e8161297f565b8114612c5957600080fd5b50565b600081359050612c6b81612c45565b92915050565b600060208284031215612c8757612c866128f0565b5b6000612c9584828501612c5c565b91505092915050565b60008060408385031215612cb557612cb46128f0565b5b6000612cc385828601612b46565b9250506020612cd485828601612c5c565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d2082612a04565b810181811067ffffffffffffffff82111715612d3f57612d3e612ce8565b5b80604052505050565b6000612d526128e6565b9050612d5e8282612d17565b919050565b600067ffffffffffffffff821115612d7e57612d7d612ce8565b5b612d8782612a04565b9050602081019050919050565b82818337600083830152505050565b6000612db6612db184612d63565b612d48565b905082815260208101848484011115612dd257612dd1612ce3565b5b612ddd848285612d94565b509392505050565b600082601f830112612dfa57612df9612cde565b5b8135612e0a848260208601612da3565b91505092915050565b600060208284031215612e2957612e286128f0565b5b600082013567ffffffffffffffff811115612e4757612e466128f5565b5b612e5384828501612de5565b91505092915050565b600067ffffffffffffffff821115612e7757612e76612ce8565b5b612e8082612a04565b9050602081019050919050565b6000612ea0612e9b84612e5c565b612d48565b905082815260208101848484011115612ebc57612ebb612ce3565b5b612ec7848285612d94565b509392505050565b600082601f830112612ee457612ee3612cde565b5b8135612ef4848260208601612e8d565b91505092915050565b60008060008060808587031215612f1757612f166128f0565b5b6000612f2587828801612b46565b9450506020612f3687828801612b46565b9350506040612f4787828801612a91565b925050606085013567ffffffffffffffff811115612f6857612f676128f5565b5b612f7487828801612ecf565b91505092959194509250565b60008060408385031215612f9757612f966128f0565b5b6000612fa585828601612b46565b9250506020612fb685828601612b46565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061300757607f821691505b60208210810361301a57613019612fc0565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130566020836129c0565b915061306182613020565b602082019050919050565b6000602082019050818103600083015261308581613049565b9050919050565b7f6e6f6e5f6578697374616e745f746f6b656e0000000000000000000000000000600082015250565b60006130c26012836129c0565b91506130cd8261308c565b602082019050919050565b600060208201905081810360008301526130f1816130b5565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461312581612fef565b61312f81866130f8565b9450600182166000811461314a576001811461315b5761318e565b60ff1983168652818601935061318e565b61316485613103565b60005b8381101561318657815481890152600182019150602081019050613167565b838801955050505b50505092915050565b60006131a2826129b5565b6131ac81856130f8565b93506131bc8185602086016129d1565b80840191505092915050565b60006131d48285613118565b91506131e08284613197565b91508190509392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613222601f836129c0565b915061322d826131ec565b602082019050919050565b6000602082019050818103600083015261325181613215565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061329282612a70565b915061329d83612a70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132d6576132d5613258565b5b828202905092915050565b7f696e73756666696369656e745f66756e64730000000000000000000000000000600082015250565b60006133176012836129c0565b9150613322826132e1565b602082019050919050565b600060208201905081810360008301526133468161330a565b9050919050565b7f7175616e746974795f69735f7265717569726564000000000000000000000000600082015250565b60006133836014836129c0565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b60006133c482612a70565b91506133cf83612a70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561340457613403613258565b5b828201905092915050565b7f6d61785f737570706c795f657863656564656564000000000000000000000000600082015250565b60006134456014836129c0565b91506134508261340f565b602082019050919050565b6000602082019050818103600083015261347481613438565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134d76026836129c0565b91506134e28261347b565b604082019050919050565b60006020820190508181036000830152613506816134ca565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135348261350d565b61353e8185613518565b935061354e8185602086016129d1565b61355781612a04565b840191505092915050565b60006080820190506135776000830187612b05565b6135846020830186612b05565b6135916040830185612bc8565b81810360608301526135a38184613529565b905095945050505050565b6000815190506135bd81612926565b92915050565b6000602082840312156135d9576135d86128f0565b5b60006135e7848285016135ae565b91505092915050565b60006135fb82612a70565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362d5761362c613258565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061367282612a70565b915061367d83612a70565b92508261368d5761368c613638565b5b828204905092915050565b60006136a382612a70565b91506136ae83612a70565b9250828210156136c1576136c0613258565b5b828203905092915050565b60006136d782612a70565b91506136e283612a70565b9250826136f2576136f1613638565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a13bb3af0ef8d5836bd390ebf4f9a4e5f275b6e694022234779f0df646a6fbb164736f6c634300080d0033